From fd9d949b9fd36f24f2eda9c7b5fc1338f853bb25 Mon Sep 17 00:00:00 2001 From: liyulin <501351981@qq.com> Date: Sun, 26 Feb 2023 11:31:13 +0800 Subject: [PATCH] =?UTF-8?q?change:=20=E5=A2=9E=E5=8A=A0excel=E5=AF=B9?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E9=A2=9C=E8=89=B2=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{index-b8ca8f3b.js => index-50454df1.js} | 122 +++++++++--------- examples/dist/index.html | 2 +- lerna.json | 2 +- packages/docx/package.json | 2 +- packages/excel/package.json | 2 +- packages/pdf/package.json | 2 +- 6 files changed, 66 insertions(+), 66 deletions(-) rename examples/dist/assets/{index-b8ca8f3b.js => index-50454df1.js} (57%) diff --git a/examples/dist/assets/index-b8ca8f3b.js b/examples/dist/assets/index-50454df1.js similarity index 57% rename from examples/dist/assets/index-b8ca8f3b.js rename to examples/dist/assets/index-50454df1.js index ade014f..c1d471f 100644 --- a/examples/dist/assets/index-b8ca8f3b.js +++ b/examples/dist/assets/index-50454df1.js @@ -1,13 +1,13 @@ -var Nj=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var j2e=Nj((Fa,Ja)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))i(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(l){if(l.ep)return;l.ep=!0;const a=t(l);fetch(l.href,a)}})();function rW(n,e){const t=Object.create(null),i=n.split(",");for(let l=0;l!!t[l.toLowerCase()]:l=>!!t[l]}function oW(n){if(gn(n)){const e={};for(let t=0;t{if(t){const i=t.split(Ij);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function sW(n){let e="";if(el(n))e=n;else if(gn(n))for(let t=0;t{},Lj=()=>!1,Rj=/^on[^a-z]/,p0=n=>Rj.test(n),cW=n=>n.startsWith("onUpdate:"),Zl=Object.assign,uW=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},Tj=Object.prototype.hasOwnProperty,ei=(n,e)=>Tj.call(n,e),gn=Array.isArray,Dd=n=>y0(n)==="[object Map]",xj=n=>y0(n)==="[object Set]",Sn=n=>typeof n=="function",el=n=>typeof n=="string",dW=n=>typeof n=="symbol",Li=n=>n!==null&&typeof n=="object",XL=n=>Li(n)&&Sn(n.then)&&Sn(n.catch),Cj=Object.prototype.toString,y0=n=>Cj.call(n),Sj=n=>y0(n).slice(8,-1),zj=n=>y0(n)==="[object Object]",hW=n=>el(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,gb=rW(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Z0=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},kj=/-(\w)/g,Wa=Z0(n=>n.replace(kj,(e,t)=>t?t.toUpperCase():"")),Fj=/\B([A-Z])/g,ku=Z0(n=>n.replace(Fj,"-$1").toLowerCase()),v0=Z0(n=>n.charAt(0).toUpperCase()+n.slice(1)),gy=Z0(n=>n?`on${v0(n)}`:""),ah=(n,e)=>!Object.is(n,e),Vy=(n,e)=>{for(let t=0;t{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value:t})},Jj=n=>{const e=parseFloat(n);return isNaN(e)?n:e},Dj=n=>{const e=el(n)?Number(n):NaN;return isNaN(e)?n:e};let AM;const Oj=()=>AM||(AM=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let za;class jj{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=za,!e&&za&&(this.index=(za.scopes||(za.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=za;try{return za=this,e()}finally{za=t}}}on(){za=this}off(){za=this.parent}stop(e){if(this._active){let t,i;for(t=0,i=this.effects.length;t{const e=new Set(n);return e.w=0,e.n=0,e},ML=n=>(n.w&Gs)>0,IL=n=>(n.n&Gs)>0,Kj=({deps:n})=>{if(n.length)for(let e=0;e{const{deps:e}=n;if(e.length){let t=0;for(let i=0;i{(b==="length"||b>=f)&&r.push(v)})}else switch(t!==void 0&&r.push(o.get(t)),e){case"add":gn(n)?hW(t)&&r.push(o.get("length")):(r.push(o.get(cc)),Dd(n)&&r.push(o.get(t2)));break;case"delete":gn(n)||(r.push(o.get(cc)),Dd(n)&&r.push(o.get(t2)));break;case"set":Dd(n)&&r.push(o.get(cc));break}if(r.length===1)r[0]&&n2(r[0]);else{const f=[];for(const v of r)v&&f.push(...v);n2(fW(f))}}function n2(n,e){const t=gn(n)?n:[...n];for(const i of t)i.computed&&$M(i);for(const i of t)i.computed||$M(i)}function $M(n,e){(n!==yr||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}function Pj(n,e){var t;return(t=ym.get(n))===null||t===void 0?void 0:t.get(e)}const Qj=rW("__proto__,__v_isRef,__isVue"),gL=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(dW)),Bj=mW(),Aj=mW(!1,!0),_j=mW(!0),qM=$j();function $j(){const n={};return["includes","indexOf","lastIndexOf"].forEach(e=>{n[e]=function(...t){const i=on(this);for(let a=0,o=this.length;a{n[e]=function(...t){Fu();const i=on(this)[e].apply(this,t);return Ju(),i}}),n}function qj(n){const e=on(this);return Ga(e,"has",n),e.hasOwnProperty(n)}function mW(n=!1,e=!1){return function(i,l,a){if(l==="__v_isReactive")return!n;if(l==="__v_isReadonly")return n;if(l==="__v_isShallow")return e;if(l==="__v_raw"&&a===(n?e?mU:xL:e?TL:RL).get(i))return i;const o=gn(i);if(!n){if(o&&ei(qM,l))return Reflect.get(qM,l,a);if(l==="hasOwnProperty")return qj}const r=Reflect.get(i,l,a);return(dW(l)?gL.has(l):Qj(l))||(n||Ga(i,"get",l),e)?r:$i(r)?o&&hW(l)?r:r.value:Li(r)?n?CL(r):zn(r):r}}const eU=VL(),tU=VL(!0);function VL(n=!1){return function(t,i,l,a){let o=t[i];if(Mu(o)&&$i(o)&&!$i(l))return!1;if(!n&&(!Zm(l)&&!Mu(l)&&(o=on(o),l=on(l)),!gn(t)&&$i(o)&&!$i(l)))return o.value=l,!0;const r=gn(t)&&hW(i)?Number(i)n,W0=n=>Reflect.getPrototypeOf(n);function kf(n,e,t=!1,i=!1){n=n.__v_raw;const l=on(n),a=on(e);t||(e!==a&&Ga(l,"get",e),Ga(l,"get",a));const{has:o}=W0(l),r=i?pW:t?vW:rh;if(o.call(l,e))return r(n.get(e));if(o.call(l,a))return r(n.get(a));n!==l&&n.get(e)}function Ff(n,e=!1){const t=this.__v_raw,i=on(t),l=on(n);return e||(n!==l&&Ga(i,"has",n),Ga(i,"has",l)),n===l?t.has(n):t.has(n)||t.has(l)}function Jf(n,e=!1){return n=n.__v_raw,!e&&Ga(on(n),"iterate",cc),Reflect.get(n,"size",n)}function eI(n){n=on(n);const e=on(this);return W0(e).has.call(e,n)||(e.add(n),Ro(e,"add",n,n)),this}function tI(n,e){e=on(e);const t=on(this),{has:i,get:l}=W0(t);let a=i.call(t,n);a||(n=on(n),a=i.call(t,n));const o=l.call(t,n);return t.set(n,e),a?ah(e,o)&&Ro(t,"set",n,e):Ro(t,"add",n,e),this}function nI(n){const e=on(this),{has:t,get:i}=W0(e);let l=t.call(e,n);l||(n=on(n),l=t.call(e,n)),i&&i.call(e,n);const a=e.delete(n);return l&&Ro(e,"delete",n,void 0),a}function iI(){const n=on(this),e=n.size!==0,t=n.clear();return e&&Ro(n,"clear",void 0,void 0),t}function Df(n,e){return function(i,l){const a=this,o=a.__v_raw,r=on(o),f=e?pW:n?vW:rh;return!n&&Ga(r,"iterate",cc),o.forEach((v,b)=>i.call(l,f(v),f(b),a))}}function Of(n,e,t){return function(...i){const l=this.__v_raw,a=on(l),o=Dd(a),r=n==="entries"||n===Symbol.iterator&&o,f=n==="keys"&&o,v=l[n](...i),b=t?pW:e?vW:rh;return!e&&Ga(a,"iterate",f?t2:cc),{next(){const{value:Z,done:p}=v.next();return p?{value:Z,done:p}:{value:r?[b(Z[0]),b(Z[1])]:b(Z),done:p}},[Symbol.iterator](){return this}}}}function Ao(n){return function(...e){return n==="delete"?!1:this}}function oU(){const n={get(a){return kf(this,a)},get size(){return Jf(this)},has:Ff,add:eI,set:tI,delete:nI,clear:iI,forEach:Df(!1,!1)},e={get(a){return kf(this,a,!1,!0)},get size(){return Jf(this)},has:Ff,add:eI,set:tI,delete:nI,clear:iI,forEach:Df(!1,!0)},t={get(a){return kf(this,a,!0)},get size(){return Jf(this,!0)},has(a){return Ff.call(this,a,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:Df(!0,!1)},i={get(a){return kf(this,a,!0,!0)},get size(){return Jf(this,!0)},has(a){return Ff.call(this,a,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:Df(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{n[a]=Of(a,!1,!1),t[a]=Of(a,!0,!1),e[a]=Of(a,!1,!0),i[a]=Of(a,!0,!0)}),[n,t,e,i]}const[sU,cU,uU,dU]=oU();function yW(n,e){const t=e?n?dU:uU:n?cU:sU;return(i,l,a)=>l==="__v_isReactive"?!n:l==="__v_isReadonly"?n:l==="__v_raw"?i:Reflect.get(ei(t,l)&&l in i?t:i,l,a)}const hU={get:yW(!1,!1)},fU={get:yW(!1,!0)},bU={get:yW(!0,!1)},RL=new WeakMap,TL=new WeakMap,xL=new WeakMap,mU=new WeakMap;function pU(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function yU(n){return n.__v_skip||!Object.isExtensible(n)?0:pU(Sj(n))}function zn(n){return Mu(n)?n:ZW(n,!1,LL,hU,RL)}function ZU(n){return ZW(n,!1,rU,fU,TL)}function CL(n){return ZW(n,!0,aU,bU,xL)}function ZW(n,e,t,i,l){if(!Li(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const a=l.get(n);if(a)return a;const o=yU(n);if(o===0)return n;const r=new Proxy(n,o===2?i:t);return l.set(n,r),r}function hu(n){return Mu(n)?hu(n.__v_raw):!!(n&&n.__v_isReactive)}function Mu(n){return!!(n&&n.__v_isReadonly)}function Zm(n){return!!(n&&n.__v_isShallow)}function SL(n){return hu(n)||Mu(n)}function on(n){const e=n&&n.__v_raw;return e?on(e):n}function zL(n){return pm(n,"__v_skip",!0),n}const rh=n=>Li(n)?zn(n):n,vW=n=>Li(n)?CL(n):n;function kL(n){ms&&yr&&(n=on(n),wL(n.dep||(n.dep=fW())))}function FL(n,e){n=on(n);const t=n.dep;t&&n2(t)}function $i(n){return!!(n&&n.__v_isRef===!0)}function Ne(n){return JL(n,!1)}function Gn(n){return JL(n,!0)}function JL(n,e){return $i(n)?n:new vU(n,e)}class vU{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:on(e),this._value=t?e:rh(e)}get value(){return kL(this),this._value}set value(e){const t=this.__v_isShallow||Zm(e)||Mu(e);e=t?e:on(e),ah(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:rh(e),FL(this))}}function mi(n){return $i(n)?n.value:n}const WU={get:(n,e,t)=>mi(Reflect.get(n,e,t)),set:(n,e,t,i)=>{const l=n[e];return $i(l)&&!$i(t)?(l.value=t,!0):Reflect.set(n,e,t,i)}};function DL(n){return hu(n)?n:new Proxy(n,WU)}function uc(n){const e=gn(n)?new Array(n.length):{};for(const t in n)e[t]=Ot(n,t);return e}class GU{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return Pj(on(this._object),this._key)}}function Ot(n,e,t){const i=n[e];return $i(i)?i:new GU(n,e,t)}var OL;class XU{constructor(e,t,i,l){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[OL]=!1,this._dirty=!0,this.effect=new bW(e,()=>{this._dirty||(this._dirty=!0,FL(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!l,this.__v_isReadonly=i}get value(){const e=on(this);return kL(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}OL="__v_isReadonly";function NU(n,e,t=!1){let i,l;const a=Sn(n);return a?(i=n,l=Gr):(i=n.get,l=n.set),new XU(i,l,a||!l,t)}function ps(n,e,t,i){let l;try{l=i?n(...i):n()}catch(a){G0(a,e,t)}return l}function nr(n,e,t,i){if(Sn(n)){const a=ps(n,e,t,i);return a&&XL(a)&&a.catch(o=>{G0(o,e,t)}),a}const l=[];for(let a=0;a>>1;sh(zl[i])Ur&&zl.splice(e,1)}function wU(n){gn(n)?fu.push(...n):(!Wo||!Wo.includes(n,n.allowRecurse?As+1:As))&&fu.push(n),UL()}function lI(n,e=oh?Ur+1:0){for(;esh(t)-sh(i)),As=0;Asn.id==null?1/0:n.id,gU=(n,e)=>{const t=sh(n)-sh(e);if(t===0){if(n.pre&&!e.pre)return-1;if(e.pre&&!n.pre)return 1}return t};function KL(n){i2=!1,oh=!0,zl.sort(gU);const e=Gr;try{for(Ur=0;Urel(y)?y.trim():y)),Z&&(l=t.map(Jj))}let r,f=i[r=gy(e)]||i[r=gy(Wa(e))];!f&&a&&(f=i[r=gy(ku(e))]),f&&nr(f,n,6,l);const v=i[r+"Once"];if(v){if(!n.emitted)n.emitted={};else if(n.emitted[r])return;n.emitted[r]=!0,nr(v,n,6,l)}}function HL(n,e,t=!1){const i=e.emitsCache,l=i.get(n);if(l!==void 0)return l;const a=n.emits;let o={},r=!1;if(!Sn(n)){const f=v=>{const b=HL(v,e,!0);b&&(r=!0,Zl(o,b))};!t&&e.mixins.length&&e.mixins.forEach(f),n.extends&&f(n.extends),n.mixins&&n.mixins.forEach(f)}return!a&&!r?(Li(n)&&i.set(n,null),null):(gn(a)?a.forEach(f=>o[f]=null):Zl(o,a),Li(n)&&i.set(n,o),o)}function X0(n,e){return!n||!p0(e)?!1:(e=e.slice(2).replace(/Once$/,""),ei(n,e[0].toLowerCase()+e.slice(1))||ei(n,ku(e))||ei(n,e))}let Yl=null,N0=null;function vm(n){const e=Yl;return Yl=n,N0=n&&n.type.__scopeId||null,e}function LU(n){N0=n}function RU(){N0=null}function pa(n,e=Yl,t){if(!e||n._n)return n;const i=(...l)=>{i._d&&mI(-1);const a=vm(e);let o;try{o=n(...l)}finally{vm(a),i._d&&mI(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function Ly(n){const{type:e,vnode:t,proxy:i,withProxy:l,props:a,propsOptions:[o],slots:r,attrs:f,emit:v,render:b,renderCache:Z,data:p,setupState:y,ctx:X,inheritAttrs:m}=n;let N,G;const d=vm(n);try{if(t.shapeFlag&4){const s=l||i;N=jr(b.call(s,s,Z,a,y,p,X)),G=f}else{const s=e;N=jr(s.length>1?s(a,{attrs:f,slots:r,emit:v}):s(a,null)),G=e.props?f:TU(f)}}catch(s){Ed.length=0,G0(s,n,1),N=D(Da)}let u=N;if(G&&m!==!1){const s=Object.keys(G),{shapeFlag:h}=u;s.length&&h&7&&(o&&s.some(cW)&&(G=xU(G,o)),u=Vl(u,G))}return t.dirs&&(u=Vl(u),u.dirs=u.dirs?u.dirs.concat(t.dirs):t.dirs),t.transition&&(u.transition=t.transition),N=u,vm(d),N}const TU=n=>{let e;for(const t in n)(t==="class"||t==="style"||p0(t))&&((e||(e={}))[t]=n[t]);return e},xU=(n,e)=>{const t={};for(const i in n)(!cW(i)||!(i.slice(9)in e))&&(t[i]=n[i]);return t};function CU(n,e,t){const{props:i,children:l,component:a}=n,{props:o,children:r,patchFlag:f}=e,v=a.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&f>=0){if(f&1024)return!0;if(f&16)return i?aI(i,o,v):!!o;if(f&8){const b=e.dynamicProps;for(let Z=0;Zn.__isSuspense;function kU(n,e){e&&e.pendingBranch?gn(n)?e.effects.push(...n):e.effects.push(n):wU(n)}function hn(n,e){if(Ei){let t=Ei.provides;const i=Ei.parent&&Ei.parent.provides;i===t&&(t=Ei.provides=Object.create(i)),t[n]=e}}function un(n,e,t=!1){const i=Ei||Yl;if(i){const l=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(l&&n in l)return l[n];if(arguments.length>1)return t&&Sn(e)?e.call(i.proxy):e}}function qt(n,e){return XW(n,null,e)}const jf={};function rt(n,e,t){return XW(n,e,t)}function XW(n,e,{immediate:t,deep:i,flush:l,onTrack:a,onTrigger:o}=Mi){const r=NL()===(Ei==null?void 0:Ei.scope)?Ei:null;let f,v=!1,b=!1;if($i(n)?(f=()=>n.value,v=Zm(n)):hu(n)?(f=()=>n,i=!0):gn(n)?(b=!0,v=n.some(u=>hu(u)||Zm(u)),f=()=>n.map(u=>{if($i(u))return u.value;if(hu(u))return ac(u);if(Sn(u))return ps(u,r,2)})):Sn(n)?e?f=()=>ps(n,r,2):f=()=>{if(!(r&&r.isUnmounted))return Z&&Z(),nr(n,r,3,[p])}:f=Gr,e&&i){const u=f;f=()=>ac(u())}let Z,p=u=>{Z=G.onStop=()=>{ps(u,r,4)}},y;if(hh)if(p=Gr,e?t&&nr(e,r,3,[f(),b?[]:void 0,p]):f(),l==="sync"){const u=V4();y=u.__watcherHandles||(u.__watcherHandles=[])}else return Gr;let X=b?new Array(n.length).fill(jf):jf;const m=()=>{if(G.active)if(e){const u=G.run();(i||v||(b?u.some((s,h)=>ah(s,X[h])):ah(u,X)))&&(Z&&Z(),nr(e,r,3,[u,X===jf?void 0:b&&X[0]===jf?[]:X,p]),X=u)}else G.run()};m.allowRecurse=!!e;let N;l==="sync"?N=m:l==="post"?N=()=>fa(m,r&&r.suspense):(m.pre=!0,r&&(m.id=r.uid),N=()=>GW(m));const G=new bW(f,N);e?t?m():X=G.run():l==="post"?fa(G.run.bind(G),r&&r.suspense):G.run();const d=()=>{G.stop(),r&&r.scope&&uW(r.scope.effects,G)};return y&&y.push(d),d}function FU(n,e,t){const i=this.proxy,l=el(n)?n.includes(".")?PL(i,n):()=>i[n]:n.bind(i,i);let a;Sn(e)?a=e:(a=e.handler,t=e);const o=Ei;Iu(this);const r=XW(l,a.bind(i),t);return o?Iu(o):dc(),r}function PL(n,e){const t=e.split(".");return()=>{let i=n;for(let l=0;l{ac(t,e)});else if(zj(n))for(const t in n)ac(n[t],e);return n}function QL(){const n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Kt(()=>{n.isMounted=!0}),fn(()=>{n.isUnmounting=!0}),n}const Aa=[Function,Array],JU={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Aa,onEnter:Aa,onAfterEnter:Aa,onEnterCancelled:Aa,onBeforeLeave:Aa,onLeave:Aa,onAfterLeave:Aa,onLeaveCancelled:Aa,onBeforeAppear:Aa,onAppear:Aa,onAfterAppear:Aa,onAppearCancelled:Aa},setup(n,{slots:e}){const t=Wl(),i=QL();let l;return()=>{const a=e.default&&NW(e.default(),!0);if(!a||!a.length)return;let o=a[0];if(a.length>1){for(const m of a)if(m.type!==Da){o=m;break}}const r=on(n),{mode:f}=r;if(i.isLeaving)return Ry(o);const v=rI(o);if(!v)return Ry(o);const b=ch(v,r,i,t);uh(v,b);const Z=t.subTree,p=Z&&rI(Z);let y=!1;const{getTransitionKey:X}=v.type;if(X){const m=X();l===void 0?l=m:m!==l&&(l=m,y=!0)}if(p&&p.type!==Da&&(!_s(v,p)||y)){const m=ch(p,r,i,t);if(uh(p,m),f==="out-in")return i.isLeaving=!0,m.afterLeave=()=>{i.isLeaving=!1,t.update.active!==!1&&t.update()},Ry(o);f==="in-out"&&v.type!==Da&&(m.delayLeave=(N,G,d)=>{const u=AL(i,p);u[String(p.key)]=p,N._leaveCb=()=>{G(),N._leaveCb=void 0,delete b.delayedLeave},b.delayedLeave=d})}return o}}},BL=JU;function AL(n,e){const{leavingVNodes:t}=n;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function ch(n,e,t,i){const{appear:l,mode:a,persisted:o=!1,onBeforeEnter:r,onEnter:f,onAfterEnter:v,onEnterCancelled:b,onBeforeLeave:Z,onLeave:p,onAfterLeave:y,onLeaveCancelled:X,onBeforeAppear:m,onAppear:N,onAfterAppear:G,onAppearCancelled:d}=e,u=String(n.key),s=AL(t,n),h=(M,I)=>{M&&nr(M,i,9,I)},c=(M,I)=>{const w=I[1];h(M,I),gn(M)?M.every(C=>C.length<=1)&&w():M.length<=1&&w()},W={mode:a,persisted:o,beforeEnter(M){let I=r;if(!t.isMounted)if(l)I=m||r;else return;M._leaveCb&&M._leaveCb(!0);const w=s[u];w&&_s(n,w)&&w.el._leaveCb&&w.el._leaveCb(),h(I,[M])},enter(M){let I=f,w=v,C=b;if(!t.isMounted)if(l)I=N||f,w=G||v,C=d||b;else return;let x=!1;const R=M._enterCb=g=>{x||(x=!0,g?h(C,[M]):h(w,[M]),W.delayedLeave&&W.delayedLeave(),M._enterCb=void 0)};I?c(I,[M,R]):R()},leave(M,I){const w=String(n.key);if(M._enterCb&&M._enterCb(!0),t.isUnmounting)return I();h(Z,[M]);let C=!1;const x=M._leaveCb=R=>{C||(C=!0,I(),R?h(X,[M]):h(y,[M]),M._leaveCb=void 0,s[w]===n&&delete s[w])};s[w]=n,p?c(p,[M,x]):x()},clone(M){return ch(M,e,t,i)}};return W}function Ry(n){if(M0(n))return n=Vl(n),n.children=null,n}function rI(n){return M0(n)?n.children?n.children[0]:void 0:n}function uh(n,e){n.shapeFlag&6&&n.component?uh(n.component.subTree,e):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function NW(n,e=!1,t){let i=[],l=0;for(let a=0;a1)for(let a=0;a!!n.type.__asyncLoader,M0=n=>n.type.__isKeepAlive;function I0(n,e){$L(n,"a",e)}function _L(n,e){$L(n,"da",e)}function $L(n,e,t=Ei){const i=n.__wdc||(n.__wdc=()=>{let l=t;for(;l;){if(l.isDeactivated)return;l=l.parent}return n()});if(Y0(e,i,t),t){let l=t.parent;for(;l&&l.parent;)M0(l.parent.vnode)&&DU(i,e,t,l),l=l.parent}}function DU(n,e,t,i){const l=Y0(e,n,i,!0);la(()=>{uW(i[e],l)},t)}function Y0(n,e,t=Ei,i=!1){if(t){const l=t[n]||(t[n]=[]),a=e.__weh||(e.__weh=(...o)=>{if(t.isUnmounted)return;Fu(),Iu(t);const r=nr(e,t,n,o);return dc(),Ju(),r});return i?l.unshift(a):l.push(a),a}}const xo=n=>(e,t=Ei)=>(!hh||n==="sp")&&Y0(n,(...i)=>e(...i),t),w0=xo("bm"),Kt=xo("m"),MW=xo("bu"),Dl=xo("u"),fn=xo("bum"),la=xo("um"),OU=xo("sp"),jU=xo("rtg"),UU=xo("rtc");function EU(n,e=Ei){Y0("ec",n,e)}function vl(n,e){const t=Yl;if(t===null)return n;const i=L0(t)||t.proxy,l=n.dirs||(n.dirs=[]);for(let a=0;ae(o,r,void 0,a&&a[r]));else{const o=Object.keys(n);l=new Array(o.length);for(let r=0,f=o.length;ryl(e)?!(e.type===Da||e.type===ln&&!tR(e.children)):!0)?n:null}const l2=n=>n?hR(n)?L0(n)||n.proxy:l2(n.parent):null,jd=Zl(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>l2(n.parent),$root:n=>l2(n.root),$emit:n=>n.emit,$options:n=>IW(n),$forceUpdate:n=>n.f||(n.f=()=>GW(n.update)),$nextTick:n=>n.n||(n.n=cn.bind(n.proxy)),$watch:n=>FU.bind(n)}),Ty=(n,e)=>n!==Mi&&!n.__isScriptSetup&&ei(n,e),BU={get({_:n},e){const{ctx:t,setupState:i,data:l,props:a,accessCache:o,type:r,appContext:f}=n;let v;if(e[0]!=="$"){const y=o[e];if(y!==void 0)switch(y){case 1:return i[e];case 2:return l[e];case 4:return t[e];case 3:return a[e]}else{if(Ty(i,e))return o[e]=1,i[e];if(l!==Mi&&ei(l,e))return o[e]=2,l[e];if((v=n.propsOptions[0])&&ei(v,e))return o[e]=3,a[e];if(t!==Mi&&ei(t,e))return o[e]=4,t[e];a2&&(o[e]=0)}}const b=jd[e];let Z,p;if(b)return e==="$attrs"&&Ga(n,"get",e),b(n);if((Z=r.__cssModules)&&(Z=Z[e]))return Z;if(t!==Mi&&ei(t,e))return o[e]=4,t[e];if(p=f.config.globalProperties,ei(p,e))return p[e]},set({_:n},e,t){const{data:i,setupState:l,ctx:a}=n;return Ty(l,e)?(l[e]=t,!0):i!==Mi&&ei(i,e)?(i[e]=t,!0):ei(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(a[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:i,appContext:l,propsOptions:a}},o){let r;return!!t[o]||n!==Mi&&ei(n,o)||Ty(e,o)||(r=a[0])&&ei(r,o)||ei(i,o)||ei(jd,o)||ei(l.config.globalProperties,o)},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:ei(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};let a2=!0;function AU(n){const e=IW(n),t=n.proxy,i=n.ctx;a2=!1,e.beforeCreate&&sI(e.beforeCreate,n,"bc");const{data:l,computed:a,methods:o,watch:r,provide:f,inject:v,created:b,beforeMount:Z,mounted:p,beforeUpdate:y,updated:X,activated:m,deactivated:N,beforeDestroy:G,beforeUnmount:d,destroyed:u,unmounted:s,render:h,renderTracked:c,renderTriggered:W,errorCaptured:M,serverPrefetch:I,expose:w,inheritAttrs:C,components:x,directives:R,filters:g}=e;if(v&&_U(v,i,null,n.appContext.config.unwrapInjectedRef),o)for(const V in o){const Y=o[V];Sn(Y)&&(i[V]=Y.bind(t))}if(l){const V=l.call(t,t);Li(V)&&(n.data=zn(V))}if(a2=!0,a)for(const V in a){const Y=a[V],T=Sn(Y)?Y.bind(t,t):Sn(Y.get)?Y.get.bind(t,t):Gr,J=!Sn(Y)&&Sn(Y.set)?Y.set.bind(t):Gr,U=de({get:T,set:J});Object.defineProperty(i,V,{enumerable:!0,configurable:!0,get:()=>U.value,set:K=>U.value=K})}if(r)for(const V in r)nR(r[V],i,t,V);if(f){const V=Sn(f)?f.call(t):f;Reflect.ownKeys(V).forEach(Y=>{hn(Y,V[Y])})}b&&sI(b,n,"c");function L(V,Y){gn(Y)?Y.forEach(T=>V(T.bind(t))):Y&&V(Y.bind(t))}if(L(w0,Z),L(Kt,p),L(MW,y),L(Dl,X),L(I0,m),L(_L,N),L(EU,M),L(UU,c),L(jU,W),L(fn,d),L(la,s),L(OU,I),gn(w))if(w.length){const V=n.exposed||(n.exposed={});w.forEach(Y=>{Object.defineProperty(V,Y,{get:()=>t[Y],set:T=>t[Y]=T})})}else n.exposed||(n.exposed={});h&&n.render===Gr&&(n.render=h),C!=null&&(n.inheritAttrs=C),x&&(n.components=x),R&&(n.directives=R)}function _U(n,e,t=Gr,i=!1){gn(n)&&(n=r2(n));for(const l in n){const a=n[l];let o;Li(a)?"default"in a?o=un(a.from||l,a.default,!0):o=un(a.from||l):o=un(a),$i(o)&&i?Object.defineProperty(e,l,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):e[l]=o}}function sI(n,e,t){nr(gn(n)?n.map(i=>i.bind(e.proxy)):n.bind(e.proxy),e,t)}function nR(n,e,t,i){const l=i.includes(".")?PL(t,i):()=>t[i];if(el(n)){const a=e[n];Sn(a)&&rt(l,a)}else if(Sn(n))rt(l,n.bind(t));else if(Li(n))if(gn(n))n.forEach(a=>nR(a,e,t,i));else{const a=Sn(n.handler)?n.handler.bind(t):e[n.handler];Sn(a)&&rt(l,a,n)}}function IW(n){const e=n.type,{mixins:t,extends:i}=e,{mixins:l,optionsCache:a,config:{optionMergeStrategies:o}}=n.appContext,r=a.get(e);let f;return r?f=r:!l.length&&!t&&!i?f=e:(f={},l.length&&l.forEach(v=>Wm(f,v,o,!0)),Wm(f,e,o)),Li(e)&&a.set(e,f),f}function Wm(n,e,t,i=!1){const{mixins:l,extends:a}=e;a&&Wm(n,a,t,!0),l&&l.forEach(o=>Wm(n,o,t,!0));for(const o in e)if(!(i&&o==="expose")){const r=$U[o]||t&&t[o];n[o]=r?r(n[o],e[o]):e[o]}return n}const $U={data:cI,props:Ps,emits:Ps,methods:Ps,computed:Ps,beforeCreate:ql,created:ql,beforeMount:ql,mounted:ql,beforeUpdate:ql,updated:ql,beforeDestroy:ql,beforeUnmount:ql,destroyed:ql,unmounted:ql,activated:ql,deactivated:ql,errorCaptured:ql,serverPrefetch:ql,components:Ps,directives:Ps,watch:e4,provide:cI,inject:qU};function cI(n,e){return e?n?function(){return Zl(Sn(n)?n.call(this,this):n,Sn(e)?e.call(this,this):e)}:e:n}function qU(n,e){return Ps(r2(n),r2(e))}function r2(n){if(gn(n)){const e={};for(let t=0;t0)&&!(o&16)){if(o&8){const b=n.vnode.dynamicProps;for(let Z=0;Z{f=!0;const[p,y]=lR(Z,e,!0);Zl(o,p),y&&r.push(...y)};!t&&e.mixins.length&&e.mixins.forEach(b),n.extends&&b(n.extends),n.mixins&&n.mixins.forEach(b)}if(!a&&!f)return Li(n)&&i.set(n,du),du;if(gn(a))for(let b=0;b-1,y[1]=m<0||X-1||ei(y,"default"))&&r.push(Z)}}}const v=[o,r];return Li(n)&&i.set(n,v),v}function uI(n){return n[0]!=="$"}function dI(n){const e=n&&n.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:n===null?"null":""}function hI(n,e){return dI(n)===dI(e)}function fI(n,e){return gn(e)?e.findIndex(t=>hI(t,n)):Sn(e)&&hI(e,n)?0:-1}const aR=n=>n[0]==="_"||n==="$stable",YW=n=>gn(n)?n.map(jr):[jr(n)],i4=(n,e,t)=>{if(e._n)return e;const i=pa((...l)=>YW(e(...l)),t);return i._c=!1,i},rR=(n,e,t)=>{const i=n._ctx;for(const l in n){if(aR(l))continue;const a=n[l];if(Sn(a))e[l]=i4(l,a,i);else if(a!=null){const o=YW(a);e[l]=()=>o}}},oR=(n,e)=>{const t=YW(e);n.slots.default=()=>t},l4=(n,e)=>{if(n.vnode.shapeFlag&32){const t=e._;t?(n.slots=on(e),pm(e,"_",t)):rR(e,n.slots={})}else n.slots={},e&&oR(n,e);pm(n.slots,V0,1)},a4=(n,e,t)=>{const{vnode:i,slots:l}=n;let a=!0,o=Mi;if(i.shapeFlag&32){const r=e._;r?t&&r===1?a=!1:(Zl(l,e),!t&&r===1&&delete l._):(a=!e.$stable,rR(e,l)),o=e}else e&&(oR(n,e),o={default:1});if(a)for(const r in l)!aR(r)&&!(r in o)&&delete l[r]};function sR(){return{app:null,config:{isNativeTag:Lj,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let r4=0;function o4(n,e){return function(i,l=null){Sn(i)||(i=Object.assign({},i)),l!=null&&!Li(l)&&(l=null);const a=sR(),o=new Set;let r=!1;const f=a.app={_uid:r4++,_component:i,_props:l,_container:null,_context:a,_instance:null,version:L4,get config(){return a.config},set config(v){},use(v,...b){return o.has(v)||(v&&Sn(v.install)?(o.add(v),v.install(f,...b)):Sn(v)&&(o.add(v),v(f,...b))),f},mixin(v){return a.mixins.includes(v)||a.mixins.push(v),f},component(v,b){return b?(a.components[v]=b,f):a.components[v]},directive(v,b){return b?(a.directives[v]=b,f):a.directives[v]},mount(v,b,Z){if(!r){const p=D(i,l);return p.appContext=a,b&&e?e(p,v):n(p,v,Z),r=!0,f._container=v,v.__vue_app__=f,L0(p.component)||p.component.proxy}},unmount(){r&&(n(null,f._container),delete f._container.__vue_app__)},provide(v,b){return a.provides[v]=b,f}};return f}}function s2(n,e,t,i,l=!1){if(gn(n)){n.forEach((p,y)=>s2(p,e&&(gn(e)?e[y]:e),t,i,l));return}if(Od(i)&&!l)return;const a=i.shapeFlag&4?L0(i.component)||i.component.proxy:i.el,o=l?null:a,{i:r,r:f}=n,v=e&&e.r,b=r.refs===Mi?r.refs={}:r.refs,Z=r.setupState;if(v!=null&&v!==f&&(el(v)?(b[v]=null,ei(Z,v)&&(Z[v]=null)):$i(v)&&(v.value=null)),Sn(f))ps(f,r,12,[o,b]);else{const p=el(f),y=$i(f);if(p||y){const X=()=>{if(n.f){const m=p?ei(Z,f)?Z[f]:b[f]:f.value;l?gn(m)&&uW(m,a):gn(m)?m.includes(a)||m.push(a):p?(b[f]=[a],ei(Z,f)&&(Z[f]=b[f])):(f.value=[a],n.k&&(b[n.k]=f.value))}else p?(b[f]=o,ei(Z,f)&&(Z[f]=o)):y&&(f.value=o,n.k&&(b[n.k]=o))};o?(X.id=-1,fa(X,t)):X()}}}const fa=kU;function s4(n){return c4(n)}function c4(n,e){const t=Oj();t.__VUE__=!0;const{insert:i,remove:l,patchProp:a,createElement:o,createText:r,createComment:f,setText:v,setElementText:b,parentNode:Z,nextSibling:p,setScopeId:y=Gr,insertStaticContent:X}=n,m=(re,_,E,$=null,ae=null,le=null,ee=!1,te=null,be=!!_.dynamicChildren)=>{if(re===_)return;re&&!_s(re,_)&&($=Q(re),K(re,ae,le,!0),re=null),_.patchFlag===-2&&(be=!1,_.dynamicChildren=null);const{type:ne,ref:B,shapeFlag:q}=_;switch(ne){case Ns:N(re,_,E,$);break;case Da:G(re,_,E,$);break;case xy:re==null&&d(_,E,$,ee);break;case ln:x(re,_,E,$,ae,le,ee,te,be);break;default:q&1?h(re,_,E,$,ae,le,ee,te,be):q&6?R(re,_,E,$,ae,le,ee,te,be):(q&64||q&128)&&ne.process(re,_,E,$,ae,le,ee,te,be,se)}B!=null&&ae&&s2(B,re&&re.ref,le,_||re,!_)},N=(re,_,E,$)=>{if(re==null)i(_.el=r(_.children),E,$);else{const ae=_.el=re.el;_.children!==re.children&&v(ae,_.children)}},G=(re,_,E,$)=>{re==null?i(_.el=f(_.children||""),E,$):_.el=re.el},d=(re,_,E,$)=>{[re.el,re.anchor]=X(re.children,_,E,$,re.el,re.anchor)},u=({el:re,anchor:_},E,$)=>{let ae;for(;re&&re!==_;)ae=p(re),i(re,E,$),re=ae;i(_,E,$)},s=({el:re,anchor:_})=>{let E;for(;re&&re!==_;)E=p(re),l(re),re=E;l(_)},h=(re,_,E,$,ae,le,ee,te,be)=>{ee=ee||_.type==="svg",re==null?c(_,E,$,ae,le,ee,te,be):I(re,_,ae,le,ee,te,be)},c=(re,_,E,$,ae,le,ee,te)=>{let be,ne;const{type:B,props:q,shapeFlag:ue,transition:ve,dirs:Ge}=re;if(be=re.el=o(re.type,le,q&&q.is,q),ue&8?b(be,re.children):ue&16&&M(re.children,be,null,$,ae,le&&B!=="foreignObject",ee,te),Ge&&Fs(re,null,$,"created"),W(be,re,re.scopeId,ee,$),q){for(const xe in q)xe!=="value"&&!gb(xe)&&a(be,xe,null,q[xe],le,re.children,$,ae,O);"value"in q&&a(be,"value",null,q.value),(ne=q.onVnodeBeforeMount)&&kr(ne,$,re)}Ge&&Fs(re,null,$,"beforeMount");const Je=(!ae||ae&&!ae.pendingBranch)&&ve&&!ve.persisted;Je&&ve.beforeEnter(be),i(be,_,E),((ne=q&&q.onVnodeMounted)||Je||Ge)&&fa(()=>{ne&&kr(ne,$,re),Je&&ve.enter(be),Ge&&Fs(re,null,$,"mounted")},ae)},W=(re,_,E,$,ae)=>{if(E&&y(re,E),$)for(let le=0;le<$.length;le++)y(re,$[le]);if(ae){let le=ae.subTree;if(_===le){const ee=ae.vnode;W(re,ee,ee.scopeId,ee.slotScopeIds,ae.parent)}}},M=(re,_,E,$,ae,le,ee,te,be=0)=>{for(let ne=be;ne{const te=_.el=re.el;let{patchFlag:be,dynamicChildren:ne,dirs:B}=_;be|=re.patchFlag&16;const q=re.props||Mi,ue=_.props||Mi;let ve;E&&Js(E,!1),(ve=ue.onVnodeBeforeUpdate)&&kr(ve,E,_,re),B&&Fs(_,re,E,"beforeUpdate"),E&&Js(E,!0);const Ge=ae&&_.type!=="foreignObject";if(ne?w(re.dynamicChildren,ne,te,E,$,Ge,le):ee||Y(re,_,te,null,E,$,Ge,le,!1),be>0){if(be&16)C(te,_,q,ue,E,$,ae);else if(be&2&&q.class!==ue.class&&a(te,"class",null,ue.class,ae),be&4&&a(te,"style",q.style,ue.style,ae),be&8){const Je=_.dynamicProps;for(let xe=0;xe{ve&&kr(ve,E,_,re),B&&Fs(_,re,E,"updated")},$)},w=(re,_,E,$,ae,le,ee)=>{for(let te=0;te<_.length;te++){const be=re[te],ne=_[te],B=be.el&&(be.type===ln||!_s(be,ne)||be.shapeFlag&70)?Z(be.el):E;m(be,ne,B,null,$,ae,le,ee,!0)}},C=(re,_,E,$,ae,le,ee)=>{if(E!==$){if(E!==Mi)for(const te in E)!gb(te)&&!(te in $)&&a(re,te,E[te],null,ee,_.children,ae,le,O);for(const te in $){if(gb(te))continue;const be=$[te],ne=E[te];be!==ne&&te!=="value"&&a(re,te,ne,be,ee,_.children,ae,le,O)}"value"in $&&a(re,"value",E.value,$.value)}},x=(re,_,E,$,ae,le,ee,te,be)=>{const ne=_.el=re?re.el:r(""),B=_.anchor=re?re.anchor:r("");let{patchFlag:q,dynamicChildren:ue,slotScopeIds:ve}=_;ve&&(te=te?te.concat(ve):ve),re==null?(i(ne,E,$),i(B,E,$),M(_.children,E,B,ae,le,ee,te,be)):q>0&&q&64&&ue&&re.dynamicChildren?(w(re.dynamicChildren,ue,E,ae,le,ee,te),(_.key!=null||ae&&_===ae.subTree)&&wW(re,_,!0)):Y(re,_,E,B,ae,le,ee,te,be)},R=(re,_,E,$,ae,le,ee,te,be)=>{_.slotScopeIds=te,re==null?_.shapeFlag&512?ae.ctx.activate(_,E,$,ee,be):g(_,E,$,ae,le,ee,be):S(re,_,be)},g=(re,_,E,$,ae,le,ee)=>{const te=re.component=W4(re,$,ae);if(M0(re)&&(te.ctx.renderer=se),G4(te),te.asyncDep){if(ae&&ae.registerDep(te,L),!re.el){const be=te.subTree=D(Da);G(null,be,_,E)}return}L(te,re,_,E,ae,le,ee)},S=(re,_,E)=>{const $=_.component=re.component;if(CU(re,_,E))if($.asyncDep&&!$.asyncResolved){V($,_,E);return}else $.next=_,YU($.update),$.update();else _.el=re.el,$.vnode=_},L=(re,_,E,$,ae,le,ee)=>{const te=()=>{if(re.isMounted){let{next:B,bu:q,u:ue,parent:ve,vnode:Ge}=re,Je=B,xe;Js(re,!1),B?(B.el=Ge.el,V(re,B,ee)):B=Ge,q&&Vy(q),(xe=B.props&&B.props.onVnodeBeforeUpdate)&&kr(xe,ve,B,Ge),Js(re,!0);const ke=Ly(re),Pe=re.subTree;re.subTree=ke,m(Pe,ke,Z(Pe.el),Q(Pe),re,ae,le),B.el=ke.el,Je===null&&SU(re,ke.el),ue&&fa(ue,ae),(xe=B.props&&B.props.onVnodeUpdated)&&fa(()=>kr(xe,ve,B,Ge),ae)}else{let B;const{el:q,props:ue}=_,{bm:ve,m:Ge,parent:Je}=re,xe=Od(_);if(Js(re,!1),ve&&Vy(ve),!xe&&(B=ue&&ue.onVnodeBeforeMount)&&kr(B,Je,_),Js(re,!0),q&&pe){const ke=()=>{re.subTree=Ly(re),pe(q,re.subTree,re,ae,null)};xe?_.type.__asyncLoader().then(()=>!re.isUnmounted&&ke()):ke()}else{const ke=re.subTree=Ly(re);m(null,ke,E,$,re,ae,le),_.el=ke.el}if(Ge&&fa(Ge,ae),!xe&&(B=ue&&ue.onVnodeMounted)){const ke=_;fa(()=>kr(B,Je,ke),ae)}(_.shapeFlag&256||Je&&Od(Je.vnode)&&Je.vnode.shapeFlag&256)&&re.a&&fa(re.a,ae),re.isMounted=!0,_=E=$=null}},be=re.effect=new bW(te,()=>GW(ne),re.scope),ne=re.update=()=>be.run();ne.id=re.uid,Js(re,!0),ne()},V=(re,_,E)=>{_.component=re;const $=re.vnode.props;re.vnode=_,re.next=null,n4(re,_.props,$,E),a4(re,_.children,E),Fu(),lI(),Ju()},Y=(re,_,E,$,ae,le,ee,te,be=!1)=>{const ne=re&&re.children,B=re?re.shapeFlag:0,q=_.children,{patchFlag:ue,shapeFlag:ve}=_;if(ue>0){if(ue&128){J(ne,q,E,$,ae,le,ee,te,be);return}else if(ue&256){T(ne,q,E,$,ae,le,ee,te,be);return}}ve&8?(B&16&&O(ne,ae,le),q!==ne&&b(E,q)):B&16?ve&16?J(ne,q,E,$,ae,le,ee,te,be):O(ne,ae,le,!0):(B&8&&b(E,""),ve&16&&M(q,E,$,ae,le,ee,te,be))},T=(re,_,E,$,ae,le,ee,te,be)=>{re=re||du,_=_||du;const ne=re.length,B=_.length,q=Math.min(ne,B);let ue;for(ue=0;ueB?O(re,ae,le,!0,!1,q):M(_,E,$,ae,le,ee,te,be,q)},J=(re,_,E,$,ae,le,ee,te,be)=>{let ne=0;const B=_.length;let q=re.length-1,ue=B-1;for(;ne<=q&&ne<=ue;){const ve=re[ne],Ge=_[ne]=be?as(_[ne]):jr(_[ne]);if(_s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;ne++}for(;ne<=q&&ne<=ue;){const ve=re[q],Ge=_[ue]=be?as(_[ue]):jr(_[ue]);if(_s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;q--,ue--}if(ne>q){if(ne<=ue){const ve=ue+1,Ge=veue)for(;ne<=q;)K(re[ne],ae,le,!0),ne++;else{const ve=ne,Ge=ne,Je=new Map;for(ne=Ge;ne<=ue;ne++){const De=_[ne]=be?as(_[ne]):jr(_[ne]);De.key!=null&&Je.set(De.key,ne)}let xe,ke=0;const Pe=ue-Ge+1;let Be=!1,Te=0;const we=new Array(Pe);for(ne=0;ne=Pe){K(De,ae,le,!0);continue}let me;if(De.key!=null)me=Je.get(De.key);else for(xe=Ge;xe<=ue;xe++)if(we[xe-Ge]===0&&_s(De,_[xe])){me=xe;break}me===void 0?K(De,ae,le,!0):(we[me-Ge]=ne+1,me>=Te?Te=me:Be=!0,m(De,_[me],E,null,ae,le,ee,te,be),ke++)}const Se=Be?u4(we):du;for(xe=Se.length-1,ne=Pe-1;ne>=0;ne--){const De=Ge+ne,me=_[De],Ve=De+1{const{el:le,type:ee,transition:te,children:be,shapeFlag:ne}=re;if(ne&6){U(re.component.subTree,_,E,$);return}if(ne&128){re.suspense.move(_,E,$);return}if(ne&64){ee.move(re,_,E,se);return}if(ee===ln){i(le,_,E);for(let q=0;qte.enter(le),ae);else{const{leave:q,delayLeave:ue,afterLeave:ve}=te,Ge=()=>i(le,_,E),Je=()=>{q(le,()=>{Ge(),ve&&ve()})};ue?ue(le,Ge,Je):Je()}else i(le,_,E)},K=(re,_,E,$=!1,ae=!1)=>{const{type:le,props:ee,ref:te,children:be,dynamicChildren:ne,shapeFlag:B,patchFlag:q,dirs:ue}=re;if(te!=null&&s2(te,null,E,re,!0),B&256){_.ctx.deactivate(re);return}const ve=B&1&&ue,Ge=!Od(re);let Je;if(Ge&&(Je=ee&&ee.onVnodeBeforeUnmount)&&kr(Je,_,re),B&6)F(re.component,E,$);else{if(B&128){re.suspense.unmount(E,$);return}ve&&Fs(re,null,_,"beforeUnmount"),B&64?re.type.remove(re,_,E,ae,se,$):ne&&(le!==ln||q>0&&q&64)?O(ne,_,E,!1,!0):(le===ln&&q&384||!ae&&B&16)&&O(be,_,E),$&&H(re)}(Ge&&(Je=ee&&ee.onVnodeUnmounted)||ve)&&fa(()=>{Je&&kr(Je,_,re),ve&&Fs(re,null,_,"unmounted")},E)},H=re=>{const{type:_,el:E,anchor:$,transition:ae}=re;if(_===ln){k(E,$);return}if(_===xy){s(re);return}const le=()=>{l(E),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(re.shapeFlag&1&&ae&&!ae.persisted){const{leave:ee,delayLeave:te}=ae,be=()=>ee(E,le);te?te(re.el,le,be):be()}else le()},k=(re,_)=>{let E;for(;re!==_;)E=p(re),l(re),re=E;l(_)},F=(re,_,E)=>{const{bum:$,scope:ae,update:le,subTree:ee,um:te}=re;$&&Vy($),ae.stop(),le&&(le.active=!1,K(ee,re,_,E)),te&&fa(te,_),fa(()=>{re.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&re.asyncDep&&!re.asyncResolved&&re.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},O=(re,_,E,$=!1,ae=!1,le=0)=>{for(let ee=le;eere.shapeFlag&6?Q(re.component.subTree):re.shapeFlag&128?re.suspense.next():p(re.anchor||re.el),oe=(re,_,E)=>{re==null?_._vnode&&K(_._vnode,null,null,!0):m(_._vnode||null,re,_,null,null,null,E),lI(),EL(),_._vnode=re},se={p:m,um:K,m:U,r:H,mt:g,mc:M,pc:Y,pbc:w,n:Q,o:n};let he,pe;return e&&([he,pe]=e(se)),{render:oe,hydrate:he,createApp:o4(oe,he)}}function Js({effect:n,update:e},t){n.allowRecurse=e.allowRecurse=t}function wW(n,e,t=!1){const i=n.children,l=e.children;if(gn(i)&&gn(l))for(let a=0;a>1,n[t[r]]0&&(e[i]=t[a-1]),t[a]=i)}}for(a=t.length,o=t[a-1];a-- >0;)t[a]=o,o=e[o];return t}const d4=n=>n.__isTeleport,Ud=n=>n&&(n.disabled||n.disabled===""),bI=n=>typeof SVGElement<"u"&&n instanceof SVGElement,c2=(n,e)=>{const t=n&&n.to;return el(t)?e?e(t):null:t},h4={__isTeleport:!0,process(n,e,t,i,l,a,o,r,f,v){const{mc:b,pc:Z,pbc:p,o:{insert:y,querySelector:X,createText:m,createComment:N}}=v,G=Ud(e.props);let{shapeFlag:d,children:u,dynamicChildren:s}=e;if(n==null){const h=e.el=m(""),c=e.anchor=m("");y(h,t,i),y(c,t,i);const W=e.target=c2(e.props,X),M=e.targetAnchor=m("");W&&(y(M,W),o=o||bI(W));const I=(w,C)=>{d&16&&b(u,w,C,l,a,o,r,f)};G?I(t,c):W&&I(W,M)}else{e.el=n.el;const h=e.anchor=n.anchor,c=e.target=n.target,W=e.targetAnchor=n.targetAnchor,M=Ud(n.props),I=M?t:c,w=M?h:W;if(o=o||bI(c),s?(p(n.dynamicChildren,s,I,l,a,o,r),wW(n,e,!0)):f||Z(n,e,I,w,l,a,o,r,!1),G)M||Uf(e,t,h,v,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const C=e.target=c2(e.props,X);C&&Uf(e,C,null,v,0)}else M&&Uf(e,c,W,v,1)}cR(e)},remove(n,e,t,i,{um:l,o:{remove:a}},o){const{shapeFlag:r,children:f,anchor:v,targetAnchor:b,target:Z,props:p}=n;if(Z&&a(b),(o||!Ud(p))&&(a(v),r&16))for(let y=0;y0?vr||du:null,b4(),dh>0&&vr&&vr.push(n),n}function rc(n,e,t,i,l,a){return uR(Du(n,e,t,i,l,a,!0))}function Vo(n,e,t,i,l){return uR(D(n,e,t,i,l,!0))}function yl(n){return n?n.__v_isVNode===!0:!1}function _s(n,e){return n.type===e.type&&n.key===e.key}const V0="__vInternal",dR=({key:n})=>n??null,Vb=({ref:n,ref_key:e,ref_for:t})=>n!=null?el(n)||$i(n)||Sn(n)?{i:Yl,r:n,k:e,f:!!t}:n:null;function Du(n,e=null,t=null,i=0,l=null,a=n===ln?0:1,o=!1,r=!1){const f={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&dR(e),ref:e&&Vb(e),scopeId:N0,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:i,dynamicProps:l,dynamicChildren:null,appContext:null,ctx:Yl};return r?(VW(f,t),a&128&&n.normalize(f)):t&&(f.shapeFlag|=el(t)?8:16),dh>0&&!o&&vr&&(f.patchFlag>0||a&6)&&f.patchFlag!==32&&vr.push(f),f}const D=m4;function m4(n,e=null,t=null,i=0,l=null,a=!1){if((!n||n===HU)&&(n=Da),yl(n)){const r=Vl(n,e,!0);return t&&VW(r,t),dh>0&&!a&&vr&&(r.shapeFlag&6?vr[vr.indexOf(n)]=r:vr.push(r)),r.patchFlag|=-2,r}if(I4(n)&&(n=n.__vccOpts),e){e=p4(e);let{class:r,style:f}=e;r&&!el(r)&&(e.class=sW(r)),Li(f)&&(SL(f)&&!gn(f)&&(f=Zl({},f)),e.style=oW(f))}const o=el(n)?1:zU(n)?128:d4(n)?64:Li(n)?4:Sn(n)?2:0;return Du(n,e,t,i,l,o,a,!0)}function p4(n){return n?SL(n)||V0 in n?Zl({},n):n:null}function Vl(n,e,t=!1){const{props:i,ref:l,patchFlag:a,children:o}=n,r=e?y4(i||{},e):i;return{__v_isVNode:!0,__v_skip:!0,type:n.type,props:r,key:r&&dR(r),ref:e&&e.ref?t&&l?gn(l)?l.concat(Vb(e)):[l,Vb(e)]:Vb(e):l,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:o,target:n.target,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==ln?a===-1?16:a|16:a,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:n.transition,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Vl(n.ssContent),ssFallback:n.ssFallback&&Vl(n.ssFallback),el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce}}function Fl(n=" ",e=0){return D(Ns,null,n,e)}function Lb(n="",e=!1){return e?(kl(),Vo(Da,null,n)):D(Da,null,n)}function jr(n){return n==null||typeof n=="boolean"?D(Da):gn(n)?D(ln,null,n.slice()):typeof n=="object"?as(n):D(Ns,null,String(n))}function as(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Vl(n)}function VW(n,e){let t=0;const{shapeFlag:i}=n;if(e==null)e=null;else if(gn(e))t=16;else if(typeof e=="object")if(i&65){const l=e.default;l&&(l._c&&(l._d=!1),VW(n,l()),l._c&&(l._d=!0));return}else{t=32;const l=e._;!l&&!(V0 in e)?e._ctx=Yl:l===3&&Yl&&(Yl.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else Sn(e)?(e={default:e,_ctx:Yl},t=32):(e=String(e),i&64?(t=16,e=[Fl(e)]):t=8);n.children=e,n.shapeFlag|=t}function y4(...n){const e={};for(let t=0;tEi||Yl,Iu=n=>{Ei=n,n.scope.on()},dc=()=>{Ei&&Ei.scope.off(),Ei=null};function hR(n){return n.vnode.shapeFlag&4}let hh=!1;function G4(n,e=!1){hh=e;const{props:t,children:i}=n.vnode,l=hR(n);t4(n,t,l,e),l4(n,i);const a=l?X4(n,e):void 0;return hh=!1,a}function X4(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=zL(new Proxy(n.ctx,BU));const{setup:i}=t;if(i){const l=n.setupContext=i.length>1?bR(n):null;Iu(n),Fu();const a=ps(i,n,0,[n.props,l]);if(Ju(),dc(),XL(a)){if(a.then(dc,dc),e)return a.then(o=>{pI(n,o,e)}).catch(o=>{G0(o,n,0)});n.asyncDep=a}else pI(n,a,e)}else fR(n,e)}function pI(n,e,t){Sn(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:Li(e)&&(n.setupState=DL(e)),fR(n,t)}let yI;function fR(n,e,t){const i=n.type;if(!n.render){if(!e&&yI&&!i.render){const l=i.template||IW(n).template;if(l){const{isCustomElement:a,compilerOptions:o}=n.appContext.config,{delimiters:r,compilerOptions:f}=i,v=Zl(Zl({isCustomElement:a,delimiters:r},o),f);i.render=yI(l,v)}}n.render=i.render||Gr}Iu(n),Fu(),AU(n),Ju(),dc()}function N4(n){return new Proxy(n.attrs,{get(e,t){return Ga(n,"get","$attrs"),e[t]}})}function bR(n){const e=i=>{n.exposed=i||{}};let t;return{get attrs(){return t||(t=N4(n))},slots:n.slots,emit:n.emit,expose:e}}function L0(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy(DL(zL(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in jd)return jd[t](n)},has(e,t){return t in e||t in jd}}))}function M4(n,e=!0){return Sn(n)?n.displayName||n.name:n.name||e&&n.__name}function I4(n){return Sn(n)&&"__vccOpts"in n}const de=(n,e)=>NU(n,e,hh);function Y4(){return w4().attrs}function w4(){const n=Wl();return n.setupContext||(n.setupContext=bR(n))}function u2(n,e,t){const i=arguments.length;return i===2?Li(e)&&!gn(e)?yl(e)?D(n,null,[e]):D(n,e):D(n,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&yl(t)&&(t=[t]),D(n,e,t))}const g4=Symbol(""),V4=()=>un(g4),L4="3.2.47",R4="http://www.w3.org/2000/svg",$s=typeof document<"u"?document:null,ZI=$s&&$s.createElement("template"),T4={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,i)=>{const l=e?$s.createElementNS(R4,n):$s.createElement(n,t?{is:t}:void 0);return n==="select"&&i&&i.multiple!=null&&l.setAttribute("multiple",i.multiple),l},createText:n=>$s.createTextNode(n),createComment:n=>$s.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>$s.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,i,l,a){const o=t?t.previousSibling:e.lastChild;if(l&&(l===a||l.nextSibling))for(;e.insertBefore(l.cloneNode(!0),t),!(l===a||!(l=l.nextSibling)););else{ZI.innerHTML=i?`${n}`:n;const r=ZI.content;if(i){const f=r.firstChild;for(;f.firstChild;)r.appendChild(f.firstChild);r.removeChild(f)}e.insertBefore(r,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}};function x4(n,e,t){const i=n._vtc;i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}function C4(n,e,t){const i=n.style,l=el(t);if(t&&!l){if(e&&!el(e))for(const a in e)t[a]==null&&d2(i,a,"");for(const a in t)d2(i,a,t[a])}else{const a=i.display;l?e!==t&&(i.cssText=t):e&&n.removeAttribute("style"),"_vod"in n&&(i.display=a)}}const vI=/\s*!important$/;function d2(n,e,t){if(gn(t))t.forEach(i=>d2(n,e,i));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const i=S4(n,e);vI.test(t)?n.setProperty(ku(i),t.replace(vI,""),"important"):n[i]=t}}const WI=["Webkit","Moz","ms"],Cy={};function S4(n,e){const t=Cy[e];if(t)return t;let i=Wa(e);if(i!=="filter"&&i in n)return Cy[e]=i;i=v0(i);for(let l=0;lSy||(j4.then(()=>Sy=0),Sy=Date.now());function E4(n,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;nr(K4(i,t.value),e,5,[i])};return t.value=n,t.attached=U4(),t}function K4(n,e){if(gn(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(i=>l=>!l._stopped&&i&&i(l))}else return e}const NI=/^on[a-z]/,H4=(n,e,t,i,l=!1,a,o,r,f)=>{e==="class"?x4(n,i,l):e==="style"?C4(n,t,i):p0(e)?cW(e)||D4(n,e,t,i,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):P4(n,e,i,l))?k4(n,e,i,a,o,r,f):(e==="true-value"?n._trueValue=i:e==="false-value"&&(n._falseValue=i),z4(n,e,i,l))};function P4(n,e,t,i){return i?!!(e==="innerHTML"||e==="textContent"||e in n&&NI.test(e)&&Sn(t)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA"||NI.test(e)&&el(t)?!1:e in n}const _o="transition",md="animation",aa=(n,{slots:e})=>u2(BL,pR(n),e);aa.displayName="Transition";const mR={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Q4=aa.props=Zl({},BL.props,mR),Ds=(n,e=[])=>{gn(n)?n.forEach(t=>t(...e)):n&&n(...e)},MI=n=>n?gn(n)?n.some(e=>e.length>1):n.length>1:!1;function pR(n){const e={};for(const x in n)x in mR||(e[x]=n[x]);if(n.css===!1)return e;const{name:t="v",type:i,duration:l,enterFromClass:a=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:r=`${t}-enter-to`,appearFromClass:f=a,appearActiveClass:v=o,appearToClass:b=r,leaveFromClass:Z=`${t}-leave-from`,leaveActiveClass:p=`${t}-leave-active`,leaveToClass:y=`${t}-leave-to`}=n,X=B4(l),m=X&&X[0],N=X&&X[1],{onBeforeEnter:G,onEnter:d,onEnterCancelled:u,onLeave:s,onLeaveCancelled:h,onBeforeAppear:c=G,onAppear:W=d,onAppearCancelled:M=u}=e,I=(x,R,g)=>{ts(x,R?b:r),ts(x,R?v:o),g&&g()},w=(x,R)=>{x._isLeaving=!1,ts(x,Z),ts(x,y),ts(x,p),R&&R()},C=x=>(R,g)=>{const S=x?W:d,L=()=>I(R,x,g);Ds(S,[R,L]),II(()=>{ts(R,x?f:a),Zo(R,x?b:r),MI(S)||YI(R,i,m,L)})};return Zl(e,{onBeforeEnter(x){Ds(G,[x]),Zo(x,a),Zo(x,o)},onBeforeAppear(x){Ds(c,[x]),Zo(x,f),Zo(x,v)},onEnter:C(!1),onAppear:C(!0),onLeave(x,R){x._isLeaving=!0;const g=()=>w(x,R);Zo(x,Z),ZR(),Zo(x,p),II(()=>{x._isLeaving&&(ts(x,Z),Zo(x,y),MI(s)||YI(x,i,N,g))}),Ds(s,[x,g])},onEnterCancelled(x){I(x,!1),Ds(u,[x])},onAppearCancelled(x){I(x,!0),Ds(M,[x])},onLeaveCancelled(x){w(x),Ds(h,[x])}})}function B4(n){if(n==null)return null;if(Li(n))return[zy(n.enter),zy(n.leave)];{const e=zy(n);return[e,e]}}function zy(n){return Dj(n)}function Zo(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n._vtc||(n._vtc=new Set)).add(e)}function ts(n,e){e.split(/\s+/).forEach(i=>i&&n.classList.remove(i));const{_vtc:t}=n;t&&(t.delete(e),t.size||(n._vtc=void 0))}function II(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let A4=0;function YI(n,e,t,i){const l=n._endId=++A4,a=()=>{l===n._endId&&i()};if(t)return setTimeout(a,t);const{type:o,timeout:r,propCount:f}=yR(n,e);if(!o)return i();const v=o+"end";let b=0;const Z=()=>{n.removeEventListener(v,p),a()},p=y=>{y.target===n&&++b>=f&&Z()};setTimeout(()=>{b(t[X]||"").split(", "),l=i(`${_o}Delay`),a=i(`${_o}Duration`),o=wI(l,a),r=i(`${md}Delay`),f=i(`${md}Duration`),v=wI(r,f);let b=null,Z=0,p=0;e===_o?o>0&&(b=_o,Z=o,p=a.length):e===md?v>0&&(b=md,Z=v,p=f.length):(Z=Math.max(o,v),b=Z>0?o>v?_o:md:null,p=b?b===_o?a.length:f.length:0);const y=b===_o&&/\b(transform|all)(,|$)/.test(i(`${_o}Property`).toString());return{type:b,timeout:Z,propCount:p,hasTransform:y}}function wI(n,e){for(;n.lengthgI(t)+gI(n[i])))}function gI(n){return Number(n.slice(0,-1).replace(",","."))*1e3}function ZR(){return document.body.offsetHeight}const vR=new WeakMap,WR=new WeakMap,GR={name:"TransitionGroup",props:Zl({},Q4,{tag:String,moveClass:String}),setup(n,{slots:e}){const t=Wl(),i=QL();let l,a;return Dl(()=>{if(!l.length)return;const o=n.moveClass||`${n.name||"v"}-move`;if(!tE(l[0].el,t.vnode.el,o))return;l.forEach($4),l.forEach(q4);const r=l.filter(eE);ZR(),r.forEach(f=>{const v=f.el,b=v.style;Zo(v,o),b.transform=b.webkitTransform=b.transitionDuration="";const Z=v._moveCb=p=>{p&&p.target!==v||(!p||/transform$/.test(p.propertyName))&&(v.removeEventListener("transitionend",Z),v._moveCb=null,ts(v,o))};v.addEventListener("transitionend",Z)})}),()=>{const o=on(n),r=pR(o);let f=o.tag||ln;l=a,a=e.default?NW(e.default()):[];for(let v=0;vdelete n.mode;GR.props;const LW=GR;function $4(n){const e=n.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function q4(n){WR.set(n,n.el.getBoundingClientRect())}function eE(n){const e=vR.get(n),t=WR.get(n),i=e.left-t.left,l=e.top-t.top;if(i||l){const a=n.el.style;return a.transform=a.webkitTransform=`translate(${i}px,${l}px)`,a.transitionDuration="0s",n}}function tE(n,e,t){const i=n.cloneNode();n._vtc&&n._vtc.forEach(o=>{o.split(/\s+/).forEach(r=>r&&i.classList.remove(r))}),t.split(/\s+/).forEach(o=>o&&i.classList.add(o)),i.style.display="none";const l=e.nodeType===1?e:e.parentNode;l.appendChild(i);const{hasTransform:a}=yR(i);return l.removeChild(i),a}const nE=["ctrl","shift","alt","meta"],iE={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>nE.some(t=>n[`${t}Key`]&&!e.includes(t))},VI=(n,e)=>(t,...i)=>{for(let l=0;l{pd(n,!1)}):pd(n,e))},beforeUnmount(n,{value:e}){pd(n,e)}};function pd(n,e){n.style.display=e?n._vod:"none"}const lE=Zl({patchProp:H4},T4);let LI;function XR(){return LI||(LI=s4(lE))}const Gm=(...n)=>{XR().render(...n)},NR=(...n)=>{const e=XR().createApp(...n),{mount:t}=e;return e.mount=i=>{const l=aE(i);if(!l)return;const a=e._component;!Sn(a)&&!a.render&&!a.template&&(a.template=l.innerHTML),l.innerHTML="";const o=t(l,!1,l instanceof SVGElement);return l instanceof Element&&(l.removeAttribute("v-cloak"),l.setAttribute("data-v-app","")),o},e};function aE(n){return el(n)?document.querySelector(n):n}function Yt(n){return Yt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yt(n)}function rE(n,e){if(Yt(n)!=="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,e||"default");if(Yt(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function MR(n){var e=rE(n,"string");return Yt(e)==="symbol"?e:String(e)}function ce(n,e,t){return e=MR(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function RI(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(n,l).enumerable})),t.push.apply(t,i)}return t}function P(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0;return typeof n=="function"?n(e):n??t}function _e(){for(var n=[],e=0;e0},n.prototype.connect_=function(){!h2||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),ME?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},n.prototype.disconnect_=function(){!h2||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},n.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=t===void 0?"":t,l=NE.some(function(a){return!!~i.indexOf(a)});l&&this.refresh()},n.getInstance=function(){return this.instance_||(this.instance_=new n),this.instance_},n.instance_=null,n}(),wR=function(n,e){for(var t=0,i=Object.keys(e);t"u"||!(Element instanceof Object))){if(!(e instanceof Yu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new xE(e)),this.controller_.addObserver(this),this.controller_.refresh())}},n.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof Yu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},n.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},n.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},n.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(i){return new CE(i.target,i.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},n.prototype.clearActive=function(){this.activeObservations_.splice(0)},n.prototype.hasActive=function(){return this.activeObservations_.length>0},n}(),VR=typeof WeakMap<"u"?new WeakMap:new YR,LR=function(){function n(e){if(!(this instanceof n))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=IE.getInstance(),i=new SE(e,t,this);VR.set(this,i)}return n}();["observe","unobserve","disconnect"].forEach(function(n){LR.prototype[n]=function(){var e;return(e=VR.get(this))[n].apply(e,arguments)}});var zE=function(){return typeof Xm.ResizeObserver<"u"?Xm.ResizeObserver:LR}();const TW=zE;function RR(n){if(Array.isArray(n))return n}function kE(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var i,l,a,o,r=[],f=!0,v=!1;try{if(a=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;f=!1}else for(;!(f=(i=a.call(t)).done)&&(r.push(i.value),r.length!==e);f=!0);}catch(b){v=!0,l=b}finally{try{if(!f&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(v)throw l}}return r}}function f2(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);t0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,i={},l=/;(?![^(]*\))/g,a=/:(.+)/;return Yt(e)==="object"?e:(e.split(l).forEach(function(o){if(o){var r=o.split(a);if(r.length>1){var f=t?RW(r[0].trim()):r[0].trim();i[f]=r[1].trim()}}}),i)},No=function(e,t){return e[t]!==void 0},ti=function n(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=Array.isArray(e)?e:[e],l=[];return i.forEach(function(a){Array.isArray(a)?l.push.apply(l,yt(n(a,t))):a&&a.type===ln?l.push.apply(l,yt(n(a.children,t))):a&&yl(a)?t&&!Rh(a)?l.push(a):t||l.push(a):b2(a)&&l.push(a)}),l},Lh=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(yl(e))return e.type===ln?t==="default"?ti(e.children):[]:e.children&&e.children[t]?ti(e.children[t](i)):[];var l=e.$slots[t]&&e.$slots[t](i);return ti(l)},us=function(e){for(var t,i=(e==null||(t=e.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);i&&!i.tagName;)i=i.nextSibling;return i},FR=function(e){var t={};if(e.$&&e.$.vnode){var i=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(r){var f=e.$props[r],v=mE(r);(f!==void 0||v in i)&&(t[r]=f)})}else if(yl(e)&&Yt(e.type)==="object"){var l=e.props||{},a={};Object.keys(l).forEach(function(r){a[RW(r)]=l[r]});var o=e.type.props||{};Object.keys(o).forEach(function(r){var f=yE(o,a,r,a[r]);(f!==void 0||r in a)&&(t[r]=f)})}return t},kW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=void 0;if(e.$){var o=e[t];if(o!==void 0)return typeof o=="function"&&l?o(i):o;a=e.$slots[t],a=l&&a?a(i):a}else if(yl(e)){var r=e.props&&e.props[t];if(r!==void 0&&e.props!==null)return typeof r=="function"&&l?r(i):r;e.type===ln?a=e.children:e.children&&e.children[t]&&(a=e.children[t],a=l&&a?a(i):a)}return Array.isArray(a)&&(a=ti(a),a=a.length===1?a[0]:a,a=a.length===0?void 0:a),a};function SI(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t={};return n.$?t=P(P({},t),n.$attrs):t=P(P({},t),n.props),SW(t)[e?"onEvents":"events"]}function rK(n){var e=(yl(n)?n.props:n.$attrs)||{},t=e.class||{},i={};return typeof t=="string"?t.split(" ").forEach(function(l){i[l.trim()]=!0}):Array.isArray(t)?_e(t).split(" ").forEach(function(l){i[l.trim()]=!0}):i=P(P({},i),t),i}function JR(n,e){var t=(yl(n)?n.props:n.$attrs)||{},i=t.style||{};if(typeof i=="string")i=zW(i,e);else if(e&&i){var l={};return Object.keys(i).forEach(function(a){return l[RW(a)]=i[a]}),l}return i}function oK(n){return n==null||n===""||Array.isArray(n)&&n.length===0}function Rh(n){return n&&(n.type===Da||n.type===ln&&n.children.length===0||n.type===Ns&&n.children.trim()==="")}function sK(n){return n&&n.type===Ns}function Ri(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return n.forEach(function(t){Array.isArray(t)?e.push.apply(e,yt(t)):(t==null?void 0:t.type)===ln?e.push.apply(e,yt(Ri(t.children))):e.push(t)}),e.filter(function(t){return!Rh(t)})}function Zd(n){if(n){var e=Ri(n);return e.length?e:void 0}else return n}function Si(n){return Array.isArray(n)&&n.length===1&&(n=n[0]),n&&n.__v_isVNode&&Yt(n.type)!=="symbol"}function ui(n,e){var t,i,l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(t=e[l])!==null&&t!==void 0?t:(i=n[l])===null||i===void 0?void 0:i.call(n)}const rr=He({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,t){var i=t.slots,l=zn({width:0,height:0,offsetHeight:0,offsetWidth:0}),a=null,o=null,r=function(){o&&(o.disconnect(),o=null)},f=function(p){var y=e.onResize,X=p[0].target,m=X.getBoundingClientRect(),N=m.width,G=m.height,d=X.offsetWidth,u=X.offsetHeight,s=Math.floor(N),h=Math.floor(G);if(l.width!==s||l.height!==h||l.offsetWidth!==d||l.offsetHeight!==u){var c={width:s,height:h,offsetWidth:d,offsetHeight:u};Xn(l,c),y&&Promise.resolve().then(function(){y(P(P({},c),{},{offsetWidth:d,offsetHeight:u}),X)})}},v=Wl(),b=function(){var p=e.disabled;if(p){r();return}var y=us(v),X=y!==a;X&&(r(),a=y),!o&&y&&(o=new TW(f),o.observe(y))};return Kt(function(){b()}),Dl(function(){b()}),la(function(){r()}),rt(function(){return e.disabled},function(){b()},{flush:"post"}),function(){var Z;return(Z=i.default)===null||Z===void 0?void 0:Z.call(i)[0]}}});var DR=function(e){return setTimeout(e,16)},OR=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(DR=function(e){return window.requestAnimationFrame(e)},OR=function(e){return window.cancelAnimationFrame(e)});var zI=0,FW=new Map;function jR(n){FW.delete(n)}function At(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;zI+=1;var t=zI;function i(l){if(l===0)jR(t),n();else{var a=DR(function(){i(l-1)});FW.set(t,a)}}return i(e),t}At.cancel=function(n){var e=FW.get(n);return jR(e),OR(e)};function m2(n){var e,t=function(a){return function(){e=null,n.apply(void 0,yt(a))}},i=function(){if(e==null){for(var a=arguments.length,o=new Array(a),r=0;rn.top-t)return"".concat(t+e.top,"px")}function JI(n,e,t){if(t!==void 0&&e.bottom=0)&&(t[l]=n[l]);return t}function jt(n,e){if(n==null)return{};var t=uK(n,e),i,l;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);for(l=0;l=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}const KR={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var dK={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const hK=dK;var fK={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const HR=fK;var bK={lang:P({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},hK),timePickerLocale:P({},HR)};const fh=bK;var La="${label} is not a valid ${type}",mK={locale:"en",Pagination:KR,DatePicker:fh,TimePicker:HR,Calendar:fh,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:La,method:La,array:La,object:La,number:La,date:La,boolean:La,integer:La,float:La,regexp:La,email:La,url:La,hex:La},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const Mr=mK,Ou=He({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,t){var i=t.slots,l=un("localeData",{}),a=de(function(){var r=e.componentName,f=r===void 0?"global":r,v=e.defaultLocale,b=v||Mr[f||"global"],Z=l.antLocale,p=f&&Z?Z[f]:{};return P(P({},typeof b=="function"?b():b),p||{})}),o=de(function(){var r=l.antLocale,f=r&&r.locale;return r&&r.exist&&!f?Mr.locale:f});return function(){var r=e.children||i.default,f=l.antLocale;return r==null?void 0:r(a.value,o.value,f)}}});function Qr(n,e,t){var i=un("localeData",{}),l=de(function(){var a=i.antLocale,o=mi(e)||Mr[n||"global"],r=n&&a?a[n]:{};return P(P(P({},typeof o=="function"?o():o),r||{}),mi(t)||{})});return[l]}var PR=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-default");return D("svg",{class:i,width:"184",height:"152",viewBox:"0 0 184 152"},[D("g",{fill:"none","fill-rule":"evenodd"},[D("g",{transform:"translate(24 31.67)"},[D("ellipse",{class:"".concat(i,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),D("path",{class:"".concat(i,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),D("path",{class:"".concat(i,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),D("path",{class:"".concat(i,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),D("path",{class:"".concat(i,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),D("path",{class:"".concat(i,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),D("g",{class:"".concat(i,"-g"),transform:"translate(149.65 15.383)"},[D("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),D("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};PR.PRESENTED_IMAGE_DEFAULT=!0;const pK=PR;var QR=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-simple");return D("svg",{class:i,width:"64",height:"41",viewBox:"0 0 64 41"},[D("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[D("ellipse",{class:"".concat(i,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),D("g",{class:"".concat(i,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[D("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),D("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(i,"-path")},null)])])])};QR.PRESENTED_IMAGE_SIMPLE=!0;const yK=QR;function jI(n,e){for(var t=0;t=0||(l[t]=n[t]);return l}function UI(n){return((e=n)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(n)==="[object Object]";var e}var $R=Object.prototype,qR=$R.toString,ZK=$R.hasOwnProperty,eT=/^\s*function (\w+)/;function EI(n){var e,t=(e=n==null?void 0:n.type)!==null&&e!==void 0?e:n;if(t){var i=t.toString().match(eT);return i?i[1]:""}return""}var vc=function(n){var e,t;return UI(n)!==!1&&typeof(e=n.constructor)=="function"&&UI(t=e.prototype)!==!1&&t.hasOwnProperty("isPrototypeOf")!==!1},vK=function(n){return n},na=vK,bh=function(n,e){return ZK.call(n,e)},WK=Number.isInteger||function(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n},wu=Array.isArray||function(n){return qR.call(n)==="[object Array]"},gu=function(n){return qR.call(n)==="[object Function]"},Mm=function(n){return vc(n)&&bh(n,"_vueTypes_name")},tT=function(n){return vc(n)&&(bh(n,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return bh(n,e)}))};function JW(n,e){return Object.defineProperty(n.bind(e),"__original",{value:n})}function Mc(n,e,t){var i;t===void 0&&(t=!1);var l=!0,a="";i=vc(n)?n:{type:n};var o=Mm(i)?i._vueTypes_name+" - ":"";if(tT(i)&&i.type!==null){if(i.type===void 0||i.type===!0||!i.required&&e===void 0)return l;wu(i.type)?(l=i.type.some(function(Z){return Mc(Z,e,!0)===!0}),a=i.type.map(function(Z){return EI(Z)}).join(" or ")):l=(a=EI(i))==="Array"?wu(e):a==="Object"?vc(e):a==="String"||a==="Number"||a==="Boolean"||a==="Function"?function(Z){if(Z==null)return"";var p=Z.constructor.toString().match(eT);return p?p[1]:""}(e)===a:e instanceof i.type}if(!l){var r=o+'value "'+e+'" should be of type "'+a+'"';return t===!1?(na(r),!1):r}if(bh(i,"validator")&&gu(i.validator)){var f=na,v=[];if(na=function(Z){v.push(Z)},l=i.validator(e),na=f,!l){var b=(v.length>1?"* ":"")+v.join(` -* `);return v.length=0,t===!1?(na(b),l):b}}return l}function Oa(n,e){var t=Object.defineProperties(e,{_vueTypes_name:{value:n,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(l){return l!==void 0||this.default?gu(l)||Mc(this,l,!0)===!0?(this.default=wu(l)?function(){return[].concat(l)}:vc(l)?function(){return Object.assign({},l)}:l,this):(na(this._vueTypes_name+' - invalid default value: "'+l+'"'),this):this}}}),i=t.validator;return gu(i)&&(t.validator=JW(i,t)),t}function Pr(n,e){var t=Oa(n,e);return Object.defineProperty(t,"validate",{value:function(i){return gu(this.validator)&&na(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: -`+JSON.stringify(this)),this.validator=JW(i,this),this}})}function KI(n,e,t){var i,l,a=(i=e,l={},Object.getOwnPropertyNames(i).forEach(function(Z){l[Z]=Object.getOwnPropertyDescriptor(i,Z)}),Object.defineProperties({},l));if(a._vueTypes_name=n,!vc(t))return a;var o,r,f=t.validator,v=_R(t,["validator"]);if(gu(f)){var b=a.validator;b&&(b=(r=(o=b).__original)!==null&&r!==void 0?r:o),a.validator=JW(b?function(Z){return b.call(this,Z)&&f.call(this,Z)}:f,a)}return Object.assign(a,v)}function x0(n){return n.replace(/^(?!\s*$)/gm," ")}var GK=function(){return Pr("any",{})},XK=function(){return Pr("function",{type:Function})},NK=function(){return Pr("boolean",{type:Boolean})},MK=function(){return Pr("string",{type:String})},IK=function(){return Pr("number",{type:Number})},YK=function(){return Pr("array",{type:Array})},wK=function(){return Pr("object",{type:Object})},gK=function(){return Oa("integer",{type:Number,validator:function(n){return WK(n)}})},VK=function(){return Oa("symbol",{validator:function(n){return typeof n=="symbol"}})};function LK(n,e){if(e===void 0&&(e="custom validation failed"),typeof n!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Oa(n.name||"<>",{validator:function(t){var i=n(t);return i||na(this._vueTypes_name+" - "+e),i}})}function RK(n){if(!wu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+n.join('", "')+'".',t=n.reduce(function(i,l){if(l!=null){var a=l.constructor;i.indexOf(a)===-1&&i.push(a)}return i},[]);return Oa("oneOf",{type:t.length>0?t:void 0,validator:function(i){var l=n.indexOf(i)!==-1;return l||na(e),l}})}function TK(n){if(!wu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,t=[],i=0;i()=>(e||n((e={exports:{}}).exports,e),e.exports);var Q2e=wj((Fa,Ja)=>{(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function i(a){if(a.ep)return;a.ep=!0;const l=t(a);fetch(a.href,l)}})();function sW(n,e){const t=Object.create(null),i=n.split(",");for(let a=0;a!!t[a.toLowerCase()]:a=>!!t[a]}function cW(n){if(gn(n)){const e={};for(let t=0;t{if(t){const i=t.split(Vj);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function uW(n){let e="";if(el(n))e=n;else if(gn(n))for(let t=0;t{},Cj=()=>!1,Sj=/^on[^a-z]/,p0=n=>Sj.test(n),dW=n=>n.startsWith("onUpdate:"),Zl=Object.assign,hW=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},zj=Object.prototype.hasOwnProperty,ei=(n,e)=>zj.call(n,e),gn=Array.isArray,Dd=n=>y0(n)==="[object Map]",kj=n=>y0(n)==="[object Set]",Sn=n=>typeof n=="function",el=n=>typeof n=="string",fW=n=>typeof n=="symbol",Li=n=>n!==null&&typeof n=="object",ML=n=>Li(n)&&Sn(n.then)&&Sn(n.catch),Fj=Object.prototype.toString,y0=n=>Fj.call(n),Jj=n=>y0(n).slice(8,-1),Dj=n=>y0(n)==="[object Object]",bW=n=>el(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,Vb=sW(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Z0=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},Oj=/-(\w)/g,Wa=Z0(n=>n.replace(Oj,(e,t)=>t?t.toUpperCase():"")),jj=/\B([A-Z])/g,ku=Z0(n=>n.replace(jj,"-$1").toLowerCase()),v0=Z0(n=>n.charAt(0).toUpperCase()+n.slice(1)),gy=Z0(n=>n?`on${v0(n)}`:""),ah=(n,e)=>!Object.is(n,e),Vy=(n,e)=>{for(let t=0;t{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value:t})},Uj=n=>{const e=parseFloat(n);return isNaN(e)?n:e},Ej=n=>{const e=el(n)?Number(n):NaN;return isNaN(e)?n:e};let $M;const Kj=()=>$M||($M=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let za;class Hj{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=za,!e&&za&&(this.index=(za.scopes||(za.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=za;try{return za=this,e()}finally{za=t}}}on(){za=this}off(){za=this.parent}stop(e){if(this._active){let t,i;for(t=0,i=this.effects.length;t{const e=new Set(n);return e.w=0,e.n=0,e},YL=n=>(n.w&Gs)>0,wL=n=>(n.n&Gs)>0,Bj=({deps:n})=>{if(n.length)for(let e=0;e{const{deps:e}=n;if(e.length){let t=0;for(let i=0;i{(b==="length"||b>=f)&&r.push(v)})}else switch(t!==void 0&&r.push(o.get(t)),e){case"add":gn(n)?bW(t)&&r.push(o.get("length")):(r.push(o.get(cc)),Dd(n)&&r.push(o.get(i2)));break;case"delete":gn(n)||(r.push(o.get(cc)),Dd(n)&&r.push(o.get(i2)));break;case"set":Dd(n)&&r.push(o.get(cc));break}if(r.length===1)r[0]&&l2(r[0]);else{const f=[];for(const v of r)v&&f.push(...v);l2(mW(f))}}function l2(n,e){const t=gn(n)?n:[...n];for(const i of t)i.computed&&eI(i);for(const i of t)i.computed||eI(i)}function eI(n,e){(n!==yr||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}function _j(n,e){var t;return(t=Zm.get(n))===null||t===void 0?void 0:t.get(e)}const $j=sW("__proto__,__v_isRef,__isVue"),LL=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(fW)),qj=yW(),eU=yW(!1,!0),tU=yW(!0),tI=nU();function nU(){const n={};return["includes","indexOf","lastIndexOf"].forEach(e=>{n[e]=function(...t){const i=on(this);for(let l=0,o=this.length;l{n[e]=function(...t){Fu();const i=on(this)[e].apply(this,t);return Ju(),i}}),n}function iU(n){const e=on(this);return Ga(e,"has",n),e.hasOwnProperty(n)}function yW(n=!1,e=!1){return function(i,a,l){if(a==="__v_isReactive")return!n;if(a==="__v_isReadonly")return n;if(a==="__v_isShallow")return e;if(a==="__v_raw"&&l===(n?e?vU:SL:e?CL:xL).get(i))return i;const o=gn(i);if(!n){if(o&&ei(tI,a))return Reflect.get(tI,a,l);if(a==="hasOwnProperty")return iU}const r=Reflect.get(i,a,l);return(fW(a)?LL.has(a):$j(a))||(n||Ga(i,"get",a),e)?r:$i(r)?o&&bW(a)?r:r.value:Li(r)?n?zL(r):zn(r):r}}const lU=RL(),aU=RL(!0);function RL(n=!1){return function(t,i,a,l){let o=t[i];if(Mu(o)&&$i(o)&&!$i(a))return!1;if(!n&&(!vm(a)&&!Mu(a)&&(o=on(o),a=on(a)),!gn(t)&&$i(o)&&!$i(a)))return o.value=a,!0;const r=gn(t)&&bW(i)?Number(i)n,W0=n=>Reflect.getPrototypeOf(n);function Ff(n,e,t=!1,i=!1){n=n.__v_raw;const a=on(n),l=on(e);t||(e!==l&&Ga(a,"get",e),Ga(a,"get",l));const{has:o}=W0(a),r=i?ZW:t?GW:rh;if(o.call(a,e))return r(n.get(e));if(o.call(a,l))return r(n.get(l));n!==a&&n.get(e)}function Jf(n,e=!1){const t=this.__v_raw,i=on(t),a=on(n);return e||(n!==a&&Ga(i,"has",n),Ga(i,"has",a)),n===a?t.has(n):t.has(n)||t.has(a)}function Df(n,e=!1){return n=n.__v_raw,!e&&Ga(on(n),"iterate",cc),Reflect.get(n,"size",n)}function nI(n){n=on(n);const e=on(this);return W0(e).has.call(e,n)||(e.add(n),Ro(e,"add",n,n)),this}function iI(n,e){e=on(e);const t=on(this),{has:i,get:a}=W0(t);let l=i.call(t,n);l||(n=on(n),l=i.call(t,n));const o=a.call(t,n);return t.set(n,e),l?ah(e,o)&&Ro(t,"set",n,e):Ro(t,"add",n,e),this}function lI(n){const e=on(this),{has:t,get:i}=W0(e);let a=t.call(e,n);a||(n=on(n),a=t.call(e,n)),i&&i.call(e,n);const l=e.delete(n);return a&&Ro(e,"delete",n,void 0),l}function aI(){const n=on(this),e=n.size!==0,t=n.clear();return e&&Ro(n,"clear",void 0,void 0),t}function Of(n,e){return function(i,a){const l=this,o=l.__v_raw,r=on(o),f=e?ZW:n?GW:rh;return!n&&Ga(r,"iterate",cc),o.forEach((v,b)=>i.call(a,f(v),f(b),l))}}function jf(n,e,t){return function(...i){const a=this.__v_raw,l=on(a),o=Dd(l),r=n==="entries"||n===Symbol.iterator&&o,f=n==="keys"&&o,v=a[n](...i),b=t?ZW:e?GW:rh;return!e&&Ga(l,"iterate",f?i2:cc),{next(){const{value:Z,done:p}=v.next();return p?{value:Z,done:p}:{value:r?[b(Z[0]),b(Z[1])]:b(Z),done:p}},[Symbol.iterator](){return this}}}}function Ao(n){return function(...e){return n==="delete"?!1:this}}function dU(){const n={get(l){return Ff(this,l)},get size(){return Df(this)},has:Jf,add:nI,set:iI,delete:lI,clear:aI,forEach:Of(!1,!1)},e={get(l){return Ff(this,l,!1,!0)},get size(){return Df(this)},has:Jf,add:nI,set:iI,delete:lI,clear:aI,forEach:Of(!1,!0)},t={get(l){return Ff(this,l,!0)},get size(){return Df(this,!0)},has(l){return Jf.call(this,l,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:Of(!0,!1)},i={get(l){return Ff(this,l,!0,!0)},get size(){return Df(this,!0)},has(l){return Jf.call(this,l,!0)},add:Ao("add"),set:Ao("set"),delete:Ao("delete"),clear:Ao("clear"),forEach:Of(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(l=>{n[l]=jf(l,!1,!1),t[l]=jf(l,!0,!1),e[l]=jf(l,!1,!0),i[l]=jf(l,!0,!0)}),[n,t,e,i]}const[hU,fU,bU,mU]=dU();function vW(n,e){const t=e?n?mU:bU:n?fU:hU;return(i,a,l)=>a==="__v_isReactive"?!n:a==="__v_isReadonly"?n:a==="__v_raw"?i:Reflect.get(ei(t,a)&&a in i?t:i,a,l)}const pU={get:vW(!1,!1)},yU={get:vW(!1,!0)},ZU={get:vW(!0,!1)},xL=new WeakMap,CL=new WeakMap,SL=new WeakMap,vU=new WeakMap;function WU(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function GU(n){return n.__v_skip||!Object.isExtensible(n)?0:WU(Jj(n))}function zn(n){return Mu(n)?n:WW(n,!1,TL,pU,xL)}function XU(n){return WW(n,!1,uU,yU,CL)}function zL(n){return WW(n,!0,cU,ZU,SL)}function WW(n,e,t,i,a){if(!Li(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const l=a.get(n);if(l)return l;const o=GU(n);if(o===0)return n;const r=new Proxy(n,o===2?i:t);return a.set(n,r),r}function hu(n){return Mu(n)?hu(n.__v_raw):!!(n&&n.__v_isReactive)}function Mu(n){return!!(n&&n.__v_isReadonly)}function vm(n){return!!(n&&n.__v_isShallow)}function kL(n){return hu(n)||Mu(n)}function on(n){const e=n&&n.__v_raw;return e?on(e):n}function FL(n){return ym(n,"__v_skip",!0),n}const rh=n=>Li(n)?zn(n):n,GW=n=>Li(n)?zL(n):n;function JL(n){ms&&yr&&(n=on(n),VL(n.dep||(n.dep=mW())))}function DL(n,e){n=on(n);const t=n.dep;t&&l2(t)}function $i(n){return!!(n&&n.__v_isRef===!0)}function Ne(n){return OL(n,!1)}function Gn(n){return OL(n,!0)}function OL(n,e){return $i(n)?n:new NU(n,e)}class NU{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:on(e),this._value=t?e:rh(e)}get value(){return JL(this),this._value}set value(e){const t=this.__v_isShallow||vm(e)||Mu(e);e=t?e:on(e),ah(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:rh(e),DL(this))}}function mi(n){return $i(n)?n.value:n}const MU={get:(n,e,t)=>mi(Reflect.get(n,e,t)),set:(n,e,t,i)=>{const a=n[e];return $i(a)&&!$i(t)?(a.value=t,!0):Reflect.set(n,e,t,i)}};function jL(n){return hu(n)?n:new Proxy(n,MU)}function uc(n){const e=gn(n)?new Array(n.length):{};for(const t in n)e[t]=Ot(n,t);return e}class IU{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return _j(on(this._object),this._key)}}function Ot(n,e,t){const i=n[e];return $i(i)?i:new IU(n,e,t)}var UL;class YU{constructor(e,t,i,a){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[UL]=!1,this._dirty=!0,this.effect=new pW(e,()=>{this._dirty||(this._dirty=!0,DL(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=i}get value(){const e=on(this);return JL(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}UL="__v_isReadonly";function wU(n,e,t=!1){let i,a;const l=Sn(n);return l?(i=n,a=Gr):(i=n.get,a=n.set),new YU(i,a,l||!a,t)}function ps(n,e,t,i){let a;try{a=i?n(...i):n()}catch(l){G0(l,e,t)}return a}function nr(n,e,t,i){if(Sn(n)){const l=ps(n,e,t,i);return l&&ML(l)&&l.catch(o=>{G0(o,e,t)}),l}const a=[];for(let l=0;l>>1;sh(zl[i])Ur&&zl.splice(e,1)}function RU(n){gn(n)?fu.push(...n):(!Wo||!Wo.includes(n,n.allowRecurse?As+1:As))&&fu.push(n),KL()}function rI(n,e=oh?Ur+1:0){for(;esh(t)-sh(i)),As=0;Asn.id==null?1/0:n.id,TU=(n,e)=>{const t=sh(n)-sh(e);if(t===0){if(n.pre&&!e.pre)return-1;if(e.pre&&!n.pre)return 1}return t};function PL(n){a2=!1,oh=!0,zl.sort(TU);const e=Gr;try{for(Ur=0;Urel(y)?y.trim():y)),Z&&(a=t.map(Uj))}let r,f=i[r=gy(e)]||i[r=gy(Wa(e))];!f&&l&&(f=i[r=gy(ku(e))]),f&&nr(f,n,6,a);const v=i[r+"Once"];if(v){if(!n.emitted)n.emitted={};else if(n.emitted[r])return;n.emitted[r]=!0,nr(v,n,6,a)}}function QL(n,e,t=!1){const i=e.emitsCache,a=i.get(n);if(a!==void 0)return a;const l=n.emits;let o={},r=!1;if(!Sn(n)){const f=v=>{const b=QL(v,e,!0);b&&(r=!0,Zl(o,b))};!t&&e.mixins.length&&e.mixins.forEach(f),n.extends&&f(n.extends),n.mixins&&n.mixins.forEach(f)}return!l&&!r?(Li(n)&&i.set(n,null),null):(gn(l)?l.forEach(f=>o[f]=null):Zl(o,l),Li(n)&&i.set(n,o),o)}function X0(n,e){return!n||!p0(e)?!1:(e=e.slice(2).replace(/Once$/,""),ei(n,e[0].toLowerCase()+e.slice(1))||ei(n,ku(e))||ei(n,e))}let Yl=null,N0=null;function Wm(n){const e=Yl;return Yl=n,N0=n&&n.type.__scopeId||null,e}function CU(n){N0=n}function SU(){N0=null}function pa(n,e=Yl,t){if(!e||n._n)return n;const i=(...a)=>{i._d&&yI(-1);const l=Wm(e);let o;try{o=n(...a)}finally{Wm(l),i._d&&yI(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function Ly(n){const{type:e,vnode:t,proxy:i,withProxy:a,props:l,propsOptions:[o],slots:r,attrs:f,emit:v,render:b,renderCache:Z,data:p,setupState:y,ctx:X,inheritAttrs:m}=n;let N,G;const d=Wm(n);try{if(t.shapeFlag&4){const s=a||i;N=jr(b.call(s,s,Z,l,y,p,X)),G=f}else{const s=e;N=jr(s.length>1?s(l,{attrs:f,slots:r,emit:v}):s(l,null)),G=e.props?f:zU(f)}}catch(s){Ed.length=0,G0(s,n,1),N=D(Da)}let u=N;if(G&&m!==!1){const s=Object.keys(G),{shapeFlag:h}=u;s.length&&h&7&&(o&&s.some(dW)&&(G=kU(G,o)),u=Vl(u,G))}return t.dirs&&(u=Vl(u),u.dirs=u.dirs?u.dirs.concat(t.dirs):t.dirs),t.transition&&(u.transition=t.transition),N=u,Wm(d),N}const zU=n=>{let e;for(const t in n)(t==="class"||t==="style"||p0(t))&&((e||(e={}))[t]=n[t]);return e},kU=(n,e)=>{const t={};for(const i in n)(!dW(i)||!(i.slice(9)in e))&&(t[i]=n[i]);return t};function FU(n,e,t){const{props:i,children:a,component:l}=n,{props:o,children:r,patchFlag:f}=e,v=l.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&f>=0){if(f&1024)return!0;if(f&16)return i?oI(i,o,v):!!o;if(f&8){const b=e.dynamicProps;for(let Z=0;Zn.__isSuspense;function OU(n,e){e&&e.pendingBranch?gn(n)?e.effects.push(...n):e.effects.push(n):RU(n)}function hn(n,e){if(Ei){let t=Ei.provides;const i=Ei.parent&&Ei.parent.provides;i===t&&(t=Ei.provides=Object.create(i)),t[n]=e}}function un(n,e,t=!1){const i=Ei||Yl;if(i){const a=i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides;if(a&&n in a)return a[n];if(arguments.length>1)return t&&Sn(e)?e.call(i.proxy):e}}function qt(n,e){return MW(n,null,e)}const Uf={};function rt(n,e,t){return MW(n,e,t)}function MW(n,e,{immediate:t,deep:i,flush:a,onTrack:l,onTrigger:o}=Mi){const r=IL()===(Ei==null?void 0:Ei.scope)?Ei:null;let f,v=!1,b=!1;if($i(n)?(f=()=>n.value,v=vm(n)):hu(n)?(f=()=>n,i=!0):gn(n)?(b=!0,v=n.some(u=>hu(u)||vm(u)),f=()=>n.map(u=>{if($i(u))return u.value;if(hu(u))return ac(u);if(Sn(u))return ps(u,r,2)})):Sn(n)?e?f=()=>ps(n,r,2):f=()=>{if(!(r&&r.isUnmounted))return Z&&Z(),nr(n,r,3,[p])}:f=Gr,e&&i){const u=f;f=()=>ac(u())}let Z,p=u=>{Z=G.onStop=()=>{ps(u,r,4)}},y;if(hh)if(p=Gr,e?t&&nr(e,r,3,[f(),b?[]:void 0,p]):f(),a==="sync"){const u=x4();y=u.__watcherHandles||(u.__watcherHandles=[])}else return Gr;let X=b?new Array(n.length).fill(Uf):Uf;const m=()=>{if(G.active)if(e){const u=G.run();(i||v||(b?u.some((s,h)=>ah(s,X[h])):ah(u,X)))&&(Z&&Z(),nr(e,r,3,[u,X===Uf?void 0:b&&X[0]===Uf?[]:X,p]),X=u)}else G.run()};m.allowRecurse=!!e;let N;a==="sync"?N=m:a==="post"?N=()=>fa(m,r&&r.suspense):(m.pre=!0,r&&(m.id=r.uid),N=()=>NW(m));const G=new pW(f,N);e?t?m():X=G.run():a==="post"?fa(G.run.bind(G),r&&r.suspense):G.run();const d=()=>{G.stop(),r&&r.scope&&hW(r.scope.effects,G)};return y&&y.push(d),d}function jU(n,e,t){const i=this.proxy,a=el(n)?n.includes(".")?BL(i,n):()=>i[n]:n.bind(i,i);let l;Sn(e)?l=e:(l=e.handler,t=e);const o=Ei;Iu(this);const r=MW(a,l.bind(i),t);return o?Iu(o):dc(),r}function BL(n,e){const t=e.split(".");return()=>{let i=n;for(let a=0;a{ac(t,e)});else if(Dj(n))for(const t in n)ac(n[t],e);return n}function AL(){const n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Kt(()=>{n.isMounted=!0}),fn(()=>{n.isUnmounting=!0}),n}const Aa=[Function,Array],UU={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Aa,onEnter:Aa,onAfterEnter:Aa,onEnterCancelled:Aa,onBeforeLeave:Aa,onLeave:Aa,onAfterLeave:Aa,onLeaveCancelled:Aa,onBeforeAppear:Aa,onAppear:Aa,onAfterAppear:Aa,onAppearCancelled:Aa},setup(n,{slots:e}){const t=Wl(),i=AL();let a;return()=>{const l=e.default&&IW(e.default(),!0);if(!l||!l.length)return;let o=l[0];if(l.length>1){for(const m of l)if(m.type!==Da){o=m;break}}const r=on(n),{mode:f}=r;if(i.isLeaving)return Ry(o);const v=sI(o);if(!v)return Ry(o);const b=ch(v,r,i,t);uh(v,b);const Z=t.subTree,p=Z&&sI(Z);let y=!1;const{getTransitionKey:X}=v.type;if(X){const m=X();a===void 0?a=m:m!==a&&(a=m,y=!0)}if(p&&p.type!==Da&&(!_s(v,p)||y)){const m=ch(p,r,i,t);if(uh(p,m),f==="out-in")return i.isLeaving=!0,m.afterLeave=()=>{i.isLeaving=!1,t.update.active!==!1&&t.update()},Ry(o);f==="in-out"&&v.type!==Da&&(m.delayLeave=(N,G,d)=>{const u=$L(i,p);u[String(p.key)]=p,N._leaveCb=()=>{G(),N._leaveCb=void 0,delete b.delayedLeave},b.delayedLeave=d})}return o}}},_L=UU;function $L(n,e){const{leavingVNodes:t}=n;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function ch(n,e,t,i){const{appear:a,mode:l,persisted:o=!1,onBeforeEnter:r,onEnter:f,onAfterEnter:v,onEnterCancelled:b,onBeforeLeave:Z,onLeave:p,onAfterLeave:y,onLeaveCancelled:X,onBeforeAppear:m,onAppear:N,onAfterAppear:G,onAppearCancelled:d}=e,u=String(n.key),s=$L(t,n),h=(M,I)=>{M&&nr(M,i,9,I)},c=(M,I)=>{const w=I[1];h(M,I),gn(M)?M.every(C=>C.length<=1)&&w():M.length<=1&&w()},W={mode:l,persisted:o,beforeEnter(M){let I=r;if(!t.isMounted)if(a)I=m||r;else return;M._leaveCb&&M._leaveCb(!0);const w=s[u];w&&_s(n,w)&&w.el._leaveCb&&w.el._leaveCb(),h(I,[M])},enter(M){let I=f,w=v,C=b;if(!t.isMounted)if(a)I=N||f,w=G||v,C=d||b;else return;let x=!1;const R=M._enterCb=g=>{x||(x=!0,g?h(C,[M]):h(w,[M]),W.delayedLeave&&W.delayedLeave(),M._enterCb=void 0)};I?c(I,[M,R]):R()},leave(M,I){const w=String(n.key);if(M._enterCb&&M._enterCb(!0),t.isUnmounting)return I();h(Z,[M]);let C=!1;const x=M._leaveCb=R=>{C||(C=!0,I(),R?h(X,[M]):h(y,[M]),M._leaveCb=void 0,s[w]===n&&delete s[w])};s[w]=n,p?c(p,[M,x]):x()},clone(M){return ch(M,e,t,i)}};return W}function Ry(n){if(M0(n))return n=Vl(n),n.children=null,n}function sI(n){return M0(n)?n.children?n.children[0]:void 0:n}function uh(n,e){n.shapeFlag&6&&n.component?uh(n.component.subTree,e):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function IW(n,e=!1,t){let i=[],a=0;for(let l=0;l1)for(let l=0;l!!n.type.__asyncLoader,M0=n=>n.type.__isKeepAlive;function I0(n,e){eR(n,"a",e)}function qL(n,e){eR(n,"da",e)}function eR(n,e,t=Ei){const i=n.__wdc||(n.__wdc=()=>{let a=t;for(;a;){if(a.isDeactivated)return;a=a.parent}return n()});if(Y0(e,i,t),t){let a=t.parent;for(;a&&a.parent;)M0(a.parent.vnode)&&EU(i,e,t,a),a=a.parent}}function EU(n,e,t,i){const a=Y0(e,n,i,!0);la(()=>{hW(i[e],a)},t)}function Y0(n,e,t=Ei,i=!1){if(t){const a=t[n]||(t[n]=[]),l=e.__weh||(e.__weh=(...o)=>{if(t.isUnmounted)return;Fu(),Iu(t);const r=nr(e,t,n,o);return dc(),Ju(),r});return i?a.unshift(l):a.push(l),l}}const xo=n=>(e,t=Ei)=>(!hh||n==="sp")&&Y0(n,(...i)=>e(...i),t),w0=xo("bm"),Kt=xo("m"),YW=xo("bu"),Dl=xo("u"),fn=xo("bum"),la=xo("um"),KU=xo("sp"),HU=xo("rtg"),PU=xo("rtc");function QU(n,e=Ei){Y0("ec",n,e)}function vl(n,e){const t=Yl;if(t===null)return n;const i=L0(t)||t.proxy,a=n.dirs||(n.dirs=[]);for(let l=0;le(o,r,void 0,l&&l[r]));else{const o=Object.keys(n);a=new Array(o.length);for(let r=0,f=o.length;ryl(e)?!(e.type===Da||e.type===ln&&!iR(e.children)):!0)?n:null}const r2=n=>n?bR(n)?L0(n)||n.proxy:r2(n.parent):null,jd=Zl(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>r2(n.parent),$root:n=>r2(n.root),$emit:n=>n.emit,$options:n=>wW(n),$forceUpdate:n=>n.f||(n.f=()=>NW(n.update)),$nextTick:n=>n.n||(n.n=cn.bind(n.proxy)),$watch:n=>jU.bind(n)}),Ty=(n,e)=>n!==Mi&&!n.__isScriptSetup&&ei(n,e),qU={get({_:n},e){const{ctx:t,setupState:i,data:a,props:l,accessCache:o,type:r,appContext:f}=n;let v;if(e[0]!=="$"){const y=o[e];if(y!==void 0)switch(y){case 1:return i[e];case 2:return a[e];case 4:return t[e];case 3:return l[e]}else{if(Ty(i,e))return o[e]=1,i[e];if(a!==Mi&&ei(a,e))return o[e]=2,a[e];if((v=n.propsOptions[0])&&ei(v,e))return o[e]=3,l[e];if(t!==Mi&&ei(t,e))return o[e]=4,t[e];o2&&(o[e]=0)}}const b=jd[e];let Z,p;if(b)return e==="$attrs"&&Ga(n,"get",e),b(n);if((Z=r.__cssModules)&&(Z=Z[e]))return Z;if(t!==Mi&&ei(t,e))return o[e]=4,t[e];if(p=f.config.globalProperties,ei(p,e))return p[e]},set({_:n},e,t){const{data:i,setupState:a,ctx:l}=n;return Ty(a,e)?(a[e]=t,!0):i!==Mi&&ei(i,e)?(i[e]=t,!0):ei(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(l[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:i,appContext:a,propsOptions:l}},o){let r;return!!t[o]||n!==Mi&&ei(n,o)||Ty(e,o)||(r=l[0])&&ei(r,o)||ei(i,o)||ei(jd,o)||ei(a.config.globalProperties,o)},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:ei(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};let o2=!0;function e4(n){const e=wW(n),t=n.proxy,i=n.ctx;o2=!1,e.beforeCreate&&uI(e.beforeCreate,n,"bc");const{data:a,computed:l,methods:o,watch:r,provide:f,inject:v,created:b,beforeMount:Z,mounted:p,beforeUpdate:y,updated:X,activated:m,deactivated:N,beforeDestroy:G,beforeUnmount:d,destroyed:u,unmounted:s,render:h,renderTracked:c,renderTriggered:W,errorCaptured:M,serverPrefetch:I,expose:w,inheritAttrs:C,components:x,directives:R,filters:g}=e;if(v&&t4(v,i,null,n.appContext.config.unwrapInjectedRef),o)for(const V in o){const Y=o[V];Sn(Y)&&(i[V]=Y.bind(t))}if(a){const V=a.call(t,t);Li(V)&&(n.data=zn(V))}if(o2=!0,l)for(const V in l){const Y=l[V],T=Sn(Y)?Y.bind(t,t):Sn(Y.get)?Y.get.bind(t,t):Gr,J=!Sn(Y)&&Sn(Y.set)?Y.set.bind(t):Gr,U=de({get:T,set:J});Object.defineProperty(i,V,{enumerable:!0,configurable:!0,get:()=>U.value,set:K=>U.value=K})}if(r)for(const V in r)lR(r[V],i,t,V);if(f){const V=Sn(f)?f.call(t):f;Reflect.ownKeys(V).forEach(Y=>{hn(Y,V[Y])})}b&&uI(b,n,"c");function L(V,Y){gn(Y)?Y.forEach(T=>V(T.bind(t))):Y&&V(Y.bind(t))}if(L(w0,Z),L(Kt,p),L(YW,y),L(Dl,X),L(I0,m),L(qL,N),L(QU,M),L(PU,c),L(HU,W),L(fn,d),L(la,s),L(KU,I),gn(w))if(w.length){const V=n.exposed||(n.exposed={});w.forEach(Y=>{Object.defineProperty(V,Y,{get:()=>t[Y],set:T=>t[Y]=T})})}else n.exposed||(n.exposed={});h&&n.render===Gr&&(n.render=h),C!=null&&(n.inheritAttrs=C),x&&(n.components=x),R&&(n.directives=R)}function t4(n,e,t=Gr,i=!1){gn(n)&&(n=s2(n));for(const a in n){const l=n[a];let o;Li(l)?"default"in l?o=un(l.from||a,l.default,!0):o=un(l.from||a):o=un(l),$i(o)&&i?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>o.value,set:r=>o.value=r}):e[a]=o}}function uI(n,e,t){nr(gn(n)?n.map(i=>i.bind(e.proxy)):n.bind(e.proxy),e,t)}function lR(n,e,t,i){const a=i.includes(".")?BL(t,i):()=>t[i];if(el(n)){const l=e[n];Sn(l)&&rt(a,l)}else if(Sn(n))rt(a,n.bind(t));else if(Li(n))if(gn(n))n.forEach(l=>lR(l,e,t,i));else{const l=Sn(n.handler)?n.handler.bind(t):e[n.handler];Sn(l)&&rt(a,l,n)}}function wW(n){const e=n.type,{mixins:t,extends:i}=e,{mixins:a,optionsCache:l,config:{optionMergeStrategies:o}}=n.appContext,r=l.get(e);let f;return r?f=r:!a.length&&!t&&!i?f=e:(f={},a.length&&a.forEach(v=>Gm(f,v,o,!0)),Gm(f,e,o)),Li(e)&&l.set(e,f),f}function Gm(n,e,t,i=!1){const{mixins:a,extends:l}=e;l&&Gm(n,l,t,!0),a&&a.forEach(o=>Gm(n,o,t,!0));for(const o in e)if(!(i&&o==="expose")){const r=n4[o]||t&&t[o];n[o]=r?r(n[o],e[o]):e[o]}return n}const n4={data:dI,props:Ps,emits:Ps,methods:Ps,computed:Ps,beforeCreate:ql,created:ql,beforeMount:ql,mounted:ql,beforeUpdate:ql,updated:ql,beforeDestroy:ql,beforeUnmount:ql,destroyed:ql,unmounted:ql,activated:ql,deactivated:ql,errorCaptured:ql,serverPrefetch:ql,components:Ps,directives:Ps,watch:l4,provide:dI,inject:i4};function dI(n,e){return e?n?function(){return Zl(Sn(n)?n.call(this,this):n,Sn(e)?e.call(this,this):e)}:e:n}function i4(n,e){return Ps(s2(n),s2(e))}function s2(n){if(gn(n)){const e={};for(let t=0;t0)&&!(o&16)){if(o&8){const b=n.vnode.dynamicProps;for(let Z=0;Z{f=!0;const[p,y]=rR(Z,e,!0);Zl(o,p),y&&r.push(...y)};!t&&e.mixins.length&&e.mixins.forEach(b),n.extends&&b(n.extends),n.mixins&&n.mixins.forEach(b)}if(!l&&!f)return Li(n)&&i.set(n,du),du;if(gn(l))for(let b=0;b-1,y[1]=m<0||X-1||ei(y,"default"))&&r.push(Z)}}}const v=[o,r];return Li(n)&&i.set(n,v),v}function hI(n){return n[0]!=="$"}function fI(n){const e=n&&n.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:n===null?"null":""}function bI(n,e){return fI(n)===fI(e)}function mI(n,e){return gn(e)?e.findIndex(t=>bI(t,n)):Sn(e)&&bI(e,n)?0:-1}const oR=n=>n[0]==="_"||n==="$stable",gW=n=>gn(n)?n.map(jr):[jr(n)],o4=(n,e,t)=>{if(e._n)return e;const i=pa((...a)=>gW(e(...a)),t);return i._c=!1,i},sR=(n,e,t)=>{const i=n._ctx;for(const a in n){if(oR(a))continue;const l=n[a];if(Sn(l))e[a]=o4(a,l,i);else if(l!=null){const o=gW(l);e[a]=()=>o}}},cR=(n,e)=>{const t=gW(e);n.slots.default=()=>t},s4=(n,e)=>{if(n.vnode.shapeFlag&32){const t=e._;t?(n.slots=on(e),ym(e,"_",t)):sR(e,n.slots={})}else n.slots={},e&&cR(n,e);ym(n.slots,V0,1)},c4=(n,e,t)=>{const{vnode:i,slots:a}=n;let l=!0,o=Mi;if(i.shapeFlag&32){const r=e._;r?t&&r===1?l=!1:(Zl(a,e),!t&&r===1&&delete a._):(l=!e.$stable,sR(e,a)),o=e}else e&&(cR(n,e),o={default:1});if(l)for(const r in a)!oR(r)&&!(r in o)&&delete a[r]};function uR(){return{app:null,config:{isNativeTag:Cj,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let u4=0;function d4(n,e){return function(i,a=null){Sn(i)||(i=Object.assign({},i)),a!=null&&!Li(a)&&(a=null);const l=uR(),o=new Set;let r=!1;const f=l.app={_uid:u4++,_component:i,_props:a,_container:null,_context:l,_instance:null,version:C4,get config(){return l.config},set config(v){},use(v,...b){return o.has(v)||(v&&Sn(v.install)?(o.add(v),v.install(f,...b)):Sn(v)&&(o.add(v),v(f,...b))),f},mixin(v){return l.mixins.includes(v)||l.mixins.push(v),f},component(v,b){return b?(l.components[v]=b,f):l.components[v]},directive(v,b){return b?(l.directives[v]=b,f):l.directives[v]},mount(v,b,Z){if(!r){const p=D(i,a);return p.appContext=l,b&&e?e(p,v):n(p,v,Z),r=!0,f._container=v,v.__vue_app__=f,L0(p.component)||p.component.proxy}},unmount(){r&&(n(null,f._container),delete f._container.__vue_app__)},provide(v,b){return l.provides[v]=b,f}};return f}}function u2(n,e,t,i,a=!1){if(gn(n)){n.forEach((p,y)=>u2(p,e&&(gn(e)?e[y]:e),t,i,a));return}if(Od(i)&&!a)return;const l=i.shapeFlag&4?L0(i.component)||i.component.proxy:i.el,o=a?null:l,{i:r,r:f}=n,v=e&&e.r,b=r.refs===Mi?r.refs={}:r.refs,Z=r.setupState;if(v!=null&&v!==f&&(el(v)?(b[v]=null,ei(Z,v)&&(Z[v]=null)):$i(v)&&(v.value=null)),Sn(f))ps(f,r,12,[o,b]);else{const p=el(f),y=$i(f);if(p||y){const X=()=>{if(n.f){const m=p?ei(Z,f)?Z[f]:b[f]:f.value;a?gn(m)&&hW(m,l):gn(m)?m.includes(l)||m.push(l):p?(b[f]=[l],ei(Z,f)&&(Z[f]=b[f])):(f.value=[l],n.k&&(b[n.k]=f.value))}else p?(b[f]=o,ei(Z,f)&&(Z[f]=o)):y&&(f.value=o,n.k&&(b[n.k]=o))};o?(X.id=-1,fa(X,t)):X()}}}const fa=OU;function h4(n){return f4(n)}function f4(n,e){const t=Kj();t.__VUE__=!0;const{insert:i,remove:a,patchProp:l,createElement:o,createText:r,createComment:f,setText:v,setElementText:b,parentNode:Z,nextSibling:p,setScopeId:y=Gr,insertStaticContent:X}=n,m=(re,_,E,$=null,ae=null,le=null,ee=!1,te=null,be=!!_.dynamicChildren)=>{if(re===_)return;re&&!_s(re,_)&&($=Q(re),K(re,ae,le,!0),re=null),_.patchFlag===-2&&(be=!1,_.dynamicChildren=null);const{type:ne,ref:B,shapeFlag:q}=_;switch(ne){case Ns:N(re,_,E,$);break;case Da:G(re,_,E,$);break;case xy:re==null&&d(_,E,$,ee);break;case ln:x(re,_,E,$,ae,le,ee,te,be);break;default:q&1?h(re,_,E,$,ae,le,ee,te,be):q&6?R(re,_,E,$,ae,le,ee,te,be):(q&64||q&128)&&ne.process(re,_,E,$,ae,le,ee,te,be,se)}B!=null&&ae&&u2(B,re&&re.ref,le,_||re,!_)},N=(re,_,E,$)=>{if(re==null)i(_.el=r(_.children),E,$);else{const ae=_.el=re.el;_.children!==re.children&&v(ae,_.children)}},G=(re,_,E,$)=>{re==null?i(_.el=f(_.children||""),E,$):_.el=re.el},d=(re,_,E,$)=>{[re.el,re.anchor]=X(re.children,_,E,$,re.el,re.anchor)},u=({el:re,anchor:_},E,$)=>{let ae;for(;re&&re!==_;)ae=p(re),i(re,E,$),re=ae;i(_,E,$)},s=({el:re,anchor:_})=>{let E;for(;re&&re!==_;)E=p(re),a(re),re=E;a(_)},h=(re,_,E,$,ae,le,ee,te,be)=>{ee=ee||_.type==="svg",re==null?c(_,E,$,ae,le,ee,te,be):I(re,_,ae,le,ee,te,be)},c=(re,_,E,$,ae,le,ee,te)=>{let be,ne;const{type:B,props:q,shapeFlag:ue,transition:ve,dirs:Ge}=re;if(be=re.el=o(re.type,le,q&&q.is,q),ue&8?b(be,re.children):ue&16&&M(re.children,be,null,$,ae,le&&B!=="foreignObject",ee,te),Ge&&Fs(re,null,$,"created"),W(be,re,re.scopeId,ee,$),q){for(const xe in q)xe!=="value"&&!Vb(xe)&&l(be,xe,null,q[xe],le,re.children,$,ae,O);"value"in q&&l(be,"value",null,q.value),(ne=q.onVnodeBeforeMount)&&kr(ne,$,re)}Ge&&Fs(re,null,$,"beforeMount");const Je=(!ae||ae&&!ae.pendingBranch)&&ve&&!ve.persisted;Je&&ve.beforeEnter(be),i(be,_,E),((ne=q&&q.onVnodeMounted)||Je||Ge)&&fa(()=>{ne&&kr(ne,$,re),Je&&ve.enter(be),Ge&&Fs(re,null,$,"mounted")},ae)},W=(re,_,E,$,ae)=>{if(E&&y(re,E),$)for(let le=0;le<$.length;le++)y(re,$[le]);if(ae){let le=ae.subTree;if(_===le){const ee=ae.vnode;W(re,ee,ee.scopeId,ee.slotScopeIds,ae.parent)}}},M=(re,_,E,$,ae,le,ee,te,be=0)=>{for(let ne=be;ne{const te=_.el=re.el;let{patchFlag:be,dynamicChildren:ne,dirs:B}=_;be|=re.patchFlag&16;const q=re.props||Mi,ue=_.props||Mi;let ve;E&&Js(E,!1),(ve=ue.onVnodeBeforeUpdate)&&kr(ve,E,_,re),B&&Fs(_,re,E,"beforeUpdate"),E&&Js(E,!0);const Ge=ae&&_.type!=="foreignObject";if(ne?w(re.dynamicChildren,ne,te,E,$,Ge,le):ee||Y(re,_,te,null,E,$,Ge,le,!1),be>0){if(be&16)C(te,_,q,ue,E,$,ae);else if(be&2&&q.class!==ue.class&&l(te,"class",null,ue.class,ae),be&4&&l(te,"style",q.style,ue.style,ae),be&8){const Je=_.dynamicProps;for(let xe=0;xe{ve&&kr(ve,E,_,re),B&&Fs(_,re,E,"updated")},$)},w=(re,_,E,$,ae,le,ee)=>{for(let te=0;te<_.length;te++){const be=re[te],ne=_[te],B=be.el&&(be.type===ln||!_s(be,ne)||be.shapeFlag&70)?Z(be.el):E;m(be,ne,B,null,$,ae,le,ee,!0)}},C=(re,_,E,$,ae,le,ee)=>{if(E!==$){if(E!==Mi)for(const te in E)!Vb(te)&&!(te in $)&&l(re,te,E[te],null,ee,_.children,ae,le,O);for(const te in $){if(Vb(te))continue;const be=$[te],ne=E[te];be!==ne&&te!=="value"&&l(re,te,ne,be,ee,_.children,ae,le,O)}"value"in $&&l(re,"value",E.value,$.value)}},x=(re,_,E,$,ae,le,ee,te,be)=>{const ne=_.el=re?re.el:r(""),B=_.anchor=re?re.anchor:r("");let{patchFlag:q,dynamicChildren:ue,slotScopeIds:ve}=_;ve&&(te=te?te.concat(ve):ve),re==null?(i(ne,E,$),i(B,E,$),M(_.children,E,B,ae,le,ee,te,be)):q>0&&q&64&&ue&&re.dynamicChildren?(w(re.dynamicChildren,ue,E,ae,le,ee,te),(_.key!=null||ae&&_===ae.subTree)&&VW(re,_,!0)):Y(re,_,E,B,ae,le,ee,te,be)},R=(re,_,E,$,ae,le,ee,te,be)=>{_.slotScopeIds=te,re==null?_.shapeFlag&512?ae.ctx.activate(_,E,$,ee,be):g(_,E,$,ae,le,ee,be):S(re,_,be)},g=(re,_,E,$,ae,le,ee)=>{const te=re.component=M4(re,$,ae);if(M0(re)&&(te.ctx.renderer=se),I4(te),te.asyncDep){if(ae&&ae.registerDep(te,L),!re.el){const be=te.subTree=D(Da);G(null,be,_,E)}return}L(te,re,_,E,ae,le,ee)},S=(re,_,E)=>{const $=_.component=re.component;if(FU(re,_,E))if($.asyncDep&&!$.asyncResolved){V($,_,E);return}else $.next=_,LU($.update),$.update();else _.el=re.el,$.vnode=_},L=(re,_,E,$,ae,le,ee)=>{const te=()=>{if(re.isMounted){let{next:B,bu:q,u:ue,parent:ve,vnode:Ge}=re,Je=B,xe;Js(re,!1),B?(B.el=Ge.el,V(re,B,ee)):B=Ge,q&&Vy(q),(xe=B.props&&B.props.onVnodeBeforeUpdate)&&kr(xe,ve,B,Ge),Js(re,!0);const ke=Ly(re),Pe=re.subTree;re.subTree=ke,m(Pe,ke,Z(Pe.el),Q(Pe),re,ae,le),B.el=ke.el,Je===null&&JU(re,ke.el),ue&&fa(ue,ae),(xe=B.props&&B.props.onVnodeUpdated)&&fa(()=>kr(xe,ve,B,Ge),ae)}else{let B;const{el:q,props:ue}=_,{bm:ve,m:Ge,parent:Je}=re,xe=Od(_);if(Js(re,!1),ve&&Vy(ve),!xe&&(B=ue&&ue.onVnodeBeforeMount)&&kr(B,Je,_),Js(re,!0),q&&pe){const ke=()=>{re.subTree=Ly(re),pe(q,re.subTree,re,ae,null)};xe?_.type.__asyncLoader().then(()=>!re.isUnmounted&&ke()):ke()}else{const ke=re.subTree=Ly(re);m(null,ke,E,$,re,ae,le),_.el=ke.el}if(Ge&&fa(Ge,ae),!xe&&(B=ue&&ue.onVnodeMounted)){const ke=_;fa(()=>kr(B,Je,ke),ae)}(_.shapeFlag&256||Je&&Od(Je.vnode)&&Je.vnode.shapeFlag&256)&&re.a&&fa(re.a,ae),re.isMounted=!0,_=E=$=null}},be=re.effect=new pW(te,()=>NW(ne),re.scope),ne=re.update=()=>be.run();ne.id=re.uid,Js(re,!0),ne()},V=(re,_,E)=>{_.component=re;const $=re.vnode.props;re.vnode=_,re.next=null,r4(re,_.props,$,E),c4(re,_.children,E),Fu(),rI(),Ju()},Y=(re,_,E,$,ae,le,ee,te,be=!1)=>{const ne=re&&re.children,B=re?re.shapeFlag:0,q=_.children,{patchFlag:ue,shapeFlag:ve}=_;if(ue>0){if(ue&128){J(ne,q,E,$,ae,le,ee,te,be);return}else if(ue&256){T(ne,q,E,$,ae,le,ee,te,be);return}}ve&8?(B&16&&O(ne,ae,le),q!==ne&&b(E,q)):B&16?ve&16?J(ne,q,E,$,ae,le,ee,te,be):O(ne,ae,le,!0):(B&8&&b(E,""),ve&16&&M(q,E,$,ae,le,ee,te,be))},T=(re,_,E,$,ae,le,ee,te,be)=>{re=re||du,_=_||du;const ne=re.length,B=_.length,q=Math.min(ne,B);let ue;for(ue=0;ueB?O(re,ae,le,!0,!1,q):M(_,E,$,ae,le,ee,te,be,q)},J=(re,_,E,$,ae,le,ee,te,be)=>{let ne=0;const B=_.length;let q=re.length-1,ue=B-1;for(;ne<=q&&ne<=ue;){const ve=re[ne],Ge=_[ne]=be?as(_[ne]):jr(_[ne]);if(_s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;ne++}for(;ne<=q&&ne<=ue;){const ve=re[q],Ge=_[ue]=be?as(_[ue]):jr(_[ue]);if(_s(ve,Ge))m(ve,Ge,E,null,ae,le,ee,te,be);else break;q--,ue--}if(ne>q){if(ne<=ue){const ve=ue+1,Ge=veue)for(;ne<=q;)K(re[ne],ae,le,!0),ne++;else{const ve=ne,Ge=ne,Je=new Map;for(ne=Ge;ne<=ue;ne++){const De=_[ne]=be?as(_[ne]):jr(_[ne]);De.key!=null&&Je.set(De.key,ne)}let xe,ke=0;const Pe=ue-Ge+1;let Be=!1,Te=0;const we=new Array(Pe);for(ne=0;ne=Pe){K(De,ae,le,!0);continue}let me;if(De.key!=null)me=Je.get(De.key);else for(xe=Ge;xe<=ue;xe++)if(we[xe-Ge]===0&&_s(De,_[xe])){me=xe;break}me===void 0?K(De,ae,le,!0):(we[me-Ge]=ne+1,me>=Te?Te=me:Be=!0,m(De,_[me],E,null,ae,le,ee,te,be),ke++)}const Se=Be?b4(we):du;for(xe=Se.length-1,ne=Pe-1;ne>=0;ne--){const De=Ge+ne,me=_[De],Ve=De+1{const{el:le,type:ee,transition:te,children:be,shapeFlag:ne}=re;if(ne&6){U(re.component.subTree,_,E,$);return}if(ne&128){re.suspense.move(_,E,$);return}if(ne&64){ee.move(re,_,E,se);return}if(ee===ln){i(le,_,E);for(let q=0;qte.enter(le),ae);else{const{leave:q,delayLeave:ue,afterLeave:ve}=te,Ge=()=>i(le,_,E),Je=()=>{q(le,()=>{Ge(),ve&&ve()})};ue?ue(le,Ge,Je):Je()}else i(le,_,E)},K=(re,_,E,$=!1,ae=!1)=>{const{type:le,props:ee,ref:te,children:be,dynamicChildren:ne,shapeFlag:B,patchFlag:q,dirs:ue}=re;if(te!=null&&u2(te,null,E,re,!0),B&256){_.ctx.deactivate(re);return}const ve=B&1&&ue,Ge=!Od(re);let Je;if(Ge&&(Je=ee&&ee.onVnodeBeforeUnmount)&&kr(Je,_,re),B&6)F(re.component,E,$);else{if(B&128){re.suspense.unmount(E,$);return}ve&&Fs(re,null,_,"beforeUnmount"),B&64?re.type.remove(re,_,E,ae,se,$):ne&&(le!==ln||q>0&&q&64)?O(ne,_,E,!1,!0):(le===ln&&q&384||!ae&&B&16)&&O(be,_,E),$&&H(re)}(Ge&&(Je=ee&&ee.onVnodeUnmounted)||ve)&&fa(()=>{Je&&kr(Je,_,re),ve&&Fs(re,null,_,"unmounted")},E)},H=re=>{const{type:_,el:E,anchor:$,transition:ae}=re;if(_===ln){k(E,$);return}if(_===xy){s(re);return}const le=()=>{a(E),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(re.shapeFlag&1&&ae&&!ae.persisted){const{leave:ee,delayLeave:te}=ae,be=()=>ee(E,le);te?te(re.el,le,be):be()}else le()},k=(re,_)=>{let E;for(;re!==_;)E=p(re),a(re),re=E;a(_)},F=(re,_,E)=>{const{bum:$,scope:ae,update:le,subTree:ee,um:te}=re;$&&Vy($),ae.stop(),le&&(le.active=!1,K(ee,re,_,E)),te&&fa(te,_),fa(()=>{re.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&re.asyncDep&&!re.asyncResolved&&re.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},O=(re,_,E,$=!1,ae=!1,le=0)=>{for(let ee=le;eere.shapeFlag&6?Q(re.component.subTree):re.shapeFlag&128?re.suspense.next():p(re.anchor||re.el),oe=(re,_,E)=>{re==null?_._vnode&&K(_._vnode,null,null,!0):m(_._vnode||null,re,_,null,null,null,E),rI(),HL(),_._vnode=re},se={p:m,um:K,m:U,r:H,mt:g,mc:M,pc:Y,pbc:w,n:Q,o:n};let he,pe;return e&&([he,pe]=e(se)),{render:oe,hydrate:he,createApp:d4(oe,he)}}function Js({effect:n,update:e},t){n.allowRecurse=e.allowRecurse=t}function VW(n,e,t=!1){const i=n.children,a=e.children;if(gn(i)&&gn(a))for(let l=0;l>1,n[t[r]]0&&(e[i]=t[l-1]),t[l]=i)}}for(l=t.length,o=t[l-1];l-- >0;)t[l]=o,o=e[o];return t}const m4=n=>n.__isTeleport,Ud=n=>n&&(n.disabled||n.disabled===""),pI=n=>typeof SVGElement<"u"&&n instanceof SVGElement,d2=(n,e)=>{const t=n&&n.to;return el(t)?e?e(t):null:t},p4={__isTeleport:!0,process(n,e,t,i,a,l,o,r,f,v){const{mc:b,pc:Z,pbc:p,o:{insert:y,querySelector:X,createText:m,createComment:N}}=v,G=Ud(e.props);let{shapeFlag:d,children:u,dynamicChildren:s}=e;if(n==null){const h=e.el=m(""),c=e.anchor=m("");y(h,t,i),y(c,t,i);const W=e.target=d2(e.props,X),M=e.targetAnchor=m("");W&&(y(M,W),o=o||pI(W));const I=(w,C)=>{d&16&&b(u,w,C,a,l,o,r,f)};G?I(t,c):W&&I(W,M)}else{e.el=n.el;const h=e.anchor=n.anchor,c=e.target=n.target,W=e.targetAnchor=n.targetAnchor,M=Ud(n.props),I=M?t:c,w=M?h:W;if(o=o||pI(c),s?(p(n.dynamicChildren,s,I,a,l,o,r),VW(n,e,!0)):f||Z(n,e,I,w,a,l,o,r,!1),G)M||Ef(e,t,h,v,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const C=e.target=d2(e.props,X);C&&Ef(e,C,null,v,0)}else M&&Ef(e,c,W,v,1)}dR(e)},remove(n,e,t,i,{um:a,o:{remove:l}},o){const{shapeFlag:r,children:f,anchor:v,targetAnchor:b,target:Z,props:p}=n;if(Z&&l(b),(o||!Ud(p))&&(l(v),r&16))for(let y=0;y0?vr||du:null,Z4(),dh>0&&vr&&vr.push(n),n}function rc(n,e,t,i,a,l){return hR(Du(n,e,t,i,a,l,!0))}function Vo(n,e,t,i,a){return hR(D(n,e,t,i,a,!0))}function yl(n){return n?n.__v_isVNode===!0:!1}function _s(n,e){return n.type===e.type&&n.key===e.key}const V0="__vInternal",fR=({key:n})=>n??null,Lb=({ref:n,ref_key:e,ref_for:t})=>n!=null?el(n)||$i(n)||Sn(n)?{i:Yl,r:n,k:e,f:!!t}:n:null;function Du(n,e=null,t=null,i=0,a=null,l=n===ln?0:1,o=!1,r=!1){const f={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&fR(e),ref:e&&Lb(e),scopeId:N0,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:l,patchFlag:i,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:Yl};return r?(RW(f,t),l&128&&n.normalize(f)):t&&(f.shapeFlag|=el(t)?8:16),dh>0&&!o&&vr&&(f.patchFlag>0||l&6)&&f.patchFlag!==32&&vr.push(f),f}const D=v4;function v4(n,e=null,t=null,i=0,a=null,l=!1){if((!n||n===AU)&&(n=Da),yl(n)){const r=Vl(n,e,!0);return t&&RW(r,t),dh>0&&!l&&vr&&(r.shapeFlag&6?vr[vr.indexOf(n)]=r:vr.push(r)),r.patchFlag|=-2,r}if(V4(n)&&(n=n.__vccOpts),e){e=W4(e);let{class:r,style:f}=e;r&&!el(r)&&(e.class=uW(r)),Li(f)&&(kL(f)&&!gn(f)&&(f=Zl({},f)),e.style=cW(f))}const o=el(n)?1:DU(n)?128:m4(n)?64:Li(n)?4:Sn(n)?2:0;return Du(n,e,t,i,a,o,l,!0)}function W4(n){return n?kL(n)||V0 in n?Zl({},n):n:null}function Vl(n,e,t=!1){const{props:i,ref:a,patchFlag:l,children:o}=n,r=e?G4(i||{},e):i;return{__v_isVNode:!0,__v_skip:!0,type:n.type,props:r,key:r&&fR(r),ref:e&&e.ref?t&&a?gn(a)?a.concat(Lb(e)):[a,Lb(e)]:Lb(e):a,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:o,target:n.target,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==ln?l===-1?16:l|16:l,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:n.transition,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Vl(n.ssContent),ssFallback:n.ssFallback&&Vl(n.ssFallback),el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce}}function Fl(n=" ",e=0){return D(Ns,null,n,e)}function Rb(n="",e=!1){return e?(kl(),Vo(Da,null,n)):D(Da,null,n)}function jr(n){return n==null||typeof n=="boolean"?D(Da):gn(n)?D(ln,null,n.slice()):typeof n=="object"?as(n):D(Ns,null,String(n))}function as(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Vl(n)}function RW(n,e){let t=0;const{shapeFlag:i}=n;if(e==null)e=null;else if(gn(e))t=16;else if(typeof e=="object")if(i&65){const a=e.default;a&&(a._c&&(a._d=!1),RW(n,a()),a._c&&(a._d=!0));return}else{t=32;const a=e._;!a&&!(V0 in e)?e._ctx=Yl:a===3&&Yl&&(Yl.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else Sn(e)?(e={default:e,_ctx:Yl},t=32):(e=String(e),i&64?(t=16,e=[Fl(e)]):t=8);n.children=e,n.shapeFlag|=t}function G4(...n){const e={};for(let t=0;tEi||Yl,Iu=n=>{Ei=n,n.scope.on()},dc=()=>{Ei&&Ei.scope.off(),Ei=null};function bR(n){return n.vnode.shapeFlag&4}let hh=!1;function I4(n,e=!1){hh=e;const{props:t,children:i}=n.vnode,a=bR(n);a4(n,t,a,e),s4(n,i);const l=a?Y4(n,e):void 0;return hh=!1,l}function Y4(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=FL(new Proxy(n.ctx,qU));const{setup:i}=t;if(i){const a=n.setupContext=i.length>1?pR(n):null;Iu(n),Fu();const l=ps(i,n,0,[n.props,a]);if(Ju(),dc(),ML(l)){if(l.then(dc,dc),e)return l.then(o=>{ZI(n,o,e)}).catch(o=>{G0(o,n,0)});n.asyncDep=l}else ZI(n,l,e)}else mR(n,e)}function ZI(n,e,t){Sn(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:Li(e)&&(n.setupState=jL(e)),mR(n,t)}let vI;function mR(n,e,t){const i=n.type;if(!n.render){if(!e&&vI&&!i.render){const a=i.template||wW(n).template;if(a){const{isCustomElement:l,compilerOptions:o}=n.appContext.config,{delimiters:r,compilerOptions:f}=i,v=Zl(Zl({isCustomElement:l,delimiters:r},o),f);i.render=vI(a,v)}}n.render=i.render||Gr}Iu(n),Fu(),e4(n),Ju(),dc()}function w4(n){return new Proxy(n.attrs,{get(e,t){return Ga(n,"get","$attrs"),e[t]}})}function pR(n){const e=i=>{n.exposed=i||{}};let t;return{get attrs(){return t||(t=w4(n))},slots:n.slots,emit:n.emit,expose:e}}function L0(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy(jL(FL(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in jd)return jd[t](n)},has(e,t){return t in e||t in jd}}))}function g4(n,e=!0){return Sn(n)?n.displayName||n.name:n.name||e&&n.__name}function V4(n){return Sn(n)&&"__vccOpts"in n}const de=(n,e)=>wU(n,e,hh);function L4(){return R4().attrs}function R4(){const n=Wl();return n.setupContext||(n.setupContext=pR(n))}function h2(n,e,t){const i=arguments.length;return i===2?Li(e)&&!gn(e)?yl(e)?D(n,null,[e]):D(n,e):D(n,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&yl(t)&&(t=[t]),D(n,e,t))}const T4=Symbol(""),x4=()=>un(T4),C4="3.2.47",S4="http://www.w3.org/2000/svg",$s=typeof document<"u"?document:null,WI=$s&&$s.createElement("template"),z4={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,i)=>{const a=e?$s.createElementNS(S4,n):$s.createElement(n,t?{is:t}:void 0);return n==="select"&&i&&i.multiple!=null&&a.setAttribute("multiple",i.multiple),a},createText:n=>$s.createTextNode(n),createComment:n=>$s.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>$s.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,i,a,l){const o=t?t.previousSibling:e.lastChild;if(a&&(a===l||a.nextSibling))for(;e.insertBefore(a.cloneNode(!0),t),!(a===l||!(a=a.nextSibling)););else{WI.innerHTML=i?`${n}`:n;const r=WI.content;if(i){const f=r.firstChild;for(;f.firstChild;)r.appendChild(f.firstChild);r.removeChild(f)}e.insertBefore(r,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}};function k4(n,e,t){const i=n._vtc;i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}function F4(n,e,t){const i=n.style,a=el(t);if(t&&!a){if(e&&!el(e))for(const l in e)t[l]==null&&f2(i,l,"");for(const l in t)f2(i,l,t[l])}else{const l=i.display;a?e!==t&&(i.cssText=t):e&&n.removeAttribute("style"),"_vod"in n&&(i.display=l)}}const GI=/\s*!important$/;function f2(n,e,t){if(gn(t))t.forEach(i=>f2(n,e,i));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const i=J4(n,e);GI.test(t)?n.setProperty(ku(i),t.replace(GI,""),"important"):n[i]=t}}const XI=["Webkit","Moz","ms"],Cy={};function J4(n,e){const t=Cy[e];if(t)return t;let i=Wa(e);if(i!=="filter"&&i in n)return Cy[e]=i;i=v0(i);for(let a=0;aSy||(H4.then(()=>Sy=0),Sy=Date.now());function Q4(n,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;nr(B4(i,t.value),e,5,[i])};return t.value=n,t.attached=P4(),t}function B4(n,e){if(gn(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(i=>a=>!a._stopped&&i&&i(a))}else return e}const II=/^on[a-z]/,A4=(n,e,t,i,a=!1,l,o,r,f)=>{e==="class"?k4(n,i,a):e==="style"?F4(n,t,i):p0(e)?dW(e)||E4(n,e,t,i,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):_4(n,e,i,a))?O4(n,e,i,l,o,r,f):(e==="true-value"?n._trueValue=i:e==="false-value"&&(n._falseValue=i),D4(n,e,i,a))};function _4(n,e,t,i){return i?!!(e==="innerHTML"||e==="textContent"||e in n&&II.test(e)&&Sn(t)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA"||II.test(e)&&el(t)?!1:e in n}const _o="transition",md="animation",aa=(n,{slots:e})=>h2(_L,ZR(n),e);aa.displayName="Transition";const yR={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},$4=aa.props=Zl({},_L.props,yR),Ds=(n,e=[])=>{gn(n)?n.forEach(t=>t(...e)):n&&n(...e)},YI=n=>n?gn(n)?n.some(e=>e.length>1):n.length>1:!1;function ZR(n){const e={};for(const x in n)x in yR||(e[x]=n[x]);if(n.css===!1)return e;const{name:t="v",type:i,duration:a,enterFromClass:l=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:r=`${t}-enter-to`,appearFromClass:f=l,appearActiveClass:v=o,appearToClass:b=r,leaveFromClass:Z=`${t}-leave-from`,leaveActiveClass:p=`${t}-leave-active`,leaveToClass:y=`${t}-leave-to`}=n,X=q4(a),m=X&&X[0],N=X&&X[1],{onBeforeEnter:G,onEnter:d,onEnterCancelled:u,onLeave:s,onLeaveCancelled:h,onBeforeAppear:c=G,onAppear:W=d,onAppearCancelled:M=u}=e,I=(x,R,g)=>{ts(x,R?b:r),ts(x,R?v:o),g&&g()},w=(x,R)=>{x._isLeaving=!1,ts(x,Z),ts(x,y),ts(x,p),R&&R()},C=x=>(R,g)=>{const S=x?W:d,L=()=>I(R,x,g);Ds(S,[R,L]),wI(()=>{ts(R,x?f:l),Zo(R,x?b:r),YI(S)||gI(R,i,m,L)})};return Zl(e,{onBeforeEnter(x){Ds(G,[x]),Zo(x,l),Zo(x,o)},onBeforeAppear(x){Ds(c,[x]),Zo(x,f),Zo(x,v)},onEnter:C(!1),onAppear:C(!0),onLeave(x,R){x._isLeaving=!0;const g=()=>w(x,R);Zo(x,Z),WR(),Zo(x,p),wI(()=>{x._isLeaving&&(ts(x,Z),Zo(x,y),YI(s)||gI(x,i,N,g))}),Ds(s,[x,g])},onEnterCancelled(x){I(x,!1),Ds(u,[x])},onAppearCancelled(x){I(x,!0),Ds(M,[x])},onLeaveCancelled(x){w(x),Ds(h,[x])}})}function q4(n){if(n==null)return null;if(Li(n))return[zy(n.enter),zy(n.leave)];{const e=zy(n);return[e,e]}}function zy(n){return Ej(n)}function Zo(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n._vtc||(n._vtc=new Set)).add(e)}function ts(n,e){e.split(/\s+/).forEach(i=>i&&n.classList.remove(i));const{_vtc:t}=n;t&&(t.delete(e),t.size||(n._vtc=void 0))}function wI(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let eE=0;function gI(n,e,t,i){const a=n._endId=++eE,l=()=>{a===n._endId&&i()};if(t)return setTimeout(l,t);const{type:o,timeout:r,propCount:f}=vR(n,e);if(!o)return i();const v=o+"end";let b=0;const Z=()=>{n.removeEventListener(v,p),l()},p=y=>{y.target===n&&++b>=f&&Z()};setTimeout(()=>{b(t[X]||"").split(", "),a=i(`${_o}Delay`),l=i(`${_o}Duration`),o=VI(a,l),r=i(`${md}Delay`),f=i(`${md}Duration`),v=VI(r,f);let b=null,Z=0,p=0;e===_o?o>0&&(b=_o,Z=o,p=l.length):e===md?v>0&&(b=md,Z=v,p=f.length):(Z=Math.max(o,v),b=Z>0?o>v?_o:md:null,p=b?b===_o?l.length:f.length:0);const y=b===_o&&/\b(transform|all)(,|$)/.test(i(`${_o}Property`).toString());return{type:b,timeout:Z,propCount:p,hasTransform:y}}function VI(n,e){for(;n.lengthLI(t)+LI(n[i])))}function LI(n){return Number(n.slice(0,-1).replace(",","."))*1e3}function WR(){return document.body.offsetHeight}const GR=new WeakMap,XR=new WeakMap,NR={name:"TransitionGroup",props:Zl({},$4,{tag:String,moveClass:String}),setup(n,{slots:e}){const t=Wl(),i=AL();let a,l;return Dl(()=>{if(!a.length)return;const o=n.moveClass||`${n.name||"v"}-move`;if(!aE(a[0].el,t.vnode.el,o))return;a.forEach(nE),a.forEach(iE);const r=a.filter(lE);WR(),r.forEach(f=>{const v=f.el,b=v.style;Zo(v,o),b.transform=b.webkitTransform=b.transitionDuration="";const Z=v._moveCb=p=>{p&&p.target!==v||(!p||/transform$/.test(p.propertyName))&&(v.removeEventListener("transitionend",Z),v._moveCb=null,ts(v,o))};v.addEventListener("transitionend",Z)})}),()=>{const o=on(n),r=ZR(o);let f=o.tag||ln;a=l,l=e.default?IW(e.default()):[];for(let v=0;vdelete n.mode;NR.props;const TW=NR;function nE(n){const e=n.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function iE(n){XR.set(n,n.el.getBoundingClientRect())}function lE(n){const e=GR.get(n),t=XR.get(n),i=e.left-t.left,a=e.top-t.top;if(i||a){const l=n.el.style;return l.transform=l.webkitTransform=`translate(${i}px,${a}px)`,l.transitionDuration="0s",n}}function aE(n,e,t){const i=n.cloneNode();n._vtc&&n._vtc.forEach(o=>{o.split(/\s+/).forEach(r=>r&&i.classList.remove(r))}),t.split(/\s+/).forEach(o=>o&&i.classList.add(o)),i.style.display="none";const a=e.nodeType===1?e:e.parentNode;a.appendChild(i);const{hasTransform:l}=vR(i);return a.removeChild(i),l}const rE=["ctrl","shift","alt","meta"],oE={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>rE.some(t=>n[`${t}Key`]&&!e.includes(t))},RI=(n,e)=>(t,...i)=>{for(let a=0;a{pd(n,!1)}):pd(n,e))},beforeUnmount(n,{value:e}){pd(n,e)}};function pd(n,e){n.style.display=e?n._vod:"none"}const sE=Zl({patchProp:A4},z4);let TI;function MR(){return TI||(TI=h4(sE))}const Xm=(...n)=>{MR().render(...n)},IR=(...n)=>{const e=MR().createApp(...n),{mount:t}=e;return e.mount=i=>{const a=cE(i);if(!a)return;const l=e._component;!Sn(l)&&!l.render&&!l.template&&(l.template=a.innerHTML),a.innerHTML="";const o=t(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),o},e};function cE(n){return el(n)?document.querySelector(n):n}function Yt(n){return Yt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Yt(n)}function uE(n,e){if(Yt(n)!=="object"||n===null)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var i=t.call(n,e||"default");if(Yt(i)!=="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function YR(n){var e=uE(n,"string");return Yt(e)==="symbol"?e:String(e)}function ce(n,e,t){return e=YR(e),e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function xI(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function P(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2?arguments[2]:void 0;return typeof n=="function"?n(e):n??t}function _e(){for(var n=[],e=0;e0},n.prototype.connect_=function(){!b2||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),gE?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},n.prototype.disconnect_=function(){!b2||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},n.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=t===void 0?"":t,a=wE.some(function(l){return!!~i.indexOf(l)});a&&this.refresh()},n.getInstance=function(){return this.instance_||(this.instance_=new n),this.instance_},n.instance_=null,n}(),VR=function(n,e){for(var t=0,i=Object.keys(e);t"u"||!(Element instanceof Object))){if(!(e instanceof Yu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new kE(e)),this.controller_.addObserver(this),this.controller_.refresh())}},n.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof Yu(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},n.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},n.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},n.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(i){return new FE(i.target,i.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},n.prototype.clearActive=function(){this.activeObservations_.splice(0)},n.prototype.hasActive=function(){return this.activeObservations_.length>0},n}(),RR=typeof WeakMap<"u"?new WeakMap:new gR,TR=function(){function n(e){if(!(this instanceof n))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var t=VE.getInstance(),i=new JE(e,t,this);RR.set(this,i)}return n}();["observe","unobserve","disconnect"].forEach(function(n){TR.prototype[n]=function(){var e;return(e=RR.get(this))[n].apply(e,arguments)}});var DE=function(){return typeof Nm.ResizeObserver<"u"?Nm.ResizeObserver:TR}();const CW=DE;function xR(n){if(Array.isArray(n))return n}function OE(n,e){var t=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(t!=null){var i,a,l,o,r=[],f=!0,v=!1;try{if(l=(t=t.call(n)).next,e===0){if(Object(t)!==t)return;f=!1}else for(;!(f=(i=l.call(t)).done)&&(r.push(i.value),r.length!==e);f=!0);}catch(b){v=!0,a=b}finally{try{if(!f&&t.return!=null&&(o=t.return(),Object(o)!==o))return}finally{if(v)throw a}}return r}}function m2(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,i=new Array(e);t0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,i={},a=/;(?![^(]*\))/g,l=/:(.+)/;return Yt(e)==="object"?e:(e.split(a).forEach(function(o){if(o){var r=o.split(l);if(r.length>1){var f=t?xW(r[0].trim()):r[0].trim();i[f]=r[1].trim()}}}),i)},No=function(e,t){return e[t]!==void 0},ti=function n(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,i=Array.isArray(e)?e:[e],a=[];return i.forEach(function(l){Array.isArray(l)?a.push.apply(a,yt(n(l,t))):l&&l.type===ln?a.push.apply(a,yt(n(l.children,t))):l&&yl(l)?t&&!Th(l)?a.push(l):t||a.push(l):p2(l)&&a.push(l)}),a},Rh=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(yl(e))return e.type===ln?t==="default"?ti(e.children):[]:e.children&&e.children[t]?ti(e.children[t](i)):[];var a=e.$slots[t]&&e.$slots[t](i);return ti(a)},us=function(e){for(var t,i=(e==null||(t=e.vnode)===null||t===void 0?void 0:t.el)||e&&(e.$el||e);i&&!i.tagName;)i=i.nextSibling;return i},DR=function(e){var t={};if(e.$&&e.$.vnode){var i=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(r){var f=e.$props[r],v=vE(r);(f!==void 0||v in i)&&(t[r]=f)})}else if(yl(e)&&Yt(e.type)==="object"){var a=e.props||{},l={};Object.keys(a).forEach(function(r){l[xW(r)]=a[r]});var o=e.type.props||{};Object.keys(o).forEach(function(r){var f=GE(o,l,r,l[r]);(f!==void 0||r in l)&&(t[r]=f)})}return t},JW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,l=void 0;if(e.$){var o=e[t];if(o!==void 0)return typeof o=="function"&&a?o(i):o;l=e.$slots[t],l=a&&l?l(i):l}else if(yl(e)){var r=e.props&&e.props[t];if(r!==void 0&&e.props!==null)return typeof r=="function"&&a?r(i):r;e.type===ln?l=e.children:e.children&&e.children[t]&&(l=e.children[t],l=a&&l?l(i):l)}return Array.isArray(l)&&(l=ti(l),l=l.length===1?l[0]:l,l=l.length===0?void 0:l),l};function kI(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t={};return n.$?t=P(P({},t),n.$attrs):t=P(P({},t),n.props),kW(t)[e?"onEvents":"events"]}function uK(n){var e=(yl(n)?n.props:n.$attrs)||{},t=e.class||{},i={};return typeof t=="string"?t.split(" ").forEach(function(a){i[a.trim()]=!0}):Array.isArray(t)?_e(t).split(" ").forEach(function(a){i[a.trim()]=!0}):i=P(P({},i),t),i}function OR(n,e){var t=(yl(n)?n.props:n.$attrs)||{},i=t.style||{};if(typeof i=="string")i=FW(i,e);else if(e&&i){var a={};return Object.keys(i).forEach(function(l){return a[xW(l)]=i[l]}),a}return i}function dK(n){return n==null||n===""||Array.isArray(n)&&n.length===0}function Th(n){return n&&(n.type===Da||n.type===ln&&n.children.length===0||n.type===Ns&&n.children.trim()==="")}function hK(n){return n&&n.type===Ns}function Ri(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return n.forEach(function(t){Array.isArray(t)?e.push.apply(e,yt(t)):(t==null?void 0:t.type)===ln?e.push.apply(e,yt(Ri(t.children))):e.push(t)}),e.filter(function(t){return!Th(t)})}function Zd(n){if(n){var e=Ri(n);return e.length?e:void 0}else return n}function Si(n){return Array.isArray(n)&&n.length===1&&(n=n[0]),n&&n.__v_isVNode&&Yt(n.type)!=="symbol"}function ui(n,e){var t,i,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(t=e[a])!==null&&t!==void 0?t:(i=n[a])===null||i===void 0?void 0:i.call(n)}const rr=He({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,t){var i=t.slots,a=zn({width:0,height:0,offsetHeight:0,offsetWidth:0}),l=null,o=null,r=function(){o&&(o.disconnect(),o=null)},f=function(p){var y=e.onResize,X=p[0].target,m=X.getBoundingClientRect(),N=m.width,G=m.height,d=X.offsetWidth,u=X.offsetHeight,s=Math.floor(N),h=Math.floor(G);if(a.width!==s||a.height!==h||a.offsetWidth!==d||a.offsetHeight!==u){var c={width:s,height:h,offsetWidth:d,offsetHeight:u};Xn(a,c),y&&Promise.resolve().then(function(){y(P(P({},c),{},{offsetWidth:d,offsetHeight:u}),X)})}},v=Wl(),b=function(){var p=e.disabled;if(p){r();return}var y=us(v),X=y!==l;X&&(r(),l=y),!o&&y&&(o=new CW(f),o.observe(y))};return Kt(function(){b()}),Dl(function(){b()}),la(function(){r()}),rt(function(){return e.disabled},function(){b()},{flush:"post"}),function(){var Z;return(Z=i.default)===null||Z===void 0?void 0:Z.call(i)[0]}}});var jR=function(e){return setTimeout(e,16)},UR=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(jR=function(e){return window.requestAnimationFrame(e)},UR=function(e){return window.cancelAnimationFrame(e)});var FI=0,DW=new Map;function ER(n){DW.delete(n)}function At(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;FI+=1;var t=FI;function i(a){if(a===0)ER(t),n();else{var l=jR(function(){i(a-1)});DW.set(t,l)}}return i(e),t}At.cancel=function(n){var e=DW.get(n);return ER(e),UR(e)};function y2(n){var e,t=function(l){return function(){e=null,n.apply(void 0,yt(l))}},i=function(){if(e==null){for(var l=arguments.length,o=new Array(l),r=0;rn.top-t)return"".concat(t+e.top,"px")}function OI(n,e,t){if(t!==void 0&&e.bottom=0)&&(t[a]=n[a]);return t}function jt(n,e){if(n==null)return{};var t=bK(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}const PR={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var mK={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const pK=mK;var yK={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const QR=yK;var ZK={lang:P({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},pK),timePickerLocale:P({},QR)};const fh=ZK;var La="${label} is not a valid ${type}",vK={locale:"en",Pagination:PR,DatePicker:fh,TimePicker:QR,Calendar:fh,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:La,method:La,array:La,object:La,number:La,date:La,boolean:La,integer:La,float:La,regexp:La,email:La,url:La,hex:La},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const Mr=vK,Ou=He({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,t){var i=t.slots,a=un("localeData",{}),l=de(function(){var r=e.componentName,f=r===void 0?"global":r,v=e.defaultLocale,b=v||Mr[f||"global"],Z=a.antLocale,p=f&&Z?Z[f]:{};return P(P({},typeof b=="function"?b():b),p||{})}),o=de(function(){var r=a.antLocale,f=r&&r.locale;return r&&r.exist&&!f?Mr.locale:f});return function(){var r=e.children||i.default,f=a.antLocale;return r==null?void 0:r(l.value,o.value,f)}}});function Qr(n,e,t){var i=un("localeData",{}),a=de(function(){var l=i.antLocale,o=mi(e)||Mr[n||"global"],r=n&&l?l[n]:{};return P(P(P({},typeof o=="function"?o():o),r||{}),mi(t)||{})});return[a]}var BR=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-default");return D("svg",{class:i,width:"184",height:"152",viewBox:"0 0 184 152"},[D("g",{fill:"none","fill-rule":"evenodd"},[D("g",{transform:"translate(24 31.67)"},[D("ellipse",{class:"".concat(i,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),D("path",{class:"".concat(i,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),D("path",{class:"".concat(i,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),D("path",{class:"".concat(i,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),D("path",{class:"".concat(i,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),D("path",{class:"".concat(i,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),D("g",{class:"".concat(i,"-g"),transform:"translate(149.65 15.383)"},[D("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),D("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};BR.PRESENTED_IMAGE_DEFAULT=!0;const WK=BR;var AR=function(){var e=Nt("empty",{}),t=e.getPrefixCls,i=t("empty-img-simple");return D("svg",{class:i,width:"64",height:"41",viewBox:"0 0 64 41"},[D("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[D("ellipse",{class:"".concat(i,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),D("g",{class:"".concat(i,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[D("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),D("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(i,"-path")},null)])])])};AR.PRESENTED_IMAGE_SIMPLE=!0;const GK=AR;function EI(n,e){for(var t=0;t=0||(a[t]=n[t]);return a}function KI(n){return((e=n)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(n)==="[object Object]";var e}var eT=Object.prototype,tT=eT.toString,XK=eT.hasOwnProperty,nT=/^\s*function (\w+)/;function HI(n){var e,t=(e=n==null?void 0:n.type)!==null&&e!==void 0?e:n;if(t){var i=t.toString().match(nT);return i?i[1]:""}return""}var vc=function(n){var e,t;return KI(n)!==!1&&typeof(e=n.constructor)=="function"&&KI(t=e.prototype)!==!1&&t.hasOwnProperty("isPrototypeOf")!==!1},NK=function(n){return n},na=NK,bh=function(n,e){return XK.call(n,e)},MK=Number.isInteger||function(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n},wu=Array.isArray||function(n){return tT.call(n)==="[object Array]"},gu=function(n){return tT.call(n)==="[object Function]"},Im=function(n){return vc(n)&&bh(n,"_vueTypes_name")},iT=function(n){return vc(n)&&(bh(n,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return bh(n,e)}))};function OW(n,e){return Object.defineProperty(n.bind(e),"__original",{value:n})}function Mc(n,e,t){var i;t===void 0&&(t=!1);var a=!0,l="";i=vc(n)?n:{type:n};var o=Im(i)?i._vueTypes_name+" - ":"";if(iT(i)&&i.type!==null){if(i.type===void 0||i.type===!0||!i.required&&e===void 0)return a;wu(i.type)?(a=i.type.some(function(Z){return Mc(Z,e,!0)===!0}),l=i.type.map(function(Z){return HI(Z)}).join(" or ")):a=(l=HI(i))==="Array"?wu(e):l==="Object"?vc(e):l==="String"||l==="Number"||l==="Boolean"||l==="Function"?function(Z){if(Z==null)return"";var p=Z.constructor.toString().match(nT);return p?p[1]:""}(e)===l:e instanceof i.type}if(!a){var r=o+'value "'+e+'" should be of type "'+l+'"';return t===!1?(na(r),!1):r}if(bh(i,"validator")&&gu(i.validator)){var f=na,v=[];if(na=function(Z){v.push(Z)},a=i.validator(e),na=f,!a){var b=(v.length>1?"* ":"")+v.join(` +* `);return v.length=0,t===!1?(na(b),a):b}}return a}function Oa(n,e){var t=Object.defineProperties(e,{_vueTypes_name:{value:n,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(a){return a!==void 0||this.default?gu(a)||Mc(this,a,!0)===!0?(this.default=wu(a)?function(){return[].concat(a)}:vc(a)?function(){return Object.assign({},a)}:a,this):(na(this._vueTypes_name+' - invalid default value: "'+a+'"'),this):this}}}),i=t.validator;return gu(i)&&(t.validator=OW(i,t)),t}function Pr(n,e){var t=Oa(n,e);return Object.defineProperty(t,"validate",{value:function(i){return gu(this.validator)&&na(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: +`+JSON.stringify(this)),this.validator=OW(i,this),this}})}function PI(n,e,t){var i,a,l=(i=e,a={},Object.getOwnPropertyNames(i).forEach(function(Z){a[Z]=Object.getOwnPropertyDescriptor(i,Z)}),Object.defineProperties({},a));if(l._vueTypes_name=n,!vc(t))return l;var o,r,f=t.validator,v=qR(t,["validator"]);if(gu(f)){var b=l.validator;b&&(b=(r=(o=b).__original)!==null&&r!==void 0?r:o),l.validator=OW(b?function(Z){return b.call(this,Z)&&f.call(this,Z)}:f,l)}return Object.assign(l,v)}function x0(n){return n.replace(/^(?!\s*$)/gm," ")}var IK=function(){return Pr("any",{})},YK=function(){return Pr("function",{type:Function})},wK=function(){return Pr("boolean",{type:Boolean})},gK=function(){return Pr("string",{type:String})},VK=function(){return Pr("number",{type:Number})},LK=function(){return Pr("array",{type:Array})},RK=function(){return Pr("object",{type:Object})},TK=function(){return Oa("integer",{type:Number,validator:function(n){return MK(n)}})},xK=function(){return Oa("symbol",{validator:function(n){return typeof n=="symbol"}})};function CK(n,e){if(e===void 0&&(e="custom validation failed"),typeof n!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Oa(n.name||"<>",{validator:function(t){var i=n(t);return i||na(this._vueTypes_name+" - "+e),i}})}function SK(n){if(!wu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+n.join('", "')+'".',t=n.reduce(function(i,a){if(a!=null){var l=a.constructor;i.indexOf(l)===-1&&i.push(l)}return i},[]);return Oa("oneOf",{type:t.length>0?t:void 0,validator:function(i){var a=n.indexOf(i)!==-1;return a||na(e),a}})}function zK(n){if(!wu(n))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,t=[],i=0;i0&&t.some(function(f){return o.indexOf(f)===-1})){var r=t.filter(function(f){return o.indexOf(f)===-1});return na(r.length===1?'shape - required property "'+r[0]+'" is not defined.':'shape - required properties "'+r.join('", "')+'" are not defined.'),!1}return o.every(function(f){if(e.indexOf(f)===-1)return a._vueTypes_isLoose===!0||(na('shape - shape definition does not include a "'+f+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var v=Mc(n[f],l[f],!0);return typeof v=="string"&&na('shape - "'+f+`" property validation error: - `+x0(v)),v===!0})}});return Object.defineProperty(i,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(i,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),i}var Jr=function(){function n(){}return n.extend=function(e){var t=this;if(wu(e))return e.forEach(function(Z){return t.extend(Z)}),this;var i=e.name,l=e.validate,a=l!==void 0&&l,o=e.getter,r=o!==void 0&&o,f=_R(e,["name","validate","getter"]);if(bh(this,i))throw new TypeError('[VueTypes error]: Type "'+i+'" already defined');var v,b=f.type;return Mm(b)?(delete f.type,Object.defineProperty(this,i,r?{get:function(){return KI(i,b,f)}}:{value:function(){var Z,p=KI(i,b,f);return p.validator&&(p.validator=(Z=p.validator).bind.apply(Z,[p].concat([].slice.call(arguments)))),p}})):(v=r?{get:function(){var Z=Object.assign({},f);return a?Pr(i,Z):Oa(i,Z)},enumerable:!0}:{value:function(){var Z,p,y=Object.assign({},f);return Z=a?Pr(i,y):Oa(i,y),y.validator&&(Z.validator=(p=y.validator).bind.apply(p,[Z].concat([].slice.call(arguments)))),Z},enumerable:!0},Object.defineProperty(this,i,v))},BR(n,null,[{key:"any",get:function(){return GK()}},{key:"func",get:function(){return XK().def(this.defaults.func)}},{key:"bool",get:function(){return NK().def(this.defaults.bool)}},{key:"string",get:function(){return MK().def(this.defaults.string)}},{key:"number",get:function(){return IK().def(this.defaults.number)}},{key:"array",get:function(){return YK().def(this.defaults.array)}},{key:"object",get:function(){return wK().def(this.defaults.object)}},{key:"integer",get:function(){return gK().def(this.defaults.integer)}},{key:"symbol",get:function(){return VK()}}]),n}();function nT(n){var e;return n===void 0&&(n={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(t){function i(){return t.apply(this,arguments)||this}return AR(i,t),BR(i,null,[{key:"sensibleDefaults",get:function(){return Rb({},this.defaults)},set:function(l){this.defaults=l!==!1?Rb({},l!==!0?l:n):{}}}]),i}(Jr)).defaults=Rb({},n),e}Jr.defaults={},Jr.custom=LK,Jr.oneOf=RK,Jr.instanceOf=CK,Jr.oneOfType=TK,Jr.arrayOf=xK,Jr.objectOf=SK,Jr.shape=zK,Jr.utils={validate:function(n,e){return Mc(e,n,!0)===!0},toType:function(n,e,t){return t===void 0&&(t=!1),t?Pr(n,e):Oa(n,e)}};(function(n){function e(){return n.apply(this,arguments)||this}return AR(e,n),e})(nT());var iT=nT({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});iT.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function lT(n){return n.default=void 0,n}const We=iT;var kK=["image","description","imageStyle","class"],aT=D(pK,null,null),rT=D(yK,null,null),ju=function(e,t){var i,l=t.slots,a=l===void 0?{}:l,o=t.attrs,r=Nt("empty",e),f=r.direction,v=r.prefixCls,b=v.value,Z=P(P({},e),o),p=Z.image,y=p===void 0?aT:p,X=Z.description,m=X===void 0?((i=a.description)===null||i===void 0?void 0:i.call(a))||void 0:X,N=Z.imageStyle,G=Z.class,d=G===void 0?"":G,u=jt(Z,kK);return D(Ou,{componentName:"Empty",children:function(h){var c,W=typeof m<"u"?m:h.description,M=typeof W=="string"?W:"empty",I=null;return typeof y=="string"?I=D("img",{alt:M,src:y},null):I=y,D("div",P({class:_e(b,d,(c={},ce(c,"".concat(b,"-normal"),y===rT),ce(c,"".concat(b,"-rtl"),f.value==="rtl"),c))},u),[D("div",{class:"".concat(b,"-image"),style:N},[I]),W&&D("p",{class:"".concat(b,"-description")},[W]),a.default&&D("div",{class:"".concat(b,"-footer")},[Ri(a.default())])])}},null)};ju.displayName="AEmpty";ju.PRESENTED_IMAGE_DEFAULT=aT;ju.PRESENTED_IMAGE_SIMPLE=rT;ju.inheritAttrs=!1;ju.props={prefixCls:String,image:We.any,description:We.any,imageStyle:{type:Object,default:void 0}};const ss=wi(ju);var FK=function(e){var t=Nt("empty",e),i=t.prefixCls,l=function(o){switch(o){case"Table":case"List":return D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE,class:"".concat(i.value,"-small")},null);default:return D(ss,null,null)}};return l(e.componentName)};function oT(n){return D(FK,{componentName:n},null)}var HI={};function JK(n,e){}function DK(n,e){}function sT(n,e,t){!e&&!HI[t]&&(n(!1,t),HI[t]=!0)}function cT(n,e){sT(JK,n,e)}function OK(n,e){sT(DK,n,e)}const Ci=function(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";cT(n,"[antdv: ".concat(e,"] ").concat(t))};var p2="internalMark",Tb=He({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,t){var i=t.slots;Ci(e.ANT_MARK__===p2,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var l=zn({antLocale:P(P({},e.locale),{},{exist:!0}),ANT_MARK__:p2});return hn("localeData",l),rt(function(){return e.locale},function(){l.antLocale=P(P({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}});Tb.install=function(n){return n.component(Tb.name,Tb),n};const uT=wi(Tb);pi("bottomLeft","bottomRight","topLeft","topRight");var jK=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Is=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},t);return i},DW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},t);return i},Ir=function(e,t,i){return i!==void 0?i:"".concat(e,"-").concat(t)};const UK=He({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,t){var i=t.attrs,l=t.slots,a,o=de(function(){return e.duration===void 0?1.5:e.duration}),r=function(){o.value&&(a=setTimeout(function(){v()},o.value*1e3))},f=function(){a&&(clearTimeout(a),a=null)},v=function(p){p&&p.stopPropagation(),f();var y=e.onClose,X=e.noticeKey;y&&y(X)},b=function(){f(),r()};return Kt(function(){r()}),la(function(){f()}),rt([o,function(){return e.updateMark},function(){return e.visible}],function(Z,p){var y=ft(Z,3),X=y[0],m=y[1],N=y[2],G=ft(p,3),d=G[0],u=G[1],s=G[2];(X!==d||m!==u||N!==s&&s)&&b()},{flush:"post"}),function(){var Z,p,y=e.prefixCls,X=e.closable,m=e.closeIcon,N=m===void 0?(Z=l.closeIcon)===null||Z===void 0?void 0:Z.call(l):m,G=e.onClick,d=e.holder,u=i.class,s=i.style,h="".concat(y,"-notice"),c=Object.keys(i).reduce(function(M,I){return(I.substr(0,5)==="data-"||I.substr(0,5)==="aria-"||I==="role")&&(M[I]=i[I]),M},{}),W=D("div",P({class:_e(h,u,ce({},"".concat(h,"-closable"),X)),style:s,onMouseenter:f,onMouseleave:r,onClick:G},c),[D("div",{class:"".concat(h,"-content")},[(p=l.default)===null||p===void 0?void 0:p.call(l)]),X?D("a",{tabindex:0,onClick:v,class:"".concat(h,"-close")},[N||D("span",{class:"".concat(h,"-close-x")},null)]):null]);return d?D(gW,{to:d},{default:function(){return W}}):W}}});var EK=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],PI=0,KK=Date.now();function QI(){var n=PI;return PI+=1,"rcNotification_".concat(KK,"_").concat(n)}var y2=He({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,t){var i=t.attrs,l=t.expose,a=t.slots,o=new Map,r=Ne([]),f=de(function(){var Z=e.prefixCls,p=e.animation,y=p===void 0?"fade":p,X=e.transitionName;return!X&&y&&(X="".concat(Z,"-").concat(y)),DW(X)}),v=function(p,y){var X=p.key||QI(),m=P(P({},p),{},{key:X}),N=e.maxCount,G=r.value.map(function(u){return u.notice.key}).indexOf(X),d=r.value.concat();G!==-1?d.splice(G,1,{notice:m,holderCallback:y}):(N&&r.value.length>=N&&(m.key=d[0].notice.key,m.updateMark=QI(),m.userPassKey=X,d.shift()),d.push({notice:m,holderCallback:y})),r.value=d},b=function(p){r.value=r.value.filter(function(y){var X=y.notice,m=X.key,N=X.userPassKey,G=N||m;return G!==p})};return l({add:v,remove:b,notices:r}),function(){var Z,p,y=e.prefixCls,X=e.closeIcon,m=X===void 0?(Z=a.closeIcon)===null||Z===void 0?void 0:Z.call(a,{prefixCls:y}):X,N=r.value.map(function(d,u){var s=d.notice,h=d.holderCallback,c=u===r.value.length-1?s.updateMark:void 0,W=s.key,M=s.userPassKey,I=s.content,w=P(P(P({prefixCls:y,closeIcon:typeof m=="function"?m({prefixCls:y}):m},s),s.props),{},{key:W,noticeKey:M||W,updateMark:c,onClose:function(x){var R;b(x),(R=s.onClose)===null||R===void 0||R.call(s)},onClick:s.onClick});return h?D("div",{key:W,class:"".concat(y,"-hook-holder"),ref:function(x){typeof W>"u"||(x?(o.set(W,x),h(x,w)):o.delete(W))}},null):D(UK,w,{default:function(){return[typeof I=="function"?I({prefixCls:y}):I]}})}),G=(p={},ce(p,y,1),ce(p,i.class,!!i.class),p);return D("div",{class:G,style:i.style||{top:"65px",left:"50%"}},[D(LW,P({tag:"div"},f.value),{default:function(){return[N]}})])}}});y2.newInstance=function(e,t){var i=e||{},l=i.name,a=l===void 0?"notification":l,o=i.getContainer,r=i.appContext,f=i.prefixCls,v=i.rootPrefixCls,b=i.transitionName,Z=i.hasTransitionName,p=jt(i,EK),y=document.createElement("div");if(o){var X=o();X.appendChild(y)}else document.body.appendChild(y);var m=He({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(d,u){var s=u.attrs,h=Ne();return Kt(function(){t({notice:function(W){var M;(M=h.value)===null||M===void 0||M.add(W)},removeNotice:function(W){var M;(M=h.value)===null||M===void 0||M.remove(W)},destroy:function(){Gm(null,y),y.parentNode&&y.parentNode.removeChild(y)},component:h})}),function(){var c=ba,W=c.getPrefixCls(a,f),M=c.getRootPrefixCls(v,W),I=Z?b:"".concat(M,"-").concat(b);return D(aG,P(P({},c),{},{notUpdateGlobalConfig:!0,prefixCls:M}),{default:function(){return[D(y2,P(P({ref:h},s),{},{prefixCls:W,transitionName:I}),null)]}})}}}),N=D(m,p);N.appContext=r||N.appContext,Gm(N,y)};const dT=y2;var HK={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const PK=HK;function gl(n,e){QK(n)&&(n="100%");var t=BK(n);return n=e===360?n:Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(String(n*e),10)/100),Math.abs(n-e)<1e-6?1:(e===360?n=(n<0?n%e+e:n%e)/parseFloat(String(e)):n=n%e/parseFloat(String(e)),n)}function Kf(n){return Math.min(1,Math.max(0,n))}function QK(n){return typeof n=="string"&&n.indexOf(".")!==-1&&parseFloat(n)===1}function BK(n){return typeof n=="string"&&n.indexOf("%")!==-1}function hT(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Hf(n){return n<=1?"".concat(Number(n)*100,"%"):n}function oc(n){return n.length===1?"0"+n:String(n)}function AK(n,e,t){return{r:gl(n,255)*255,g:gl(e,255)*255,b:gl(t,255)*255}}function BI(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),l=Math.min(n,e,t),a=0,o=0,r=(i+l)/2;if(i===l)o=0,a=0;else{var f=i-l;switch(o=r>.5?f/(2-i-l):f/(i+l),i){case n:a=(e-t)/f+(e1&&(t-=1),t<1/6?n+(e-n)*(6*t):t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function _K(n,e,t){var i,l,a;if(n=gl(n,360),e=gl(e,100),t=gl(t,100),e===0)l=t,a=t,i=t;else{var o=t<.5?t*(1+e):t+e-t*e,r=2*t-o;i=ky(r,o,n+1/3),l=ky(r,o,n),a=ky(r,o,n-1/3)}return{r:i*255,g:l*255,b:a*255}}function Z2(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),l=Math.min(n,e,t),a=0,o=i,r=i-l,f=i===0?0:r/i;if(i===l)a=0;else{switch(i){case n:a=(e-t)/r+(e>16,g:(n&65280)>>8,b:n&255}}var W2={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function tu(n){var e={r:0,g:0,b:0},t=1,i=null,l=null,a=null,o=!1,r=!1;return typeof n=="string"&&(n=lH(n)),typeof n=="object"&&(fo(n.r)&&fo(n.g)&&fo(n.b)?(e=AK(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):fo(n.h)&&fo(n.s)&&fo(n.v)?(i=Hf(n.s),l=Hf(n.v),e=$K(n.h,i,l),o=!0,r="hsv"):fo(n.h)&&fo(n.s)&&fo(n.l)&&(i=Hf(n.s),a=Hf(n.l),e=_K(n.h,i,a),o=!0,r="hsl"),Object.prototype.hasOwnProperty.call(n,"a")&&(t=n.a)),t=hT(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}var nH="[-\\+]?\\d+%?",iH="[-\\+]?\\d*\\.\\d+%?",ds="(?:".concat(iH,")|(?:").concat(nH,")"),Fy="[\\s|\\(]+(".concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")\\s*\\)?"),Jy="[\\s|\\(]+(".concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")\\s*\\)?"),br={CSS_UNIT:new RegExp(ds),rgb:new RegExp("rgb"+Fy),rgba:new RegExp("rgba"+Jy),hsl:new RegExp("hsl"+Fy),hsla:new RegExp("hsla"+Jy),hsv:new RegExp("hsv"+Fy),hsva:new RegExp("hsva"+Jy),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function lH(n){if(n=n.trim().toLowerCase(),n.length===0)return!1;var e=!1;if(W2[n])n=W2[n],e=!0;else if(n==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t=br.rgb.exec(n);return t?{r:t[1],g:t[2],b:t[3]}:(t=br.rgba.exec(n),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=br.hsl.exec(n),t?{h:t[1],s:t[2],l:t[3]}:(t=br.hsla.exec(n),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=br.hsv.exec(n),t?{h:t[1],s:t[2],v:t[3]}:(t=br.hsva.exec(n),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=br.hex8.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),a:AI(t[4]),format:e?"name":"hex8"}:(t=br.hex6.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),format:e?"name":"hex"}:(t=br.hex4.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),a:AI(t[4]+t[4]),format:e?"name":"hex8"}:(t=br.hex3.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),format:e?"name":"hex"}:!1)))))))))}function fo(n){return Boolean(br.CSS_UNIT.exec(String(n)))}var Dy=function(){function n(e,t){e===void 0&&(e=""),t===void 0&&(t={});var i;if(e instanceof n)return e;typeof e=="number"&&(e=tH(e)),this.originalInput=e;var l=tu(e);this.originalInput=e,this.r=l.r,this.g=l.g,this.b=l.b,this.a=l.a,this.roundA=Math.round(100*this.a)/100,this.format=(i=t.format)!==null&&i!==void 0?i:l.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=l.ok}return n.prototype.isDark=function(){return this.getBrightness()<128},n.prototype.isLight=function(){return!this.isDark()},n.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},n.prototype.getLuminance=function(){var e=this.toRgb(),t,i,l,a=e.r/255,o=e.g/255,r=e.b/255;return a<=.03928?t=a/12.92:t=Math.pow((a+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),r<=.03928?l=r/12.92:l=Math.pow((r+.055)/1.055,2.4),.2126*t+.7152*i+.0722*l},n.prototype.getAlpha=function(){return this.a},n.prototype.setAlpha=function(e){return this.a=hT(e),this.roundA=Math.round(100*this.a)/100,this},n.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},n.prototype.toHsv=function(){var e=Z2(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},n.prototype.toHsvString=function(){var e=Z2(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),l=Math.round(e.v*100);return this.a===1?"hsv(".concat(t,", ").concat(i,"%, ").concat(l,"%)"):"hsva(".concat(t,", ").concat(i,"%, ").concat(l,"%, ").concat(this.roundA,")")},n.prototype.toHsl=function(){var e=BI(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},n.prototype.toHslString=function(){var e=BI(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),l=Math.round(e.l*100);return this.a===1?"hsl(".concat(t,", ").concat(i,"%, ").concat(l,"%)"):"hsla(".concat(t,", ").concat(i,"%, ").concat(l,"%, ").concat(this.roundA,")")},n.prototype.toHex=function(e){return e===void 0&&(e=!1),v2(this.r,this.g,this.b,e)},n.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},n.prototype.toHex8=function(e){return e===void 0&&(e=!1),qK(this.r,this.g,this.b,this.a,e)},n.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},n.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},n.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},n.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),i=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(t,", ").concat(i,")"):"rgba(".concat(e,", ").concat(t,", ").concat(i,", ").concat(this.roundA,")")},n.prototype.toPercentageRgb=function(){var e=function(t){return"".concat(Math.round(gl(t,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},n.prototype.toPercentageRgbString=function(){var e=function(t){return Math.round(gl(t,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},n.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+v2(this.r,this.g,this.b,!1),t=0,i=Object.entries(W2);t=0,a=!t&&l&&(e.startsWith("hex")||e==="name");return a?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},n.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},n.prototype.clone=function(){return new n(this.toString())},n.prototype.lighten=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l+=e/100,t.l=Kf(t.l),new n(t)},n.prototype.brighten=function(e){e===void 0&&(e=10);var t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new n(t)},n.prototype.darken=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l-=e/100,t.l=Kf(t.l),new n(t)},n.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},n.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},n.prototype.desaturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s-=e/100,t.s=Kf(t.s),new n(t)},n.prototype.saturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s+=e/100,t.s=Kf(t.s),new n(t)},n.prototype.greyscale=function(){return this.desaturate(100)},n.prototype.spin=function(e){var t=this.toHsl(),i=(t.h+e)%360;return t.h=i<0?360+i:i,new n(t)},n.prototype.mix=function(e,t){t===void 0&&(t=50);var i=this.toRgb(),l=new n(e).toRgb(),a=t/100,o={r:(l.r-i.r)*a+i.r,g:(l.g-i.g)*a+i.g,b:(l.b-i.b)*a+i.b,a:(l.a-i.a)*a+i.a};return new n(o)},n.prototype.analogous=function(e,t){e===void 0&&(e=6),t===void 0&&(t=30);var i=this.toHsl(),l=360/t,a=[this];for(i.h=(i.h-(l*e>>1)+720)%360;--e;)i.h=(i.h+l)%360,a.push(new n(i));return a},n.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new n(e)},n.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var t=this.toHsv(),i=t.h,l=t.s,a=t.v,o=[],r=1/e;e--;)o.push(new n({h:i,s:l,v:a})),a=(a+r)%1;return o},n.prototype.splitcomplement=function(){var e=this.toHsl(),t=e.h;return[this,new n({h:(t+72)%360,s:e.s,l:e.l}),new n({h:(t+216)%360,s:e.s,l:e.l})]},n.prototype.onBackground=function(e){var t=this.toRgb(),i=new n(e).toRgb(),l=t.a+i.a*(1-t.a);return new n({r:(t.r*t.a+i.r*i.a*(1-t.a))/l,g:(t.g*t.a+i.g*i.a*(1-t.a))/l,b:(t.b*t.a+i.b*i.a*(1-t.a))/l,a:l})},n.prototype.triad=function(){return this.polyad(3)},n.prototype.tetrad=function(){return this.polyad(4)},n.prototype.polyad=function(e){for(var t=this.toHsl(),i=t.h,l=[this],a=360/e,o=1;o=60&&Math.round(n.h)<=240?i=t?Math.round(n.h)-Pf*e:Math.round(n.h)+Pf*e:i=t?Math.round(n.h)+Pf*e:Math.round(n.h)-Pf*e,i<0?i+=360:i>=360&&(i-=360),i}function e5(n,e,t){if(n.h===0&&n.s===0)return n.s;var i;return t?i=n.s-_I*e:e===bT?i=n.s+_I:i=n.s+aH*e,i>1&&(i=1),t&&e===fT&&i>.1&&(i=.1),i<.06&&(i=.06),Number(i.toFixed(2))}function t5(n,e,t){var i;return t?i=n.v+rH*e:i=n.v-oH*e,i>1&&(i=1),Number(i.toFixed(2))}function mh(n){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=[],i=tu(n),l=fT;l>0;l-=1){var a=$I(i),o=Qf(tu({h:qI(a,l,!0),s:e5(a,l,!0),v:t5(a,l,!0)}));t.push(o)}t.push(Qf(i));for(var r=1;r<=bT;r+=1){var f=$I(i),v=Qf(tu({h:qI(f,r),s:e5(f,r),v:t5(f,r)}));t.push(v)}return e.theme==="dark"?sH.map(function(b){var Z=b.index,p=b.opacity,y=Qf(cH(tu(e.backgroundColor||"#141414"),tu(t[Z]),p*100));return y}):t}var bu={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},Oy={},jy={};Object.keys(bu).forEach(function(n){Oy[n]=mh(bu[n]),Oy[n].primary=Oy[n][5],jy[n]=mh(bu[n],{theme:"dark",backgroundColor:"#141414"}),jy[n].primary=jy[n][5]});var n5=[],vd=[],uH="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function dH(){var n=document.createElement("style");return n.setAttribute("type","text/css"),n}function hH(n,e){if(e=e||{},n===void 0)throw new Error(uH);var t=e.prepend===!0?"prepend":"append",i=e.container!==void 0?e.container:document.querySelector("head"),l=n5.indexOf(i);l===-1&&(l=n5.push(i)-1,vd[l]={});var a;return vd[l]!==void 0&&vd[l][t]!==void 0?a=vd[l][t]:(a=vd[l][t]=dH(),t==="prepend"?i.insertBefore(a,i.childNodes[0]):i.appendChild(a)),n.charCodeAt(0)===65279&&(n=n.substr(1,n.length)),a.styleSheet?a.styleSheet.cssText+=n:a.textContent+=n,a}function i5(n){for(var e=1;e0&&t.some(function(f){return o.indexOf(f)===-1})){var r=t.filter(function(f){return o.indexOf(f)===-1});return na(r.length===1?'shape - required property "'+r[0]+'" is not defined.':'shape - required properties "'+r.join('", "')+'" are not defined.'),!1}return o.every(function(f){if(e.indexOf(f)===-1)return l._vueTypes_isLoose===!0||(na('shape - shape definition does not include a "'+f+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var v=Mc(n[f],a[f],!0);return typeof v=="string"&&na('shape - "'+f+`" property validation error: + `+x0(v)),v===!0})}});return Object.defineProperty(i,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(i,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),i}var Jr=function(){function n(){}return n.extend=function(e){var t=this;if(wu(e))return e.forEach(function(Z){return t.extend(Z)}),this;var i=e.name,a=e.validate,l=a!==void 0&&a,o=e.getter,r=o!==void 0&&o,f=qR(e,["name","validate","getter"]);if(bh(this,i))throw new TypeError('[VueTypes error]: Type "'+i+'" already defined');var v,b=f.type;return Im(b)?(delete f.type,Object.defineProperty(this,i,r?{get:function(){return PI(i,b,f)}}:{value:function(){var Z,p=PI(i,b,f);return p.validator&&(p.validator=(Z=p.validator).bind.apply(Z,[p].concat([].slice.call(arguments)))),p}})):(v=r?{get:function(){var Z=Object.assign({},f);return l?Pr(i,Z):Oa(i,Z)},enumerable:!0}:{value:function(){var Z,p,y=Object.assign({},f);return Z=l?Pr(i,y):Oa(i,y),y.validator&&(Z.validator=(p=y.validator).bind.apply(p,[Z].concat([].slice.call(arguments)))),Z},enumerable:!0},Object.defineProperty(this,i,v))},_R(n,null,[{key:"any",get:function(){return IK()}},{key:"func",get:function(){return YK().def(this.defaults.func)}},{key:"bool",get:function(){return wK().def(this.defaults.bool)}},{key:"string",get:function(){return gK().def(this.defaults.string)}},{key:"number",get:function(){return VK().def(this.defaults.number)}},{key:"array",get:function(){return LK().def(this.defaults.array)}},{key:"object",get:function(){return RK().def(this.defaults.object)}},{key:"integer",get:function(){return TK().def(this.defaults.integer)}},{key:"symbol",get:function(){return xK()}}]),n}();function lT(n){var e;return n===void 0&&(n={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(t){function i(){return t.apply(this,arguments)||this}return $R(i,t),_R(i,null,[{key:"sensibleDefaults",get:function(){return Tb({},this.defaults)},set:function(a){this.defaults=a!==!1?Tb({},a!==!0?a:n):{}}}]),i}(Jr)).defaults=Tb({},n),e}Jr.defaults={},Jr.custom=CK,Jr.oneOf=SK,Jr.instanceOf=FK,Jr.oneOfType=zK,Jr.arrayOf=kK,Jr.objectOf=JK,Jr.shape=DK,Jr.utils={validate:function(n,e){return Mc(e,n,!0)===!0},toType:function(n,e,t){return t===void 0&&(t=!1),t?Pr(n,e):Oa(n,e)}};(function(n){function e(){return n.apply(this,arguments)||this}return $R(e,n),e})(lT());var aT=lT({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});aT.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function rT(n){return n.default=void 0,n}const We=aT;var OK=["image","description","imageStyle","class"],oT=D(WK,null,null),sT=D(GK,null,null),ju=function(e,t){var i,a=t.slots,l=a===void 0?{}:a,o=t.attrs,r=Nt("empty",e),f=r.direction,v=r.prefixCls,b=v.value,Z=P(P({},e),o),p=Z.image,y=p===void 0?oT:p,X=Z.description,m=X===void 0?((i=l.description)===null||i===void 0?void 0:i.call(l))||void 0:X,N=Z.imageStyle,G=Z.class,d=G===void 0?"":G,u=jt(Z,OK);return D(Ou,{componentName:"Empty",children:function(h){var c,W=typeof m<"u"?m:h.description,M=typeof W=="string"?W:"empty",I=null;return typeof y=="string"?I=D("img",{alt:M,src:y},null):I=y,D("div",P({class:_e(b,d,(c={},ce(c,"".concat(b,"-normal"),y===sT),ce(c,"".concat(b,"-rtl"),f.value==="rtl"),c))},u),[D("div",{class:"".concat(b,"-image"),style:N},[I]),W&&D("p",{class:"".concat(b,"-description")},[W]),l.default&&D("div",{class:"".concat(b,"-footer")},[Ri(l.default())])])}},null)};ju.displayName="AEmpty";ju.PRESENTED_IMAGE_DEFAULT=oT;ju.PRESENTED_IMAGE_SIMPLE=sT;ju.inheritAttrs=!1;ju.props={prefixCls:String,image:We.any,description:We.any,imageStyle:{type:Object,default:void 0}};const ss=wi(ju);var jK=function(e){var t=Nt("empty",e),i=t.prefixCls,a=function(o){switch(o){case"Table":case"List":return D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE,class:"".concat(i.value,"-small")},null);default:return D(ss,null,null)}};return a(e.componentName)};function cT(n){return D(jK,{componentName:n},null)}var QI={};function UK(n,e){}function EK(n,e){}function uT(n,e,t){!e&&!QI[t]&&(n(!1,t),QI[t]=!0)}function dT(n,e){uT(UK,n,e)}function KK(n,e){uT(EK,n,e)}const Ci=function(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";dT(n,"[antdv: ".concat(e,"] ").concat(t))};var Z2="internalMark",xb=He({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,t){var i=t.slots;Ci(e.ANT_MARK__===Z2,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var a=zn({antLocale:P(P({},e.locale),{},{exist:!0}),ANT_MARK__:Z2});return hn("localeData",a),rt(function(){return e.locale},function(){a.antLocale=P(P({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}});xb.install=function(n){return n.component(xb.name,xb),n};const hT=wi(xb);pi("bottomLeft","bottomRight","topLeft","topRight");var HK=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Is=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},t);return i},jW=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=P(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},t);return i},Ir=function(e,t,i){return i!==void 0?i:"".concat(e,"-").concat(t)};const PK=He({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,t){var i=t.attrs,a=t.slots,l,o=de(function(){return e.duration===void 0?1.5:e.duration}),r=function(){o.value&&(l=setTimeout(function(){v()},o.value*1e3))},f=function(){l&&(clearTimeout(l),l=null)},v=function(p){p&&p.stopPropagation(),f();var y=e.onClose,X=e.noticeKey;y&&y(X)},b=function(){f(),r()};return Kt(function(){r()}),la(function(){f()}),rt([o,function(){return e.updateMark},function(){return e.visible}],function(Z,p){var y=ft(Z,3),X=y[0],m=y[1],N=y[2],G=ft(p,3),d=G[0],u=G[1],s=G[2];(X!==d||m!==u||N!==s&&s)&&b()},{flush:"post"}),function(){var Z,p,y=e.prefixCls,X=e.closable,m=e.closeIcon,N=m===void 0?(Z=a.closeIcon)===null||Z===void 0?void 0:Z.call(a):m,G=e.onClick,d=e.holder,u=i.class,s=i.style,h="".concat(y,"-notice"),c=Object.keys(i).reduce(function(M,I){return(I.substr(0,5)==="data-"||I.substr(0,5)==="aria-"||I==="role")&&(M[I]=i[I]),M},{}),W=D("div",P({class:_e(h,u,ce({},"".concat(h,"-closable"),X)),style:s,onMouseenter:f,onMouseleave:r,onClick:G},c),[D("div",{class:"".concat(h,"-content")},[(p=a.default)===null||p===void 0?void 0:p.call(a)]),X?D("a",{tabindex:0,onClick:v,class:"".concat(h,"-close")},[N||D("span",{class:"".concat(h,"-close-x")},null)]):null]);return d?D(LW,{to:d},{default:function(){return W}}):W}}});var QK=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],BI=0,BK=Date.now();function AI(){var n=BI;return BI+=1,"rcNotification_".concat(BK,"_").concat(n)}var v2=He({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=new Map,r=Ne([]),f=de(function(){var Z=e.prefixCls,p=e.animation,y=p===void 0?"fade":p,X=e.transitionName;return!X&&y&&(X="".concat(Z,"-").concat(y)),jW(X)}),v=function(p,y){var X=p.key||AI(),m=P(P({},p),{},{key:X}),N=e.maxCount,G=r.value.map(function(u){return u.notice.key}).indexOf(X),d=r.value.concat();G!==-1?d.splice(G,1,{notice:m,holderCallback:y}):(N&&r.value.length>=N&&(m.key=d[0].notice.key,m.updateMark=AI(),m.userPassKey=X,d.shift()),d.push({notice:m,holderCallback:y})),r.value=d},b=function(p){r.value=r.value.filter(function(y){var X=y.notice,m=X.key,N=X.userPassKey,G=N||m;return G!==p})};return a({add:v,remove:b,notices:r}),function(){var Z,p,y=e.prefixCls,X=e.closeIcon,m=X===void 0?(Z=l.closeIcon)===null||Z===void 0?void 0:Z.call(l,{prefixCls:y}):X,N=r.value.map(function(d,u){var s=d.notice,h=d.holderCallback,c=u===r.value.length-1?s.updateMark:void 0,W=s.key,M=s.userPassKey,I=s.content,w=P(P(P({prefixCls:y,closeIcon:typeof m=="function"?m({prefixCls:y}):m},s),s.props),{},{key:W,noticeKey:M||W,updateMark:c,onClose:function(x){var R;b(x),(R=s.onClose)===null||R===void 0||R.call(s)},onClick:s.onClick});return h?D("div",{key:W,class:"".concat(y,"-hook-holder"),ref:function(x){typeof W>"u"||(x?(o.set(W,x),h(x,w)):o.delete(W))}},null):D(PK,w,{default:function(){return[typeof I=="function"?I({prefixCls:y}):I]}})}),G=(p={},ce(p,y,1),ce(p,i.class,!!i.class),p);return D("div",{class:G,style:i.style||{top:"65px",left:"50%"}},[D(TW,P({tag:"div"},f.value),{default:function(){return[N]}})])}}});v2.newInstance=function(e,t){var i=e||{},a=i.name,l=a===void 0?"notification":a,o=i.getContainer,r=i.appContext,f=i.prefixCls,v=i.rootPrefixCls,b=i.transitionName,Z=i.hasTransitionName,p=jt(i,QK),y=document.createElement("div");if(o){var X=o();X.appendChild(y)}else document.body.appendChild(y);var m=He({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(d,u){var s=u.attrs,h=Ne();return Kt(function(){t({notice:function(W){var M;(M=h.value)===null||M===void 0||M.add(W)},removeNotice:function(W){var M;(M=h.value)===null||M===void 0||M.remove(W)},destroy:function(){Xm(null,y),y.parentNode&&y.parentNode.removeChild(y)},component:h})}),function(){var c=ba,W=c.getPrefixCls(l,f),M=c.getRootPrefixCls(v,W),I=Z?b:"".concat(M,"-").concat(b);return D(oG,P(P({},c),{},{notUpdateGlobalConfig:!0,prefixCls:M}),{default:function(){return[D(v2,P(P({ref:h},s),{},{prefixCls:W,transitionName:I}),null)]}})}}}),N=D(m,p);N.appContext=r||N.appContext,Xm(N,y)};const fT=v2;var AK={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const _K=AK;function gl(n,e){$K(n)&&(n="100%");var t=qK(n);return n=e===360?n:Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(String(n*e),10)/100),Math.abs(n-e)<1e-6?1:(e===360?n=(n<0?n%e+e:n%e)/parseFloat(String(e)):n=n%e/parseFloat(String(e)),n)}function Hf(n){return Math.min(1,Math.max(0,n))}function $K(n){return typeof n=="string"&&n.indexOf(".")!==-1&&parseFloat(n)===1}function qK(n){return typeof n=="string"&&n.indexOf("%")!==-1}function bT(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Pf(n){return n<=1?"".concat(Number(n)*100,"%"):n}function oc(n){return n.length===1?"0"+n:String(n)}function eH(n,e,t){return{r:gl(n,255)*255,g:gl(e,255)*255,b:gl(t,255)*255}}function _I(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=0,r=(i+a)/2;if(i===a)o=0,l=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(t-=1),t<1/6?n+(e-n)*(6*t):t<1/2?e:t<2/3?n+(e-n)*(2/3-t)*6:n}function tH(n,e,t){var i,a,l;if(n=gl(n,360),e=gl(e,100),t=gl(t,100),e===0)a=t,l=t,i=t;else{var o=t<.5?t*(1+e):t+e-t*e,r=2*t-o;i=ky(r,o,n+1/3),a=ky(r,o,n),l=ky(r,o,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function W2(n,e,t){n=gl(n,255),e=gl(e,255),t=gl(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l=0,o=i,r=i-a,f=i===0?0:r/i;if(i===a)l=0;else{switch(i){case n:l=(e-t)/r+(e>16,g:(n&65280)>>8,b:n&255}}var X2={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function tu(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=sH(n)),typeof n=="object"&&(fo(n.r)&&fo(n.g)&&fo(n.b)?(e=eH(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):fo(n.h)&&fo(n.s)&&fo(n.v)?(i=Pf(n.s),a=Pf(n.v),e=nH(n.h,i,a),o=!0,r="hsv"):fo(n.h)&&fo(n.s)&&fo(n.l)&&(i=Pf(n.s),l=Pf(n.l),e=tH(n.h,i,l),o=!0,r="hsl"),Object.prototype.hasOwnProperty.call(n,"a")&&(t=n.a)),t=bT(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}var rH="[-\\+]?\\d+%?",oH="[-\\+]?\\d*\\.\\d+%?",ds="(?:".concat(oH,")|(?:").concat(rH,")"),Fy="[\\s|\\(]+(".concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")\\s*\\)?"),Jy="[\\s|\\(]+(".concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")[,|\\s]+(").concat(ds,")\\s*\\)?"),br={CSS_UNIT:new RegExp(ds),rgb:new RegExp("rgb"+Fy),rgba:new RegExp("rgba"+Jy),hsl:new RegExp("hsl"+Fy),hsla:new RegExp("hsla"+Jy),hsv:new RegExp("hsv"+Fy),hsva:new RegExp("hsva"+Jy),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function sH(n){if(n=n.trim().toLowerCase(),n.length===0)return!1;var e=!1;if(X2[n])n=X2[n],e=!0;else if(n==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t=br.rgb.exec(n);return t?{r:t[1],g:t[2],b:t[3]}:(t=br.rgba.exec(n),t?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=br.hsl.exec(n),t?{h:t[1],s:t[2],l:t[3]}:(t=br.hsla.exec(n),t?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=br.hsv.exec(n),t?{h:t[1],s:t[2],v:t[3]}:(t=br.hsva.exec(n),t?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=br.hex8.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),a:$I(t[4]),format:e?"name":"hex8"}:(t=br.hex6.exec(n),t?{r:xa(t[1]),g:xa(t[2]),b:xa(t[3]),format:e?"name":"hex"}:(t=br.hex4.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),a:$I(t[4]+t[4]),format:e?"name":"hex8"}:(t=br.hex3.exec(n),t?{r:xa(t[1]+t[1]),g:xa(t[2]+t[2]),b:xa(t[3]+t[3]),format:e?"name":"hex"}:!1)))))))))}function fo(n){return Boolean(br.CSS_UNIT.exec(String(n)))}var Dy=function(){function n(e,t){e===void 0&&(e=""),t===void 0&&(t={});var i;if(e instanceof n)return e;typeof e=="number"&&(e=aH(e)),this.originalInput=e;var a=tu(e);this.originalInput=e,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(i=t.format)!==null&&i!==void 0?i:a.format,this.gradientType=t.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return n.prototype.isDark=function(){return this.getBrightness()<128},n.prototype.isLight=function(){return!this.isDark()},n.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},n.prototype.getLuminance=function(){var e=this.toRgb(),t,i,a,l=e.r/255,o=e.g/255,r=e.b/255;return l<=.03928?t=l/12.92:t=Math.pow((l+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),r<=.03928?a=r/12.92:a=Math.pow((r+.055)/1.055,2.4),.2126*t+.7152*i+.0722*a},n.prototype.getAlpha=function(){return this.a},n.prototype.setAlpha=function(e){return this.a=bT(e),this.roundA=Math.round(100*this.a)/100,this},n.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},n.prototype.toHsv=function(){var e=W2(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},n.prototype.toHsvString=function(){var e=W2(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this.a===1?"hsv(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsva(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHsl=function(){var e=_I(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},n.prototype.toHslString=function(){var e=_I(this.r,this.g,this.b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this.a===1?"hsl(".concat(t,", ").concat(i,"%, ").concat(a,"%)"):"hsla(".concat(t,", ").concat(i,"%, ").concat(a,"%, ").concat(this.roundA,")")},n.prototype.toHex=function(e){return e===void 0&&(e=!1),G2(this.r,this.g,this.b,e)},n.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},n.prototype.toHex8=function(e){return e===void 0&&(e=!1),iH(this.r,this.g,this.b,this.a,e)},n.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},n.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},n.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},n.prototype.toRgbString=function(){var e=Math.round(this.r),t=Math.round(this.g),i=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(t,", ").concat(i,")"):"rgba(".concat(e,", ").concat(t,", ").concat(i,", ").concat(this.roundA,")")},n.prototype.toPercentageRgb=function(){var e=function(t){return"".concat(Math.round(gl(t,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},n.prototype.toPercentageRgbString=function(){var e=function(t){return Math.round(gl(t,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},n.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+G2(this.r,this.g,this.b,!1),t=0,i=Object.entries(X2);t=0,l=!t&&a&&(e.startsWith("hex")||e==="name");return l?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},n.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},n.prototype.clone=function(){return new n(this.toString())},n.prototype.lighten=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l+=e/100,t.l=Hf(t.l),new n(t)},n.prototype.brighten=function(e){e===void 0&&(e=10);var t=this.toRgb();return t.r=Math.max(0,Math.min(255,t.r-Math.round(255*-(e/100)))),t.g=Math.max(0,Math.min(255,t.g-Math.round(255*-(e/100)))),t.b=Math.max(0,Math.min(255,t.b-Math.round(255*-(e/100)))),new n(t)},n.prototype.darken=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.l-=e/100,t.l=Hf(t.l),new n(t)},n.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},n.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},n.prototype.desaturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s-=e/100,t.s=Hf(t.s),new n(t)},n.prototype.saturate=function(e){e===void 0&&(e=10);var t=this.toHsl();return t.s+=e/100,t.s=Hf(t.s),new n(t)},n.prototype.greyscale=function(){return this.desaturate(100)},n.prototype.spin=function(e){var t=this.toHsl(),i=(t.h+e)%360;return t.h=i<0?360+i:i,new n(t)},n.prototype.mix=function(e,t){t===void 0&&(t=50);var i=this.toRgb(),a=new n(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return new n(o)},n.prototype.analogous=function(e,t){e===void 0&&(e=6),t===void 0&&(t=30);var i=this.toHsl(),a=360/t,l=[this];for(i.h=(i.h-(a*e>>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(new n(i));return l},n.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new n(e)},n.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var t=this.toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(new n({h:i,s:a,v:l})),l=(l+r)%1;return o},n.prototype.splitcomplement=function(){var e=this.toHsl(),t=e.h;return[this,new n({h:(t+72)%360,s:e.s,l:e.l}),new n({h:(t+216)%360,s:e.s,l:e.l})]},n.prototype.onBackground=function(e){var t=this.toRgb(),i=new n(e).toRgb(),a=t.a+i.a*(1-t.a);return new n({r:(t.r*t.a+i.r*i.a*(1-t.a))/a,g:(t.g*t.a+i.g*i.a*(1-t.a))/a,b:(t.b*t.a+i.b*i.a*(1-t.a))/a,a})},n.prototype.triad=function(){return this.polyad(3)},n.prototype.tetrad=function(){return this.polyad(4)},n.prototype.polyad=function(e){for(var t=this.toHsl(),i=t.h,a=[this],l=360/e,o=1;o=60&&Math.round(n.h)<=240?i=t?Math.round(n.h)-Qf*e:Math.round(n.h)+Qf*e:i=t?Math.round(n.h)+Qf*e:Math.round(n.h)-Qf*e,i<0?i+=360:i>=360&&(i-=360),i}function n5(n,e,t){if(n.h===0&&n.s===0)return n.s;var i;return t?i=n.s-qI*e:e===pT?i=n.s+qI:i=n.s+cH*e,i>1&&(i=1),t&&e===mT&&i>.1&&(i=.1),i<.06&&(i=.06),Number(i.toFixed(2))}function i5(n,e,t){var i;return t?i=n.v+uH*e:i=n.v-dH*e,i>1&&(i=1),Number(i.toFixed(2))}function mh(n){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=[],i=tu(n),a=mT;a>0;a-=1){var l=e5(i),o=Bf(tu({h:t5(l,a,!0),s:n5(l,a,!0),v:i5(l,a,!0)}));t.push(o)}t.push(Bf(i));for(var r=1;r<=pT;r+=1){var f=e5(i),v=Bf(tu({h:t5(f,r),s:n5(f,r),v:i5(f,r)}));t.push(v)}return e.theme==="dark"?hH.map(function(b){var Z=b.index,p=b.opacity,y=Bf(fH(tu(e.backgroundColor||"#141414"),tu(t[Z]),p*100));return y}):t}var bu={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},Oy={},jy={};Object.keys(bu).forEach(function(n){Oy[n]=mh(bu[n]),Oy[n].primary=Oy[n][5],jy[n]=mh(bu[n],{theme:"dark",backgroundColor:"#141414"}),jy[n].primary=jy[n][5]});var l5=[],vd=[],bH="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function mH(){var n=document.createElement("style");return n.setAttribute("type","text/css"),n}function pH(n,e){if(e=e||{},n===void 0)throw new Error(bH);var t=e.prepend===!0?"prepend":"append",i=e.container!==void 0?e.container:document.querySelector("head"),a=l5.indexOf(i);a===-1&&(a=l5.push(i)-1,vd[a]={});var l;return vd[a]!==void 0&&vd[a][t]!==void 0?l=vd[a][t]:(l=vd[a][t]=mH(),t==="prepend"?i.insertBefore(l,i.childNodes[0]):i.appendChild(l)),n.charCodeAt(0)===65279&&(n=n.substr(1,n.length)),l.styleSheet?l.styleSheet.cssText+=n:l.textContent+=n,l}function a5(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:bH;cn(function(){a5||(typeof window<"u"&&window.document&&window.document.documentElement&&hH(e,{prepend:!0}),a5=!0)})},pH=["icon","primaryColor","secondaryColor"];function yH(n,e){if(n==null)return{};var t=ZH(n,e),i,l;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(n);for(l=0;l=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function ZH(n,e){if(n==null)return{};var t={},i=Object.keys(n),l,a;for(a=0;a=0)&&(t[l]=n[l]);return t}function xb(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,i=new Array(e);tn.length)&&(e=n.length);for(var t=0,i=new Array(e);t=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function SH(n,e){if(n==null)return{};var t={},i=Object.keys(n),l,a;for(a=0;a=0)&&(t[l]=n[l]);return t}yT("#1890ff");var Eu=function(e,t){var i,l=s5({},e,t.attrs),a=l.class,o=l.icon,r=l.spin,f=l.rotate,v=l.tabindex,b=l.twoToneColor,Z=l.onClick,p=CH(l,gH),y=(i={anticon:!0},X2(i,"anticon-".concat(o.name),Boolean(o.name)),X2(i,a,a),i),X=r===""||r||o.name==="loading"?"anticon-spin":"",m=v;m===void 0&&Z&&(m=-1,p.tabindex=m);var N=f?{msTransform:"rotate(".concat(f,"deg)"),transform:"rotate(".concat(f,"deg)")}:void 0,G=pT(b),d=VH(G,2),u=d[0],s=d[1];return D("span",s5({role:"img","aria-label":o.name},p,{onClick:Z,class:y}),[D(OW,{class:X,icon:o,primaryColor:u,secondaryColor:s,style:N},null)])};Eu.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};Eu.displayName="AntdIcon";Eu.inheritAttrs=!1;Eu.getTwoToneColor=wH;Eu.setTwoToneColor=yT;const bn=Eu;function c5(n){for(var e=1;e=0;--T){var J=this.tryEntries[T],U=J.completion;if(J.tryLoc==="root")return Y("end");if(J.tryLoc<=this.prev){var K=a.call(J,"catchLoc"),H=a.call(J,"finallyLoc");if(K&&H){if(this.prev=0;--Y){var T=this.tryEntries[Y];if(T.tryLoc<=this.prev&&a.call(T,"finallyLoc")&&this.prev=0;--V){var Y=this.tryEntries[V];if(Y.finallyLoc===L)return this.complete(Y.completion,Y.afterLoc),C(Y),X}},catch:function(L){for(var V=this.tryEntries.length-1;V>=0;--V){var Y=this.tryEntries[V];if(Y.tryLoc===L){var T=Y.completion;if(T.type==="throw"){var J=T.arg;C(Y)}return J}}throw new Error("illegal catch attempt")},delegateYield:function(L,V,Y){return this.delegate={iterator:R(L),resultName:V,nextLoc:Y},this.method==="next"&&(this.arg=void 0),X}},i}n.exports=t,n.exports.__esModule=!0,n.exports.default=n.exports})(iP);var Cb=N2(),Xa=Cb;try{regeneratorRuntime=Cb}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Cb:Function("r","regeneratorRuntime = r")(Cb)}var aP={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const rP=aP;function m5(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:gT,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:VT,i;switch(n){case"topLeft":i={left:"0px",top:e,bottom:"auto"};break;case"topRight":i={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":i={left:"0px",top:"auto",bottom:t};break;default:i={right:"0px",top:"auto",bottom:t};break}return i}function XP(n,e){var t=n.prefixCls,i=n.placement,l=i===void 0?LT:i,a=n.getContainer,o=a===void 0?RT:a,r=n.top,f=n.bottom,v=n.closeIcon,b=v===void 0?TT:v,Z=n.appContext,p=zP(),y=p.getPrefixCls,X=y("notification",t||I2),m="".concat(X,"-").concat(l,"-").concat(Y2),N=ec[m];if(N){Promise.resolve(N).then(function(d){e(d)});return}var G=_e("".concat(X,"-").concat(l),ce({},"".concat(X,"-rtl"),Y2===!0));dT.newInstance({name:"notification",prefixCls:t||I2,class:G,style:GP(l,r,f),appContext:Z,getContainer:o,closeIcon:function(u){var s=u.prefixCls,h=D("span",{class:"".concat(s,"-close-x")},[Vd(b,{},D(Br,{class:"".concat(s,"-close-icon")},null))]);return h},maxCount:xT,hasTransitionName:!0},function(d){ec[m]=d,e(d)})}var NP={success:BW,info:_W,error:qW,warning:C0};function MP(n){var e=n.icon,t=n.type,i=n.description,l=n.message,a=n.btn,o=n.duration===void 0?wT:n.duration;XP(n,function(r){r.notice({content:function(v){var b=v.prefixCls,Z="".concat(b,"-notice"),p=null;if(e)p=function(){return D("span",{class:"".concat(Z,"-icon")},[Vd(e)])};else if(t){var y=NP[t];p=function(){return D(y,{class:"".concat(Z,"-icon ").concat(Z,"-icon-").concat(t)},null)}}return D("div",{class:p?"".concat(Z,"-with-icon"):""},[p&&p(),D("div",{class:"".concat(Z,"-message")},[!i&&p?D("span",{class:"".concat(Z,"-message-single-line-auto-margin")},null):null,Vd(l)]),D("div",{class:"".concat(Z,"-description")},[Vd(i)]),a?D("span",{class:"".concat(Z,"-btn")},[Vd(a)]):null])},duration:o,closable:!0,onClose:n.onClose,onClick:n.onClick,key:n.key,style:n.style||{},class:n.class})})}var ph={open:MP,close:function(e){Object.keys(ec).forEach(function(t){return Promise.resolve(ec[t]).then(function(i){i.removeNotice(e)})})},config:WP,destroy:function(){Object.keys(ec).forEach(function(e){Promise.resolve(ec[e]).then(function(t){t.destroy()}),delete ec[e]})}},IP=["success","info","warning","error"];IP.forEach(function(n){ph[n]=function(e){return ph.open(P(P({},e),{},{type:n}))}});ph.warn=ph.warning;const nG=ph;function Yc(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var YP="vc-util-key";function CT(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.mark;return e?e.startsWith("data-")?e:"data-".concat(e):YP}function iG(n){if(n.attachTo)return n.attachTo;var e=document.querySelector("head");return e||document.body}function W5(n){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Yc())return null;var i=document.createElement("style");if((e=t.csp)!==null&&e!==void 0&&e.nonce){var l;i.nonce=(l=t.csp)===null||l===void 0?void 0:l.nonce}i.innerHTML=n;var a=iG(t),o=a.firstChild;return t.prepend&&a.prepend?a.prepend(i):t.prepend&&o?a.insertBefore(i,o):a.appendChild(i),i}var w2=new Map;function wP(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=iG(e);return Array.from(w2.get(t).children).find(function(i){return i.tagName==="STYLE"&&i.getAttribute(CT(e))===n})}function gP(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=iG(t);if(!w2.has(i)){var l=W5("",t),a=l.parentNode;w2.set(i,a),a.removeChild(l)}var o=wP(e,t);if(o){var r,f;if((r=t.csp)!==null&&r!==void 0&&r.nonce&&o.nonce!==((f=t.csp)===null||f===void 0?void 0:f.nonce)){var v;o.nonce=(v=t.csp)===null||v===void 0?void 0:v.nonce}return o.innerHTML!==n&&(o.innerHTML=n),o}var b=W5(n,t);return b.setAttribute(CT(t),e),b}const jn=function(n,e,t){cT(n,"[ant-design-vue: ".concat(e,"] ").concat(t))};var VP="-ant-".concat(Date.now(),"-").concat(Math.random());function LP(n,e){var t={},i=function(b,Z){var p=b.clone();return p=(Z==null?void 0:Z(p))||p,p.toRgbString()},l=function(b,Z){var p=new Dy(b),y=mh(p.toRgbString());t["".concat(Z,"-color")]=i(p),t["".concat(Z,"-color-disabled")]=y[1],t["".concat(Z,"-color-hover")]=y[4],t["".concat(Z,"-color-active")]=y[6],t["".concat(Z,"-color-outline")]=p.clone().setAlpha(.2).toRgbString(),t["".concat(Z,"-color-deprecated-bg")]=y[1],t["".concat(Z,"-color-deprecated-border")]=y[3]};if(e.primaryColor){l(e.primaryColor,"primary");var a=new Dy(e.primaryColor),o=mh(a.toRgbString());o.forEach(function(v,b){t["primary-".concat(b+1)]=v}),t["primary-color-deprecated-l-35"]=i(a,function(v){return v.lighten(35)}),t["primary-color-deprecated-l-20"]=i(a,function(v){return v.lighten(20)}),t["primary-color-deprecated-t-20"]=i(a,function(v){return v.tint(20)}),t["primary-color-deprecated-t-50"]=i(a,function(v){return v.tint(50)}),t["primary-color-deprecated-f-12"]=i(a,function(v){return v.setAlpha(v.getAlpha()*.12)});var r=new Dy(o[0]);t["primary-color-active-deprecated-f-30"]=i(r,function(v){return v.setAlpha(v.getAlpha()*.3)}),t["primary-color-active-deprecated-d-02"]=i(r,function(v){return v.darken(2)})}e.successColor&&l(e.successColor,"success"),e.warningColor&&l(e.warningColor,"warning"),e.errorColor&&l(e.errorColor,"error"),e.infoColor&&l(e.infoColor,"info");var f=Object.keys(t).map(function(v){return"--".concat(n,"-").concat(v,": ").concat(t[v],";")});Yc()?gP(` +`,o5=!1,vH=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ZH;cn(function(){o5||(typeof window<"u"&&window.document&&window.document.documentElement&&pH(e,{prepend:!0}),o5=!0)})},WH=["icon","primaryColor","secondaryColor"];function GH(n,e){if(n==null)return{};var t=XH(n,e),i,a;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(n);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function XH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}function Cb(n){for(var e=1;en.length)&&(e=n.length);for(var t=0,i=new Array(e);tn.length)&&(e=n.length);for(var t=0,i=new Array(e);t=0)&&Object.prototype.propertyIsEnumerable.call(n,i)&&(t[i]=n[i])}return t}function JH(n,e){if(n==null)return{};var t={},i=Object.keys(n),a,l;for(l=0;l=0)&&(t[a]=n[a]);return t}vT("#1890ff");var Eu=function(e,t){var i,a=u5({},e,t.attrs),l=a.class,o=a.icon,r=a.spin,f=a.rotate,v=a.tabindex,b=a.twoToneColor,Z=a.onClick,p=FH(a,TH),y=(i={anticon:!0},M2(i,"anticon-".concat(o.name),Boolean(o.name)),M2(i,l,l),i),X=r===""||r||o.name==="loading"?"anticon-spin":"",m=v;m===void 0&&Z&&(m=-1,p.tabindex=m);var N=f?{msTransform:"rotate(".concat(f,"deg)"),transform:"rotate(".concat(f,"deg)")}:void 0,G=ZT(b),d=xH(G,2),u=d[0],s=d[1];return D("span",u5({role:"img","aria-label":o.name},p,{onClick:Z,class:y}),[D(UW,{class:X,icon:o,primaryColor:u,secondaryColor:s,style:N},null)])};Eu.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};Eu.displayName="AntdIcon";Eu.inheritAttrs=!1;Eu.getTwoToneColor=RH;Eu.setTwoToneColor=vT;const bn=Eu;function d5(n){for(var e=1;e=0;--T){var J=this.tryEntries[T],U=J.completion;if(J.tryLoc==="root")return Y("end");if(J.tryLoc<=this.prev){var K=l.call(J,"catchLoc"),H=l.call(J,"finallyLoc");if(K&&H){if(this.prev=0;--Y){var T=this.tryEntries[Y];if(T.tryLoc<=this.prev&&l.call(T,"finallyLoc")&&this.prev=0;--V){var Y=this.tryEntries[V];if(Y.finallyLoc===L)return this.complete(Y.completion,Y.afterLoc),C(Y),X}},catch:function(L){for(var V=this.tryEntries.length-1;V>=0;--V){var Y=this.tryEntries[V];if(Y.tryLoc===L){var T=Y.completion;if(T.type==="throw"){var J=T.arg;C(Y)}return J}}throw new Error("illegal catch attempt")},delegateYield:function(L,V,Y){return this.delegate={iterator:R(L),resultName:V,nextLoc:Y},this.method==="next"&&(this.arg=void 0),X}},i}n.exports=t,n.exports.__esModule=!0,n.exports.default=n.exports})(oP);var Sb=I2(),Xa=Sb;try{regeneratorRuntime=Sb}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Sb:Function("r","regeneratorRuntime = r")(Sb)}var cP={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const uP=cP;function y5(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:LT,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:RT,i;switch(n){case"topLeft":i={left:"0px",top:e,bottom:"auto"};break;case"topRight":i={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":i={left:"0px",top:"auto",bottom:t};break;default:i={right:"0px",top:"auto",bottom:t};break}return i}function YP(n,e){var t=n.prefixCls,i=n.placement,a=i===void 0?TT:i,l=n.getContainer,o=l===void 0?xT:l,r=n.top,f=n.bottom,v=n.closeIcon,b=v===void 0?CT:v,Z=n.appContext,p=DP(),y=p.getPrefixCls,X=y("notification",t||w2),m="".concat(X,"-").concat(a,"-").concat(g2),N=ec[m];if(N){Promise.resolve(N).then(function(d){e(d)});return}var G=_e("".concat(X,"-").concat(a),ce({},"".concat(X,"-rtl"),g2===!0));fT.newInstance({name:"notification",prefixCls:t||w2,class:G,style:IP(a,r,f),appContext:Z,getContainer:o,closeIcon:function(u){var s=u.prefixCls,h=D("span",{class:"".concat(s,"-close-x")},[Vd(b,{},D(Br,{class:"".concat(s,"-close-icon")},null))]);return h},maxCount:ST,hasTransitionName:!0},function(d){ec[m]=d,e(d)})}var wP={success:_W,info:qW,error:tG,warning:C0};function gP(n){var e=n.icon,t=n.type,i=n.description,a=n.message,l=n.btn,o=n.duration===void 0?VT:n.duration;YP(n,function(r){r.notice({content:function(v){var b=v.prefixCls,Z="".concat(b,"-notice"),p=null;if(e)p=function(){return D("span",{class:"".concat(Z,"-icon")},[Vd(e)])};else if(t){var y=wP[t];p=function(){return D(y,{class:"".concat(Z,"-icon ").concat(Z,"-icon-").concat(t)},null)}}return D("div",{class:p?"".concat(Z,"-with-icon"):""},[p&&p(),D("div",{class:"".concat(Z,"-message")},[!i&&p?D("span",{class:"".concat(Z,"-message-single-line-auto-margin")},null):null,Vd(a)]),D("div",{class:"".concat(Z,"-description")},[Vd(i)]),l?D("span",{class:"".concat(Z,"-btn")},[Vd(l)]):null])},duration:o,closable:!0,onClose:n.onClose,onClick:n.onClick,key:n.key,style:n.style||{},class:n.class})})}var ph={open:gP,close:function(e){Object.keys(ec).forEach(function(t){return Promise.resolve(ec[t]).then(function(i){i.removeNotice(e)})})},config:MP,destroy:function(){Object.keys(ec).forEach(function(e){Promise.resolve(ec[e]).then(function(t){t.destroy()}),delete ec[e]})}},VP=["success","info","warning","error"];VP.forEach(function(n){ph[n]=function(e){return ph.open(P(P({},e),{},{type:n}))}});ph.warn=ph.warning;const lG=ph;function Yc(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var LP="vc-util-key";function zT(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.mark;return e?e.startsWith("data-")?e:"data-".concat(e):LP}function aG(n){if(n.attachTo)return n.attachTo;var e=document.querySelector("head");return e||document.body}function X5(n){var e,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Yc())return null;var i=document.createElement("style");if((e=t.csp)!==null&&e!==void 0&&e.nonce){var a;i.nonce=(a=t.csp)===null||a===void 0?void 0:a.nonce}i.innerHTML=n;var l=aG(t),o=l.firstChild;return t.prepend&&l.prepend?l.prepend(i):t.prepend&&o?l.insertBefore(i,o):l.appendChild(i),i}var V2=new Map;function RP(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=aG(e);return Array.from(V2.get(t).children).find(function(i){return i.tagName==="STYLE"&&i.getAttribute(zT(e))===n})}function TP(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=aG(t);if(!V2.has(i)){var a=X5("",t),l=a.parentNode;V2.set(i,l),l.removeChild(a)}var o=RP(e,t);if(o){var r,f;if((r=t.csp)!==null&&r!==void 0&&r.nonce&&o.nonce!==((f=t.csp)===null||f===void 0?void 0:f.nonce)){var v;o.nonce=(v=t.csp)===null||v===void 0?void 0:v.nonce}return o.innerHTML!==n&&(o.innerHTML=n),o}var b=X5(n,t);return b.setAttribute(zT(t),e),b}const jn=function(n,e,t){dT(n,"[ant-design-vue: ".concat(e,"] ").concat(t))};var xP="-ant-".concat(Date.now(),"-").concat(Math.random());function CP(n,e){var t={},i=function(b,Z){var p=b.clone();return p=(Z==null?void 0:Z(p))||p,p.toRgbString()},a=function(b,Z){var p=new Dy(b),y=mh(p.toRgbString());t["".concat(Z,"-color")]=i(p),t["".concat(Z,"-color-disabled")]=y[1],t["".concat(Z,"-color-hover")]=y[4],t["".concat(Z,"-color-active")]=y[6],t["".concat(Z,"-color-outline")]=p.clone().setAlpha(.2).toRgbString(),t["".concat(Z,"-color-deprecated-bg")]=y[1],t["".concat(Z,"-color-deprecated-border")]=y[3]};if(e.primaryColor){a(e.primaryColor,"primary");var l=new Dy(e.primaryColor),o=mh(l.toRgbString());o.forEach(function(v,b){t["primary-".concat(b+1)]=v}),t["primary-color-deprecated-l-35"]=i(l,function(v){return v.lighten(35)}),t["primary-color-deprecated-l-20"]=i(l,function(v){return v.lighten(20)}),t["primary-color-deprecated-t-20"]=i(l,function(v){return v.tint(20)}),t["primary-color-deprecated-t-50"]=i(l,function(v){return v.tint(50)}),t["primary-color-deprecated-f-12"]=i(l,function(v){return v.setAlpha(v.getAlpha()*.12)});var r=new Dy(o[0]);t["primary-color-active-deprecated-f-30"]=i(r,function(v){return v.setAlpha(v.getAlpha()*.3)}),t["primary-color-active-deprecated-d-02"]=i(r,function(v){return v.darken(2)})}e.successColor&&a(e.successColor,"success"),e.warningColor&&a(e.warningColor,"warning"),e.errorColor&&a(e.errorColor,"error"),e.infoColor&&a(e.infoColor,"info");var f=Object.keys(t).map(function(v){return"--".concat(n,"-").concat(v,": ").concat(t[v],";")});Yc()?TP(` :root { `.concat(f.join(` `),` } - `),"".concat(VP,"-dynamic-theme")):jn(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var ST=Symbol("GlobalFormContextKey"),RP=function(e){hn(ST,e)},TP=function(){return un(ST,{validateMessages:de(function(){})})},xP=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},CP="ant";function mu(){return ba.prefixCls||CP}var g2=zn({}),zT=zn({}),ba=zn({});qt(function(){Xn(ba,g2,zT),ba.prefixCls=mu(),ba.getPrefixCls=function(n,e){return e||(n?"".concat(ba.prefixCls,"-").concat(n):ba.prefixCls)},ba.getRootPrefixCls=function(n,e){return n||(ba.prefixCls?ba.prefixCls:e&&e.includes("-")?e.replace(/^(.*)-[^-]*$/,"$1"):mu())}});var Uy,SP=function(e){Uy&&Uy(),Uy=qt(function(){Xn(zT,zn(e)),Xn(ba,zn(e))}),e.theme&&LP(mu(),e.theme)},zP=function(){return{getPrefixCls:function(t,i){return i||(t?"".concat(mu(),"-").concat(t):mu())},getRootPrefixCls:function(t,i){return t||(ba.prefixCls?ba.prefixCls:i&&i.includes("-")?i.replace(/^(.*)-[^-]*$/,"$1"):mu())}}},Pd=He({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:xP(),setup:function(e,t){var i=t.slots,l=function(Z,p){var y=e.prefixCls,X=y===void 0?"ant":y;return p||(Z?"".concat(X,"-").concat(Z):X)},a=function(Z){var p=e.renderEmpty||i.renderEmpty||oT;return p(Z)},o=function(Z,p){var y=e.prefixCls;if(p)return p;var X=y||l("");return Z?"".concat(X,"-").concat(Z):X},r=zn(P(P({},e),{},{getPrefixCls:o,renderEmpty:a}));Object.keys(e).forEach(function(b){rt(function(){return e[b]},function(){r[b]=e[b]})}),e.notUpdateGlobalConfig||(Xn(g2,r),rt(r,function(){Xn(g2,r)}));var f=de(function(){var b={};if(e.locale){var Z,p;b=((Z=e.locale.Form)===null||Z===void 0?void 0:Z.defaultValidateMessages)||((p=Mr.Form)===null||p===void 0?void 0:p.defaultValidateMessages)||{}}return e.form&&e.form.validateMessages&&(b=P(P({},b),e.form.validateMessages)),b});RP({validateMessages:f}),hn("configProvider",r);var v=function(Z){var p;return D(uT,{locale:e.locale||Z,ANT_MARK__:p2},{default:function(){return[(p=i.default)===null||p===void 0?void 0:p.call(i)]}})};return qt(function(){e.direction&&(PW.config({rtl:e.direction==="rtl"}),nG.config({rtl:e.direction==="rtl"}))}),function(){return D(Ou,{children:function(Z,p,y){return v(y)}},null)}}}),lG=zn({getPrefixCls:function(e,t){return t||(e?"ant-".concat(e):"ant")},renderEmpty:oT,direction:"ltr"});Pd.config=SP;Pd.install=function(n){n.component(Pd.name,Pd)};const aG=Pd,Nt=function(n,e){var t=un("configProvider",lG),i=de(function(){return t.getPrefixCls(n,e.prefixCls)}),l=de(function(){var d;return(d=e.direction)!==null&&d!==void 0?d:t.direction}),a=de(function(){return t.getPrefixCls()}),o=de(function(){return t.autoInsertSpaceInButton}),r=de(function(){return t.renderEmpty}),f=de(function(){return t.space}),v=de(function(){return t.pageHeader}),b=de(function(){return t.form}),Z=de(function(){return e.getTargetContainer||t.getTargetContainer}),p=de(function(){return e.getPopupContainer||t.getPopupContainer}),y=de(function(){var d;return(d=e.dropdownMatchSelectWidth)!==null&&d!==void 0?d:t.dropdownMatchSelectWidth}),X=de(function(){return(e.virtual===void 0?t.virtual!==!1:e.virtual!==!1)&&y.value!==!1}),m=de(function(){return e.size||t.componentSize}),N=de(function(){var d;return e.autocomplete||((d=t.input)===null||d===void 0?void 0:d.autocomplete)}),G=de(function(){return t.csp});return{configProvider:t,prefixCls:i,direction:l,size:m,getTargetContainer:Z,getPopupContainer:p,space:f,pageHeader:v,form:b,autoInsertSpaceInButton:o,renderEmpty:r,virtual:X,dropdownMatchSelectWidth:y,rootPrefixCls:a,getPrefixCls:t.getPrefixCls,autocomplete:N,csp:G}};function dn(n,e){for(var t=Xn({},n),i=0;i"u")return 0;var t=e?"scrollTop":"scrollLeft",i=0;if(V2(n)?i=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?i=n.documentElement[t]:n&&(i=n[t]),n&&!V2(n)&&typeof i!="number"){var l;i=(l=(n.ownerDocument||n).documentElement)===null||l===void 0?void 0:l[t]}return i}function DP(n,e,t,i){var l=t-e;return n/=i/2,n<1?l/2*n*n*n+e:l/2*((n-=2)*n*n+2)+e}function oG(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.getContainer,i=t===void 0?function(){return window}:t,l=e.callback,a=e.duration,o=a===void 0?450:a,r=i(),f=rG(r,!0),v=Date.now(),b=function Z(){var p=Date.now(),y=p-v,X=DP(y>o?o:y,f,n,o);V2(r)?r.scrollTo(window.pageXOffset,X):r instanceof HTMLDocument||r.constructor.name==="HTMLDocument"?r.documentElement.scrollTop=X:r.scrollTop=X,y0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,M=[],I=m.value();if(y.links.forEach(function(C){var x=X5.exec(C.toString());if(x){var R=document.getElementById(x[1]);if(R){var g=G5(R,I);gC.top?x:C});return w.link}return""},G=function(c){var W=e.getCurrentAnchor;X.value!==c&&(X.value=typeof W=="function"?W():c,i("change",c))},d=function(c){var W=e.offsetTop,M=e.targetOffset;G(c);var I=m.value(),w=rG(I,!0),C=X5.exec(c);if(C){var x=document.getElementById(C[1]);if(x){var R=G5(x,I),g=w+R;g-=M!==void 0?M:W||0,y.animating=!0,oG(g,{callback:function(){y.animating=!1},getContainer:m.value})}}};o({scrollTo:d});var u=function(){if(!y.animating){var c=e.offsetTop,W=e.bounds,M=e.targetOffset,I=N(M!==void 0?M:c||0,W);G(I)}},s=function(){var c=p.value.getElementsByClassName("".concat(f.value,"-link-title-active"))[0];c&&(Z.value.style.top="".concat(c.offsetTop+c.clientHeight/2-4.5,"px"))};return UP({registerLink:function(c){y.links.includes(c)||y.links.push(c)},unregisterLink:function(c){var W=y.links.indexOf(c);W!==-1&&y.links.splice(W,1)},activeLink:X,scrollTo:d,handleClick:function(c,W){i("click",c,W)}}),Kt(function(){cn(function(){var h=m.value();y.scrollContainer=h,y.scrollEvent=hi(y.scrollContainer,"scroll",u),u()})}),fn(function(){y.scrollEvent&&y.scrollEvent.remove()}),Dl(function(){if(y.scrollEvent){var h=m.value();y.scrollContainer!==h&&(y.scrollContainer=h,y.scrollEvent.remove(),y.scrollEvent=hi(y.scrollContainer,"scroll",u),u())}s()}),function(){var h,c=e.offsetTop,W=e.affix,M=e.showInkInFixed,I=f.value,w=_e("".concat(I,"-ink-ball"),{visible:X.value}),C=_e(e.wrapperClass,"".concat(I,"-wrapper"),ce({},"".concat(I,"-rtl"),b.value==="rtl")),x=_e(I,ce({},"".concat(I,"-fixed"),!W&&!M)),R=P({maxHeight:c?"calc(100vh - ".concat(c,"px)"):"100vh"},e.wrapperStyle),g=D("div",{class:C,style:R,ref:p},[D("div",{class:x},[D("div",{class:"".concat(I,"-ink")},[D("span",{class:w,ref:Z},null)]),(h=a.default)===null||h===void 0?void 0:h.call(a)])]);return W?D(kT,P(P({},l),{},{offsetTop:c,target:m.value}),{default:function(){return[g]}}):g}}});var HP=function(){return{prefixCls:String,href:String,title:We.any,target:String}};const JT=He({compatConfig:{MODE:3},name:"AAnchorLink",props:pn(HP(),{href:"#"}),slots:["title"],setup:function(e,t){var i=t.slots,l=null,a=jP(),o=a.handleClick,r=a.scrollTo,f=a.unregisterLink,v=a.registerLink,b=a.activeLink,Z=Nt("anchor",e),p=Z.prefixCls,y=function(m){var N=e.href;o(m,{title:l,href:N}),r(N)};return rt(function(){return e.href},function(X,m){cn(function(){f(m),v(X)})}),Kt(function(){v(e.href)}),fn(function(){f(e.href)}),function(){var X,m=e.href,N=e.target,G=p.value,d=ui(i,e,"title");l=d;var u=b.value===m,s=_e("".concat(G,"-link"),ce({},"".concat(G,"-link-active"),u)),h=_e("".concat(G,"-link-title"),ce({},"".concat(G,"-link-title-active"),u));return D("div",{class:s},[D("a",{class:h,href:m,title:typeof d=="string"?d:"",target:N,onClick:y},[d]),(X=i.default)===null||X===void 0?void 0:X.call(i)])}}});tc.Link=JT;tc.install=function(n){return n.component(tc.name,tc),n.component(tc.Link.name,tc.Link),n};function sG(n){return RR(n)||xR(n)||T0(n)||TR()}function N5(n,e){var t=n.key,i;return"value"in n&&(i=n.value),t??(i!==void 0?i:"rc-index-key-".concat(e))}function DT(n,e){var t=n||{},i=t.label,l=t.value,a=t.options;return{label:i||(e?"children":"label"),value:l||"value",options:a||"options"}}function PP(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.fieldNames,i=e.childrenAsData,l=[],a=DT(t,!1),o=a.label,r=a.value,f=a.options;function v(b,Z){b.forEach(function(p){var y=p[o];if(Z||!(f in p)){var X=p[r];l.push({key:N5(p,l.length),groupOption:Z,data:p,label:y,value:X})}else{var m=y;m===void 0&&i&&(m=p.label),l.push({key:N5(p,l.length),group:!0,data:p,label:m}),v(p[f],!0)}})}return v(n,!1),l}function L2(n){var e=P({},n);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function QP(n,e){if(!e||!e.length)return null;var t=!1;function i(a,o){var r=sG(o),f=r[0],v=r.slice(1);if(!f)return[a];var b=a.split(f);return t=t||b.length>1,b.reduce(function(Z,p){return[].concat(yt(Z),yt(i(p,v)))},[]).filter(function(Z){return Z})}var l=i(n,e);return t?l:null}function nc(n,e){return n?n.contains(e):!1}var OT=["moz","ms","webkit"];function BP(){var n=0;return function(e){var t=new Date().getTime(),i=Math.max(0,16-(t-n)),l=window.setTimeout(function(){e(t+i)},i);return n=t+i,l}}function AP(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var n=OT.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return n?window["".concat(n,"RequestAnimationFrame")]:BP()}function _P(n){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(n);var e=OT.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,n):clearTimeout(n)}var M5=AP(),$P=function(e){return _P(e.id)},qP=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=Date.now();function l(){Date.now()-i>=t?e.call():a.id=M5(l)}var a={id:M5(l)};return a},cG={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},eQ=P(P({},cG),{},{mobile:{type:Object}}),tQ=P(P({},cG),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function jT(n){var e=n.prefixCls,t=n.animation,i=n.transitionName;return t?{name:"".concat(e,"-").concat(t)}:i?{name:i}:{}}function UT(n){var e=n.prefixCls,t=n.visible,i=n.zIndex,l=n.mask,a=n.maskAnimation,o=n.maskTransitionName;if(!l)return null;var r={};return(o||a)&&(r=jT({prefixCls:e,transitionName:o,animation:a})),D(aa,P({appear:!0},r),{default:function(){return[vl(D("div",{style:{zIndex:i},class:"".concat(e,"-mask")},null),[[PU("if"),t]])]}})}UT.displayName="Mask";const nQ=He({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:eQ,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var i=t.expose,l=t.slots,a=Ne();return i({forceAlign:function(){},getElement:function(){return a.value}}),function(){var o,r=e.zIndex,f=e.visible,v=e.prefixCls,b=e.mobile;b=b===void 0?{}:b;var Z=b.popupClassName,p=b.popupStyle,y=b.popupMotion,X=y===void 0?{}:y,m=b.popupRender,N=P({zIndex:r},p),G=ti((o=l.default)===null||o===void 0?void 0:o.call(l));G.length>1&&(G=D("div",{class:"".concat(v,"-content")},[G])),m&&(G=m(G));var d=_e(v,Z);return D(aa,P({ref:a},X),{default:function(){return[f?D("div",{class:d,style:N},[G]):null]}})}}});var I5=["measure","align",null,"motion"];const iQ=function(n,e){var t=Ne(null),i=Ne(),l=Ne(!1);function a(f){l.value||(t.value=f)}function o(){At.cancel(i.value)}function r(f){o(),i.value=At(function(){var v=t.value;switch(t.value){case"align":v="motion";break;case"motion":v="stable";break}a(v),f==null||f()})}return rt(n,function(){a("measure")},{immediate:!0,flush:"post"}),Kt(function(){rt(t,function(){switch(t.value){case"measure":e();break}t.value&&(i.value=At(Ic(Xa.mark(function f(){var v,b;return Xa.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:v=I5.indexOf(t.value),b=I5[v+1],b&&v!==-1&&a(b);case 3:case"end":return p.stop()}},f)}))))},{immediate:!0,flush:"post"})}),fn(function(){l.value=!0,o()}),[t,r]},lQ=function(n){var e=Ne({width:0,height:0});function t(l){e.value={width:l.offsetWidth,height:l.offsetHeight}}var i=de(function(){var l={};if(n.value){var a=e.value,o=a.width,r=a.height;n.value.indexOf("height")!==-1&&r?l.height="".concat(r,"px"):n.value.indexOf("minHeight")!==-1&&r&&(l.minHeight="".concat(r,"px")),n.value.indexOf("width")!==-1&&o?l.width="".concat(o,"px"):n.value.indexOf("minWidth")!==-1&&o&&(l.minWidth="".concat(o,"px"))}return l});return[i,t]};function Y5(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(l){return Object.getOwnPropertyDescriptor(n,l).enumerable})),t.push.apply(t,i)}return t}function w5(n){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function wQ(n,e,t,i){var l=Yn.clone(n),a={width:e.width,height:e.height};return i.adjustX&&l.left=t.left&&l.left+a.width>t.right&&(a.width-=l.left+a.width-t.right),i.adjustX&&l.left+a.width>t.right&&(l.left=Math.max(t.right-a.width,t.left)),i.adjustY&&l.top=t.top&&l.top+a.height>t.bottom&&(a.height-=l.top+a.height-t.bottom),i.adjustY&&l.top+a.height>t.bottom&&(l.top=Math.max(t.bottom-a.height,t.top)),Yn.mix(l,a)}function fG(n){var e,t,i;if(!Yn.isWindow(n)&&n.nodeType!==9)e=Yn.offset(n),t=Yn.outerWidth(n),i=Yn.outerHeight(n);else{var l=Yn.getWindow(n);e={left:Yn.getWindowScrollLeft(l),top:Yn.getWindowScrollTop(l)},t=Yn.viewportWidth(l),i=Yn.viewportHeight(l)}return e.width=t,e.height=i,e}function S5(n,e){var t=e.charAt(0),i=e.charAt(1),l=n.width,a=n.height,o=n.left,r=n.top;return t==="c"?r+=a/2:t==="b"&&(r+=a),i==="c"?o+=l/2:i==="r"&&(o+=l),{left:o,top:r}}function _f(n,e,t,i,l){var a=S5(e,t[1]),o=S5(n,t[0]),r=[o.left-a.left,o.top-a.top];return{left:Math.round(n.left-r[0]+i[0]-l[0]),top:Math.round(n.top-r[1]+i[1]-l[1])}}function z5(n,e,t){return n.leftt.right}function k5(n,e,t){return n.topt.bottom}function gQ(n,e,t){return n.left>t.right||n.left+e.widtht.bottom||n.top+e.height=t.right||i.top>=t.bottom}function bG(n,e,t){var i=t.target||e,l=fG(i),a=!LQ(i,t.overflow&&t.overflow.alwaysByViewport);return _T(n,l,t,a)}bG.__getOffsetParent=C2;bG.__getVisibleRectForElement=hG;function RQ(n,e,t){var i,l,a=Yn.getDocument(n),o=a.defaultView||a.parentWindow,r=Yn.getWindowScrollLeft(o),f=Yn.getWindowScrollTop(o),v=Yn.viewportWidth(o),b=Yn.viewportHeight(o);"pageX"in e?i=e.pageX:i=r+e.clientX,"pageY"in e?l=e.pageY:l=f+e.clientY;var Z={left:i,top:l,width:0,height:0},p=i>=0&&i<=r+v&&l>=0&&l<=f+b,y=[t.points[0],"cc"];return _T(n,Z,w5(w5({},t),{},{points:y}),p)}function wn(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,l=n;if(Array.isArray(n)&&(l=Ri(n)[0]),!l)return null;var a=Vl(l,e,i);return a.props=t?P(P({},a.props),e):a.props,Ci(Yt(a.props.class)!=="object","class must be string"),a}function TQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return n.map(function(i){return wn(i,e,t)})}const mG=function(n){if(!n)return!1;if(n.offsetParent)return!0;if(n.getBBox){var e=n.getBBox();if(e.width||e.height)return!0}if(n.getBoundingClientRect){var t=n.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function xQ(n,e){return n===e?!0:!n||!e?!1:"pageX"in e&&"pageY"in e?n.pageX===e.pageX&&n.pageY===e.pageY:"clientX"in e&&"clientY"in e?n.clientX===e.clientX&&n.clientY===e.clientY:!1}function CQ(n,e){n!==document.activeElement&&nc(e,n)&&typeof n.focus=="function"&&n.focus()}function D5(n,e){var t=null,i=null;function l(o){var r=ft(o,1),f=r[0].target;if(document.documentElement.contains(f)){var v=f.getBoundingClientRect(),b=v.width,Z=v.height,p=Math.floor(b),y=Math.floor(Z);(t!==p||i!==y)&&Promise.resolve().then(function(){e({width:p,height:y})}),t=p,i=y}}var a=new TW(l);return n&&a.observe(n),function(){a.disconnect()}}const SQ=function(n,e){var t=!1,i=null;function l(){clearTimeout(i)}function a(o){if(!t||o===!0){if(n()===!1)return;t=!0,l(),i=setTimeout(function(){t=!1},e.value)}else l(),i=setTimeout(function(){t=!1,a()},e.value)}return[a,function(){t=!1,l()}]};function zQ(){this.__data__=[],this.size=0}function pG(n,e){return n===e||n!==n&&e!==e}function z0(n,e){for(var t=n.length;t--;)if(pG(n[t][0],e))return t;return-1}var kQ=Array.prototype,FQ=kQ.splice;function JQ(n){var e=this.__data__,t=z0(e,n);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():FQ.call(e,t,1),--this.size,!0}function DQ(n){var e=this.__data__,t=z0(e,n);return t<0?void 0:e[t][1]}function OQ(n){return z0(this.__data__,n)>-1}function jQ(n,e){var t=this.__data__,i=z0(t,n);return i<0?(++this.size,t.push([n,e])):t[i][1]=e,this}function So(n){var e=-1,t=n==null?0:n.length;for(this.clear();++er))return!1;var v=a.get(n),b=a.get(e);if(v&&b)return v==e&&b==n;var Z=-1,p=!0,y=t&z7?new Vu:void 0;for(a.set(n,e),a.set(e,n);++Z-1&&n%1==0&&n-1&&n%1==0&&n<=mB}var pB="[object Arguments]",yB="[object Array]",ZB="[object Boolean]",vB="[object Date]",WB="[object Error]",GB="[object Function]",XB="[object Map]",NB="[object Number]",MB="[object Object]",IB="[object RegExp]",YB="[object Set]",wB="[object String]",gB="[object WeakMap]",VB="[object ArrayBuffer]",LB="[object DataView]",RB="[object Float32Array]",TB="[object Float64Array]",xB="[object Int8Array]",CB="[object Int16Array]",SB="[object Int32Array]",zB="[object Uint8Array]",kB="[object Uint8ClampedArray]",FB="[object Uint16Array]",JB="[object Uint32Array]",Ni={};Ni[RB]=Ni[TB]=Ni[xB]=Ni[CB]=Ni[SB]=Ni[zB]=Ni[kB]=Ni[FB]=Ni[JB]=!0;Ni[pB]=Ni[yB]=Ni[VB]=Ni[ZB]=Ni[LB]=Ni[vB]=Ni[WB]=Ni[GB]=Ni[XB]=Ni[NB]=Ni[MB]=Ni[IB]=Ni[YB]=Ni[wB]=Ni[gB]=!1;function DB(n){return Nr(n)&&XG(n.length)&&!!Ni[Ms(n)]}function F0(n){return function(e){return n(e)}}var lx=typeof Fa=="object"&&Fa&&!Fa.nodeType&&Fa,Qd=lx&&typeof Ja=="object"&&Ja&&!Ja.nodeType&&Ja,OB=Qd&&Qd.exports===lx,Ay=OB&&CR.process,jB=function(){try{var n=Qd&&Qd.require&&Qd.require("util").types;return n||Ay&&Ay.binding&&Ay.binding("util")}catch{}}();const Lu=jB;var P5=Lu&&Lu.isTypedArray,UB=P5?F0(P5):DB;const ax=UB;var EB=Object.prototype,KB=EB.hasOwnProperty;function rx(n,e){var t=or(n),i=!t&&WG(n),l=!t&&!i&&Vm(n),a=!t&&!i&&!l&&ax(n),o=t||i||l||a,r=o?lB(n.length,String):[],f=r.length;for(var v in n)(e||KB.call(n,v))&&!(o&&(v=="length"||l&&(v=="offset"||v=="parent")||a&&(v=="buffer"||v=="byteLength"||v=="byteOffset")||GG(v,f)))&&r.push(v);return r}var HB=Object.prototype;function NG(n){var e=n&&n.constructor,t=typeof e=="function"&&e.prototype||HB;return n===t}var PB=zR(Object.keys,Object);const QB=PB;var BB=Object.prototype,AB=BB.hasOwnProperty;function _B(n){if(!NG(n))return QB(n);var e=[];for(var t in Object(n))AB.call(n,t)&&t!="constructor"&&e.push(t);return e}function Sh(n){return n!=null&&XG(n.length)&&!$T(n)}function Ku(n){return Sh(n)?rx(n):_B(n)}function S2(n){return ex(n,Ku,vG)}var $B=1,qB=Object.prototype,eA=qB.hasOwnProperty;function tA(n,e,t,i,l,a){var o=t&$B,r=S2(n),f=r.length,v=S2(e),b=v.length;if(f!=b&&!o)return!1;for(var Z=f;Z--;){var p=r[Z];if(!(o?p in e:eA.call(e,p)))return!1}var y=a.get(n),X=a.get(e);if(y&&X)return y==e&&X==n;var m=!0;a.set(n,e),a.set(e,n);for(var N=o;++Z1&&(H=D("div",{class:"".concat(g,"-content")},[H]));var k=_e(g,l.class,f.value),F=X.value||!e.visible,O=F?Is(M.value.name,M.value):{};return D(aa,P(P({ref:r},O),{},{onBeforeEnter:I}),{default:function(){return!S||e.visible?vl(D(pA,{target:h(),key:"popup",ref:o,monitorWindowResize:!0,disabled:w.value,align:R,onAlign:W},{default:function(){return D("div",P(P({class:k,onMouseenter:L,onMouseleave:V,onMousedown:VI(J,["capture"])},ce({},Ui?"onTouchstartPassive":"onTouchstart",VI(T,["capture"]))),{},{style:K}),[H])}}),[[gr,X.value]]):null}})}}}),ZA=He({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:tQ,setup:function(e,t){var i=t.attrs,l=t.slots,a=t.expose,o=Ne(!1),r=Ne(!1),f=Ne();return rt([function(){return e.visible},function(){return e.mobile}],function(){o.value=e.visible,e.visible&&e.mobile&&(r.value=!0)},{immediate:!0,flush:"post"}),a({forceAlign:function(){var b;(b=f.value)===null||b===void 0||b.forceAlign()},getElement:function(){var b;return(b=f.value)===null||b===void 0?void 0:b.getElement()}}),function(){var v=P(P(P({},e),i),{},{visible:o.value}),b=r.value?D(nQ,P(P({},v),{},{mobile:e.mobile,ref:f}),{default:l.default}):D(yA,P(P({},v),{},{ref:f}),{default:l.default});return D("div",null,[D(UT,v,null),b])}}});function vA(n,e,t){return t?n[0]===e[0]:n[0]===e[0]&&n[1]===e[1]}function lY(n,e,t){var i=n[e]||{};return P(P({},i),t)}function WA(n,e,t,i){for(var l=t.points,a=Object.keys(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var l=this.getDerivedStateFromProps(FR(this),P(P({},this.$data),i));if(l===null)return;i=P(P({},i),l||{})}Xn(this.$data,i),this._.isMounted&&this.$forceUpdate(),cn(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var i=this.$props[t]||this.$attrs[t];if(e.length&&i)if(Array.isArray(i))for(var l=0,a=i.length;l1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};hn(cx,{inTriggerContext:t.inTriggerContext,shouldRender:de(function(){var i=e||{},l=i.sPopupVisible,a=i.popupRef,o=i.forceRender,r=i.autoDestroy,f=!1;return(l||a||o)&&(f=!0),!l&&r&&(f=!1),f})})},XA=function(){MG({},{inTriggerContext:!1});var e=un(cx,{shouldRender:de(function(){return!1}),inTriggerContext:!1});return{shouldRender:de(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const J2=He({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:We.func.isRequired,didUpdate:Function},setup:function(e,t){var i=t.slots,l=!0,a,o=XA(),r=o.shouldRender;w0(function(){l=!1,r.value&&(a=e.getContainer())});var f=rt(r,function(){r.value&&!a&&(a=e.getContainer()),a&&f()});return Dl(function(){cn(function(){if(r.value){var v;(v=e.didUpdate)===null||v===void 0||v.call(e,e)}})}),fn(function(){a&&a.parentNode&&a.parentNode.removeChild(a)}),function(){if(!r.value)return null;if(l){var v;return(v=i.default)===null||v===void 0?void 0:v.call(i)}return a?D(gW,{to:a},i):null}}});function aY(){}function NA(){return""}function MA(n){return n?n.ownerDocument:window.document}var IA=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Hu=He({compatConfig:{MODE:3},name:"Trigger",mixins:[Vc],inheritAttrs:!1,props:{action:We.oneOfType([We.string,We.arrayOf(We.string)]).def([]),showAction:We.any.def([]),hideAction:We.any.def([]),getPopupClassNameFromAlign:We.any.def(NA),onPopupVisibleChange:Function,afterPopupVisibleChange:We.func.def(aY),popup:We.any,popupStyle:{type:Object,default:void 0},prefixCls:We.string.def("rc-trigger-popup"),popupClassName:We.string.def(""),popupPlacement:String,builtinPlacements:We.object,popupTransitionName:String,popupAnimation:We.any,mouseEnterDelay:We.number.def(0),mouseLeaveDelay:We.number.def(.1),zIndex:Number,focusDelay:We.number.def(0),blurDelay:We.number.def(.15),getPopupContainer:Function,getDocument:We.func.def(MA),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:We.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var t=de(function(){var f=e.popupPlacement,v=e.popupAlign,b=e.builtinPlacements;return f&&b?lY(b,f,v):v}),i=GA(e.tryPopPortal),l=i.setPortal,a=i.popPortal,o=Ne(null),r=function(v){o.value=v};return{popPortal:a,setPortal:l,vcTriggerContext:un("vcTriggerContext",{}),popupRef:o,setPopupRef:r,triggerRef:Ne(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,t,i=this.$props,l;return this.popupVisible!==void 0?l=!!i.popupVisible:l=!!i.defaultPopupVisible,IA.forEach(function(a){e["fire".concat(a)]=function(o){e.fireEvents(a,o)}}),(t=this.setPortal)===null||t===void 0||t.call(this,D(J2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:l,sPopupVisible:l,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){hn("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),MG(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),At.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,t=this.$data;if(t.sPopupVisible){var i;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(i=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=hi(i,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(i=i||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=hi(i,"touchstart",this.onDocumentClick,Ui?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(i=i||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=hi(i,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=hi(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var t=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var t;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&nc((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){nc(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var t;if(this.preClickTime&&this.preTouchTime?t=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?t=this.preClickTime:this.preTouchTime&&(t=this.preTouchTime),Math.abs(t-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var i=!this.$data.sPopupVisible;(this.isClickToHide()&&!i||i&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,t=this.vcTriggerContext,i=t===void 0?{}:t;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),i.onPopupMouseDown&&i.onPopupMouseDown.apply(i,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var t=e.target,i=this.getRootDomNode(),l=this.getPopupDomNode();(!nc(i,t)||this.isContextMenuOnly())&&!nc(l,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var t=us(this.triggerRef);return us(e(t))}try{var i=us(this.triggerRef);if(i)return i}catch{}return us(this)},handleGetPopupClassFromAlign:function(e){var t=[],i=this.$props,l=i.popupPlacement,a=i.builtinPlacements,o=i.prefixCls,r=i.alignPoint,f=i.getPopupClassNameFromAlign;return l&&a&&t.push(WA(a,o,e,r)),f&&t.push(f(e)),t.join(" ")},getPopupAlign:function(){var e=this.$props,t=e.popupPlacement,i=e.popupAlign,l=e.builtinPlacements;return t&&l?lY(l,t,i):i},getComponent:function(){var e=this,t={};this.isMouseEnterToShow()&&(t.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(t.onMouseleave=this.onPopupMouseleave),t.onMousedown=this.onPopupMouseDown,t[Ui?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var i=this.handleGetPopupClassFromAlign,l=this.getRootDomNode,a=this.getContainer,o=this.$attrs,r=this.$props,f=r.prefixCls,v=r.destroyPopupOnHide,b=r.popupClassName,Z=r.popupAnimation,p=r.popupTransitionName,y=r.popupStyle,X=r.mask,m=r.maskAnimation,N=r.maskTransitionName,G=r.zIndex,d=r.stretch,u=r.alignPoint,s=r.mobile,h=r.forceRender,c=this.$data,W=c.sPopupVisible,M=c.point,I=P(P({prefixCls:f,destroyPopupOnHide:v,visible:W,point:u?M:null,align:this.align,animation:Z,getClassNameFromAlign:i,stretch:d,getRootDomNode:l,mask:X,zIndex:G,transitionName:p,maskAnimation:m,maskTransitionName:N,getContainer:a,class:b,style:y,onAlign:o.onPopupAlign||aY},t),{},{ref:this.setPopupRef,mobile:s,forceRender:h});return D(ZA,I,{default:this.$slots.popup||function(){return kW(e,"popup")}})},attachParent:function(e){var t=this;At.cancel(this.attachId);var i=this.$props,l=i.getPopupContainer,a=i.getDocument,o=this.getRootDomNode(),r;l?(o||l.length===0)&&(r=l(o)):r=a(this.getRootDomNode()).body,r?r.appendChild(e):this.attachId=At(function(){t.attachParent(e)})},getContainer:function(){var e=this.$props,t=e.getDocument,i=t(this.getRootDomNode()).createElement("div");return i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",this.attachParent(i),i},setPopupVisible:function(e,t){var i=this.alignPoint,l=this.sPopupVisible,a=this.onPopupVisibleChange;this.clearDelayTimer(),l!==e&&(No(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:l}),a&&a(e)),i&&t&&e&&this.setPoint(t)},setPoint:function(e){var t=this.$props.alignPoint;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,t,i){var l=this,a=t*1e3;if(this.clearDelayTimer(),a){var o=i?{pageX:i.pageX,pageY:i.pageY}:null;this.delayTimer=qP(function(){l.setPopupVisible(e,o),l.clearDelayTimer()},a)}else this.setPopupVisible(e,i)},clearDelayTimer:function(){this.delayTimer&&($P(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var t=function(){},i=SI(this);return this.childOriginEvents[e]&&i[e]?this["fire".concat(e)]:(t=this.childOriginEvents[e]||i[e]||t,t)},isClickToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("contextmenu")!==-1||i.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("hover")!==-1||i.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("hover")!==-1||i.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("focus")!==-1||i.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("focus")!==-1||i.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);var i=this.$props[e]||this.$attrs[e];i&&i(t)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,t=this.$attrs,i=Ri(Lh(this)),l=this.$props.alignPoint,a=i[0];this.childOriginEvents=SI(a);var o={key:"trigger"};this.isContextmenuToShow()?o.onContextmenu=this.onContextmenu:o.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(o.onClick=this.onClick,o.onMousedown=this.onMousedown,o[Ui?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(o.onClick=this.createTwoChains("onClick"),o.onMousedown=this.createTwoChains("onMousedown"),o[Ui?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(o.onMouseenter=this.onMouseenter,l&&(o.onMousemove=this.onMouseMove)):o.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?o.onMouseleave=this.onMouseleave:o.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(o.onFocus=this.onFocus,o.onBlur=this.onBlur):(o.onFocus=this.createTwoChains("onFocus"),o.onBlur=function(b){b&&(!b.relatedTarget||!nc(b.target,b.relatedTarget))&&e.createTwoChains("onBlur")(b)});var r=_e(a&&a.props&&a.props.class,t.class);r&&(o.class=r);var f=wn(a,P(P({},o),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return f;var v=D(J2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return D(ln,null,[v,f])}});var YA=["empty"],wA=function(e){var t=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},gA=He({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:We.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:We.oneOfType([Number,Boolean]).def(!0),popupElement:We.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,t){var i=t.slots,l=t.attrs,a=t.expose,o=de(function(){var f=e.dropdownMatchSelectWidth;return wA(f)}),r=Ne();return a({getPopupElement:function(){return r.value}}),function(){var f=P(P({},e),l),v=f.empty,b=v===void 0?!1:v,Z=jt(f,YA),p=Z.visible,y=Z.dropdownAlign,X=Z.prefixCls,m=Z.popupElement,N=Z.dropdownClassName,G=Z.dropdownStyle,d=Z.direction,u=d===void 0?"ltr":d,s=Z.placement,h=Z.dropdownMatchSelectWidth,c=Z.containerWidth,W=Z.dropdownRender,M=Z.animation,I=Z.transitionName,w=Z.getPopupContainer,C=Z.getTriggerDOMNode,x=Z.onPopupVisibleChange,R=Z.onPopupMouseEnter,g="".concat(X,"-dropdown"),S=m;W&&(S=W({menuNode:m,props:e}));var L=M?"".concat(g,"-").concat(M):I,V=P({minWidth:"".concat(c,"px")},G);return typeof h=="number"?V.width="".concat(h,"px"):h&&(V.width="".concat(c,"px")),D(Hu,P(P({},e),{},{showAction:x?["click"]:[],hideAction:x?["click"]:[],popupPlacement:s||(u==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:o.value,prefixCls:g,popupTransitionName:L,popupAlign:y,popupVisible:p,getPopupContainer:w,popupClassName:_e(N,ce({},"".concat(g,"-empty"),b)),popupStyle:V,getTriggerDOMNode:C,onPopupVisibleChange:x}),{default:i.default,popup:function(){return D("div",{ref:r,onMouseenter:R},[S])}})}}});const VA=gA;var Wn={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=Wn.F1&&t<=Wn.F12)return!1;switch(t){case Wn.ALT:case Wn.CAPS_LOCK:case Wn.CONTEXT_MENU:case Wn.CTRL:case Wn.DOWN:case Wn.END:case Wn.ESC:case Wn.HOME:case Wn.INSERT:case Wn.LEFT:case Wn.MAC_FF_META:case Wn.META:case Wn.NUMLOCK:case Wn.NUM_CENTER:case Wn.PAGE_DOWN:case Wn.PAGE_UP:case Wn.PAUSE:case Wn.PRINT_SCREEN:case Wn.RIGHT:case Wn.SHIFT:case Wn.UP:case Wn.WIN_KEY:case Wn.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=Wn.ZERO&&e<=Wn.NINE||e>=Wn.NUM_ZERO&&e<=Wn.NUM_MULTIPLY||e>=Wn.A&&e<=Wn.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case Wn.SPACE:case Wn.QUESTION_MARK:case Wn.NUM_PLUS:case Wn.NUM_MINUS:case Wn.NUM_PERIOD:case Wn.NUM_DIVISION:case Wn.SEMICOLON:case Wn.DASH:case Wn.EQUALS:case Wn.COMMA:case Wn.PERIOD:case Wn.SLASH:case Wn.APOSTROPHE:case Wn.SINGLE_QUOTE:case Wn.OPEN_SQUARE_BRACKET:case Wn.BACKSLASH:case Wn.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const bt=Wn;var O0=function(e,t){var i,l=t.slots,a=e.class,o=e.customizeIcon,r=e.customizeIconProps,f=e.onMousedown,v=e.onClick,b;return typeof o=="function"?b=o(r):b=o,D("span",{class:a,onMousedown:function(p){p.preventDefault(),f&&f(p)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:v,"aria-hidden":!0},[b!==void 0?b:D("span",{class:a.split(/\s+/).map(function(Z){return"".concat(Z,"-icon")})},[(i=l.default)===null||i===void 0?void 0:i.call(l)])])};O0.inheritAttrs=!1;O0.displayName="TransBtn";O0.props={class:String,customizeIcon:We.any,customizeIconProps:We.any,onMousedown:Function,onClick:Function};const Lm=O0;function LA(n){n.target.composing=!0}function rY(n){n.target.composing&&(n.target.composing=!1,RA(n.target,"input"))}function RA(n,e){var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!0),n.dispatchEvent(t)}function _y(n,e,t,i){n.addEventListener(e,t,i)}var TA={created:function(e,t){(!t.modifiers||!t.modifiers.lazy)&&(_y(e,"compositionstart",LA),_y(e,"compositionend",rY),_y(e,"change",rY))}};const Pu=TA;var xA={inputRef:We.any,prefixCls:String,id:String,inputElement:We.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),attrs:We.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},CA=He({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:xA,setup:function(e){var t=null,i=un("VCSelectContainerEvent");return function(){var l,a,o=e.prefixCls,r=e.id,f=e.inputElement,v=e.disabled,b=e.tabindex,Z=e.autofocus,p=e.autocomplete,y=e.editable,X=e.activeDescendantId,m=e.value,N=e.onKeydown,G=e.onMousedown,d=e.onChange,u=e.onPaste,s=e.onCompositionstart,h=e.onCompositionend,c=e.onFocus,W=e.onBlur,M=e.open,I=e.inputRef,w=e.attrs,C=f||vl(D("input",null,null),[[Pu]]),x=C.props||{},R=x.onKeydown,g=x.onInput,S=x.onFocus,L=x.onBlur,V=x.onMousedown,Y=x.onCompositionstart,T=x.onCompositionend,J=x.style;return C=wn(C,Xn(P(P(P({type:"search"},x),{},{id:r,ref:I,disabled:v,tabindex:b,autocomplete:p||"off",autofocus:Z,class:_e("".concat(o,"-selection-search-input"),(l=C)===null||l===void 0||(a=l.props)===null||a===void 0?void 0:a.class),role:"combobox","aria-expanded":M,"aria-haspopup":"listbox","aria-owns":"".concat(r,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(r,"_list"),"aria-activedescendant":X},w),{},{value:y?m:"",readonly:!y,unselectable:y?null:"on",style:P(P({},J),{},{opacity:y?null:0}),onKeydown:function(K){N(K),R&&R(K)},onMousedown:function(K){G(K),V&&V(K)},onInput:function(K){d(K),g&&g(K)},onCompositionstart:function(K){s(K),Y&&Y(K)},onCompositionend:function(K){h(K),T&&T(K)},onPaste:u,onFocus:function(){clearTimeout(t),S&&S(arguments.length<=0?void 0:arguments[0]),c&&c(arguments.length<=0?void 0:arguments[0]),i==null||i.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var K=arguments.length,H=new Array(K),k=0;k"u")return 0;var t=e?"scrollTop":"scrollLeft",i=0;if(R2(n)?i=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?i=n.documentElement[t]:n&&(i=n[t]),n&&!R2(n)&&typeof i!="number"){var a;i=(a=(n.ownerDocument||n).documentElement)===null||a===void 0?void 0:a[t]}return i}function EP(n,e,t,i){var a=t-e;return n/=i/2,n<1?a/2*n*n*n+e:a/2*((n-=2)*n*n+2)+e}function cG(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.getContainer,i=t===void 0?function(){return window}:t,a=e.callback,l=e.duration,o=l===void 0?450:l,r=i(),f=sG(r,!0),v=Date.now(),b=function Z(){var p=Date.now(),y=p-v,X=EP(y>o?o:y,f,n,o);R2(r)?r.scrollTo(window.pageXOffset,X):r instanceof HTMLDocument||r.constructor.name==="HTMLDocument"?r.documentElement.scrollTop=X:r.scrollTop=X,y0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,M=[],I=m.value();if(y.links.forEach(function(C){var x=M5.exec(C.toString());if(x){var R=document.getElementById(x[1]);if(R){var g=N5(R,I);gC.top?x:C});return w.link}return""},G=function(c){var W=e.getCurrentAnchor;X.value!==c&&(X.value=typeof W=="function"?W():c,i("change",c))},d=function(c){var W=e.offsetTop,M=e.targetOffset;G(c);var I=m.value(),w=sG(I,!0),C=M5.exec(c);if(C){var x=document.getElementById(C[1]);if(x){var R=N5(x,I),g=w+R;g-=M!==void 0?M:W||0,y.animating=!0,cG(g,{callback:function(){y.animating=!1},getContainer:m.value})}}};o({scrollTo:d});var u=function(){if(!y.animating){var c=e.offsetTop,W=e.bounds,M=e.targetOffset,I=N(M!==void 0?M:c||0,W);G(I)}},s=function(){var c=p.value.getElementsByClassName("".concat(f.value,"-link-title-active"))[0];c&&(Z.value.style.top="".concat(c.offsetTop+c.clientHeight/2-4.5,"px"))};return PP({registerLink:function(c){y.links.includes(c)||y.links.push(c)},unregisterLink:function(c){var W=y.links.indexOf(c);W!==-1&&y.links.splice(W,1)},activeLink:X,scrollTo:d,handleClick:function(c,W){i("click",c,W)}}),Kt(function(){cn(function(){var h=m.value();y.scrollContainer=h,y.scrollEvent=hi(y.scrollContainer,"scroll",u),u()})}),fn(function(){y.scrollEvent&&y.scrollEvent.remove()}),Dl(function(){if(y.scrollEvent){var h=m.value();y.scrollContainer!==h&&(y.scrollContainer=h,y.scrollEvent.remove(),y.scrollEvent=hi(y.scrollContainer,"scroll",u),u())}s()}),function(){var h,c=e.offsetTop,W=e.affix,M=e.showInkInFixed,I=f.value,w=_e("".concat(I,"-ink-ball"),{visible:X.value}),C=_e(e.wrapperClass,"".concat(I,"-wrapper"),ce({},"".concat(I,"-rtl"),b.value==="rtl")),x=_e(I,ce({},"".concat(I,"-fixed"),!W&&!M)),R=P({maxHeight:c?"calc(100vh - ".concat(c,"px)"):"100vh"},e.wrapperStyle),g=D("div",{class:C,style:R,ref:p},[D("div",{class:x},[D("div",{class:"".concat(I,"-ink")},[D("span",{class:w,ref:Z},null)]),(h=l.default)===null||h===void 0?void 0:h.call(l)])]);return W?D(JT,P(P({},a),{},{offsetTop:c,target:m.value}),{default:function(){return[g]}}):g}}});var AP=function(){return{prefixCls:String,href:String,title:We.any,target:String}};const OT=He({compatConfig:{MODE:3},name:"AAnchorLink",props:pn(AP(),{href:"#"}),slots:["title"],setup:function(e,t){var i=t.slots,a=null,l=HP(),o=l.handleClick,r=l.scrollTo,f=l.unregisterLink,v=l.registerLink,b=l.activeLink,Z=Nt("anchor",e),p=Z.prefixCls,y=function(m){var N=e.href;o(m,{title:a,href:N}),r(N)};return rt(function(){return e.href},function(X,m){cn(function(){f(m),v(X)})}),Kt(function(){v(e.href)}),fn(function(){f(e.href)}),function(){var X,m=e.href,N=e.target,G=p.value,d=ui(i,e,"title");a=d;var u=b.value===m,s=_e("".concat(G,"-link"),ce({},"".concat(G,"-link-active"),u)),h=_e("".concat(G,"-link-title"),ce({},"".concat(G,"-link-title-active"),u));return D("div",{class:s},[D("a",{class:h,href:m,title:typeof d=="string"?d:"",target:N,onClick:y},[d]),(X=i.default)===null||X===void 0?void 0:X.call(i)])}}});tc.Link=OT;tc.install=function(n){return n.component(tc.name,tc),n.component(tc.Link.name,tc.Link),n};function uG(n){return xR(n)||SR(n)||T0(n)||CR()}function I5(n,e){var t=n.key,i;return"value"in n&&(i=n.value),t??(i!==void 0?i:"rc-index-key-".concat(e))}function jT(n,e){var t=n||{},i=t.label,a=t.value,l=t.options;return{label:i||(e?"children":"label"),value:a||"value",options:l||"options"}}function _P(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.fieldNames,i=e.childrenAsData,a=[],l=jT(t,!1),o=l.label,r=l.value,f=l.options;function v(b,Z){b.forEach(function(p){var y=p[o];if(Z||!(f in p)){var X=p[r];a.push({key:I5(p,a.length),groupOption:Z,data:p,label:y,value:X})}else{var m=y;m===void 0&&i&&(m=p.label),a.push({key:I5(p,a.length),group:!0,data:p,label:m}),v(p[f],!0)}})}return v(n,!1),a}function T2(n){var e=P({},n);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function $P(n,e){if(!e||!e.length)return null;var t=!1;function i(l,o){var r=uG(o),f=r[0],v=r.slice(1);if(!f)return[l];var b=l.split(f);return t=t||b.length>1,b.reduce(function(Z,p){return[].concat(yt(Z),yt(i(p,v)))},[]).filter(function(Z){return Z})}var a=i(n,e);return t?a:null}function nc(n,e){return n?n.contains(e):!1}var UT=["moz","ms","webkit"];function qP(){var n=0;return function(e){var t=new Date().getTime(),i=Math.max(0,16-(t-n)),a=window.setTimeout(function(){e(t+i)},i);return n=t+i,a}}function eQ(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var n=UT.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return n?window["".concat(n,"RequestAnimationFrame")]:qP()}function tQ(n){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(n);var e=UT.filter(function(t){return"".concat(t,"CancelAnimationFrame")in window||"".concat(t,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,n):clearTimeout(n)}var Y5=eQ(),nQ=function(e){return tQ(e.id)},iQ=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=Date.now();function a(){Date.now()-i>=t?e.call():l.id=Y5(a)}var l={id:Y5(a)};return l},dG={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},lQ=P(P({},dG),{},{mobile:{type:Object}}),aQ=P(P({},dG),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function ET(n){var e=n.prefixCls,t=n.animation,i=n.transitionName;return t?{name:"".concat(e,"-").concat(t)}:i?{name:i}:{}}function KT(n){var e=n.prefixCls,t=n.visible,i=n.zIndex,a=n.mask,l=n.maskAnimation,o=n.maskTransitionName;if(!a)return null;var r={};return(o||l)&&(r=ET({prefixCls:e,transitionName:o,animation:l})),D(aa,P({appear:!0},r),{default:function(){return[vl(D("div",{style:{zIndex:i},class:"".concat(e,"-mask")},null),[[_U("if"),t]])]}})}KT.displayName="Mask";const rQ=He({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:lQ,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();return i({forceAlign:function(){},getElement:function(){return l.value}}),function(){var o,r=e.zIndex,f=e.visible,v=e.prefixCls,b=e.mobile;b=b===void 0?{}:b;var Z=b.popupClassName,p=b.popupStyle,y=b.popupMotion,X=y===void 0?{}:y,m=b.popupRender,N=P({zIndex:r},p),G=ti((o=a.default)===null||o===void 0?void 0:o.call(a));G.length>1&&(G=D("div",{class:"".concat(v,"-content")},[G])),m&&(G=m(G));var d=_e(v,Z);return D(aa,P({ref:l},X),{default:function(){return[f?D("div",{class:d,style:N},[G]):null]}})}}});var w5=["measure","align",null,"motion"];const oQ=function(n,e){var t=Ne(null),i=Ne(),a=Ne(!1);function l(f){a.value||(t.value=f)}function o(){At.cancel(i.value)}function r(f){o(),i.value=At(function(){var v=t.value;switch(t.value){case"align":v="motion";break;case"motion":v="stable";break}l(v),f==null||f()})}return rt(n,function(){l("measure")},{immediate:!0,flush:"post"}),Kt(function(){rt(t,function(){switch(t.value){case"measure":e();break}t.value&&(i.value=At(Ic(Xa.mark(function f(){var v,b;return Xa.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:v=w5.indexOf(t.value),b=w5[v+1],b&&v!==-1&&l(b);case 3:case"end":return p.stop()}},f)}))))},{immediate:!0,flush:"post"})}),fn(function(){a.value=!0,o()}),[t,r]},sQ=function(n){var e=Ne({width:0,height:0});function t(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var i=de(function(){var a={};if(n.value){var l=e.value,o=l.width,r=l.height;n.value.indexOf("height")!==-1&&r?a.height="".concat(r,"px"):n.value.indexOf("minHeight")!==-1&&r&&(a.minHeight="".concat(r,"px")),n.value.indexOf("width")!==-1&&o?a.width="".concat(o,"px"):n.value.indexOf("minWidth")!==-1&&o&&(a.minWidth="".concat(o,"px"))}return a});return[i,t]};function g5(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter(function(a){return Object.getOwnPropertyDescriptor(n,a).enumerable})),t.push.apply(t,i)}return t}function V5(n){for(var e=1;e=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}function RQ(n,e,t,i){var a=Yn.clone(n),l={width:e.width,height:e.height};return i.adjustX&&a.left=t.left&&a.left+l.width>t.right&&(l.width-=a.left+l.width-t.right),i.adjustX&&a.left+l.width>t.right&&(a.left=Math.max(t.right-l.width,t.left)),i.adjustY&&a.top=t.top&&a.top+l.height>t.bottom&&(l.height-=a.top+l.height-t.bottom),i.adjustY&&a.top+l.height>t.bottom&&(a.top=Math.max(t.bottom-l.height,t.top)),Yn.mix(a,l)}function mG(n){var e,t,i;if(!Yn.isWindow(n)&&n.nodeType!==9)e=Yn.offset(n),t=Yn.outerWidth(n),i=Yn.outerHeight(n);else{var a=Yn.getWindow(n);e={left:Yn.getWindowScrollLeft(a),top:Yn.getWindowScrollTop(a)},t=Yn.viewportWidth(a),i=Yn.viewportHeight(a)}return e.width=t,e.height=i,e}function k5(n,e){var t=e.charAt(0),i=e.charAt(1),a=n.width,l=n.height,o=n.left,r=n.top;return t==="c"?r+=l/2:t==="b"&&(r+=l),i==="c"?o+=a/2:i==="r"&&(o+=a),{left:o,top:r}}function $f(n,e,t,i,a){var l=k5(e,t[1]),o=k5(n,t[0]),r=[o.left-l.left,o.top-l.top];return{left:Math.round(n.left-r[0]+i[0]-a[0]),top:Math.round(n.top-r[1]+i[1]-a[1])}}function F5(n,e,t){return n.leftt.right}function J5(n,e,t){return n.topt.bottom}function TQ(n,e,t){return n.left>t.right||n.left+e.widtht.bottom||n.top+e.height=t.right||i.top>=t.bottom}function pG(n,e,t){var i=t.target||e,a=mG(i),l=!CQ(i,t.overflow&&t.overflow.alwaysByViewport);return qT(n,a,t,l)}pG.__getOffsetParent=z2;pG.__getVisibleRectForElement=bG;function SQ(n,e,t){var i,a,l=Yn.getDocument(n),o=l.defaultView||l.parentWindow,r=Yn.getWindowScrollLeft(o),f=Yn.getWindowScrollTop(o),v=Yn.viewportWidth(o),b=Yn.viewportHeight(o);"pageX"in e?i=e.pageX:i=r+e.clientX,"pageY"in e?a=e.pageY:a=f+e.clientY;var Z={left:i,top:a,width:0,height:0},p=i>=0&&i<=r+v&&a>=0&&a<=f+b,y=[t.points[0],"cc"];return qT(n,Z,V5(V5({},t),{},{points:y}),p)}function wn(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=n;if(Array.isArray(n)&&(a=Ri(n)[0]),!a)return null;var l=Vl(a,e,i);return l.props=t?P(P({},l.props),e):l.props,Ci(Yt(l.props.class)!=="object","class must be string"),l}function zQ(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return n.map(function(i){return wn(i,e,t)})}const yG=function(n){if(!n)return!1;if(n.offsetParent)return!0;if(n.getBBox){var e=n.getBBox();if(e.width||e.height)return!0}if(n.getBoundingClientRect){var t=n.getBoundingClientRect();if(t.width||t.height)return!0}return!1};function kQ(n,e){return n===e?!0:!n||!e?!1:"pageX"in e&&"pageY"in e?n.pageX===e.pageX&&n.pageY===e.pageY:"clientX"in e&&"clientY"in e?n.clientX===e.clientX&&n.clientY===e.clientY:!1}function FQ(n,e){n!==document.activeElement&&nc(e,n)&&typeof n.focus=="function"&&n.focus()}function j5(n,e){var t=null,i=null;function a(o){var r=ft(o,1),f=r[0].target;if(document.documentElement.contains(f)){var v=f.getBoundingClientRect(),b=v.width,Z=v.height,p=Math.floor(b),y=Math.floor(Z);(t!==p||i!==y)&&Promise.resolve().then(function(){e({width:p,height:y})}),t=p,i=y}}var l=new CW(a);return n&&l.observe(n),function(){l.disconnect()}}const JQ=function(n,e){var t=!1,i=null;function a(){clearTimeout(i)}function l(o){if(!t||o===!0){if(n()===!1)return;t=!0,a(),i=setTimeout(function(){t=!1},e.value)}else a(),i=setTimeout(function(){t=!1,l()},e.value)}return[l,function(){t=!1,a()}]};function DQ(){this.__data__=[],this.size=0}function ZG(n,e){return n===e||n!==n&&e!==e}function z0(n,e){for(var t=n.length;t--;)if(ZG(n[t][0],e))return t;return-1}var OQ=Array.prototype,jQ=OQ.splice;function UQ(n){var e=this.__data__,t=z0(e,n);if(t<0)return!1;var i=e.length-1;return t==i?e.pop():jQ.call(e,t,1),--this.size,!0}function EQ(n){var e=this.__data__,t=z0(e,n);return t<0?void 0:e[t][1]}function KQ(n){return z0(this.__data__,n)>-1}function HQ(n,e){var t=this.__data__,i=z0(t,n);return i<0?(++this.size,t.push([n,e])):t[i][1]=e,this}function So(n){var e=-1,t=n==null?0:n.length;for(this.clear();++er))return!1;var v=l.get(n),b=l.get(e);if(v&&b)return v==e&&b==n;var Z=-1,p=!0,y=t&D7?new Vu:void 0;for(l.set(n,e),l.set(e,n);++Z-1&&n%1==0&&n-1&&n%1==0&&n<=vB}var WB="[object Arguments]",GB="[object Array]",XB="[object Boolean]",NB="[object Date]",MB="[object Error]",IB="[object Function]",YB="[object Map]",wB="[object Number]",gB="[object Object]",VB="[object RegExp]",LB="[object Set]",RB="[object String]",TB="[object WeakMap]",xB="[object ArrayBuffer]",CB="[object DataView]",SB="[object Float32Array]",zB="[object Float64Array]",kB="[object Int8Array]",FB="[object Int16Array]",JB="[object Int32Array]",DB="[object Uint8Array]",OB="[object Uint8ClampedArray]",jB="[object Uint16Array]",UB="[object Uint32Array]",Ni={};Ni[SB]=Ni[zB]=Ni[kB]=Ni[FB]=Ni[JB]=Ni[DB]=Ni[OB]=Ni[jB]=Ni[UB]=!0;Ni[WB]=Ni[GB]=Ni[xB]=Ni[XB]=Ni[CB]=Ni[NB]=Ni[MB]=Ni[IB]=Ni[YB]=Ni[wB]=Ni[gB]=Ni[VB]=Ni[LB]=Ni[RB]=Ni[TB]=!1;function EB(n){return Nr(n)&&MG(n.length)&&!!Ni[Ms(n)]}function F0(n){return function(e){return n(e)}}var rx=typeof Fa=="object"&&Fa&&!Fa.nodeType&&Fa,Qd=rx&&typeof Ja=="object"&&Ja&&!Ja.nodeType&&Ja,KB=Qd&&Qd.exports===rx,Ay=KB&&zR.process,HB=function(){try{var n=Qd&&Qd.require&&Qd.require("util").types;return n||Ay&&Ay.binding&&Ay.binding("util")}catch{}}();const Lu=HB;var B5=Lu&&Lu.isTypedArray,PB=B5?F0(B5):EB;const ox=PB;var QB=Object.prototype,BB=QB.hasOwnProperty;function sx(n,e){var t=or(n),i=!t&&XG(n),a=!t&&!i&&Lm(n),l=!t&&!i&&!a&&ox(n),o=t||i||a||l,r=o?sB(n.length,String):[],f=r.length;for(var v in n)(e||BB.call(n,v))&&!(o&&(v=="length"||a&&(v=="offset"||v=="parent")||l&&(v=="buffer"||v=="byteLength"||v=="byteOffset")||NG(v,f)))&&r.push(v);return r}var AB=Object.prototype;function IG(n){var e=n&&n.constructor,t=typeof e=="function"&&e.prototype||AB;return n===t}var _B=FR(Object.keys,Object);const $B=_B;var qB=Object.prototype,eA=qB.hasOwnProperty;function tA(n){if(!IG(n))return $B(n);var e=[];for(var t in Object(n))eA.call(n,t)&&t!="constructor"&&e.push(t);return e}function zh(n){return n!=null&&MG(n.length)&&!ex(n)}function Ku(n){return zh(n)?sx(n):tA(n)}function k2(n){return nx(n,Ku,GG)}var nA=1,iA=Object.prototype,lA=iA.hasOwnProperty;function aA(n,e,t,i,a,l){var o=t&nA,r=k2(n),f=r.length,v=k2(e),b=v.length;if(f!=b&&!o)return!1;for(var Z=f;Z--;){var p=r[Z];if(!(o?p in e:lA.call(e,p)))return!1}var y=l.get(n),X=l.get(e);if(y&&X)return y==e&&X==n;var m=!0;l.set(n,e),l.set(e,n);for(var N=o;++Z1&&(H=D("div",{class:"".concat(g,"-content")},[H]));var k=_e(g,a.class,f.value),F=X.value||!e.visible,O=F?Is(M.value.name,M.value):{};return D(aa,P(P({ref:r},O),{},{onBeforeEnter:I}),{default:function(){return!S||e.visible?vl(D(WA,{target:h(),key:"popup",ref:o,monitorWindowResize:!0,disabled:w.value,align:R,onAlign:W},{default:function(){return D("div",P(P({class:k,onMouseenter:L,onMouseleave:V,onMousedown:RI(J,["capture"])},ce({},Ui?"onTouchstartPassive":"onTouchstart",RI(T,["capture"]))),{},{style:K}),[H])}}),[[gr,X.value]]):null}})}}}),XA=He({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:aQ,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r=Ne(!1),f=Ne();return rt([function(){return e.visible},function(){return e.mobile}],function(){o.value=e.visible,e.visible&&e.mobile&&(r.value=!0)},{immediate:!0,flush:"post"}),l({forceAlign:function(){var b;(b=f.value)===null||b===void 0||b.forceAlign()},getElement:function(){var b;return(b=f.value)===null||b===void 0?void 0:b.getElement()}}),function(){var v=P(P(P({},e),i),{},{visible:o.value}),b=r.value?D(rQ,P(P({},v),{},{mobile:e.mobile,ref:f}),{default:a.default}):D(GA,P(P({},v),{},{ref:f}),{default:a.default});return D("div",null,[D(KT,v,null),b])}}});function NA(n,e,t){return t?n[0]===e[0]:n[0]===e[0]&&n[1]===e[1]}function rY(n,e,t){var i=n[e]||{};return P(P({},i),t)}function MA(n,e,t,i){for(var a=t.points,l=Object.keys(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(DR(this),P(P({},this.$data),i));if(a===null)return;i=P(P({},i),a||{})}Xn(this.$data,i),this._.isMounted&&this.$forceUpdate(),cn(function(){t&&t()})},__emit:function(){var e=[].slice.call(arguments,0),t=e[0];t="on".concat(t[0].toUpperCase()).concat(t.substring(1));var i=this.$props[t]||this.$attrs[t];if(e.length&&i)if(Array.isArray(i))for(var a=0,l=i.length;a1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};hn(dx,{inTriggerContext:t.inTriggerContext,shouldRender:de(function(){var i=e||{},a=i.sPopupVisible,l=i.popupRef,o=i.forceRender,r=i.autoDestroy,f=!1;return(a||l||o)&&(f=!0),!a&&r&&(f=!1),f})})},YA=function(){YG({},{inTriggerContext:!1});var e=un(dx,{shouldRender:de(function(){return!1}),inTriggerContext:!1});return{shouldRender:de(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const O2=He({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:We.func.isRequired,didUpdate:Function},setup:function(e,t){var i=t.slots,a=!0,l,o=YA(),r=o.shouldRender;w0(function(){a=!1,r.value&&(l=e.getContainer())});var f=rt(r,function(){r.value&&!l&&(l=e.getContainer()),l&&f()});return Dl(function(){cn(function(){if(r.value){var v;(v=e.didUpdate)===null||v===void 0||v.call(e,e)}})}),fn(function(){l&&l.parentNode&&l.parentNode.removeChild(l)}),function(){if(!r.value)return null;if(a){var v;return(v=i.default)===null||v===void 0?void 0:v.call(i)}return l?D(LW,{to:l},i):null}}});function oY(){}function wA(){return""}function gA(n){return n?n.ownerDocument:window.document}var VA=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Hu=He({compatConfig:{MODE:3},name:"Trigger",mixins:[Vc],inheritAttrs:!1,props:{action:We.oneOfType([We.string,We.arrayOf(We.string)]).def([]),showAction:We.any.def([]),hideAction:We.any.def([]),getPopupClassNameFromAlign:We.any.def(wA),onPopupVisibleChange:Function,afterPopupVisibleChange:We.func.def(oY),popup:We.any,popupStyle:{type:Object,default:void 0},prefixCls:We.string.def("rc-trigger-popup"),popupClassName:We.string.def(""),popupPlacement:String,builtinPlacements:We.object,popupTransitionName:String,popupAnimation:We.any,mouseEnterDelay:We.number.def(0),mouseLeaveDelay:We.number.def(.1),zIndex:Number,focusDelay:We.number.def(0),blurDelay:We.number.def(.15),getPopupContainer:Function,getDocument:We.func.def(gA),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:We.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var t=de(function(){var f=e.popupPlacement,v=e.popupAlign,b=e.builtinPlacements;return f&&b?rY(b,f,v):v}),i=IA(e.tryPopPortal),a=i.setPortal,l=i.popPortal,o=Ne(null),r=function(v){o.value=v};return{popPortal:l,setPortal:a,vcTriggerContext:un("vcTriggerContext",{}),popupRef:o,setPopupRef:r,triggerRef:Ne(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,t,i=this.$props,a;return this.popupVisible!==void 0?a=!!i.popupVisible:a=!!i.defaultPopupVisible,VA.forEach(function(l){e["fire".concat(l)]=function(o){e.fireEvents(l,o)}}),(t=this.setPortal)===null||t===void 0||t.call(this,D(O2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:a,sPopupVisible:a,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){hn("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),YG(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),At.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,t=this.$data;if(t.sPopupVisible){var i;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(i=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=hi(i,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(i=i||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=hi(i,"touchstart",this.onDocumentClick,Ui?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(i=i||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=hi(i,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=hi(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var t=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var t;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&nc((t=this.popupRef)===null||t===void 0?void 0:t.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){nc(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var t;if(this.preClickTime&&this.preTouchTime?t=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?t=this.preClickTime:this.preTouchTime&&(t=this.preTouchTime),Math.abs(t-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var i=!this.$data.sPopupVisible;(this.isClickToHide()&&!i||i&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,t=this.vcTriggerContext,i=t===void 0?{}:t;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),i.onPopupMouseDown&&i.onPopupMouseDown.apply(i,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var t=e.target,i=this.getRootDomNode(),a=this.getPopupDomNode();(!nc(i,t)||this.isContextMenuOnly())&&!nc(a,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var t=us(this.triggerRef);return us(e(t))}try{var i=us(this.triggerRef);if(i)return i}catch{}return us(this)},handleGetPopupClassFromAlign:function(e){var t=[],i=this.$props,a=i.popupPlacement,l=i.builtinPlacements,o=i.prefixCls,r=i.alignPoint,f=i.getPopupClassNameFromAlign;return a&&l&&t.push(MA(l,o,e,r)),f&&t.push(f(e)),t.join(" ")},getPopupAlign:function(){var e=this.$props,t=e.popupPlacement,i=e.popupAlign,a=e.builtinPlacements;return t&&a?rY(a,t,i):i},getComponent:function(){var e=this,t={};this.isMouseEnterToShow()&&(t.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(t.onMouseleave=this.onPopupMouseleave),t.onMousedown=this.onPopupMouseDown,t[Ui?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var i=this.handleGetPopupClassFromAlign,a=this.getRootDomNode,l=this.getContainer,o=this.$attrs,r=this.$props,f=r.prefixCls,v=r.destroyPopupOnHide,b=r.popupClassName,Z=r.popupAnimation,p=r.popupTransitionName,y=r.popupStyle,X=r.mask,m=r.maskAnimation,N=r.maskTransitionName,G=r.zIndex,d=r.stretch,u=r.alignPoint,s=r.mobile,h=r.forceRender,c=this.$data,W=c.sPopupVisible,M=c.point,I=P(P({prefixCls:f,destroyPopupOnHide:v,visible:W,point:u?M:null,align:this.align,animation:Z,getClassNameFromAlign:i,stretch:d,getRootDomNode:a,mask:X,zIndex:G,transitionName:p,maskAnimation:m,maskTransitionName:N,getContainer:l,class:b,style:y,onAlign:o.onPopupAlign||oY},t),{},{ref:this.setPopupRef,mobile:s,forceRender:h});return D(XA,I,{default:this.$slots.popup||function(){return JW(e,"popup")}})},attachParent:function(e){var t=this;At.cancel(this.attachId);var i=this.$props,a=i.getPopupContainer,l=i.getDocument,o=this.getRootDomNode(),r;a?(o||a.length===0)&&(r=a(o)):r=l(this.getRootDomNode()).body,r?r.appendChild(e):this.attachId=At(function(){t.attachParent(e)})},getContainer:function(){var e=this.$props,t=e.getDocument,i=t(this.getRootDomNode()).createElement("div");return i.style.position="absolute",i.style.top="0",i.style.left="0",i.style.width="100%",this.attachParent(i),i},setPopupVisible:function(e,t){var i=this.alignPoint,a=this.sPopupVisible,l=this.onPopupVisibleChange;this.clearDelayTimer(),a!==e&&(No(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:a}),l&&l(e)),i&&t&&e&&this.setPoint(t)},setPoint:function(e){var t=this.$props.alignPoint;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,t,i){var a=this,l=t*1e3;if(this.clearDelayTimer(),l){var o=i?{pageX:i.pageX,pageY:i.pageY}:null;this.delayTimer=iQ(function(){a.setPopupVisible(e,o),a.clearDelayTimer()},l)}else this.setPopupVisible(e,i)},clearDelayTimer:function(){this.delayTimer&&(nQ(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var t=function(){},i=kI(this);return this.childOriginEvents[e]&&i[e]?this["fire".concat(e)]:(t=this.childOriginEvents[e]||i[e]||t,t)},isClickToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("contextmenu")!==-1||i.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("click")!==-1||i.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("hover")!==-1||i.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("hover")!==-1||i.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,t=e.action,i=e.showAction;return t.indexOf("focus")!==-1||i.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,t=e.action,i=e.hideAction;return t.indexOf("focus")!==-1||i.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);var i=this.$props[e]||this.$attrs[e];i&&i(t)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,t=this.$attrs,i=Ri(Rh(this)),a=this.$props.alignPoint,l=i[0];this.childOriginEvents=kI(l);var o={key:"trigger"};this.isContextmenuToShow()?o.onContextmenu=this.onContextmenu:o.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(o.onClick=this.onClick,o.onMousedown=this.onMousedown,o[Ui?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(o.onClick=this.createTwoChains("onClick"),o.onMousedown=this.createTwoChains("onMousedown"),o[Ui?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(o.onMouseenter=this.onMouseenter,a&&(o.onMousemove=this.onMouseMove)):o.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?o.onMouseleave=this.onMouseleave:o.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(o.onFocus=this.onFocus,o.onBlur=this.onBlur):(o.onFocus=this.createTwoChains("onFocus"),o.onBlur=function(b){b&&(!b.relatedTarget||!nc(b.target,b.relatedTarget))&&e.createTwoChains("onBlur")(b)});var r=_e(l&&l.props&&l.props.class,t.class);r&&(o.class=r);var f=wn(l,P(P({},o),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return f;var v=D(O2,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return D(ln,null,[v,f])}});var LA=["empty"],RA=function(e){var t=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},TA=He({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:We.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:We.oneOfType([Number,Boolean]).def(!0),popupElement:We.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=de(function(){var f=e.dropdownMatchSelectWidth;return RA(f)}),r=Ne();return l({getPopupElement:function(){return r.value}}),function(){var f=P(P({},e),a),v=f.empty,b=v===void 0?!1:v,Z=jt(f,LA),p=Z.visible,y=Z.dropdownAlign,X=Z.prefixCls,m=Z.popupElement,N=Z.dropdownClassName,G=Z.dropdownStyle,d=Z.direction,u=d===void 0?"ltr":d,s=Z.placement,h=Z.dropdownMatchSelectWidth,c=Z.containerWidth,W=Z.dropdownRender,M=Z.animation,I=Z.transitionName,w=Z.getPopupContainer,C=Z.getTriggerDOMNode,x=Z.onPopupVisibleChange,R=Z.onPopupMouseEnter,g="".concat(X,"-dropdown"),S=m;W&&(S=W({menuNode:m,props:e}));var L=M?"".concat(g,"-").concat(M):I,V=P({minWidth:"".concat(c,"px")},G);return typeof h=="number"?V.width="".concat(h,"px"):h&&(V.width="".concat(c,"px")),D(Hu,P(P({},e),{},{showAction:x?["click"]:[],hideAction:x?["click"]:[],popupPlacement:s||(u==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:o.value,prefixCls:g,popupTransitionName:L,popupAlign:y,popupVisible:p,getPopupContainer:w,popupClassName:_e(N,ce({},"".concat(g,"-empty"),b)),popupStyle:V,getTriggerDOMNode:C,onPopupVisibleChange:x}),{default:i.default,popup:function(){return D("div",{ref:r,onMouseenter:R},[S])}})}}});const xA=TA;var Wn={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=Wn.F1&&t<=Wn.F12)return!1;switch(t){case Wn.ALT:case Wn.CAPS_LOCK:case Wn.CONTEXT_MENU:case Wn.CTRL:case Wn.DOWN:case Wn.END:case Wn.ESC:case Wn.HOME:case Wn.INSERT:case Wn.LEFT:case Wn.MAC_FF_META:case Wn.META:case Wn.NUMLOCK:case Wn.NUM_CENTER:case Wn.PAGE_DOWN:case Wn.PAGE_UP:case Wn.PAUSE:case Wn.PRINT_SCREEN:case Wn.RIGHT:case Wn.SHIFT:case Wn.UP:case Wn.WIN_KEY:case Wn.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=Wn.ZERO&&e<=Wn.NINE||e>=Wn.NUM_ZERO&&e<=Wn.NUM_MULTIPLY||e>=Wn.A&&e<=Wn.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case Wn.SPACE:case Wn.QUESTION_MARK:case Wn.NUM_PLUS:case Wn.NUM_MINUS:case Wn.NUM_PERIOD:case Wn.NUM_DIVISION:case Wn.SEMICOLON:case Wn.DASH:case Wn.EQUALS:case Wn.COMMA:case Wn.PERIOD:case Wn.SLASH:case Wn.APOSTROPHE:case Wn.SINGLE_QUOTE:case Wn.OPEN_SQUARE_BRACKET:case Wn.BACKSLASH:case Wn.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const bt=Wn;var O0=function(e,t){var i,a=t.slots,l=e.class,o=e.customizeIcon,r=e.customizeIconProps,f=e.onMousedown,v=e.onClick,b;return typeof o=="function"?b=o(r):b=o,D("span",{class:l,onMousedown:function(p){p.preventDefault(),f&&f(p)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:v,"aria-hidden":!0},[b!==void 0?b:D("span",{class:l.split(/\s+/).map(function(Z){return"".concat(Z,"-icon")})},[(i=a.default)===null||i===void 0?void 0:i.call(a)])])};O0.inheritAttrs=!1;O0.displayName="TransBtn";O0.props={class:String,customizeIcon:We.any,customizeIconProps:We.any,onMousedown:Function,onClick:Function};const Rm=O0;function CA(n){n.target.composing=!0}function sY(n){n.target.composing&&(n.target.composing=!1,SA(n.target,"input"))}function SA(n,e){var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!0),n.dispatchEvent(t)}function _y(n,e,t,i){n.addEventListener(e,t,i)}var zA={created:function(e,t){(!t.modifiers||!t.modifiers.lazy)&&(_y(e,"compositionstart",CA),_y(e,"compositionend",sY),_y(e,"change",sY))}};const Pu=zA;var kA={inputRef:We.any,prefixCls:String,id:String,inputElement:We.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),attrs:We.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},FA=He({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:kA,setup:function(e){var t=null,i=un("VCSelectContainerEvent");return function(){var a,l,o=e.prefixCls,r=e.id,f=e.inputElement,v=e.disabled,b=e.tabindex,Z=e.autofocus,p=e.autocomplete,y=e.editable,X=e.activeDescendantId,m=e.value,N=e.onKeydown,G=e.onMousedown,d=e.onChange,u=e.onPaste,s=e.onCompositionstart,h=e.onCompositionend,c=e.onFocus,W=e.onBlur,M=e.open,I=e.inputRef,w=e.attrs,C=f||vl(D("input",null,null),[[Pu]]),x=C.props||{},R=x.onKeydown,g=x.onInput,S=x.onFocus,L=x.onBlur,V=x.onMousedown,Y=x.onCompositionstart,T=x.onCompositionend,J=x.style;return C=wn(C,Xn(P(P(P({type:"search"},x),{},{id:r,ref:I,disabled:v,tabindex:b,autocomplete:p||"off",autofocus:Z,class:_e("".concat(o,"-selection-search-input"),(a=C)===null||a===void 0||(l=a.props)===null||l===void 0?void 0:l.class),role:"combobox","aria-expanded":M,"aria-haspopup":"listbox","aria-owns":"".concat(r,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(r,"_list"),"aria-activedescendant":X},w),{},{value:y?m:"",readonly:!y,unselectable:y?null:"on",style:P(P({},J),{},{opacity:y?null:0}),onKeydown:function(K){N(K),R&&R(K)},onMousedown:function(K){G(K),V&&V(K)},onInput:function(K){d(K),g&&g(K)},onCompositionstart:function(K){s(K),Y&&Y(K)},onCompositionend:function(K){h(K),T&&T(K)},onPaste:u,onFocus:function(){clearTimeout(t),S&&S(arguments.length<=0?void 0:arguments[0]),c&&c(arguments.length<=0?void 0:arguments[0]),i==null||i.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var K=arguments.length,H=new Array(K),k=0;k1&&arguments[1]!==void 0?arguments[1]:!1,t;e===!1?t={aria:!0,data:!0,attr:!0}:e===!0?t={aria:!0}:t=P({},e);var i={};return Object.keys(n).forEach(function(l){(t.aria&&(l==="role"||sY(l,kA))||t.data&&sY(l,FA)||t.attr&&(oY.includes(l)||oY.includes(l.toLowerCase())))&&(i[l]=n[l])}),i}var dx=Symbol("OverflowContextProviderKey"),D2=He({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(dx,de(function(){return e.value})),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}}),JA=function(){return un(dx,de(function(){return null}))},DA=["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"],Kc=void 0;const Sb=He({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:We.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:We.any,invalidate:Boolean},setup:function(e,t){var i=t.slots,l=t.expose,a=de(function(){return e.responsive&&!e.display}),o=Ne();l({itemNodeRef:o});function r(f){e.registerSize(e.itemKey,f)}return la(function(){r(null)}),function(){var f,v=e.prefixCls,b=e.invalidate,Z=e.item,p=e.renderItem,y=e.responsive;e.registerSize,e.itemKey,e.display;var X=e.order,m=e.component,N=m===void 0?"div":m,G=jt(e,DA),d=(f=i.default)===null||f===void 0?void 0:f.call(i),u=p&&Z!==Kc?p(Z):d,s;b||(s={opacity:a.value?0:1,height:a.value?0:Kc,overflowY:a.value?"hidden":Kc,order:y?X:Kc,pointerEvents:a.value?"none":Kc,position:a.value?"absolute":Kc});var h={};return a.value&&(h["aria-hidden"]=!0),D(rr,{disabled:!y,onResize:function(W){var M=W.offsetWidth;r(M)}},{default:function(){return D(N,P(P(P({class:_e(!b&&v),style:s},h),G),{},{ref:o}),{default:function(){return[u]}})}})}}});var OA=["component"],jA=["className"],UA=["class"];const EA=He({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:We.any,title:We.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function}},setup:function(e,t){var i=t.slots,l=t.attrs,a=JA();return function(){if(!a.value){var o,r=e.component,f=r===void 0?"div":r,v=jt(e,OA);return D(f,P(P({},v),l),{default:function(){return[(o=i.default)===null||o===void 0?void 0:o.call(i)]}})}var b=a.value,Z=b.className,p=jt(b,jA),y=l.class,X=jt(l,UA);return D(D2,{value:null},{default:function(){return[D(Sb,P(P(P({class:_e(Z,y)},p),X),e),i)]}})}}});var KA=["class","style"],hx="responsive",fx="invalidate";function HA(n){return"+ ".concat(n.length," ...")}var PA=function(){return{id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:We.any,component:String,itemComponent:We.any,onVisibleChange:Function,ssr:String,onMousedown:Function}},j0=He({name:"Overflow",inheritAttrs:!1,props:PA(),emits:["visibleChange"],setup:function(e,t){var i=t.attrs,l=t.emit,a=t.slots,o=de(function(){return e.ssr==="full"}),r=Ne(null),f=de(function(){return r.value||0}),v=Ne(new Map),b=Ne(0),Z=Ne(0),p=Ne(0),y=Ne(null),X=Ne(null),m=de(function(){return X.value===null&&o.value?Number.MAX_SAFE_INTEGER:X.value||0}),N=Ne(!1),G=de(function(){return"".concat(e.prefixCls,"-item")}),d=de(function(){return Math.max(b.value,Z.value)}),u=de(function(){return!!(e.data.length&&e.maxCount===hx)}),s=de(function(){return e.maxCount===fx}),h=de(function(){return u.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount}),c=de(function(){var L=e.data;return u.value?r.value===null&&o.value?L=e.data:L=e.data.slice(0,Math.min(e.data.length,f.value/e.itemWidth)):typeof e.maxCount=="number"&&(L=e.data.slice(0,e.maxCount)),L}),W=de(function(){return u.value?e.data.slice(m.value+1):e.data.slice(c.value.length)}),M=function(V,Y){var T;return typeof e.itemKey=="function"?e.itemKey(V):(T=e.itemKey&&(V==null?void 0:V[e.itemKey]))!==null&&T!==void 0?T:Y},I=de(function(){return e.renderItem||function(L){return L}}),w=function(V,Y){X.value=V,Y||(N.value=Vf.value){w(T-1),y.value=L-J-p.value+Z.value;break}}e.suffix&&S(0)+p.value>f.value&&(y.value=null)}}),function(){var L=N.value&&!!W.value.length,V=e.itemComponent,Y=e.renderRawItem,T=e.renderRawRest,J=e.renderRest,U=e.prefixCls,K=U===void 0?"rc-overflow":U,H=e.suffix,k=e.component,F=k===void 0?"div":k,O=e.id,Q=e.onMousedown,oe=i.class,se=i.style,he=jt(i,KA),pe={};y.value!==null&&u.value&&(pe={position:"absolute",left:"".concat(y.value,"px"),top:0});var re={prefixCls:G.value,responsive:u.value,component:V,invalidate:s.value},_=Y?function(ee,te){var be=M(ee,te);return D(D2,{key:be,value:P(P({},re),{},{order:te,item:ee,itemKey:be,registerSize:x,display:te<=m.value})},{default:function(){return[Y(ee,te)]}})}:function(ee,te){var be=M(ee,te);return D(Sb,P(P({},re),{},{order:te,key:be,item:ee,renderItem:I.value,itemKey:be,registerSize:x,display:te<=m.value}),null)},E=function(){return null},$={order:L?m.value:Number.MAX_SAFE_INTEGER,className:"".concat(G.value," ").concat(G.value,"-rest"),registerSize:R,display:L};if(T)T&&(E=function(){return D(D2,{value:P(P({},re),$)},{default:function(){return[T(W.value)]}})});else{var ae=J||HA;E=function(){return D(Sb,P(P({},re),$),{default:function(){return typeof ae=="function"?ae(W.value):ae}})}}var le=function(){var te;return D(F,P({id:O,class:_e(!s.value&&K,oe),style:se,onMousedown:Q},he),{default:function(){return[c.value.map(_),h.value?E():null,H&&D(Sb,P(P({},re),{},{order:m.value,class:"".concat(G.value,"-suffix"),registerSize:g,display:!0,style:pe}),{default:function(){return H}}),(te=a.default)===null||te===void 0?void 0:te.call(a)]}})};return D(rr,{disabled:!u.value,onResize:C},{default:le})}}});j0.Item=EA;j0.RESPONSIVE=hx;j0.INVALIDATE=fx;const Zu=j0;var bx=Symbol("TreeSelectLegacyContextPropsKey");function QA(n){return hn(bx,n)}function U0(){return un(bx,{})}var BA={id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),removeIcon:We.any,choiceTransitionName:String,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any.def(function(){return function(n){return"+ ".concat(n.length," ...")}}),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},cY=function(e){e.preventDefault(),e.stopPropagation()},AA=He({name:"MultipleSelectSelector",inheritAttrs:!1,props:BA,setup:function(e){var t=Ne(),i=Ne(0),l=Ne(!1),a=U0(),o=de(function(){return"".concat(e.prefixCls,"-selection")}),r=de(function(){return e.open||e.mode==="tags"?e.searchValue:""}),f=de(function(){return e.mode==="tags"||e.showSearch&&(e.open||l.value)});Kt(function(){rt(r,function(){i.value=t.value.scrollWidth},{flush:"post",immediate:!0})});function v(y,X,m,N,G){return D("span",{class:_e("".concat(o.value,"-item"),ce({},"".concat(o.value,"-item-disabled"),m)),title:typeof y=="string"||typeof y=="number"?y.toString():void 0},[D("span",{class:"".concat(o.value,"-item-content")},[X]),N&&D(Lm,{class:"".concat(o.value,"-item-remove"),onMousedown:cY,onClick:G,customizeIcon:e.removeIcon},{default:function(){return[Fl("×")]}})])}function b(y,X,m,N,G,d){var u=function(W){cY(W),e.onToggleOpen(!open)},s=d;if(a.keyEntities){var h;s=((h=a.keyEntities[y])===null||h===void 0?void 0:h.node)||{}}return D("span",{key:y,onMousedown:u},[e.tagRender({label:X,value:y,disabled:m,closable:N,onClose:G,option:s})])}function Z(y){var X=y.disabled,m=y.label,N=y.value,G=y.option,d=!e.disabled&&!X,u=m;if(typeof e.maxTagTextLength=="number"&&(typeof m=="string"||typeof m=="number")){var s=String(u);s.length>e.maxTagTextLength&&(u="".concat(s.slice(0,e.maxTagTextLength),"..."))}var h=function(W){var M;W&&W.stopPropagation(),(M=e.onRemove)===null||M===void 0||M.call(e,y)};return typeof e.tagRender=="function"?b(N,u,X,d,h,G):v(m,u,X,d,h)}function p(y){var X=e.maxTagPlaceholder,m=X===void 0?function(G){return"+ ".concat(G.length," ...")}:X,N=typeof m=="function"?m(y):m;return v(N,N,!1)}return function(){var y=e.id,X=e.prefixCls,m=e.values,N=e.open,G=e.inputRef,d=e.placeholder,u=e.disabled,s=e.autofocus,h=e.autocomplete,c=e.activeDescendantId,W=e.tabindex,M=e.onInputChange,I=e.onInputPaste,w=e.onInputKeyDown,C=e.onInputMouseDown,x=e.onInputCompositionStart,R=e.onInputCompositionEnd,g=D("div",{class:"".concat(o.value,"-search"),style:{width:i.value+"px"},key:"input"},[D(ux,{inputRef:G,open:N,prefixCls:X,id:y,inputElement:null,disabled:u,autofocus:s,autocomplete:h,editable:f.value,activeDescendantId:c,value:r.value,onKeydown:w,onMousedown:C,onChange:M,onPaste:I,onCompositionstart:x,onCompositionend:R,tabindex:W,attrs:Ys(e,!0),onFocus:function(){return l.value=!0},onBlur:function(){return l.value=!1}},null),D("span",{ref:t,class:"".concat(o.value,"-search-mirror"),"aria-hidden":!0},[r.value,Fl(" ")])]),S=D(Zu,{prefixCls:"".concat(o.value,"-overflow"),data:m,renderItem:Z,renderRest:p,suffix:g,itemKey:"key",maxCount:e.maxTagCount,key:"overflow"},null);return D(ln,null,[S,!m.length&&!r.value&&D("span",{class:"".concat(o.value,"-placeholder")},[d])])}}});const _A=AA;var $A={inputElement:We.any,id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},IG=He({name:"SingleSelector",setup:function(e){var t=Ne(!1),i=de(function(){return e.mode==="combobox"}),l=de(function(){return i.value||e.showSearch}),a=de(function(){var b=e.searchValue||"";return i.value&&e.activeValue&&!t.value&&(b=e.activeValue),b}),o=U0();rt([i,function(){return e.activeValue}],function(){i.value&&(t.value=!1)},{immediate:!0});var r=de(function(){return e.mode!=="combobox"&&!e.open&&!e.showSearch?!1:!!a.value}),f=de(function(){var b=e.values[0];return b&&(typeof b.label=="string"||typeof b.label=="number")?b.label.toString():void 0}),v=function(){if(e.values[0])return null;var Z=r.value?{visibility:"hidden"}:void 0;return D("span",{class:"".concat(e.prefixCls,"-selection-placeholder"),style:Z},[e.placeholder])};return function(){var b,Z=e.inputElement,p=e.prefixCls,y=e.id,X=e.values,m=e.inputRef,N=e.disabled,G=e.autofocus,d=e.autocomplete,u=e.activeDescendantId,s=e.open,h=e.tabindex,c=e.optionLabelRender,W=e.onInputKeyDown,M=e.onInputMouseDown,I=e.onInputChange,w=e.onInputPaste,C=e.onInputCompositionStart,x=e.onInputCompositionEnd,R=X[0],g=null;if(R&&o.customSlots){var S,L,V,Y=(S=R.key)!==null&&S!==void 0?S:R.value,T=((L=o.keyEntities[Y])===null||L===void 0?void 0:L.node)||{};g=o.customSlots[(V=T.slots)===null||V===void 0?void 0:V.title]||o.customSlots.title||R.label,typeof g=="function"&&(g=g(T))}else g=c&&R?c(R.option):R==null?void 0:R.label;return D(ln,null,[D("span",{class:"".concat(p,"-selection-search")},[D(ux,{inputRef:m,prefixCls:p,id:y,open:s,inputElement:Z,disabled:N,autofocus:G,autocomplete:d,editable:l.value,activeDescendantId:u,value:a.value,onKeydown:W,onMousedown:M,onChange:function(U){t.value=!0,I(U)},onPaste:w,onCompositionstart:C,onCompositionend:x,tabindex:h,attrs:Ys(e,!0)},null)]),!i.value&&R&&!r.value&&D("span",{class:"".concat(p,"-selection-item"),title:f.value},[D(ln,{key:(b=R.key)!==null&&b!==void 0?b:R.value},[g])]),v()])}}});IG.props=$A;IG.inheritAttrs=!1;const qA=IG;function e_(n){return![bt.ESC,bt.SHIFT,bt.BACKSPACE,bt.TAB,bt.WIN_KEY,bt.ALT,bt.META,bt.WIN_KEY_RIGHT,bt.CTRL,bt.SEMICOLON,bt.EQUALS,bt.CAPS_LOCK,bt.CONTEXT_MENU,bt.F1,bt.F2,bt.F3,bt.F4,bt.F5,bt.F6,bt.F7,bt.F8,bt.F9,bt.F10,bt.F11,bt.F12].includes(n)}function mx(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,e=null,t;fn(function(){clearTimeout(t)});function i(l){(l||e===null)&&(e=l),clearTimeout(t),t=setTimeout(function(){e=null},n)}return[function(){return e},i]}function Gh(){var n=function e(t){e.current=t};return n}var t_=He({name:"Selector",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:We.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:We.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),disabled:{type:Boolean,default:void 0},placeholder:We.any,removeIcon:We.any,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup:function(e,t){var i=t.expose,l=Gh(),a=!1,o=mx(0),r=ft(o,2),f=r[0],v=r[1],b=function(h){var c=h.which;(c===bt.UP||c===bt.DOWN)&&h.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(h),c===bt.ENTER&&e.mode==="tags"&&!a&&!e.open&&e.onSearchSubmit(h.target.value),e_(c)&&e.onToggleOpen(!0)},Z=function(){v(!0)},p=null,y=function(h){e.onSearch(h,!0,a)!==!1&&e.onToggleOpen(!0)},X=function(){a=!0},m=function(h){a=!1,e.mode!=="combobox"&&y(h.target.value)},N=function(h){var c=h.target.value;if(e.tokenWithEnter&&p&&/[\r\n]/.test(p)){var W=p.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");c=c.replace(W,p)}p=null,y(c)},G=function(h){var c=h.clipboardData,W=c.getData("text");p=W},d=function(h){var c=h.target;if(c!==l.current){var W=document.body.style.msTouchAction!==void 0;W?setTimeout(function(){l.current.focus()}):l.current.focus()}},u=function(h){var c=f();h.target!==l.current&&!c&&h.preventDefault(),(e.mode!=="combobox"&&(!e.showSearch||!c)||!e.open)&&(e.open&&e.onSearch("",!0,!1),e.onToggleOpen())};return i({focus:function(){l.current.focus()},blur:function(){l.current.blur()}}),function(){var s=e.prefixCls,h=e.domRef,c=e.mode,W={inputRef:l,onInputKeyDown:b,onInputMouseDown:Z,onInputChange:N,onInputPaste:G,onInputCompositionStart:X,onInputCompositionEnd:m},M=c==="multiple"||c==="tags"?D(_A,P(P({},e),W),null):D(qA,P(P({},e),W),null);return D("div",{ref:h,class:"".concat(s,"-selector"),onClick:d,onMousedown:u},[M])}}});const n_=t_;function i_(n,e,t){function i(l){var a,o,r,f=l.target;f.shadowRoot&&l.composed&&(f=l.composedPath()[0]||f);var v=[(a=n[0])===null||a===void 0?void 0:a.value,(o=n[1])===null||o===void 0||(r=o.value)===null||r===void 0?void 0:r.getPopupElement()];e.value&&v.every(function(b){return b&&!b.contains(f)&&b!==f})&&t(!1)}Kt(function(){window.addEventListener("mousedown",i)}),fn(function(){window.removeEventListener("mousedown",i)})}function l_(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,e=Ne(!1),t,i=function(){clearTimeout(t)};Kt(function(){i()});var l=function(o,r){i(),t=setTimeout(function(){e.value=o,r&&r()},n)};return[e,l,i]}var px=Symbol("BaseSelectContextKey");function a_(n){return hn(px,n)}function zh(){return un(px,{})}const YG=function(){if(typeof navigator>"u"||typeof window>"u")return!1;var n=navigator.userAgent||navigator.vendor||window.opera;return!!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(n==null?void 0:n.substr(0,4)))};function Rm(n){if(!$i(n))return zn(n);var e=new Proxy({},{get:function(i,l,a){return Reflect.get(n.value,l,a)},set:function(i,l,a){return n.value[l]=a,!0},deleteProperty:function(i,l){return Reflect.deleteProperty(n.value,l)},has:function(i,l){return Reflect.has(n.value,l)},ownKeys:function(){return Object.keys(n.value)},getOwnPropertyDescriptor:function(){return{enumerable:!0,configurable:!0}}});return zn(e)}var r_=["prefixCls","id","open","defaultOpen","mode","showSearch","searchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","disabled","loading","getInputElement","getPopupContainer","placement","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","showAction","direction","tokenSeparators","tagRender","optionLabelRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyup","onKeydown","onMousedown","onClear","omitDomProps","getRawInputElement","displayValues","onDisplayValuesChange","emptyOptions","activeDescendantId","activeValue","OptionList"],o_=["value","onChange","removeIcon","placeholder","autofocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabindex","OptionList","notFoundContent"],s_=function(){return{prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:We.any,emptyOptions:Boolean}},E0=function(){return{showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:We.any,placeholder:We.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:We.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:We.any,clearIcon:We.any,removeIcon:We.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}},c_=function(){return P(P({},s_()),E0())};function yx(n){return n==="tags"||n==="multiple"}const wG=He({compatConfig:{MODE:3},name:"BaseSelect",inheritAttrs:!1,props:pn(c_(),{showAction:[],notFoundContent:"Not Found"}),setup:function(e,t){var i=t.attrs,l=t.expose,a=t.slots,o=de(function(){return yx(e.mode)}),r=de(function(){return e.showSearch!==void 0?e.showSearch:o.value||e.mode==="combobox"}),f=Ne(!1);Kt(function(){f.value=YG()});var v=U0(),b=Ne(null),Z=Gh(),p=Ne(null),y=Ne(null),X=Ne(null),m=l_(),N=ft(m,3),G=N[0],d=N[1],u=N[2],s=function(){var _;(_=y.value)===null||_===void 0||_.focus()},h=function(){var _;(_=y.value)===null||_===void 0||_.blur()};l({focus:s,blur:h,scrollTo:function(_){var E;return(E=X.value)===null||E===void 0?void 0:E.scrollTo(_)}});var c=de(function(){var re;if(e.mode!=="combobox")return e.searchValue;var _=(re=e.displayValues[0])===null||re===void 0?void 0:re.value;return typeof _=="string"||typeof _=="number"?String(_):""}),W=e.open!==void 0?e.open:e.defaultOpen,M=Ne(W),I=Ne(W),w=function(_){M.value=e.open!==void 0?e.open:_,I.value=M.value};rt(function(){return e.open},function(){w(e.open)});var C=de(function(){return!e.notFoundContent&&e.emptyOptions});qt(function(){I.value=M.value,(e.disabled||C.value&&I.value&&e.mode==="combobox")&&(I.value=!1)});var x=de(function(){return C.value?!1:I.value}),R=function(_){var E=_!==void 0?_:!I.value;M.value!==E&&!e.disabled&&(w(E),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(E))},g=de(function(){return(e.tokenSeparators||[]).some(function(re){return[` + onLoadstart onPause onPlay onPlaying onProgress onRatechange onSeeked onSeeking onStalled onSuspend onTimeupdate onVolumechange onWaiting onLoad onError`,cY="".concat(JA," ").concat(DA).split(/[\s\n]+/),OA="aria-",jA="data-";function uY(n,e){return n.indexOf(e)===0}function Ys(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t;e===!1?t={aria:!0,data:!0,attr:!0}:e===!0?t={aria:!0}:t=P({},e);var i={};return Object.keys(n).forEach(function(a){(t.aria&&(a==="role"||uY(a,OA))||t.data&&uY(a,jA)||t.attr&&(cY.includes(a)||cY.includes(a.toLowerCase())))&&(i[a]=n[a])}),i}var fx=Symbol("OverflowContextProviderKey"),j2=He({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(fx,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),UA=function(){return un(fx,de(function(){return null}))},EA=["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"],Kc=void 0;const zb=He({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:We.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:We.any,invalidate:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=de(function(){return e.responsive&&!e.display}),o=Ne();a({itemNodeRef:o});function r(f){e.registerSize(e.itemKey,f)}return la(function(){r(null)}),function(){var f,v=e.prefixCls,b=e.invalidate,Z=e.item,p=e.renderItem,y=e.responsive;e.registerSize,e.itemKey,e.display;var X=e.order,m=e.component,N=m===void 0?"div":m,G=jt(e,EA),d=(f=i.default)===null||f===void 0?void 0:f.call(i),u=p&&Z!==Kc?p(Z):d,s;b||(s={opacity:l.value?0:1,height:l.value?0:Kc,overflowY:l.value?"hidden":Kc,order:y?X:Kc,pointerEvents:l.value?"none":Kc,position:l.value?"absolute":Kc});var h={};return l.value&&(h["aria-hidden"]=!0),D(rr,{disabled:!y,onResize:function(W){var M=W.offsetWidth;r(M)}},{default:function(){return D(N,P(P(P({class:_e(!b&&v),style:s},h),G),{},{ref:o}),{default:function(){return[u]}})}})}}});var KA=["component"],HA=["className"],PA=["class"];const QA=He({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:We.any,title:We.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function}},setup:function(e,t){var i=t.slots,a=t.attrs,l=UA();return function(){if(!l.value){var o,r=e.component,f=r===void 0?"div":r,v=jt(e,KA);return D(f,P(P({},v),a),{default:function(){return[(o=i.default)===null||o===void 0?void 0:o.call(i)]}})}var b=l.value,Z=b.className,p=jt(b,HA),y=a.class,X=jt(a,PA);return D(j2,{value:null},{default:function(){return[D(zb,P(P(P({class:_e(Z,y)},p),X),e),i)]}})}}});var BA=["class","style"],bx="responsive",mx="invalidate";function AA(n){return"+ ".concat(n.length," ...")}var _A=function(){return{id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:We.any,component:String,itemComponent:We.any,onVisibleChange:Function,ssr:String,onMousedown:Function}},j0=He({name:"Overflow",inheritAttrs:!1,props:_A(),emits:["visibleChange"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=de(function(){return e.ssr==="full"}),r=Ne(null),f=de(function(){return r.value||0}),v=Ne(new Map),b=Ne(0),Z=Ne(0),p=Ne(0),y=Ne(null),X=Ne(null),m=de(function(){return X.value===null&&o.value?Number.MAX_SAFE_INTEGER:X.value||0}),N=Ne(!1),G=de(function(){return"".concat(e.prefixCls,"-item")}),d=de(function(){return Math.max(b.value,Z.value)}),u=de(function(){return!!(e.data.length&&e.maxCount===bx)}),s=de(function(){return e.maxCount===mx}),h=de(function(){return u.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount}),c=de(function(){var L=e.data;return u.value?r.value===null&&o.value?L=e.data:L=e.data.slice(0,Math.min(e.data.length,f.value/e.itemWidth)):typeof e.maxCount=="number"&&(L=e.data.slice(0,e.maxCount)),L}),W=de(function(){return u.value?e.data.slice(m.value+1):e.data.slice(c.value.length)}),M=function(V,Y){var T;return typeof e.itemKey=="function"?e.itemKey(V):(T=e.itemKey&&(V==null?void 0:V[e.itemKey]))!==null&&T!==void 0?T:Y},I=de(function(){return e.renderItem||function(L){return L}}),w=function(V,Y){X.value=V,Y||(N.value=Vf.value){w(T-1),y.value=L-J-p.value+Z.value;break}}e.suffix&&S(0)+p.value>f.value&&(y.value=null)}}),function(){var L=N.value&&!!W.value.length,V=e.itemComponent,Y=e.renderRawItem,T=e.renderRawRest,J=e.renderRest,U=e.prefixCls,K=U===void 0?"rc-overflow":U,H=e.suffix,k=e.component,F=k===void 0?"div":k,O=e.id,Q=e.onMousedown,oe=i.class,se=i.style,he=jt(i,BA),pe={};y.value!==null&&u.value&&(pe={position:"absolute",left:"".concat(y.value,"px"),top:0});var re={prefixCls:G.value,responsive:u.value,component:V,invalidate:s.value},_=Y?function(ee,te){var be=M(ee,te);return D(j2,{key:be,value:P(P({},re),{},{order:te,item:ee,itemKey:be,registerSize:x,display:te<=m.value})},{default:function(){return[Y(ee,te)]}})}:function(ee,te){var be=M(ee,te);return D(zb,P(P({},re),{},{order:te,key:be,item:ee,renderItem:I.value,itemKey:be,registerSize:x,display:te<=m.value}),null)},E=function(){return null},$={order:L?m.value:Number.MAX_SAFE_INTEGER,className:"".concat(G.value," ").concat(G.value,"-rest"),registerSize:R,display:L};if(T)T&&(E=function(){return D(j2,{value:P(P({},re),$)},{default:function(){return[T(W.value)]}})});else{var ae=J||AA;E=function(){return D(zb,P(P({},re),$),{default:function(){return typeof ae=="function"?ae(W.value):ae}})}}var le=function(){var te;return D(F,P({id:O,class:_e(!s.value&&K,oe),style:se,onMousedown:Q},he),{default:function(){return[c.value.map(_),h.value?E():null,H&&D(zb,P(P({},re),{},{order:m.value,class:"".concat(G.value,"-suffix"),registerSize:g,display:!0,style:pe}),{default:function(){return H}}),(te=l.default)===null||te===void 0?void 0:te.call(l)]}})};return D(rr,{disabled:!u.value,onResize:C},{default:le})}}});j0.Item=QA;j0.RESPONSIVE=bx;j0.INVALIDATE=mx;const Zu=j0;var px=Symbol("TreeSelectLegacyContextPropsKey");function $A(n){return hn(px,n)}function U0(){return un(px,{})}var qA={id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),removeIcon:We.any,choiceTransitionName:String,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any.def(function(){return function(n){return"+ ".concat(n.length," ...")}}),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},dY=function(e){e.preventDefault(),e.stopPropagation()},e_=He({name:"MultipleSelectSelector",inheritAttrs:!1,props:qA,setup:function(e){var t=Ne(),i=Ne(0),a=Ne(!1),l=U0(),o=de(function(){return"".concat(e.prefixCls,"-selection")}),r=de(function(){return e.open||e.mode==="tags"?e.searchValue:""}),f=de(function(){return e.mode==="tags"||e.showSearch&&(e.open||a.value)});Kt(function(){rt(r,function(){i.value=t.value.scrollWidth},{flush:"post",immediate:!0})});function v(y,X,m,N,G){return D("span",{class:_e("".concat(o.value,"-item"),ce({},"".concat(o.value,"-item-disabled"),m)),title:typeof y=="string"||typeof y=="number"?y.toString():void 0},[D("span",{class:"".concat(o.value,"-item-content")},[X]),N&&D(Rm,{class:"".concat(o.value,"-item-remove"),onMousedown:dY,onClick:G,customizeIcon:e.removeIcon},{default:function(){return[Fl("×")]}})])}function b(y,X,m,N,G,d){var u=function(W){dY(W),e.onToggleOpen(!open)},s=d;if(l.keyEntities){var h;s=((h=l.keyEntities[y])===null||h===void 0?void 0:h.node)||{}}return D("span",{key:y,onMousedown:u},[e.tagRender({label:X,value:y,disabled:m,closable:N,onClose:G,option:s})])}function Z(y){var X=y.disabled,m=y.label,N=y.value,G=y.option,d=!e.disabled&&!X,u=m;if(typeof e.maxTagTextLength=="number"&&(typeof m=="string"||typeof m=="number")){var s=String(u);s.length>e.maxTagTextLength&&(u="".concat(s.slice(0,e.maxTagTextLength),"..."))}var h=function(W){var M;W&&W.stopPropagation(),(M=e.onRemove)===null||M===void 0||M.call(e,y)};return typeof e.tagRender=="function"?b(N,u,X,d,h,G):v(m,u,X,d,h)}function p(y){var X=e.maxTagPlaceholder,m=X===void 0?function(G){return"+ ".concat(G.length," ...")}:X,N=typeof m=="function"?m(y):m;return v(N,N,!1)}return function(){var y=e.id,X=e.prefixCls,m=e.values,N=e.open,G=e.inputRef,d=e.placeholder,u=e.disabled,s=e.autofocus,h=e.autocomplete,c=e.activeDescendantId,W=e.tabindex,M=e.onInputChange,I=e.onInputPaste,w=e.onInputKeyDown,C=e.onInputMouseDown,x=e.onInputCompositionStart,R=e.onInputCompositionEnd,g=D("div",{class:"".concat(o.value,"-search"),style:{width:i.value+"px"},key:"input"},[D(hx,{inputRef:G,open:N,prefixCls:X,id:y,inputElement:null,disabled:u,autofocus:s,autocomplete:h,editable:f.value,activeDescendantId:c,value:r.value,onKeydown:w,onMousedown:C,onChange:M,onPaste:I,onCompositionstart:x,onCompositionend:R,tabindex:W,attrs:Ys(e,!0),onFocus:function(){return a.value=!0},onBlur:function(){return a.value=!1}},null),D("span",{ref:t,class:"".concat(o.value,"-search-mirror"),"aria-hidden":!0},[r.value,Fl(" ")])]),S=D(Zu,{prefixCls:"".concat(o.value,"-overflow"),data:m,renderItem:Z,renderRest:p,suffix:g,itemKey:"key",maxCount:e.maxTagCount,key:"overflow"},null);return D(ln,null,[S,!m.length&&!r.value&&D("span",{class:"".concat(o.value,"-placeholder")},[d])])}}});const t_=e_;var n_={inputElement:We.any,id:String,prefixCls:String,values:We.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:We.any,placeholder:We.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},wG=He({name:"SingleSelector",setup:function(e){var t=Ne(!1),i=de(function(){return e.mode==="combobox"}),a=de(function(){return i.value||e.showSearch}),l=de(function(){var b=e.searchValue||"";return i.value&&e.activeValue&&!t.value&&(b=e.activeValue),b}),o=U0();rt([i,function(){return e.activeValue}],function(){i.value&&(t.value=!1)},{immediate:!0});var r=de(function(){return e.mode!=="combobox"&&!e.open&&!e.showSearch?!1:!!l.value}),f=de(function(){var b=e.values[0];return b&&(typeof b.label=="string"||typeof b.label=="number")?b.label.toString():void 0}),v=function(){if(e.values[0])return null;var Z=r.value?{visibility:"hidden"}:void 0;return D("span",{class:"".concat(e.prefixCls,"-selection-placeholder"),style:Z},[e.placeholder])};return function(){var b,Z=e.inputElement,p=e.prefixCls,y=e.id,X=e.values,m=e.inputRef,N=e.disabled,G=e.autofocus,d=e.autocomplete,u=e.activeDescendantId,s=e.open,h=e.tabindex,c=e.optionLabelRender,W=e.onInputKeyDown,M=e.onInputMouseDown,I=e.onInputChange,w=e.onInputPaste,C=e.onInputCompositionStart,x=e.onInputCompositionEnd,R=X[0],g=null;if(R&&o.customSlots){var S,L,V,Y=(S=R.key)!==null&&S!==void 0?S:R.value,T=((L=o.keyEntities[Y])===null||L===void 0?void 0:L.node)||{};g=o.customSlots[(V=T.slots)===null||V===void 0?void 0:V.title]||o.customSlots.title||R.label,typeof g=="function"&&(g=g(T))}else g=c&&R?c(R.option):R==null?void 0:R.label;return D(ln,null,[D("span",{class:"".concat(p,"-selection-search")},[D(hx,{inputRef:m,prefixCls:p,id:y,open:s,inputElement:Z,disabled:N,autofocus:G,autocomplete:d,editable:a.value,activeDescendantId:u,value:l.value,onKeydown:W,onMousedown:M,onChange:function(U){t.value=!0,I(U)},onPaste:w,onCompositionstart:C,onCompositionend:x,tabindex:h,attrs:Ys(e,!0)},null)]),!i.value&&R&&!r.value&&D("span",{class:"".concat(p,"-selection-item"),title:f.value},[D(ln,{key:(b=R.key)!==null&&b!==void 0?b:R.value},[g])]),v()])}}});wG.props=n_;wG.inheritAttrs=!1;const i_=wG;function l_(n){return![bt.ESC,bt.SHIFT,bt.BACKSPACE,bt.TAB,bt.WIN_KEY,bt.ALT,bt.META,bt.WIN_KEY_RIGHT,bt.CTRL,bt.SEMICOLON,bt.EQUALS,bt.CAPS_LOCK,bt.CONTEXT_MENU,bt.F1,bt.F2,bt.F3,bt.F4,bt.F5,bt.F6,bt.F7,bt.F8,bt.F9,bt.F10,bt.F11,bt.F12].includes(n)}function yx(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,e=null,t;fn(function(){clearTimeout(t)});function i(a){(a||e===null)&&(e=a),clearTimeout(t),t=setTimeout(function(){e=null},n)}return[function(){return e},i]}function Gh(){var n=function e(t){e.current=t};return n}var a_=He({name:"Selector",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:We.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:We.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:We.oneOfType([We.number,We.string]),disabled:{type:Boolean,default:void 0},placeholder:We.any,removeIcon:We.any,maxTagCount:We.oneOfType([We.number,We.string]),maxTagTextLength:Number,maxTagPlaceholder:We.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup:function(e,t){var i=t.expose,a=Gh(),l=!1,o=yx(0),r=ft(o,2),f=r[0],v=r[1],b=function(h){var c=h.which;(c===bt.UP||c===bt.DOWN)&&h.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(h),c===bt.ENTER&&e.mode==="tags"&&!l&&!e.open&&e.onSearchSubmit(h.target.value),l_(c)&&e.onToggleOpen(!0)},Z=function(){v(!0)},p=null,y=function(h){e.onSearch(h,!0,l)!==!1&&e.onToggleOpen(!0)},X=function(){l=!0},m=function(h){l=!1,e.mode!=="combobox"&&y(h.target.value)},N=function(h){var c=h.target.value;if(e.tokenWithEnter&&p&&/[\r\n]/.test(p)){var W=p.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");c=c.replace(W,p)}p=null,y(c)},G=function(h){var c=h.clipboardData,W=c.getData("text");p=W},d=function(h){var c=h.target;if(c!==a.current){var W=document.body.style.msTouchAction!==void 0;W?setTimeout(function(){a.current.focus()}):a.current.focus()}},u=function(h){var c=f();h.target!==a.current&&!c&&h.preventDefault(),(e.mode!=="combobox"&&(!e.showSearch||!c)||!e.open)&&(e.open&&e.onSearch("",!0,!1),e.onToggleOpen())};return i({focus:function(){a.current.focus()},blur:function(){a.current.blur()}}),function(){var s=e.prefixCls,h=e.domRef,c=e.mode,W={inputRef:a,onInputKeyDown:b,onInputMouseDown:Z,onInputChange:N,onInputPaste:G,onInputCompositionStart:X,onInputCompositionEnd:m},M=c==="multiple"||c==="tags"?D(t_,P(P({},e),W),null):D(i_,P(P({},e),W),null);return D("div",{ref:h,class:"".concat(s,"-selector"),onClick:d,onMousedown:u},[M])}}});const r_=a_;function o_(n,e,t){function i(a){var l,o,r,f=a.target;f.shadowRoot&&a.composed&&(f=a.composedPath()[0]||f);var v=[(l=n[0])===null||l===void 0?void 0:l.value,(o=n[1])===null||o===void 0||(r=o.value)===null||r===void 0?void 0:r.getPopupElement()];e.value&&v.every(function(b){return b&&!b.contains(f)&&b!==f})&&t(!1)}Kt(function(){window.addEventListener("mousedown",i)}),fn(function(){window.removeEventListener("mousedown",i)})}function s_(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,e=Ne(!1),t,i=function(){clearTimeout(t)};Kt(function(){i()});var a=function(o,r){i(),t=setTimeout(function(){e.value=o,r&&r()},n)};return[e,a,i]}var Zx=Symbol("BaseSelectContextKey");function c_(n){return hn(Zx,n)}function kh(){return un(Zx,{})}const gG=function(){if(typeof navigator>"u"||typeof window>"u")return!1;var n=navigator.userAgent||navigator.vendor||window.opera;return!!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(n)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(n==null?void 0:n.substr(0,4)))};function Tm(n){if(!$i(n))return zn(n);var e=new Proxy({},{get:function(i,a,l){return Reflect.get(n.value,a,l)},set:function(i,a,l){return n.value[a]=l,!0},deleteProperty:function(i,a){return Reflect.deleteProperty(n.value,a)},has:function(i,a){return Reflect.has(n.value,a)},ownKeys:function(){return Object.keys(n.value)},getOwnPropertyDescriptor:function(){return{enumerable:!0,configurable:!0}}});return zn(e)}var u_=["prefixCls","id","open","defaultOpen","mode","showSearch","searchValue","onSearch","allowClear","clearIcon","showArrow","inputIcon","disabled","loading","getInputElement","getPopupContainer","placement","animation","transitionName","dropdownStyle","dropdownClassName","dropdownMatchSelectWidth","dropdownRender","dropdownAlign","showAction","direction","tokenSeparators","tagRender","optionLabelRender","onPopupScroll","onDropdownVisibleChange","onFocus","onBlur","onKeyup","onKeydown","onMousedown","onClear","omitDomProps","getRawInputElement","displayValues","onDisplayValuesChange","emptyOptions","activeDescendantId","activeValue","OptionList"],d_=["value","onChange","removeIcon","placeholder","autofocus","maxTagCount","maxTagTextLength","maxTagPlaceholder","choiceTransitionName","onInputKeyDown","onPopupScroll","tabindex","OptionList","notFoundContent"],h_=function(){return{prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:We.any,emptyOptions:Boolean}},E0=function(){return{showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:We.any,placeholder:We.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:We.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:We.any,clearIcon:We.any,removeIcon:We.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}},f_=function(){return P(P({},h_()),E0())};function vx(n){return n==="tags"||n==="multiple"}const VG=He({compatConfig:{MODE:3},name:"BaseSelect",inheritAttrs:!1,props:pn(f_(),{showAction:[],notFoundContent:"Not Found"}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=de(function(){return vx(e.mode)}),r=de(function(){return e.showSearch!==void 0?e.showSearch:o.value||e.mode==="combobox"}),f=Ne(!1);Kt(function(){f.value=gG()});var v=U0(),b=Ne(null),Z=Gh(),p=Ne(null),y=Ne(null),X=Ne(null),m=s_(),N=ft(m,3),G=N[0],d=N[1],u=N[2],s=function(){var _;(_=y.value)===null||_===void 0||_.focus()},h=function(){var _;(_=y.value)===null||_===void 0||_.blur()};a({focus:s,blur:h,scrollTo:function(_){var E;return(E=X.value)===null||E===void 0?void 0:E.scrollTo(_)}});var c=de(function(){var re;if(e.mode!=="combobox")return e.searchValue;var _=(re=e.displayValues[0])===null||re===void 0?void 0:re.value;return typeof _=="string"||typeof _=="number"?String(_):""}),W=e.open!==void 0?e.open:e.defaultOpen,M=Ne(W),I=Ne(W),w=function(_){M.value=e.open!==void 0?e.open:_,I.value=M.value};rt(function(){return e.open},function(){w(e.open)});var C=de(function(){return!e.notFoundContent&&e.emptyOptions});qt(function(){I.value=M.value,(e.disabled||C.value&&I.value&&e.mode==="combobox")&&(I.value=!1)});var x=de(function(){return C.value?!1:I.value}),R=function(_){var E=_!==void 0?_:!I.value;M.value!==E&&!e.disabled&&(w(E),e.onDropdownVisibleChange&&e.onDropdownVisibleChange(E))},g=de(function(){return(e.tokenSeparators||[]).some(function(re){return[` `,`\r -`].includes(re)})}),S=function(_,E,$){var ae,le=!0,ee=_;(ae=e.onActiveValueChange)===null||ae===void 0||ae.call(e,null);var te=$?null:QP(_,e.tokenSeparators);if(e.mode!=="combobox"&&te){var be;ee="",(be=e.onSearchSplit)===null||be===void 0||be.call(e,te),R(!1),le=!1}return e.onSearch&&c.value!==ee&&e.onSearch(ee,{source:E?"typing":"effect"}),le},L=function(_){var E;!_||!_.trim()||(E=e.onSearch)===null||E===void 0||E.call(e,_,{source:"submit"})};rt(I,function(){!I.value&&!o.value&&e.mode!=="combobox"&&S("",!1,!1)},{immediate:!0,flush:"post"}),rt(function(){return e.disabled},function(){M.value&&e.disabled&&w(!1)},{immediate:!0});var V=mx(),Y=ft(V,2),T=Y[0],J=Y[1],U=function(_){var E,$=T(),ae=_.which;if(ae===bt.ENTER&&(e.mode!=="combobox"&&_.preventDefault(),I.value||R(!0)),J(!!c.value),ae===bt.BACKSPACE&&!$&&o.value&&!c.value&&e.displayValues.length){for(var le=yt(e.displayValues),ee=null,te=le.length-1;te>=0;te-=1){var be=le[te];if(!be.disabled){le.splice(te,1),ee=be;break}}ee&&e.onDisplayValuesChange(le,{type:"remove",values:[ee]})}for(var ne=arguments.length,B=new Array(ne>1?ne-1:0),q=1;q1?E-1:0),ae=1;ae1?te-1:0),ne=1;net}},render:function(){var e=this.state,t=e.dragging,i=e.visible,l=this.$props.prefixCls,a=this.getSpinHeight()+"px",o=this.getTop()+"px",r=this.showScroll(),f=r&&i;return D("div",{ref:this.scrollbarRef,class:_e("".concat(l,"-scrollbar"),ce({},"".concat(l,"-scrollbar-show"),r)),style:{width:"8px",top:0,bottom:0,right:0,position:"absolute",display:f?void 0:"none"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[D("div",{ref:this.thumbRef,class:_e("".concat(l,"-scrollbar-thumb"),ce({},"".concat(l,"-scrollbar-thumb-moving"),t)),style:{width:"100%",height:a,top:o,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:"99px",cursor:"pointer",userSelect:"none"},onMousedown:this.onMouseDown},null)])}});function b_(n,e,t,i){var l=new Map,a=new Map,o=Ne(Symbol("update"));rt(n,function(){o.value=Symbol("update")});var r=0;function f(){r+=1;var b=r;Promise.resolve().then(function(){b===r&&l.forEach(function(Z,p){if(Z&&Z.offsetParent){var y=Z.offsetHeight;a.get(p)!==y&&(o.value=Symbol("update"),a.set(p,Z.offsetHeight))}})})}function v(b,Z){var p=e(b),y=l.get(p);Z?(l.set(p,Z.$el||Z),f()):l.delete(p),!y!=!Z&&(Z?t==null||t(b):i==null||i(b))}return[v,f,a,o]}function m_(n,e,t,i,l,a,o,r){var f;return function(v){if(v==null){r();return}At.cancel(f);var b=e.value,Z=i.itemHeight;if(typeof v=="number")o(v);else if(v&&Yt(v)==="object"){var p,y=v.align;"index"in v?p=v.index:p=b.findIndex(function(G){return l(G)===v.key});var X=v.offset,m=X===void 0?0:X,N=function G(d,u){if(!(d<0||!n.value)){var s=n.value.clientHeight,h=!1,c=u;if(s){for(var W=u||y,M=0,I=0,w=0,C=Math.min(b.length,p),x=0;x<=C;x+=1){var R=l(b[x]);I=M;var g=t.get(R);w=I+(g===void 0?Z:g),M=w,x===p&&g===void 0&&(h=!0)}var S=n.value.scrollTop,L=null;switch(W){case"top":L=I-m;break;case"bottom":L=w-s+m;break;default:{var V=S+s;IV&&(c="bottom")}}L!==null&&L!==S&&o(L)}f=At(function(){h&&a(),G(d-1,c)})}};N(5)}}}var p_=(typeof navigator>"u"?"undefined":Yt(navigator))==="object"&&/Firefox/i.test(navigator.userAgent);const y_=p_,vx=function(n,e){var t=!1,i=null;function l(){clearTimeout(i),t=!0,i=setTimeout(function(){t=!1},50)}return function(a){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=a<0&&n.value||a>0&&e.value;return o&&r?(clearTimeout(i),t=!1):(!r||t)&&l(),!t&&r}};function Z_(n,e,t,i){var l=0,a=null,o=null,r=!1,f=vx(e,t);function v(Z){if(n.value){At.cancel(a);var p=Z.deltaY;l+=p,o=p,!f(p)&&(y_||Z.preventDefault(),a=At(function(){var y=r?10:1;i(l*y),l=0}))}}function b(Z){n.value&&(r=Z.detail===o)}return[v,b]}var v_=14/15;function W_(n,e,t){var i=!1,l=0,a=null,o=null,r=function(){a&&(a.removeEventListener("touchmove",f),a.removeEventListener("touchend",v))},f=function(y){if(i){var X=Math.ceil(y.touches[0].pageY),m=l-X;l=X,t(m)&&y.preventDefault(),clearInterval(o),o=setInterval(function(){m*=v_,(!t(m,!0)||Math.abs(m)<=.1)&&clearInterval(o)},16)}},v=function(){i=!1,r()},b=function(y){r(),y.touches.length===1&&!i&&(i=!0,l=Math.ceil(y.touches[0].pageY),a=y.target,a.addEventListener("touchmove",f,{passive:!1}),a.addEventListener("touchend",v))},Z=function(){};Kt(function(){document.addEventListener("touchmove",Z,{passive:!1}),rt(n,function(p){e.value.removeEventListener("touchstart",b),r(),clearInterval(o),p&&e.value.addEventListener("touchstart",b,{passive:!1})},{immediate:!0})}),fn(function(){document.removeEventListener("touchmove",Z)})}var G_=["prefixCls","height","itemHeight","fullHeight","data","itemKey","virtual","component","onScroll","children","style","class"],X_=[],N_={overflowY:"auto",overflowAnchor:"none"};function M_(n,e,t,i,l,a){var o=a.getKey;return n.slice(e,t+1).map(function(r,f){var v=e+f,b=l(r,v,{}),Z=o(r);return D(d_,{key:Z,setRef:function(y){return i(r,y)}},{default:function(){return[b]}})})}var I_=He({compatConfig:{MODE:3},name:"List",inheritAttrs:!1,props:{prefixCls:String,data:We.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup:function(e,t){var i=t.expose,l=de(function(){var H=e.height,k=e.itemHeight,F=e.virtual;return!!(F!==!1&&H&&k)}),a=de(function(){var H=e.height,k=e.itemHeight,F=e.data;return l.value&&F&&k*F.length>H}),o=zn({scrollTop:0,scrollMoving:!1}),r=de(function(){return e.data||X_}),f=Gn([]);rt(r,function(){f.value=on(r.value).slice()},{immediate:!0});var v=Gn(function(H){});rt(function(){return e.itemKey},function(H){typeof H=="function"?v.value=H:v.value=function(k){return k==null?void 0:k[H]}},{immediate:!0});var b=Ne(),Z=Ne(),p=Ne(),y=function(k){return v.value(k)},X={getKey:y};function m(H){var k;typeof H=="function"?k=H(o.scrollTop):k=H;var F=I(k);b.value&&(b.value.scrollTop=F),o.scrollTop=F}var N=b_(f,y,null,null),G=ft(N,4),d=G[0],u=G[1],s=G[2],h=G[3],c=zn({scrollHeight:void 0,start:0,end:0,offset:void 0}),W=Ne(0);Kt(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),Dl(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),rt([l,f],function(){l.value||Xn(c,{scrollHeight:void 0,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([l,f,W,a],function(){l.value&&!a.value&&Xn(c,{scrollHeight:W.value,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([a,l,function(){return o.scrollTop},f,h,function(){return e.height},W],function(){if(!(!l.value||!a.value)){for(var H=0,k,F,O,Q=f.value.length,oe=f.value,se=o.scrollTop,he=e.itemHeight,pe=e.height,re=se+pe,_=0;_=se&&(k=_,F=H),O===void 0&&le>re&&(O=_),H=le}k===void 0&&(k=0,F=0),O===void 0&&(O=Q-1),O=Math.min(O+1,Q),Xn(c,{scrollHeight:H,start:k,end:O,offset:F})}},{immediate:!0});var M=de(function(){return c.scrollHeight-e.height});function I(H){var k=H;return Number.isNaN(M.value)||(k=Math.min(k,M.value)),k=Math.max(k,0),k}var w=de(function(){return o.scrollTop<=0}),C=de(function(){return o.scrollTop>=M.value}),x=vx(w,C);function R(H){var k=H;m(k)}function g(H){var k,F=H.currentTarget.scrollTop;Math.abs(F-o.scrollTop)>=1&&m(F),(k=e.onScroll)===null||k===void 0||k.call(e,H)}var S=Z_(l,w,C,function(H){m(function(k){var F=k+H;return F})}),L=ft(S,2),V=L[0],Y=L[1];W_(l,b,function(H,k){return x(H,k)?!1:(V({preventDefault:function(){},deltaY:H}),!0)});function T(H){l.value&&H.preventDefault()}var J=function(){b.value&&(b.value.removeEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.removeEventListener("DOMMouseScroll",Y),b.value.removeEventListener("MozMousePixelScroll",T))};qt(function(){cn(function(){b.value&&(J(),b.value.addEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.addEventListener("DOMMouseScroll",Y),b.value.addEventListener("MozMousePixelScroll",T))})}),fn(function(){J()});var U=m_(b,f,s,e,y,u,m,function(){var H;(H=p.value)===null||H===void 0||H.delayHidden()});i({scrollTo:U});var K=de(function(){var H=null;return e.height&&(H=P(ce({},e.fullHeight?"height":"maxHeight",e.height+"px"),N_),l.value&&(H.overflowY="hidden",o.scrollMoving&&(H.pointerEvents="none"))),H});return rt([function(){return c.start},function(){return c.end},f],function(){if(e.onVisibleChange){var H=f.value.slice(c.start,c.end+1);e.onVisibleChange(H,f.value)}},{flush:"post"}),{state:o,mergedData:f,componentStyle:K,onFallbackScroll:g,onScrollBar:R,componentRef:b,useVirtual:l,calRes:c,collectHeight:u,setInstance:d,sharedConfig:X,scrollBarRef:p,fillerInnerRef:Z}},render:function(){var e=this,t=P(P({},this.$props),this.$attrs),i=t.prefixCls,l=i===void 0?"rc-virtual-list":i,a=t.height;t.itemHeight,t.fullHeight,t.data,t.itemKey,t.virtual;var o=t.component,r=o===void 0?"div":o;t.onScroll;var f=t.children,v=f===void 0?this.$slots.default:f,b=t.style,Z=t.class,p=jt(t,G_),y=_e(l,Z),X=this.state.scrollTop,m=this.calRes,N=m.scrollHeight,G=m.offset,d=m.start,u=m.end,s=this.componentStyle,h=this.onFallbackScroll,c=this.onScrollBar,W=this.useVirtual,M=this.collectHeight,I=this.sharedConfig,w=this.setInstance,C=this.mergedData;return D("div",P({style:P(P({},b),{},{position:"relative"}),class:y},p),[D(r,{class:"".concat(l,"-holder"),style:s,ref:"componentRef",onScroll:h},{default:function(){return[D(u_,{prefixCls:l,height:N,offset:G,onInnerResize:M,ref:"fillerInnerRef"},{default:function(){return M_(C,d,u,w,v,I)}})]}}),W&&D(f_,{ref:"scrollBarRef",prefixCls:l,scrollTop:X,height:a,scrollHeight:N,count:C.length,onScroll:c,onStartMove:function(){e.state.scrollMoving=!0},onStopMove:function(){e.state.scrollMoving=!1}},null)])}});const Wx=I_;function gG(n,e,t){var i=Ne(n());return rt(e,function(l,a){t?t(l,a)&&(i.value=n()):i.value=n()}),i}function Y_(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}var Gx=Symbol("SelectContextKey");function w_(n){return hn(Gx,n)}function g_(){return un(Gx,{})}var V_=["disabled","title","children","style","class","className"];function dY(n){return typeof n=="string"||typeof n=="number"}var L_=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["option"],setup:function(e,t){var i=t.expose,l=t.slots,a=zh(),o=g_(),r=de(function(){return"".concat(a.prefixCls,"-item")}),f=gG(function(){return o.flattenOptions},[function(){return a.open},function(){return o.flattenOptions}],function(c){return c[0]}),v=Gh(),b=function(W){W.preventDefault()},Z=function(W){v.current&&v.current.scrollTo(typeof W=="number"?{index:W}:W)},p=function(W){for(var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,I=f.value.length,w=0;w1&&arguments[1]!==void 0?arguments[1]:!1;y.activeIndex=W;var I={source:M?"keyboard":"mouse"},w=f.value[W];if(!w){o.onActiveValue(null,-1,I);return}o.onActiveValue(w.value,W,I)};rt([function(){return f.value.length},function(){return a.searchValue}],function(){X(o.defaultActiveFirstOption!==!1?p(0):-1)},{immediate:!0});var m=function(W){return o.rawValues.has(W)&&a.mode!=="combobox"};rt([function(){return a.open},function(){return a.searchValue}],function(){if(!a.multiple&&a.open&&o.rawValues.size===1){var c=Array.from(o.rawValues)[0],W=on(f.value).findIndex(function(M){var I=M.data;return I[o.fieldNames.value]===c});W!==-1&&(X(W),cn(function(){Z(W)}))}a.open&&cn(function(){var M;(M=v.current)===null||M===void 0||M.scrollTo(void 0)})},{immediate:!0,flush:"post"});var N=function(W){W!==void 0&&o.onSelect(W,{selected:!o.rawValues.has(W)}),a.multiple||a.toggleOpen(!1)},G=function(W){return typeof W.label=="function"?W.label():W.label};function d(c){var W=f.value[c];if(!W)return null;var M=W.data||{},I=M.value,w=W.group,C=Ys(M,!0),x=G(W);return W?D("div",P(P({"aria-label":typeof x=="string"&&!w?x:null},C),{},{key:c,role:w?"presentation":"option",id:"".concat(a.id,"_list_").concat(c),"aria-selected":m(I)}),[I]):null}var u=function(W){var M=W.which,I=W.ctrlKey;switch(M){case bt.N:case bt.P:case bt.UP:case bt.DOWN:{var w=0;if(M===bt.UP?w=-1:M===bt.DOWN?w=1:Y_()&&I&&(M===bt.N?w=1:M===bt.P&&(w=-1)),w!==0){var C=p(y.activeIndex+w,w);Z(C),X(C,!0)}break}case bt.ENTER:{var x=f.value[y.activeIndex];x&&!x.data.disabled?N(x.value):N(void 0),a.open&&W.preventDefault();break}case bt.ESC:a.toggleOpen(!1),a.open&&W.stopPropagation()}},s=function(){},h=function(W){Z(W)};return i({onKeydown:u,onKeyup:s,scrollTo:h}),function(){var c=a.id,W=a.notFoundContent,M=a.onPopupScroll,I=o.menuItemSelectedIcon,w=o.fieldNames,C=o.virtual,x=o.listHeight,R=o.listItemHeight,g=l.option,S=y.activeIndex,L=Object.keys(w).map(function(V){return w[V]});return f.value.length===0?D("div",{role:"listbox",id:"".concat(c,"_list"),class:"".concat(r.value,"-empty"),onMousedown:b},[W]):D(ln,null,[D("div",{role:"listbox",id:"".concat(c,"_list"),style:{height:0,width:0,overflow:"hidden"}},[d(S-1),d(S),d(S+1)]),D(Wx,{itemKey:"key",ref:v,data:f.value,height:x,itemHeight:R,fullHeight:!1,onMousedown:b,onScroll:M,virtual:C},{default:function(Y,T){var J,U=Y.group,K=Y.groupOption,H=Y.data,k=Y.value,F=H.key,O=typeof Y.label=="function"?Y.label():Y.label;if(U){var Q,oe=(Q=H.title)!==null&&Q!==void 0?Q:dY(O)&&O;return D("div",{class:_e(r.value,"".concat(r.value,"-group")),title:oe},[g?g(H):O!==void 0?O:F])}var se=H.disabled,he=H.title;H.children;var pe=H.style,re=H.class,_=H.className,E=jt(H,V_),$=dn(E,L),ae=m(k),le="".concat(r.value,"-option"),ee=_e(r.value,le,re,_,(J={},ce(J,"".concat(le,"-grouped"),K),ce(J,"".concat(le,"-active"),S===T&&!se),ce(J,"".concat(le,"-disabled"),se),ce(J,"".concat(le,"-selected"),ae),J)),te=G(Y),be=!I||typeof I=="function"||ae,ne=typeof te=="number"?te:te||k,B=dY(ne)?ne.toString():void 0;return he!==void 0&&(B=he),D("div",P(P({},$),{},{"aria-selected":ae,class:ee,title:B,onMousemove:function(ue){E.onMousemove&&E.onMousemove(ue),!(S===T||se)&&X(T)},onClick:function(ue){se||N(k),E.onClick&&E.onClick(ue)},style:pe}),[D("div",{class:"".concat(le,"-content")},[g?g(H):ne]),Si(I)||ae,be&&D(Lm,{class:"".concat(r.value,"-option-state"),customizeIcon:I,customizeIconProps:{isSelected:ae}},{default:function(){return[ae?"✓":null]}})])}})])}}});const R_=L_;var T_=["value","disabled"];function x_(n){var e=n.key,t=n.children,i=n.props,l=i.value,a=i.disabled,o=jt(i,T_),r=t==null?void 0:t.default;return P({key:e,value:l!==void 0?l:e,children:r,disabled:a||a===""},o)}function Xx(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=ti(n).map(function(i,l){var a;if(!Si(i)||!i.type)return null;var o=i.type.isSelectOptGroup,r=i.key,f=i.children,v=i.props;if(e||!o)return x_(i);var b=f&&f.default?f.default():void 0,Z=(v==null?void 0:v.label)||((a=f.label)===null||a===void 0?void 0:a.call(f))||r;return P(P({key:"__RC_SELECT_GRP__".concat(r===null?l:String(r),"__")},v),{},{label:Z,options:Xx(b||[])})}).filter(function(i){return i});return t}function C_(n,e,t){var i=Gn(),l=Gn(),a=Gn(),o=Gn([]);return rt([n,e],function(){n.value?o.value=on(n.value).slice():o.value=Xx(e.value)},{immediate:!0,deep:!0}),qt(function(){var r=o.value,f=new Map,v=new Map,b=t.value;function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=0;X0&&arguments[0]!==void 0?arguments[0]:Ne(""),e="rc_select_".concat(z_());return n.value||e}function Nx(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function $y(n,e){return Nx(n).join("").toUpperCase().includes(e)}const k_=function(n,e,t,i,l){return de(function(){var a=t.value,o=l==null?void 0:l.value,r=i==null?void 0:i.value;if(!a||r===!1)return n.value;var f=e.value,v=f.options,b=f.label,Z=f.value,p=[],y=typeof r=="function",X=a.toUpperCase(),m=y?r:function(G,d){return o?$y(d[o],X):d[v]?$y(d[b!=="children"?b:"label"],X):$y(d[Z],X)},N=y?function(G){return L2(G)}:function(G){return G};return n.value.forEach(function(G){if(G[v]){var d=m(a,N(G));if(d)p.push(G);else{var u=G[v].filter(function(s){return m(a,N(s))});u.length&&p.push(P(P({},G),{},ce({},v,u)))}return}m(a,N(G))&&p.push(G)}),p})},F_=function(n,e){var t=Gn({values:new Map,options:new Map}),i=de(function(){var a=t.value,o=a.values,r=a.options,f=n.value.map(function(Z){if(Z.label===void 0){var p;return P(P({},Z),{},{label:(p=o.get(Z.value))===null||p===void 0?void 0:p.label})}return Z}),v=new Map,b=new Map;return f.forEach(function(Z){v.set(Z.value,Z),b.set(Z.value,e.value.get(Z.value)||r.get(Z.value))}),t.value.values=v,t.value.options=b,f}),l=function(o){return e.value.get(o)||t.value.options.get(o)};return[i,l]};function Wi(n,e){var t=e||{},i=t.defaultValue,l=t.value,a=l===void 0?Ne():l,o=typeof n=="function"?n():n;a.value!==void 0&&(o=mi(a)),i!==void 0&&(o=typeof i=="function"?i():i);var r=Ne(o),f=Ne(o);qt(function(){var b=a.value!==void 0?a.value:r.value;e.postState&&(b=e.postState(b)),f.value=b});function v(b){var Z=f.value;r.value=b,on(f.value)!==b&&e.onChange&&e.onChange(b,Z)}return rt(a,function(){r.value=a.value}),[f,v]}function di(n){var e=typeof n=="function"?n():n,t=Ne(e);function i(l){t.value=l}return[t,i]}var J_=["inputValue"];function Mx(){return P(P({},E0()),{},{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:We.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:We.any,defaultValue:We.any,onChange:Function,children:Array})}function D_(n){return!n||Yt(n)!=="object"}const O_=He({compatConfig:{MODE:3},name:"Select",inheritAttrs:!1,props:pn(Mx(),{prefixCls:"vc-select",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup:function(e,t){var i=t.expose,l=t.attrs,a=t.slots,o=VG(Ot(e,"id")),r=de(function(){return yx(e.mode)}),f=de(function(){return!!(!e.options&&e.children)}),v=de(function(){return e.filterOption===void 0&&e.mode==="combobox"?!1:e.filterOption}),b=de(function(){return DT(e.fieldNames,f.value)}),Z=Wi("",{value:de(function(){return e.searchValue!==void 0?e.searchValue:e.inputValue}),postState:function(ne){return ne||""}}),p=ft(Z,2),y=p[0],X=p[1],m=C_(Ot(e,"options"),Ot(e,"children"),b),N=m.valueOptions,G=m.labelOptions,d=m.options,u=function(ne){var B=Nx(ne);return B.map(function(q){var ue,ve,Ge,Je;if(D_(q))ue=q;else{var xe;Ge=q.key,ve=q.label,ue=(xe=q.value)!==null&&xe!==void 0?xe:Ge}var ke=N.value.get(ue);if(ke){var Pe;ve===void 0&&(ve=ke==null?void 0:ke[e.optionLabelProp||b.value.label]),Ge===void 0&&(Ge=(Pe=ke==null?void 0:ke.key)!==null&&Pe!==void 0?Pe:ue),Je=ke==null?void 0:ke.disabled}return{label:ve,value:ue,key:Ge,disabled:Je,option:ke}})},s=Wi(e.defaultValue,{value:Ot(e,"value")}),h=ft(s,2),c=h[0],W=h[1],M=de(function(){var be,ne=u(c.value);return e.mode==="combobox"&&!((be=ne[0])!==null&&be!==void 0&&be.value)?[]:ne}),I=F_(M,N),w=ft(I,2),C=w[0],x=w[1],R=de(function(){if(!e.mode&&C.value.length===1){var be=C.value[0];if(be.value===null&&(be.label===null||be.label===void 0))return[]}return C.value.map(function(ne){var B;return P(P({},ne),{},{label:(B=typeof ne.label=="function"?ne.label():ne.label)!==null&&B!==void 0?B:ne.value})})}),g=de(function(){return new Set(C.value.map(function(be){return be.value}))});qt(function(){if(e.mode==="combobox"){var be,ne=(be=C.value[0])===null||be===void 0?void 0:be.value;ne!=null&&X(String(ne))}},{flush:"post"});var S=function(ne,B){var q,ue=B??ne;return q={},ce(q,b.value.value,ne),ce(q,b.value.label,ue),q},L=Gn();qt(function(){if(e.mode!=="tags"){L.value=d.value;return}var be=d.value.slice(),ne=function(q){return N.value.has(q)};yt(C.value).sort(function(B,q){return B.value2&&arguments[2]!==void 0?arguments[2]:{},ue=q.source,ve=ue===void 0?"keyboard":ue;se(B),e.backfill&&e.mode==="combobox"&&ne!==null&&ve==="keyboard"&&F(String(ne))},re=function(ne,B){var q=function(){var we,Se=x(ne),De=Se==null?void 0:Se[b.value.label];return[e.labelInValue?{label:typeof De=="function"?De():De,originLabel:De,value:ne,key:(we=Se==null?void 0:Se.key)!==null&&we!==void 0?we:ne}:ne,L2(Se)]};if(B&&e.onSelect){var ue=q(),ve=ft(ue,2),Ge=ve[0],Je=ve[1];e.onSelect(Ge,Je)}else if(!B&&e.onDeselect){var xe=q(),ke=ft(xe,2),Pe=ke[0],Be=ke[1];e.onDeselect(Pe,Be)}},_=function(ne,B){var q,ue=r.value?B.selected:!0;ue?q=r.value?[].concat(yt(C.value),[ne]):[ne]:q=C.value.filter(function(ve){return ve.value!==ne}),U(q),re(ne,ue),e.mode==="combobox"?F(""):(!r.value||e.autoClearSearchValue)&&(X(""),F(""))},E=function(ne,B){U(ne),(B.type==="remove"||B.type==="clear")&&B.values.forEach(function(q){re(q.value,!1)})},$=function(ne,B){if(X(ne),F(null),B.source==="submit"){var q=(ne||"").trim();if(q){var ue=Array.from(new Set([].concat(yt(g.value),[q])));U(ue),re(q,!0),X("")}return}if(B.source!=="blur"){var ve;e.mode==="combobox"&&U(ne),(ve=e.onSearch)===null||ve===void 0||ve.call(e,ne)}},ae=function(ne){var B=ne;e.mode!=="tags"&&(B=ne.map(function(ue){var ve=G.value.get(ue);return ve==null?void 0:ve.value}).filter(function(ue){return ue!==void 0}));var q=Array.from(new Set([].concat(yt(g.value),yt(B))));U(q),q.forEach(function(ue){re(ue,!0)})},le=de(function(){return e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1});w_(Rm(P(P({},m),{},{flattenOptions:J,onActiveValue:pe,defaultActiveFirstOption:he,onSelect:_,menuItemSelectedIcon:Ot(e,"menuItemSelectedIcon"),rawValues:g,fieldNames:b,virtual:le,listHeight:Ot(e,"listHeight"),listItemHeight:Ot(e,"listItemHeight"),childrenAsData:f})));var ee=Ne();i({focus:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.focus()},blur:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.blur()},scrollTo:function(ne){var B;(B=ee.value)===null||B===void 0||B.scrollTo(ne)}});var te=de(function(){return dn(e,["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"])});return function(){return D(wG,P(P(P({},te.value),l),{},{id:o,prefixCls:e.prefixCls,ref:ee,omitDomProps:J_,mode:e.mode,displayValues:R.value,onDisplayValuesChange:E,searchValue:y.value,onSearch:$,onSearchSplit:ae,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:R_,emptyOptions:!J.value.length,activeValue:k.value,activeDescendantId:"".concat(o,"_list_").concat(oe.value)}),a)}}});var LG=function(){return null};LG.isSelectOption=!0;LG.displayName="ASelectOption";const j_=LG;var RG=function(){return null};RG.isSelectOptGroup=!0;RG.displayName="ASelectOptGroup";const U_=RG;var E_={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"};const K_=E_;function fY(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=n.loading,i=n.multiple,l=n.prefixCls,a=n.suffixIcon||e.suffixIcon&&e.suffixIcon(),o=n.clearIcon||e.clearIcon&&e.clearIcon(),r=n.menuItemSelectedIcon||e.menuItemSelectedIcon&&e.menuItemSelectedIcon(),f=n.removeIcon||e.removeIcon&&e.removeIcon(),v=o;o||(v=D(Co,null,null));var b=null;if(a!==void 0)b=a;else if(t)b=D(Yr,{spin:!0},null);else{var Z="".concat(l,"-suffix");b=function(m){var N=m.open,G=m.showSearch;return N&&G?D(P0,{class:Z},null):D(kh,{class:Z},null)}}var p=null;r!==void 0?p=r:i?p=D(H0,null,null):p=null;var y=null;return f!==void 0?y=f:y=D(Br,null,null),{clearIcon:v,suffixIcon:b,itemIcon:p,removeIcon:y}}var Tm=Symbol("ContextProps"),xm=Symbol("InternalContextProps"),q_=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:de(function(){return!0}),i=Ne(new Map),l=function(r,f){i.value.set(r,f),i.value=new Map(i.value)},a=function(r){i.value.delete(r),i.value=new Map(i.value)};rt([t,i],function(){}),hn(Tm,e),hn(xm,{addFormItemField:l,removeFormItemField:a})},O2={id:de(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},j2={addFormItemField:function(){},removeFormItemField:function(){}},Hi=function(){var e=un(xm,j2),t=Symbol("FormItemFieldKey"),i=Wl();return e.addFormItemField(t,i.type),fn(function(){e.removeFormItemField(t)}),hn(xm,j2),hn(Tm,O2),un(Tm,O2)};const Cm=He({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(e,t){var i=t.slots;return hn(xm,j2),hn(Tm,O2),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}});var zG=function(){return P(P({},dn(Mx(),["inputIcon","mode","getInputElement","getRawInputElement","backfill"])),{},{value:{type:[Array,Object,String,Number]},defaultValue:{type:[Array,Object,String,Number]},notFoundContent:We.any,suffixIcon:We.any,itemIcon:We.any,size:String,mode:String,bordered:{type:Boolean,default:!0},transitionName:String,choiceTransitionName:{type:String,default:""},"onUpdate:value":Function})},pY="SECRET_COMBOBOX_MODE_DO_NOT_USE",Or=He({compatConfig:{MODE:3},name:"ASelect",Option:j_,OptGroup:U_,inheritAttrs:!1,props:pn(zG(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:pY,slots:["notFoundContent","suffixIcon","itemIcon","removeIcon","clearIcon","dropdownRender","option","placeholder","tagRender","maxTagPlaceholder","optionLabel"],setup:function(e,t){var i=t.attrs,l=t.emit,a=t.slots,o=t.expose,r=Ne(),f=Hi(),v=function(){var w;(w=r.value)===null||w===void 0||w.focus()},b=function(){var w;(w=r.value)===null||w===void 0||w.blur()},Z=function(w){var C;(C=r.value)===null||C===void 0||C.scrollTo(w)},p=de(function(){var I=e.mode;if(I!=="combobox")return I===pY?"combobox":I}),y=Nt("select",e),X=y.prefixCls,m=y.direction,N=y.configProvider,G=y.size,d=y.getPrefixCls,u=de(function(){return d()}),s=de(function(){return Ir(u.value,"slide-up",e.transitionName)}),h=de(function(){var I;return _e((I={},ce(I,"".concat(X.value,"-lg"),G.value==="large"),ce(I,"".concat(X.value,"-sm"),G.value==="small"),ce(I,"".concat(X.value,"-rtl"),m.value==="rtl"),ce(I,"".concat(X.value,"-borderless"),!e.bordered),I))}),c=function(){for(var w=arguments.length,C=new Array(w),x=0;x=1},subscribe:function(e){return js.size||this.register(),eZ+=1,js.set(eZ,e),e(nb),eZ},unsubscribe:function(e){js.delete(e),js.size||this.unregister()},unregister:function(){var e=this;Object.keys(tb).forEach(function(t){var i=tb[t],l=e.matchHandlers[i];l==null||l.mql.removeListener(l==null?void 0:l.listener)}),js.clear()},register:function(){var e=this;Object.keys(tb).forEach(function(t){var i=tb[t],l=function(r){var f=r.matches;e.dispatch(P(P({},nb),{},ce({},t,f)))},a=window.matchMedia(i);a.addListener(l),e.matchHandlers[i]={mql:a,listener:l},l(a)})}};const Ru=f6;function Qu(){var n=Ne({}),e=null;return Kt(function(){e=Ru.subscribe(function(t){n.value=t})}),la(function(){Ru.unsubscribe(e)}),n}var Ix=Symbol("SizeProvider"),b6=function(e){var t=un("configProvider",lG),i=de(function(){return e.size||t.componentSize});return hn(Ix,i),i},Yx=function(e){var t=e?de(function(){return e.size}):un(Ix,de(function(){return"default"}));return t};const m6=b6;function Sa(n){var e=Gn();return qt(function(){e.value=n()},{flush:"sync"}),e}var p6=function(){return{prefixCls:String,shape:{type:String,default:"circle"},size:{type:[Number,String,Object],default:function(){return"default"}},src:String,srcset:String,icon:We.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}},y6=He({compatConfig:{MODE:3},name:"AAvatar",inheritAttrs:!1,props:p6(),slots:["icon"],setup:function(e,t){var i=t.slots,l=t.attrs,a=Ne(!0),o=Ne(!1),r=Ne(1),f=Ne(null),v=Ne(null),b=Nt("avatar",e),Z=b.prefixCls,p=Yx(),y=de(function(){return e.size==="default"?p.value:e.size}),X=Qu(),m=Sa(function(){if(Yt(e.size)==="object"){var u=Gc.find(function(h){return X.value[h]}),s=e.size[u];return s}}),N=function(s){return m.value?{width:"".concat(m.value,"px"),height:"".concat(m.value,"px"),lineHeight:"".concat(m.value,"px"),fontSize:"".concat(s?m.value/2:18,"px")}:{}},G=function(){if(!(!f.value||!v.value)){var s=f.value.offsetWidth,h=v.value.offsetWidth;if(s!==0&&h!==0){var c=e.gap,W=c===void 0?4:c;W*20&&arguments[0]!==void 0?arguments[0]:[],e=0,t=n.length;e=0||I.indexOf("Bottom")>=0?C.top="".concat(w.height-W.offset[1],"px"):(I.indexOf("Top")>=0||I.indexOf("bottom")>=0)&&(C.top="".concat(-W.offset[1],"px")),I.indexOf("left")>=0||I.indexOf("Right")>=0?C.left="".concat(w.width-W.offset[0],"px"):(I.indexOf("right")>=0||I.indexOf("Left")>=0)&&(C.left="".concat(-W.offset[0],"px")),c.style.transformOrigin="".concat(C.left," ").concat(C.top)}};return function(){var h,c,W,M=e.openClassName,I=e.color,w=e.overlayClassName,C=(h=Ri((c=i.default)===null||c===void 0?void 0:c.call(i)))!==null&&h!==void 0?h:null;C=C.length===1?C[0]:C;var x=b.value;if(e.visible===void 0&&y()&&(x=!1),!C)return null;var R=d(Si(C)?C:D("span",null,[C])),g=_e((W={},ce(W,M||"".concat(f.value,"-open"),!0),ce(W,R.props&&R.props.class,R.props&&R.props.class),W)),S=_e(w,ce({},"".concat(f.value,"-").concat(I),I&&WY.test(I))),L,V;I&&!WY.test(I)&&(L={backgroundColor:I},V={backgroundColor:I});var Y=P(P(P({},a),e),{},{prefixCls:f.value,getPopupContainer:v.value,builtinPlacements:N.value,visible:x,ref:Z,overlayClassName:S,overlayInnerStyle:L,onVisibleChange:X,onPopupAlign:s});return D(G6,Y,{default:function(){return[b.value?wn(R,{class:g}):R]},arrowContent:function(){return D("span",{class:"".concat(f.value,"-arrow-content"),style:V},null)},overlay:u})}}}),Xr=wi(Y6);var w6=function(){return P(P({},DG()),{},{content:We.any,title:We.any})},g6=He({compatConfig:{MODE:3},name:"APopover",props:pn(w6(),P(P({},Lx()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(e,t){var i=t.expose,l=t.slots,a=Ne();i({getPopupDomNode:function(){var p,y;return(p=a.value)===null||p===void 0||(y=p.getPopupDomNode)===null||y===void 0?void 0:y.call(p)}});var o=Nt("popover",e),r=o.prefixCls,f=o.configProvider,v=de(function(){return f.getPrefixCls()}),b=function(){var p,y,X=e.title,m=X===void 0?Ri((p=l.title)===null||p===void 0?void 0:p.call(l)):X,N=e.content,G=N===void 0?Ri((y=l.content)===null||y===void 0?void 0:y.call(l)):N,d=!!(Array.isArray(m)?m.length:m),u=!!(Array.isArray(G)?G.length:m);if(!(!d&&!u))return D(ln,null,[d&&D("div",{class:"".concat(r.value,"-title")},[m]),D("div",{class:"".concat(r.value,"-inner-content")},[G])])};return function(){return D(Xr,P(P({},dn(e,["title","content"])),{},{prefixCls:r.value,ref:a,transitionName:Ir(v.value,"zoom-big",e.transitionName)}),{title:b,default:l.default})}}});const Rx=wi(g6);var V6=function(){return{prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:"top"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:"default"}}},L6=He({compatConfig:{MODE:3},name:"AAvatarGroup",inheritAttrs:!1,props:V6(),setup:function(e,t){var i=t.slots,l=t.attrs,a=Nt("avatar-group",e),o=a.prefixCls,r=a.direction;return m6(e),function(){var f,v=e.maxPopoverPlacement,b=v===void 0?"top":v,Z=e.maxCount,p=e.maxStyle,y=e.maxPopoverTrigger,X=y===void 0?"hover":y,m=(f={},ce(f,o.value,!0),ce(f,"".concat(o.value,"-rtl"),r.value==="rtl"),ce(f,"".concat(l.class),!!l.class),f),N=ui(i,e),G=ti(N).map(function(h,c){return wn(h,{key:"avatar-key-".concat(c)})}),d=G.length;if(Z&&ZG}),X=function(){var G=e.target,d=G||Z,u=d();b.scrollEvent=hi(u,"scroll",function(s){y(s)}),y({target:u})},m=function(){b.scrollEvent&&b.scrollEvent.remove(),y.cancel()};return rt(function(){return e.target},function(){m(),cn(function(){X()})}),Kt(function(){cn(function(){X()})}),I0(function(){cn(function(){X()})}),_L(function(){m()}),fn(function(){m()}),function(){var N,G,d=D("div",{class:"".concat(r.value,"-content")},[D("div",{class:"".concat(r.value,"-icon")},[D(C6,null,null)])]),u=P(P({},l),{},{onClick:p,class:(N={},ce(N,"".concat(r.value),!0),ce(N,"".concat(l.class),l.class),ce(N,"".concat(r.value,"-rtl"),f.value==="rtl"),N)}),s=Is("fade");return D(aa,s,{default:function(){return[vl(D("div",P(P({},u),{},{ref:v}),[((G=i.default)===null||G===void 0?void 0:G.call(i))||d]),[[gr,b.visible]])]}})}}});const k6=wi(z6);function XY(n){var e=n.prefixCls,t=n.value,i=n.current,l=n.offset,a=l===void 0?0:l,o;return a&&(o={position:"absolute",top:"".concat(a,"00%"),left:0}),D("p",{style:o,class:_e("".concat(e,"-only-unit"),{current:i})},[t])}function F6(n,e,t){for(var i=n,l=0;(i+10)%10!==e;)i+=t,l+=t;return l}const J6=He({compatConfig:{MODE:3},name:"SingleNumber",props:{prefixCls:String,value:String,count:Number},setup:function(e){var t=de(function(){return Number(e.value)}),i=de(function(){return Math.abs(e.count)}),l=zn({prevValue:t.value,prevCount:i.value}),a=function(){l.prevValue=t.value,l.prevCount=i.value},o=Ne();return rt(t,function(){clearTimeout(o.value),o.value=setTimeout(function(){a()},1e3)},{flush:"post"}),la(function(){clearTimeout(o.value)}),function(){var r,f={},v=t.value;if(l.prevValue===v||Number.isNaN(v)||Number.isNaN(l.prevValue))r=[XY(P(P({},e),{},{current:!0}))],f={transition:"none"};else{r=[];for(var b=v+10,Z=[],p=v;p<=b;p+=1)Z.push(p);var y=Z.findIndex(function(m){return m%10===l.prevValue});r=Z.map(function(m,N){var G=m%10;return XY(P(P({},e),{},{value:G,offset:N-y,current:N===y}))});var X=l.prevCounte.overflowCount?"".concat(e.overflowCount,"+"):e.count}),v=de(function(){return e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0}),b=de(function(){return f.value==="0"||f.value===0}),Z=de(function(){return e.dot&&!b.value}),p=de(function(){return Z.value?"":f.value}),y=de(function(){var s=p.value===null||p.value===void 0||p.value==="";return(s||b.value&&!e.showZero)&&!Z.value}),X=Ne(e.count),m=Ne(p.value),N=Ne(Z.value);rt([function(){return e.count},p,Z],function(){y.value||(X.value=e.count,m.value=p.value,N.value=Z.value)},{immediate:!0});var G=de(function(){var s;return s={},ce(s,"".concat(o.value,"-status-dot"),v.value),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Rd(e.color)),s}),d=de(function(){return e.color&&!Rd(e.color)?{background:e.color}:{}}),u=de(function(){var s;return s={},ce(s,"".concat(o.value,"-dot"),N.value),ce(s,"".concat(o.value,"-count"),!N.value),ce(s,"".concat(o.value,"-count-sm"),e.size==="small"),ce(s,"".concat(o.value,"-multiple-words"),!N.value&&m.value&&m.value.toString().length>1),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Rd(e.color)),s});return function(){var s,h,c,W=e.offset,M=e.title,I=e.color,w=l.style,C=ui(i,e,"text"),x=o.value,R=X.value,g=ti((s=i.default)===null||s===void 0?void 0:s.call(i));g=g.length?g:null;var S=!!(!y.value||i.count),L=function(){if(!W)return P({},w);var k={marginTop:Tx(W[1])?"".concat(W[1],"px"):W[1]};return r.value==="rtl"?k.left="".concat(parseInt(W[0],10),"px"):k.right="".concat(-parseInt(W[0],10),"px"),P(P({},k),w)}(),V=M??(typeof R=="string"||typeof R=="number"?R:void 0),Y=S||!C?null:D("span",{class:"".concat(x,"-status-text")},[C]),T=Yt(R)==="object"||R===void 0&&i.count?wn(R??((h=i.count)===null||h===void 0?void 0:h.call(i)),{style:L},!1):null,J=_e(x,(c={},ce(c,"".concat(x,"-status"),v.value),ce(c,"".concat(x,"-not-a-wrapper"),!g),ce(c,"".concat(x,"-rtl"),r.value==="rtl"),c),l.class);if(!g&&v.value){var U=L.color;return D("span",P(P({},l),{},{class:J,style:L}),[D("span",{class:G.value,style:d.value},null),D("span",{style:{color:U},class:"".concat(x,"-status-text")},[C])])}var K=Is(g?"".concat(x,"-zoom"):"",{appear:!1}),H=P(P({},L),e.numberStyle);return I&&!Rd(I)&&(H=H||{},H.background=I),D("span",P(P({},l),{},{class:J}),[g,D(aa,K,{default:function(){return[vl(D(j6,{prefixCls:e.scrollNumberPrefixCls,show:S,class:u.value,count:m.value,title:V,style:H,key:"scrollNumber"},{default:function(){return[T]}}),[[gr,S]])]}}),Y])}}});kb.install=function(n){return n.component(kb.name,kb),n.component(km.name,km),n};var Hc={adjustX:1,adjustY:1},Pc=[0,0],P6={topLeft:{points:["bl","tl"],overflow:Hc,offset:[0,-4],targetOffset:Pc},topCenter:{points:["bc","tc"],overflow:Hc,offset:[0,-4],targetOffset:Pc},topRight:{points:["br","tr"],overflow:Hc,offset:[0,-4],targetOffset:Pc},bottomLeft:{points:["tl","bl"],overflow:Hc,offset:[0,4],targetOffset:Pc},bottomCenter:{points:["tc","bc"],overflow:Hc,offset:[0,4],targetOffset:Pc},bottomRight:{points:["tr","br"],overflow:Hc,offset:[0,4],targetOffset:Pc}};const Q6=P6;var B6=["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"];const xx=He({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:We.string.def("rc-dropdown"),transitionName:String,overlayClassName:We.string.def(""),openClassName:String,animation:We.any,align:We.object,overlayStyle:{type:Object,default:void 0},placement:We.string.def("bottomLeft"),overlay:We.any,trigger:We.oneOfType([We.string,We.arrayOf(We.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:We.array,hideAction:We.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:We.number.def(.15),mouseLeaveDelay:We.number.def(.1)},emits:["visibleChange","overlayClick"],slots:["overlay"],setup:function(e,t){var i=t.slots,l=t.emit,a=t.expose,o=Ne(!!e.visible);rt(function(){return e.visible},function(X){X!==void 0&&(o.value=X)});var r=Ne();a({triggerRef:r});var f=function(m){e.visible===void 0&&(o.value=!1),l("overlayClick",m)},v=function(m){e.visible===void 0&&(o.value=m),l("visibleChange",m)},b=function(){var m,N=(m=i.overlay)===null||m===void 0?void 0:m.call(i),G={prefixCls:"".concat(e.prefixCls,"-menu"),onClick:f,getPopupContainer:function(){return r.value.getPopupDomNode()}};return D(ln,null,[e.arrow&&D("div",{class:"".concat(e.prefixCls,"-arrow")},null),wn(N,G,!1)])},Z=de(function(){var X=e.minOverlayWidthMatchTrigger,m=X===void 0?!e.alignPoint:X;return m}),p=function(){var m,N=(m=i.default)===null||m===void 0?void 0:m.call(i);return o.value&&N?wn(N[0],{class:e.openClassName||"".concat(e.prefixCls,"-open")},!1):N},y=de(function(){return!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction});return function(){var X=e.prefixCls,m=e.arrow,N=e.showAction,G=e.overlayStyle,d=e.trigger,u=e.placement,s=e.align,h=e.getPopupContainer,c=e.transitionName,W=e.animation,M=e.overlayClassName,I=jt(e,B6);return D(Hu,P(P({},I),{},{prefixCls:X,ref:r,popupClassName:_e(M,ce({},"".concat(X,"-show-arrow"),m)),popupStyle:G,builtinPlacements:Q6,action:d,showAction:N,hideAction:y.value||[],popupPlacement:u,popupAlign:s,popupTransitionName:c,popupAnimation:W,popupVisible:o.value,stretch:Z.value?"minWidth":"",onPopupVisibleChange:v,getPopupContainer:h}),{popup:b,default:p})}}});var tZ={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},nZ={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},nu=[],iu=[];function A6(){var n=document.createElement("div"),e=n.style;"AnimationEvent"in window||(delete tZ.animationstart.animation,delete nZ.animationend.animation),"TransitionEvent"in window||(delete tZ.transitionstart.transition,delete nZ.transitionend.transition);function t(i,l){for(var a in i)if(i.hasOwnProperty(a)){var o=i[a];for(var r in o)if(r in e){l.push(o[r]);break}}}t(tZ,nu),t(nZ,iu)}typeof window<"u"&&typeof document<"u"&&A6();function NY(n,e,t){n.addEventListener(e,t,!1)}function MY(n,e,t){n.removeEventListener(e,t,!1)}var _6={startEvents:nu,addStartEventListener:function(e,t){if(nu.length===0){setTimeout(t,0);return}nu.forEach(function(i){NY(e,i,t)})},removeStartEventListener:function(e,t){nu.length!==0&&nu.forEach(function(i){MY(e,i,t)})},endEvents:iu,addEndEventListener:function(e,t){if(iu.length===0){setTimeout(t,0);return}iu.forEach(function(i){NY(e,i,t)})},removeEndEventListener:function(e,t){iu.length!==0&&iu.forEach(function(i){MY(e,i,t)})}};const ib=_6;var $o;function IY(n){return!n||n.offsetParent===null}function $6(n){var e=(n||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const jG=He({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,t){var i=t.slots,l=t.expose,a=Wl(),o=Nt("",e),r=o.csp,f=o.prefixCls;l({csp:r});var v=null,b=null,Z=null,p=!1,y=null,X=!1,m=function(c){if(!X){var W=us(a);!c||c.target!==W||p||u(W)}},N=function(c){!c||c.animationName!=="fadeEffect"||u(c.target)},G=function(){var c=e.insertExtraNode;return c?"".concat(f.value,"-click-animating"):"".concat(f.value,"-click-animating-without-extra-node")},d=function(c,W){var M=e.insertExtraNode,I=e.disabled;if(!(I||!c||IY(c)||c.className.indexOf("-leave")>=0)){y=document.createElement("div"),y.className="".concat(f.value,"-click-animating-node");var w=G();if(c.removeAttribute(w),c.setAttribute(w,"true"),$o=$o||document.createElement("style"),W&&W!=="#ffffff"&&W!=="rgb(255, 255, 255)"&&$6(W)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(W)&&W!=="transparent"){var C;(C=r.value)!==null&&C!==void 0&&C.nonce&&($o.nonce=r.value.nonce),y.style.borderColor=W,$o.innerHTML=` +`].includes(re)})}),S=function(_,E,$){var ae,le=!0,ee=_;(ae=e.onActiveValueChange)===null||ae===void 0||ae.call(e,null);var te=$?null:$P(_,e.tokenSeparators);if(e.mode!=="combobox"&&te){var be;ee="",(be=e.onSearchSplit)===null||be===void 0||be.call(e,te),R(!1),le=!1}return e.onSearch&&c.value!==ee&&e.onSearch(ee,{source:E?"typing":"effect"}),le},L=function(_){var E;!_||!_.trim()||(E=e.onSearch)===null||E===void 0||E.call(e,_,{source:"submit"})};rt(I,function(){!I.value&&!o.value&&e.mode!=="combobox"&&S("",!1,!1)},{immediate:!0,flush:"post"}),rt(function(){return e.disabled},function(){M.value&&e.disabled&&w(!1)},{immediate:!0});var V=yx(),Y=ft(V,2),T=Y[0],J=Y[1],U=function(_){var E,$=T(),ae=_.which;if(ae===bt.ENTER&&(e.mode!=="combobox"&&_.preventDefault(),I.value||R(!0)),J(!!c.value),ae===bt.BACKSPACE&&!$&&o.value&&!c.value&&e.displayValues.length){for(var le=yt(e.displayValues),ee=null,te=le.length-1;te>=0;te-=1){var be=le[te];if(!be.disabled){le.splice(te,1),ee=be;break}}ee&&e.onDisplayValuesChange(le,{type:"remove",values:[ee]})}for(var ne=arguments.length,B=new Array(ne>1?ne-1:0),q=1;q1?E-1:0),ae=1;ae1?te-1:0),ne=1;net}},render:function(){var e=this.state,t=e.dragging,i=e.visible,a=this.$props.prefixCls,l=this.getSpinHeight()+"px",o=this.getTop()+"px",r=this.showScroll(),f=r&&i;return D("div",{ref:this.scrollbarRef,class:_e("".concat(a,"-scrollbar"),ce({},"".concat(a,"-scrollbar-show"),r)),style:{width:"8px",top:0,bottom:0,right:0,position:"absolute",display:f?void 0:"none"},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[D("div",{ref:this.thumbRef,class:_e("".concat(a,"-scrollbar-thumb"),ce({},"".concat(a,"-scrollbar-thumb-moving"),t)),style:{width:"100%",height:l,top:o,left:0,position:"absolute",background:"rgba(0, 0, 0, 0.5)",borderRadius:"99px",cursor:"pointer",userSelect:"none"},onMousedown:this.onMouseDown},null)])}});function Z_(n,e,t,i){var a=new Map,l=new Map,o=Ne(Symbol("update"));rt(n,function(){o.value=Symbol("update")});var r=0;function f(){r+=1;var b=r;Promise.resolve().then(function(){b===r&&a.forEach(function(Z,p){if(Z&&Z.offsetParent){var y=Z.offsetHeight;l.get(p)!==y&&(o.value=Symbol("update"),l.set(p,Z.offsetHeight))}})})}function v(b,Z){var p=e(b),y=a.get(p);Z?(a.set(p,Z.$el||Z),f()):a.delete(p),!y!=!Z&&(Z?t==null||t(b):i==null||i(b))}return[v,f,l,o]}function v_(n,e,t,i,a,l,o,r){var f;return function(v){if(v==null){r();return}At.cancel(f);var b=e.value,Z=i.itemHeight;if(typeof v=="number")o(v);else if(v&&Yt(v)==="object"){var p,y=v.align;"index"in v?p=v.index:p=b.findIndex(function(G){return a(G)===v.key});var X=v.offset,m=X===void 0?0:X,N=function G(d,u){if(!(d<0||!n.value)){var s=n.value.clientHeight,h=!1,c=u;if(s){for(var W=u||y,M=0,I=0,w=0,C=Math.min(b.length,p),x=0;x<=C;x+=1){var R=a(b[x]);I=M;var g=t.get(R);w=I+(g===void 0?Z:g),M=w,x===p&&g===void 0&&(h=!0)}var S=n.value.scrollTop,L=null;switch(W){case"top":L=I-m;break;case"bottom":L=w-s+m;break;default:{var V=S+s;IV&&(c="bottom")}}L!==null&&L!==S&&o(L)}f=At(function(){h&&l(),G(d-1,c)})}};N(5)}}}var W_=(typeof navigator>"u"?"undefined":Yt(navigator))==="object"&&/Firefox/i.test(navigator.userAgent);const G_=W_,Gx=function(n,e){var t=!1,i=null;function a(){clearTimeout(i),t=!0,i=setTimeout(function(){t=!1},50)}return function(l){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=l<0&&n.value||l>0&&e.value;return o&&r?(clearTimeout(i),t=!1):(!r||t)&&a(),!t&&r}};function X_(n,e,t,i){var a=0,l=null,o=null,r=!1,f=Gx(e,t);function v(Z){if(n.value){At.cancel(l);var p=Z.deltaY;a+=p,o=p,!f(p)&&(G_||Z.preventDefault(),l=At(function(){var y=r?10:1;i(a*y),a=0}))}}function b(Z){n.value&&(r=Z.detail===o)}return[v,b]}var N_=14/15;function M_(n,e,t){var i=!1,a=0,l=null,o=null,r=function(){l&&(l.removeEventListener("touchmove",f),l.removeEventListener("touchend",v))},f=function(y){if(i){var X=Math.ceil(y.touches[0].pageY),m=a-X;a=X,t(m)&&y.preventDefault(),clearInterval(o),o=setInterval(function(){m*=N_,(!t(m,!0)||Math.abs(m)<=.1)&&clearInterval(o)},16)}},v=function(){i=!1,r()},b=function(y){r(),y.touches.length===1&&!i&&(i=!0,a=Math.ceil(y.touches[0].pageY),l=y.target,l.addEventListener("touchmove",f,{passive:!1}),l.addEventListener("touchend",v))},Z=function(){};Kt(function(){document.addEventListener("touchmove",Z,{passive:!1}),rt(n,function(p){e.value.removeEventListener("touchstart",b),r(),clearInterval(o),p&&e.value.addEventListener("touchstart",b,{passive:!1})},{immediate:!0})}),fn(function(){document.removeEventListener("touchmove",Z)})}var I_=["prefixCls","height","itemHeight","fullHeight","data","itemKey","virtual","component","onScroll","children","style","class"],Y_=[],w_={overflowY:"auto",overflowAnchor:"none"};function g_(n,e,t,i,a,l){var o=l.getKey;return n.slice(e,t+1).map(function(r,f){var v=e+f,b=a(r,v,{}),Z=o(r);return D(m_,{key:Z,setRef:function(y){return i(r,y)}},{default:function(){return[b]}})})}var V_=He({compatConfig:{MODE:3},name:"List",inheritAttrs:!1,props:{prefixCls:String,data:We.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup:function(e,t){var i=t.expose,a=de(function(){var H=e.height,k=e.itemHeight,F=e.virtual;return!!(F!==!1&&H&&k)}),l=de(function(){var H=e.height,k=e.itemHeight,F=e.data;return a.value&&F&&k*F.length>H}),o=zn({scrollTop:0,scrollMoving:!1}),r=de(function(){return e.data||Y_}),f=Gn([]);rt(r,function(){f.value=on(r.value).slice()},{immediate:!0});var v=Gn(function(H){});rt(function(){return e.itemKey},function(H){typeof H=="function"?v.value=H:v.value=function(k){return k==null?void 0:k[H]}},{immediate:!0});var b=Ne(),Z=Ne(),p=Ne(),y=function(k){return v.value(k)},X={getKey:y};function m(H){var k;typeof H=="function"?k=H(o.scrollTop):k=H;var F=I(k);b.value&&(b.value.scrollTop=F),o.scrollTop=F}var N=Z_(f,y,null,null),G=ft(N,4),d=G[0],u=G[1],s=G[2],h=G[3],c=zn({scrollHeight:void 0,start:0,end:0,offset:void 0}),W=Ne(0);Kt(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),Dl(function(){cn(function(){var H;W.value=((H=Z.value)===null||H===void 0?void 0:H.offsetHeight)||0})}),rt([a,f],function(){a.value||Xn(c,{scrollHeight:void 0,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([a,f,W,l],function(){a.value&&!l.value&&Xn(c,{scrollHeight:W.value,start:0,end:f.value.length-1,offset:void 0})},{immediate:!0}),rt([l,a,function(){return o.scrollTop},f,h,function(){return e.height},W],function(){if(!(!a.value||!l.value)){for(var H=0,k,F,O,Q=f.value.length,oe=f.value,se=o.scrollTop,he=e.itemHeight,pe=e.height,re=se+pe,_=0;_=se&&(k=_,F=H),O===void 0&&le>re&&(O=_),H=le}k===void 0&&(k=0,F=0),O===void 0&&(O=Q-1),O=Math.min(O+1,Q),Xn(c,{scrollHeight:H,start:k,end:O,offset:F})}},{immediate:!0});var M=de(function(){return c.scrollHeight-e.height});function I(H){var k=H;return Number.isNaN(M.value)||(k=Math.min(k,M.value)),k=Math.max(k,0),k}var w=de(function(){return o.scrollTop<=0}),C=de(function(){return o.scrollTop>=M.value}),x=Gx(w,C);function R(H){var k=H;m(k)}function g(H){var k,F=H.currentTarget.scrollTop;Math.abs(F-o.scrollTop)>=1&&m(F),(k=e.onScroll)===null||k===void 0||k.call(e,H)}var S=X_(a,w,C,function(H){m(function(k){var F=k+H;return F})}),L=ft(S,2),V=L[0],Y=L[1];M_(a,b,function(H,k){return x(H,k)?!1:(V({preventDefault:function(){},deltaY:H}),!0)});function T(H){a.value&&H.preventDefault()}var J=function(){b.value&&(b.value.removeEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.removeEventListener("DOMMouseScroll",Y),b.value.removeEventListener("MozMousePixelScroll",T))};qt(function(){cn(function(){b.value&&(J(),b.value.addEventListener("wheel",V,Ui?{passive:!1}:!1),b.value.addEventListener("DOMMouseScroll",Y),b.value.addEventListener("MozMousePixelScroll",T))})}),fn(function(){J()});var U=v_(b,f,s,e,y,u,m,function(){var H;(H=p.value)===null||H===void 0||H.delayHidden()});i({scrollTo:U});var K=de(function(){var H=null;return e.height&&(H=P(ce({},e.fullHeight?"height":"maxHeight",e.height+"px"),w_),a.value&&(H.overflowY="hidden",o.scrollMoving&&(H.pointerEvents="none"))),H});return rt([function(){return c.start},function(){return c.end},f],function(){if(e.onVisibleChange){var H=f.value.slice(c.start,c.end+1);e.onVisibleChange(H,f.value)}},{flush:"post"}),{state:o,mergedData:f,componentStyle:K,onFallbackScroll:g,onScrollBar:R,componentRef:b,useVirtual:a,calRes:c,collectHeight:u,setInstance:d,sharedConfig:X,scrollBarRef:p,fillerInnerRef:Z}},render:function(){var e=this,t=P(P({},this.$props),this.$attrs),i=t.prefixCls,a=i===void 0?"rc-virtual-list":i,l=t.height;t.itemHeight,t.fullHeight,t.data,t.itemKey,t.virtual;var o=t.component,r=o===void 0?"div":o;t.onScroll;var f=t.children,v=f===void 0?this.$slots.default:f,b=t.style,Z=t.class,p=jt(t,I_),y=_e(a,Z),X=this.state.scrollTop,m=this.calRes,N=m.scrollHeight,G=m.offset,d=m.start,u=m.end,s=this.componentStyle,h=this.onFallbackScroll,c=this.onScrollBar,W=this.useVirtual,M=this.collectHeight,I=this.sharedConfig,w=this.setInstance,C=this.mergedData;return D("div",P({style:P(P({},b),{},{position:"relative"}),class:y},p),[D(r,{class:"".concat(a,"-holder"),style:s,ref:"componentRef",onScroll:h},{default:function(){return[D(b_,{prefixCls:a,height:N,offset:G,onInnerResize:M,ref:"fillerInnerRef"},{default:function(){return g_(C,d,u,w,v,I)}})]}}),W&&D(y_,{ref:"scrollBarRef",prefixCls:a,scrollTop:X,height:l,scrollHeight:N,count:C.length,onScroll:c,onStartMove:function(){e.state.scrollMoving=!0},onStopMove:function(){e.state.scrollMoving=!1}},null)])}});const Xx=V_;function LG(n,e,t){var i=Ne(n());return rt(e,function(a,l){t?t(a,l)&&(i.value=n()):i.value=n()}),i}function L_(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}var Nx=Symbol("SelectContextKey");function R_(n){return hn(Nx,n)}function T_(){return un(Nx,{})}var x_=["disabled","title","children","style","class","className"];function fY(n){return typeof n=="string"||typeof n=="number"}var C_=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["option"],setup:function(e,t){var i=t.expose,a=t.slots,l=kh(),o=T_(),r=de(function(){return"".concat(l.prefixCls,"-item")}),f=LG(function(){return o.flattenOptions},[function(){return l.open},function(){return o.flattenOptions}],function(c){return c[0]}),v=Gh(),b=function(W){W.preventDefault()},Z=function(W){v.current&&v.current.scrollTo(typeof W=="number"?{index:W}:W)},p=function(W){for(var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,I=f.value.length,w=0;w1&&arguments[1]!==void 0?arguments[1]:!1;y.activeIndex=W;var I={source:M?"keyboard":"mouse"},w=f.value[W];if(!w){o.onActiveValue(null,-1,I);return}o.onActiveValue(w.value,W,I)};rt([function(){return f.value.length},function(){return l.searchValue}],function(){X(o.defaultActiveFirstOption!==!1?p(0):-1)},{immediate:!0});var m=function(W){return o.rawValues.has(W)&&l.mode!=="combobox"};rt([function(){return l.open},function(){return l.searchValue}],function(){if(!l.multiple&&l.open&&o.rawValues.size===1){var c=Array.from(o.rawValues)[0],W=on(f.value).findIndex(function(M){var I=M.data;return I[o.fieldNames.value]===c});W!==-1&&(X(W),cn(function(){Z(W)}))}l.open&&cn(function(){var M;(M=v.current)===null||M===void 0||M.scrollTo(void 0)})},{immediate:!0,flush:"post"});var N=function(W){W!==void 0&&o.onSelect(W,{selected:!o.rawValues.has(W)}),l.multiple||l.toggleOpen(!1)},G=function(W){return typeof W.label=="function"?W.label():W.label};function d(c){var W=f.value[c];if(!W)return null;var M=W.data||{},I=M.value,w=W.group,C=Ys(M,!0),x=G(W);return W?D("div",P(P({"aria-label":typeof x=="string"&&!w?x:null},C),{},{key:c,role:w?"presentation":"option",id:"".concat(l.id,"_list_").concat(c),"aria-selected":m(I)}),[I]):null}var u=function(W){var M=W.which,I=W.ctrlKey;switch(M){case bt.N:case bt.P:case bt.UP:case bt.DOWN:{var w=0;if(M===bt.UP?w=-1:M===bt.DOWN?w=1:L_()&&I&&(M===bt.N?w=1:M===bt.P&&(w=-1)),w!==0){var C=p(y.activeIndex+w,w);Z(C),X(C,!0)}break}case bt.ENTER:{var x=f.value[y.activeIndex];x&&!x.data.disabled?N(x.value):N(void 0),l.open&&W.preventDefault();break}case bt.ESC:l.toggleOpen(!1),l.open&&W.stopPropagation()}},s=function(){},h=function(W){Z(W)};return i({onKeydown:u,onKeyup:s,scrollTo:h}),function(){var c=l.id,W=l.notFoundContent,M=l.onPopupScroll,I=o.menuItemSelectedIcon,w=o.fieldNames,C=o.virtual,x=o.listHeight,R=o.listItemHeight,g=a.option,S=y.activeIndex,L=Object.keys(w).map(function(V){return w[V]});return f.value.length===0?D("div",{role:"listbox",id:"".concat(c,"_list"),class:"".concat(r.value,"-empty"),onMousedown:b},[W]):D(ln,null,[D("div",{role:"listbox",id:"".concat(c,"_list"),style:{height:0,width:0,overflow:"hidden"}},[d(S-1),d(S),d(S+1)]),D(Xx,{itemKey:"key",ref:v,data:f.value,height:x,itemHeight:R,fullHeight:!1,onMousedown:b,onScroll:M,virtual:C},{default:function(Y,T){var J,U=Y.group,K=Y.groupOption,H=Y.data,k=Y.value,F=H.key,O=typeof Y.label=="function"?Y.label():Y.label;if(U){var Q,oe=(Q=H.title)!==null&&Q!==void 0?Q:fY(O)&&O;return D("div",{class:_e(r.value,"".concat(r.value,"-group")),title:oe},[g?g(H):O!==void 0?O:F])}var se=H.disabled,he=H.title;H.children;var pe=H.style,re=H.class,_=H.className,E=jt(H,x_),$=dn(E,L),ae=m(k),le="".concat(r.value,"-option"),ee=_e(r.value,le,re,_,(J={},ce(J,"".concat(le,"-grouped"),K),ce(J,"".concat(le,"-active"),S===T&&!se),ce(J,"".concat(le,"-disabled"),se),ce(J,"".concat(le,"-selected"),ae),J)),te=G(Y),be=!I||typeof I=="function"||ae,ne=typeof te=="number"?te:te||k,B=fY(ne)?ne.toString():void 0;return he!==void 0&&(B=he),D("div",P(P({},$),{},{"aria-selected":ae,class:ee,title:B,onMousemove:function(ue){E.onMousemove&&E.onMousemove(ue),!(S===T||se)&&X(T)},onClick:function(ue){se||N(k),E.onClick&&E.onClick(ue)},style:pe}),[D("div",{class:"".concat(le,"-content")},[g?g(H):ne]),Si(I)||ae,be&&D(Rm,{class:"".concat(r.value,"-option-state"),customizeIcon:I,customizeIconProps:{isSelected:ae}},{default:function(){return[ae?"✓":null]}})])}})])}}});const S_=C_;var z_=["value","disabled"];function k_(n){var e=n.key,t=n.children,i=n.props,a=i.value,l=i.disabled,o=jt(i,z_),r=t==null?void 0:t.default;return P({key:e,value:a!==void 0?a:e,children:r,disabled:l||l===""},o)}function Mx(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=ti(n).map(function(i,a){var l;if(!Si(i)||!i.type)return null;var o=i.type.isSelectOptGroup,r=i.key,f=i.children,v=i.props;if(e||!o)return k_(i);var b=f&&f.default?f.default():void 0,Z=(v==null?void 0:v.label)||((l=f.label)===null||l===void 0?void 0:l.call(f))||r;return P(P({key:"__RC_SELECT_GRP__".concat(r===null?a:String(r),"__")},v),{},{label:Z,options:Mx(b||[])})}).filter(function(i){return i});return t}function F_(n,e,t){var i=Gn(),a=Gn(),l=Gn(),o=Gn([]);return rt([n,e],function(){n.value?o.value=on(n.value).slice():o.value=Mx(e.value)},{immediate:!0,deep:!0}),qt(function(){var r=o.value,f=new Map,v=new Map,b=t.value;function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=0;X0&&arguments[0]!==void 0?arguments[0]:Ne(""),e="rc_select_".concat(D_());return n.value||e}function Ix(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function $y(n,e){return Ix(n).join("").toUpperCase().includes(e)}const O_=function(n,e,t,i,a){return de(function(){var l=t.value,o=a==null?void 0:a.value,r=i==null?void 0:i.value;if(!l||r===!1)return n.value;var f=e.value,v=f.options,b=f.label,Z=f.value,p=[],y=typeof r=="function",X=l.toUpperCase(),m=y?r:function(G,d){return o?$y(d[o],X):d[v]?$y(d[b!=="children"?b:"label"],X):$y(d[Z],X)},N=y?function(G){return T2(G)}:function(G){return G};return n.value.forEach(function(G){if(G[v]){var d=m(l,N(G));if(d)p.push(G);else{var u=G[v].filter(function(s){return m(l,N(s))});u.length&&p.push(P(P({},G),{},ce({},v,u)))}return}m(l,N(G))&&p.push(G)}),p})},j_=function(n,e){var t=Gn({values:new Map,options:new Map}),i=de(function(){var l=t.value,o=l.values,r=l.options,f=n.value.map(function(Z){if(Z.label===void 0){var p;return P(P({},Z),{},{label:(p=o.get(Z.value))===null||p===void 0?void 0:p.label})}return Z}),v=new Map,b=new Map;return f.forEach(function(Z){v.set(Z.value,Z),b.set(Z.value,e.value.get(Z.value)||r.get(Z.value))}),t.value.values=v,t.value.options=b,f}),a=function(o){return e.value.get(o)||t.value.options.get(o)};return[i,a]};function Wi(n,e){var t=e||{},i=t.defaultValue,a=t.value,l=a===void 0?Ne():a,o=typeof n=="function"?n():n;l.value!==void 0&&(o=mi(l)),i!==void 0&&(o=typeof i=="function"?i():i);var r=Ne(o),f=Ne(o);qt(function(){var b=l.value!==void 0?l.value:r.value;e.postState&&(b=e.postState(b)),f.value=b});function v(b){var Z=f.value;r.value=b,on(f.value)!==b&&e.onChange&&e.onChange(b,Z)}return rt(l,function(){r.value=l.value}),[f,v]}function di(n){var e=typeof n=="function"?n():n,t=Ne(e);function i(a){t.value=a}return[t,i]}var U_=["inputValue"];function Yx(){return P(P({},E0()),{},{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:We.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:We.any,defaultValue:We.any,onChange:Function,children:Array})}function E_(n){return!n||Yt(n)!=="object"}const K_=He({compatConfig:{MODE:3},name:"Select",inheritAttrs:!1,props:pn(Yx(),{prefixCls:"vc-select",autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup:function(e,t){var i=t.expose,a=t.attrs,l=t.slots,o=RG(Ot(e,"id")),r=de(function(){return vx(e.mode)}),f=de(function(){return!!(!e.options&&e.children)}),v=de(function(){return e.filterOption===void 0&&e.mode==="combobox"?!1:e.filterOption}),b=de(function(){return jT(e.fieldNames,f.value)}),Z=Wi("",{value:de(function(){return e.searchValue!==void 0?e.searchValue:e.inputValue}),postState:function(ne){return ne||""}}),p=ft(Z,2),y=p[0],X=p[1],m=F_(Ot(e,"options"),Ot(e,"children"),b),N=m.valueOptions,G=m.labelOptions,d=m.options,u=function(ne){var B=Ix(ne);return B.map(function(q){var ue,ve,Ge,Je;if(E_(q))ue=q;else{var xe;Ge=q.key,ve=q.label,ue=(xe=q.value)!==null&&xe!==void 0?xe:Ge}var ke=N.value.get(ue);if(ke){var Pe;ve===void 0&&(ve=ke==null?void 0:ke[e.optionLabelProp||b.value.label]),Ge===void 0&&(Ge=(Pe=ke==null?void 0:ke.key)!==null&&Pe!==void 0?Pe:ue),Je=ke==null?void 0:ke.disabled}return{label:ve,value:ue,key:Ge,disabled:Je,option:ke}})},s=Wi(e.defaultValue,{value:Ot(e,"value")}),h=ft(s,2),c=h[0],W=h[1],M=de(function(){var be,ne=u(c.value);return e.mode==="combobox"&&!((be=ne[0])!==null&&be!==void 0&&be.value)?[]:ne}),I=j_(M,N),w=ft(I,2),C=w[0],x=w[1],R=de(function(){if(!e.mode&&C.value.length===1){var be=C.value[0];if(be.value===null&&(be.label===null||be.label===void 0))return[]}return C.value.map(function(ne){var B;return P(P({},ne),{},{label:(B=typeof ne.label=="function"?ne.label():ne.label)!==null&&B!==void 0?B:ne.value})})}),g=de(function(){return new Set(C.value.map(function(be){return be.value}))});qt(function(){if(e.mode==="combobox"){var be,ne=(be=C.value[0])===null||be===void 0?void 0:be.value;ne!=null&&X(String(ne))}},{flush:"post"});var S=function(ne,B){var q,ue=B??ne;return q={},ce(q,b.value.value,ne),ce(q,b.value.label,ue),q},L=Gn();qt(function(){if(e.mode!=="tags"){L.value=d.value;return}var be=d.value.slice(),ne=function(q){return N.value.has(q)};yt(C.value).sort(function(B,q){return B.value2&&arguments[2]!==void 0?arguments[2]:{},ue=q.source,ve=ue===void 0?"keyboard":ue;se(B),e.backfill&&e.mode==="combobox"&&ne!==null&&ve==="keyboard"&&F(String(ne))},re=function(ne,B){var q=function(){var we,Se=x(ne),De=Se==null?void 0:Se[b.value.label];return[e.labelInValue?{label:typeof De=="function"?De():De,originLabel:De,value:ne,key:(we=Se==null?void 0:Se.key)!==null&&we!==void 0?we:ne}:ne,T2(Se)]};if(B&&e.onSelect){var ue=q(),ve=ft(ue,2),Ge=ve[0],Je=ve[1];e.onSelect(Ge,Je)}else if(!B&&e.onDeselect){var xe=q(),ke=ft(xe,2),Pe=ke[0],Be=ke[1];e.onDeselect(Pe,Be)}},_=function(ne,B){var q,ue=r.value?B.selected:!0;ue?q=r.value?[].concat(yt(C.value),[ne]):[ne]:q=C.value.filter(function(ve){return ve.value!==ne}),U(q),re(ne,ue),e.mode==="combobox"?F(""):(!r.value||e.autoClearSearchValue)&&(X(""),F(""))},E=function(ne,B){U(ne),(B.type==="remove"||B.type==="clear")&&B.values.forEach(function(q){re(q.value,!1)})},$=function(ne,B){if(X(ne),F(null),B.source==="submit"){var q=(ne||"").trim();if(q){var ue=Array.from(new Set([].concat(yt(g.value),[q])));U(ue),re(q,!0),X("")}return}if(B.source!=="blur"){var ve;e.mode==="combobox"&&U(ne),(ve=e.onSearch)===null||ve===void 0||ve.call(e,ne)}},ae=function(ne){var B=ne;e.mode!=="tags"&&(B=ne.map(function(ue){var ve=G.value.get(ue);return ve==null?void 0:ve.value}).filter(function(ue){return ue!==void 0}));var q=Array.from(new Set([].concat(yt(g.value),yt(B))));U(q),q.forEach(function(ue){re(ue,!0)})},le=de(function(){return e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1});R_(Tm(P(P({},m),{},{flattenOptions:J,onActiveValue:pe,defaultActiveFirstOption:he,onSelect:_,menuItemSelectedIcon:Ot(e,"menuItemSelectedIcon"),rawValues:g,fieldNames:b,virtual:le,listHeight:Ot(e,"listHeight"),listItemHeight:Ot(e,"listItemHeight"),childrenAsData:f})));var ee=Ne();i({focus:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.focus()},blur:function(){var ne;(ne=ee.value)===null||ne===void 0||ne.blur()},scrollTo:function(ne){var B;(B=ee.value)===null||B===void 0||B.scrollTo(ne)}});var te=de(function(){return dn(e,["id","mode","prefixCls","backfill","fieldNames","inputValue","searchValue","onSearch","autoClearSearchValue","onSelect","onDeselect","dropdownMatchSelectWidth","filterOption","filterSort","optionFilterProp","optionLabelProp","options","children","defaultActiveFirstOption","menuItemSelectedIcon","virtual","listHeight","listItemHeight","value","defaultValue","labelInValue","onChange"])});return function(){return D(VG,P(P(P({},te.value),a),{},{id:o,prefixCls:e.prefixCls,ref:ee,omitDomProps:U_,mode:e.mode,displayValues:R.value,onDisplayValuesChange:E,searchValue:y.value,onSearch:$,onSearchSplit:ae,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:S_,emptyOptions:!J.value.length,activeValue:k.value,activeDescendantId:"".concat(o,"_list_").concat(oe.value)}),l)}}});var TG=function(){return null};TG.isSelectOption=!0;TG.displayName="ASelectOption";const H_=TG;var xG=function(){return null};xG.isSelectOptGroup=!0;xG.displayName="ASelectOptGroup";const P_=xG;var Q_={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}}]},name:"down",theme:"outlined"};const B_=Q_;function mY(n){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},t=n.loading,i=n.multiple,a=n.prefixCls,l=n.suffixIcon||e.suffixIcon&&e.suffixIcon(),o=n.clearIcon||e.clearIcon&&e.clearIcon(),r=n.menuItemSelectedIcon||e.menuItemSelectedIcon&&e.menuItemSelectedIcon(),f=n.removeIcon||e.removeIcon&&e.removeIcon(),v=o;o||(v=D(Co,null,null));var b=null;if(l!==void 0)b=l;else if(t)b=D(Yr,{spin:!0},null);else{var Z="".concat(a,"-suffix");b=function(m){var N=m.open,G=m.showSearch;return N&&G?D(P0,{class:Z},null):D(Fh,{class:Z},null)}}var p=null;r!==void 0?p=r:i?p=D(H0,null,null):p=null;var y=null;return f!==void 0?y=f:y=D(Br,null,null),{clearIcon:v,suffixIcon:b,itemIcon:p,removeIcon:y}}var xm=Symbol("ContextProps"),Cm=Symbol("InternalContextProps"),i6=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:de(function(){return!0}),i=Ne(new Map),a=function(r,f){i.value.set(r,f),i.value=new Map(i.value)},l=function(r){i.value.delete(r),i.value=new Map(i.value)};rt([t,i],function(){}),hn(xm,e),hn(Cm,{addFormItemField:a,removeFormItemField:l})},U2={id:de(function(){}),onFieldBlur:function(){},onFieldChange:function(){},clearValidate:function(){}},E2={addFormItemField:function(){},removeFormItemField:function(){}},Hi=function(){var e=un(Cm,E2),t=Symbol("FormItemFieldKey"),i=Wl();return e.addFormItemField(t,i.type),fn(function(){e.removeFormItemField(t)}),hn(Cm,E2),hn(xm,U2),un(xm,U2)};const Sm=He({compatConfig:{MODE:3},name:"AFormItemRest",setup:function(e,t){var i=t.slots;return hn(Cm,E2),hn(xm,U2),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}});var FG=function(){return P(P({},dn(Yx(),["inputIcon","mode","getInputElement","getRawInputElement","backfill"])),{},{value:{type:[Array,Object,String,Number]},defaultValue:{type:[Array,Object,String,Number]},notFoundContent:We.any,suffixIcon:We.any,itemIcon:We.any,size:String,mode:String,bordered:{type:Boolean,default:!0},transitionName:String,choiceTransitionName:{type:String,default:""},"onUpdate:value":Function})},ZY="SECRET_COMBOBOX_MODE_DO_NOT_USE",Or=He({compatConfig:{MODE:3},name:"ASelect",Option:H_,OptGroup:P_,inheritAttrs:!1,props:pn(FG(),{listHeight:256,listItemHeight:24}),SECRET_COMBOBOX_MODE_DO_NOT_USE:ZY,slots:["notFoundContent","suffixIcon","itemIcon","removeIcon","clearIcon","dropdownRender","option","placeholder","tagRender","maxTagPlaceholder","optionLabel"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.slots,o=t.expose,r=Ne(),f=Hi(),v=function(){var w;(w=r.value)===null||w===void 0||w.focus()},b=function(){var w;(w=r.value)===null||w===void 0||w.blur()},Z=function(w){var C;(C=r.value)===null||C===void 0||C.scrollTo(w)},p=de(function(){var I=e.mode;if(I!=="combobox")return I===ZY?"combobox":I}),y=Nt("select",e),X=y.prefixCls,m=y.direction,N=y.configProvider,G=y.size,d=y.getPrefixCls,u=de(function(){return d()}),s=de(function(){return Ir(u.value,"slide-up",e.transitionName)}),h=de(function(){var I;return _e((I={},ce(I,"".concat(X.value,"-lg"),G.value==="large"),ce(I,"".concat(X.value,"-sm"),G.value==="small"),ce(I,"".concat(X.value,"-rtl"),m.value==="rtl"),ce(I,"".concat(X.value,"-borderless"),!e.bordered),I))}),c=function(){for(var w=arguments.length,C=new Array(w),x=0;x=1},subscribe:function(e){return js.size||this.register(),eZ+=1,js.set(eZ,e),e(ib),eZ},unsubscribe:function(e){js.delete(e),js.size||this.unregister()},unregister:function(){var e=this;Object.keys(nb).forEach(function(t){var i=nb[t],a=e.matchHandlers[i];a==null||a.mql.removeListener(a==null?void 0:a.listener)}),js.clear()},register:function(){var e=this;Object.keys(nb).forEach(function(t){var i=nb[t],a=function(r){var f=r.matches;e.dispatch(P(P({},ib),{},ce({},t,f)))},l=window.matchMedia(i);l.addListener(a),e.matchHandlers[i]={mql:l,listener:a},a(l)})}};const Ru=y6;function Qu(){var n=Ne({}),e=null;return Kt(function(){e=Ru.subscribe(function(t){n.value=t})}),la(function(){Ru.unsubscribe(e)}),n}var wx=Symbol("SizeProvider"),Z6=function(e){var t=un("configProvider",rG),i=de(function(){return e.size||t.componentSize});return hn(wx,i),i},gx=function(e){var t=e?de(function(){return e.size}):un(wx,de(function(){return"default"}));return t};const v6=Z6;function Sa(n){var e=Gn();return qt(function(){e.value=n()},{flush:"sync"}),e}var W6=function(){return{prefixCls:String,shape:{type:String,default:"circle"},size:{type:[Number,String,Object],default:function(){return"default"}},src:String,srcset:String,icon:We.any,alt:String,gap:Number,draggable:{type:Boolean,default:void 0},crossOrigin:String,loadError:{type:Function}}},G6=He({compatConfig:{MODE:3},name:"AAvatar",inheritAttrs:!1,props:W6(),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(!0),o=Ne(!1),r=Ne(1),f=Ne(null),v=Ne(null),b=Nt("avatar",e),Z=b.prefixCls,p=gx(),y=de(function(){return e.size==="default"?p.value:e.size}),X=Qu(),m=Sa(function(){if(Yt(e.size)==="object"){var u=Gc.find(function(h){return X.value[h]}),s=e.size[u];return s}}),N=function(s){return m.value?{width:"".concat(m.value,"px"),height:"".concat(m.value,"px"),lineHeight:"".concat(m.value,"px"),fontSize:"".concat(s?m.value/2:18,"px")}:{}},G=function(){if(!(!f.value||!v.value)){var s=f.value.offsetWidth,h=v.value.offsetWidth;if(s!==0&&h!==0){var c=e.gap,W=c===void 0?4:c;W*20&&arguments[0]!==void 0?arguments[0]:[],e=0,t=n.length;e=0||I.indexOf("Bottom")>=0?C.top="".concat(w.height-W.offset[1],"px"):(I.indexOf("Top")>=0||I.indexOf("bottom")>=0)&&(C.top="".concat(-W.offset[1],"px")),I.indexOf("left")>=0||I.indexOf("Right")>=0?C.left="".concat(w.width-W.offset[0],"px"):(I.indexOf("right")>=0||I.indexOf("Left")>=0)&&(C.left="".concat(-W.offset[0],"px")),c.style.transformOrigin="".concat(C.left," ").concat(C.top)}};return function(){var h,c,W,M=e.openClassName,I=e.color,w=e.overlayClassName,C=(h=Ri((c=i.default)===null||c===void 0?void 0:c.call(i)))!==null&&h!==void 0?h:null;C=C.length===1?C[0]:C;var x=b.value;if(e.visible===void 0&&y()&&(x=!1),!C)return null;var R=d(Si(C)?C:D("span",null,[C])),g=_e((W={},ce(W,M||"".concat(f.value,"-open"),!0),ce(W,R.props&&R.props.class,R.props&&R.props.class),W)),S=_e(w,ce({},"".concat(f.value,"-").concat(I),I&&XY.test(I))),L,V;I&&!XY.test(I)&&(L={backgroundColor:I},V={backgroundColor:I});var Y=P(P(P({},l),e),{},{prefixCls:f.value,getPopupContainer:v.value,builtinPlacements:N.value,visible:x,ref:Z,overlayClassName:S,overlayInnerStyle:L,onVisibleChange:X,onPopupAlign:s});return D(I6,Y,{default:function(){return[b.value?wn(R,{class:g}):R]},arrowContent:function(){return D("span",{class:"".concat(f.value,"-arrow-content"),style:V},null)},overlay:u})}}}),Xr=wi(L6);var R6=function(){return P(P({},jG()),{},{content:We.any,title:We.any})},T6=He({compatConfig:{MODE:3},name:"APopover",props:pn(R6(),P(P({},Tx()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(e,t){var i=t.expose,a=t.slots,l=Ne();i({getPopupDomNode:function(){var p,y;return(p=l.value)===null||p===void 0||(y=p.getPopupDomNode)===null||y===void 0?void 0:y.call(p)}});var o=Nt("popover",e),r=o.prefixCls,f=o.configProvider,v=de(function(){return f.getPrefixCls()}),b=function(){var p,y,X=e.title,m=X===void 0?Ri((p=a.title)===null||p===void 0?void 0:p.call(a)):X,N=e.content,G=N===void 0?Ri((y=a.content)===null||y===void 0?void 0:y.call(a)):N,d=!!(Array.isArray(m)?m.length:m),u=!!(Array.isArray(G)?G.length:m);if(!(!d&&!u))return D(ln,null,[d&&D("div",{class:"".concat(r.value,"-title")},[m]),D("div",{class:"".concat(r.value,"-inner-content")},[G])])};return function(){return D(Xr,P(P({},dn(e,["title","content"])),{},{prefixCls:r.value,ref:l,transitionName:Ir(v.value,"zoom-big",e.transitionName)}),{title:b,default:a.default})}}});const xx=wi(T6);var x6=function(){return{prefixCls:String,maxCount:Number,maxStyle:{type:Object,default:void 0},maxPopoverPlacement:{type:String,default:"top"},maxPopoverTrigger:String,size:{type:[Number,String,Object],default:"default"}}},C6=He({compatConfig:{MODE:3},name:"AAvatarGroup",inheritAttrs:!1,props:x6(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("avatar-group",e),o=l.prefixCls,r=l.direction;return v6(e),function(){var f,v=e.maxPopoverPlacement,b=v===void 0?"top":v,Z=e.maxCount,p=e.maxStyle,y=e.maxPopoverTrigger,X=y===void 0?"hover":y,m=(f={},ce(f,o.value,!0),ce(f,"".concat(o.value,"-rtl"),r.value==="rtl"),ce(f,"".concat(a.class),!!a.class),f),N=ui(i,e),G=ti(N).map(function(h,c){return wn(h,{key:"avatar-key-".concat(c)})}),d=G.length;if(Z&&ZG}),X=function(){var G=e.target,d=G||Z,u=d();b.scrollEvent=hi(u,"scroll",function(s){y(s)}),y({target:u})},m=function(){b.scrollEvent&&b.scrollEvent.remove(),y.cancel()};return rt(function(){return e.target},function(){m(),cn(function(){X()})}),Kt(function(){cn(function(){X()})}),I0(function(){cn(function(){X()})}),qL(function(){m()}),fn(function(){m()}),function(){var N,G,d=D("div",{class:"".concat(r.value,"-content")},[D("div",{class:"".concat(r.value,"-icon")},[D(F6,null,null)])]),u=P(P({},a),{},{onClick:p,class:(N={},ce(N,"".concat(r.value),!0),ce(N,"".concat(a.class),a.class),ce(N,"".concat(r.value,"-rtl"),f.value==="rtl"),N)}),s=Is("fade");return D(aa,s,{default:function(){return[vl(D("div",P(P({},u),{},{ref:v}),[((G=i.default)===null||G===void 0?void 0:G.call(i))||d]),[[gr,b.visible]])]}})}}});const O6=wi(D6);function MY(n){var e=n.prefixCls,t=n.value,i=n.current,a=n.offset,l=a===void 0?0:a,o;return l&&(o={position:"absolute",top:"".concat(l,"00%"),left:0}),D("p",{style:o,class:_e("".concat(e,"-only-unit"),{current:i})},[t])}function j6(n,e,t){for(var i=n,a=0;(i+10)%10!==e;)i+=t,a+=t;return a}const U6=He({compatConfig:{MODE:3},name:"SingleNumber",props:{prefixCls:String,value:String,count:Number},setup:function(e){var t=de(function(){return Number(e.value)}),i=de(function(){return Math.abs(e.count)}),a=zn({prevValue:t.value,prevCount:i.value}),l=function(){a.prevValue=t.value,a.prevCount=i.value},o=Ne();return rt(t,function(){clearTimeout(o.value),o.value=setTimeout(function(){l()},1e3)},{flush:"post"}),la(function(){clearTimeout(o.value)}),function(){var r,f={},v=t.value;if(a.prevValue===v||Number.isNaN(v)||Number.isNaN(a.prevValue))r=[MY(P(P({},e),{},{current:!0}))],f={transition:"none"};else{r=[];for(var b=v+10,Z=[],p=v;p<=b;p+=1)Z.push(p);var y=Z.findIndex(function(m){return m%10===a.prevValue});r=Z.map(function(m,N){var G=m%10;return MY(P(P({},e),{},{value:G,offset:N-y,current:N===y}))});var X=a.prevCounte.overflowCount?"".concat(e.overflowCount,"+"):e.count}),v=de(function(){return e.status!==null&&e.status!==void 0||e.color!==null&&e.color!==void 0}),b=de(function(){return f.value==="0"||f.value===0}),Z=de(function(){return e.dot&&!b.value}),p=de(function(){return Z.value?"":f.value}),y=de(function(){var s=p.value===null||p.value===void 0||p.value==="";return(s||b.value&&!e.showZero)&&!Z.value}),X=Ne(e.count),m=Ne(p.value),N=Ne(Z.value);rt([function(){return e.count},p,Z],function(){y.value||(X.value=e.count,m.value=p.value,N.value=Z.value)},{immediate:!0});var G=de(function(){var s;return s={},ce(s,"".concat(o.value,"-status-dot"),v.value),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Rd(e.color)),s}),d=de(function(){return e.color&&!Rd(e.color)?{background:e.color}:{}}),u=de(function(){var s;return s={},ce(s,"".concat(o.value,"-dot"),N.value),ce(s,"".concat(o.value,"-count"),!N.value),ce(s,"".concat(o.value,"-count-sm"),e.size==="small"),ce(s,"".concat(o.value,"-multiple-words"),!N.value&&m.value&&m.value.toString().length>1),ce(s,"".concat(o.value,"-status-").concat(e.status),!!e.status),ce(s,"".concat(o.value,"-status-").concat(e.color),Rd(e.color)),s});return function(){var s,h,c,W=e.offset,M=e.title,I=e.color,w=a.style,C=ui(i,e,"text"),x=o.value,R=X.value,g=ti((s=i.default)===null||s===void 0?void 0:s.call(i));g=g.length?g:null;var S=!!(!y.value||i.count),L=function(){if(!W)return P({},w);var k={marginTop:Cx(W[1])?"".concat(W[1],"px"):W[1]};return r.value==="rtl"?k.left="".concat(parseInt(W[0],10),"px"):k.right="".concat(-parseInt(W[0],10),"px"),P(P({},k),w)}(),V=M??(typeof R=="string"||typeof R=="number"?R:void 0),Y=S||!C?null:D("span",{class:"".concat(x,"-status-text")},[C]),T=Yt(R)==="object"||R===void 0&&i.count?wn(R??((h=i.count)===null||h===void 0?void 0:h.call(i)),{style:L},!1):null,J=_e(x,(c={},ce(c,"".concat(x,"-status"),v.value),ce(c,"".concat(x,"-not-a-wrapper"),!g),ce(c,"".concat(x,"-rtl"),r.value==="rtl"),c),a.class);if(!g&&v.value){var U=L.color;return D("span",P(P({},a),{},{class:J,style:L}),[D("span",{class:G.value,style:d.value},null),D("span",{style:{color:U},class:"".concat(x,"-status-text")},[C])])}var K=Is(g?"".concat(x,"-zoom"):"",{appear:!1}),H=P(P({},L),e.numberStyle);return I&&!Rd(I)&&(H=H||{},H.background=I),D("span",P(P({},a),{},{class:J}),[g,D(aa,K,{default:function(){return[vl(D(H6,{prefixCls:e.scrollNumberPrefixCls,show:S,class:u.value,count:m.value,title:V,style:H,key:"scrollNumber"},{default:function(){return[T]}}),[[gr,S]])]}}),Y])}}});Fb.install=function(n){return n.component(Fb.name,Fb),n.component(Fm.name,Fm),n};var Hc={adjustX:1,adjustY:1},Pc=[0,0],_6={topLeft:{points:["bl","tl"],overflow:Hc,offset:[0,-4],targetOffset:Pc},topCenter:{points:["bc","tc"],overflow:Hc,offset:[0,-4],targetOffset:Pc},topRight:{points:["br","tr"],overflow:Hc,offset:[0,-4],targetOffset:Pc},bottomLeft:{points:["tl","bl"],overflow:Hc,offset:[0,4],targetOffset:Pc},bottomCenter:{points:["tc","bc"],overflow:Hc,offset:[0,4],targetOffset:Pc},bottomRight:{points:["tr","br"],overflow:Hc,offset:[0,4],targetOffset:Pc}};const $6=_6;var q6=["prefixCls","arrow","showAction","overlayStyle","trigger","placement","align","getPopupContainer","transitionName","animation","overlayClassName"];const Sx=He({compatConfig:{MODE:3},props:{minOverlayWidthMatchTrigger:{type:Boolean,default:void 0},arrow:{type:Boolean,default:!1},prefixCls:We.string.def("rc-dropdown"),transitionName:String,overlayClassName:We.string.def(""),openClassName:String,animation:We.any,align:We.object,overlayStyle:{type:Object,default:void 0},placement:We.string.def("bottomLeft"),overlay:We.any,trigger:We.oneOfType([We.string,We.arrayOf(We.string)]).def("hover"),alignPoint:{type:Boolean,default:void 0},showAction:We.array,hideAction:We.array,getPopupContainer:Function,visible:{type:Boolean,default:void 0},defaultVisible:{type:Boolean,default:!1},mouseEnterDelay:We.number.def(.15),mouseLeaveDelay:We.number.def(.1)},emits:["visibleChange","overlayClick"],slots:["overlay"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Ne(!!e.visible);rt(function(){return e.visible},function(X){X!==void 0&&(o.value=X)});var r=Ne();l({triggerRef:r});var f=function(m){e.visible===void 0&&(o.value=!1),a("overlayClick",m)},v=function(m){e.visible===void 0&&(o.value=m),a("visibleChange",m)},b=function(){var m,N=(m=i.overlay)===null||m===void 0?void 0:m.call(i),G={prefixCls:"".concat(e.prefixCls,"-menu"),onClick:f,getPopupContainer:function(){return r.value.getPopupDomNode()}};return D(ln,null,[e.arrow&&D("div",{class:"".concat(e.prefixCls,"-arrow")},null),wn(N,G,!1)])},Z=de(function(){var X=e.minOverlayWidthMatchTrigger,m=X===void 0?!e.alignPoint:X;return m}),p=function(){var m,N=(m=i.default)===null||m===void 0?void 0:m.call(i);return o.value&&N?wn(N[0],{class:e.openClassName||"".concat(e.prefixCls,"-open")},!1):N},y=de(function(){return!e.hideAction&&e.trigger.indexOf("contextmenu")!==-1?["click"]:e.hideAction});return function(){var X=e.prefixCls,m=e.arrow,N=e.showAction,G=e.overlayStyle,d=e.trigger,u=e.placement,s=e.align,h=e.getPopupContainer,c=e.transitionName,W=e.animation,M=e.overlayClassName,I=jt(e,q6);return D(Hu,P(P({},I),{},{prefixCls:X,ref:r,popupClassName:_e(M,ce({},"".concat(X,"-show-arrow"),m)),popupStyle:G,builtinPlacements:$6,action:d,showAction:N,hideAction:y.value||[],popupPlacement:u,popupAlign:s,popupTransitionName:c,popupAnimation:W,popupVisible:o.value,stretch:Z.value?"minWidth":"",onPopupVisibleChange:v,getPopupContainer:h}),{popup:b,default:p})}}});var tZ={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},nZ={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},nu=[],iu=[];function e8(){var n=document.createElement("div"),e=n.style;"AnimationEvent"in window||(delete tZ.animationstart.animation,delete nZ.animationend.animation),"TransitionEvent"in window||(delete tZ.transitionstart.transition,delete nZ.transitionend.transition);function t(i,a){for(var l in i)if(i.hasOwnProperty(l)){var o=i[l];for(var r in o)if(r in e){a.push(o[r]);break}}}t(tZ,nu),t(nZ,iu)}typeof window<"u"&&typeof document<"u"&&e8();function IY(n,e,t){n.addEventListener(e,t,!1)}function YY(n,e,t){n.removeEventListener(e,t,!1)}var t8={startEvents:nu,addStartEventListener:function(e,t){if(nu.length===0){setTimeout(t,0);return}nu.forEach(function(i){IY(e,i,t)})},removeStartEventListener:function(e,t){nu.length!==0&&nu.forEach(function(i){YY(e,i,t)})},endEvents:iu,addEndEventListener:function(e,t){if(iu.length===0){setTimeout(t,0);return}iu.forEach(function(i){IY(e,i,t)})},removeEndEventListener:function(e,t){iu.length!==0&&iu.forEach(function(i){YY(e,i,t)})}};const lb=t8;var $o;function wY(n){return!n||n.offsetParent===null}function n8(n){var e=(n||"").match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);return e&&e[1]&&e[2]&&e[3]?!(e[1]===e[2]&&e[2]===e[3]):!0}const EG=He({compatConfig:{MODE:3},name:"Wave",props:{insertExtraNode:Boolean,disabled:Boolean},setup:function(e,t){var i=t.slots,a=t.expose,l=Wl(),o=Nt("",e),r=o.csp,f=o.prefixCls;a({csp:r});var v=null,b=null,Z=null,p=!1,y=null,X=!1,m=function(c){if(!X){var W=us(l);!c||c.target!==W||p||u(W)}},N=function(c){!c||c.animationName!=="fadeEffect"||u(c.target)},G=function(){var c=e.insertExtraNode;return c?"".concat(f.value,"-click-animating"):"".concat(f.value,"-click-animating-without-extra-node")},d=function(c,W){var M=e.insertExtraNode,I=e.disabled;if(!(I||!c||wY(c)||c.className.indexOf("-leave")>=0)){y=document.createElement("div"),y.className="".concat(f.value,"-click-animating-node");var w=G();if(c.removeAttribute(w),c.setAttribute(w,"true"),$o=$o||document.createElement("style"),W&&W!=="#ffffff"&&W!=="rgb(255, 255, 255)"&&n8(W)&&!/rgba\(\d*, \d*, \d*, 0\)/.test(W)&&W!=="transparent"){var C;(C=r.value)!==null&&C!==void 0&&C.nonce&&($o.nonce=r.value.nonce),y.style.borderColor=W,$o.innerHTML=` [`.concat(f.value,"-click-animating-without-extra-node='true']::after, .").concat(f.value,`-click-animating-node { --antd-wave-shadow-color: `).concat(W,`; - }`),document.body.contains($o)||document.body.appendChild($o)}M&&c.appendChild(y),ib.addStartEventListener(c,m),ib.addEndEventListener(c,N)}},u=function(c){if(!(!c||c===y||!(c instanceof Element))){var W=e.insertExtraNode,M=G();c.setAttribute(M,"false"),$o&&($o.innerHTML=""),W&&y&&c.contains(y)&&c.removeChild(y),ib.removeStartEventListener(c,m),ib.removeEndEventListener(c,N)}},s=function(c){if(!(!c||!c.getAttribute||c.getAttribute("disabled")||c.className.indexOf("disabled")>=0)){var W=function(I){if(!(I.target.tagName==="INPUT"||IY(I.target))){u(c);var w=getComputedStyle(c).getPropertyValue("border-top-color")||getComputedStyle(c).getPropertyValue("border-color")||getComputedStyle(c).getPropertyValue("background-color");b=setTimeout(function(){return d(c,w)},0),At.cancel(Z),p=!0,Z=At(function(){p=!1},10)}};return c.addEventListener("click",W,!0),{cancel:function(){c.removeEventListener("click",W,!0)}}}};return Kt(function(){cn(function(){var h=us(a);h.nodeType===1&&(v=s(h))})}),fn(function(){v&&v.cancel(),clearTimeout(b),X=!0}),function(){var h;return(h=i.default)===null||h===void 0?void 0:h.call(i)[0]}}});function Fm(n){return n==="danger"?{danger:!0}:{type:n}}var q6=function(){return{prefixCls:String,type:String,htmlType:{type:String,default:"button"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:function(){return!1}},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:We.any,href:String,target:String,title:String,onClick:{type:Function},onMousedown:{type:Function}}};const Cx=q6;var YY=function(e){e&&(e.style.width="0px",e.style.opacity="0",e.style.transform="scale(0)")},wY=function(e){cn(function(){e&&(e.style.width="".concat(e.scrollWidth,"px"),e.style.opacity="1",e.style.transform="scale(1)")})},gY=function(e){e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)};const e8=He({compatConfig:{MODE:3},name:"LoadingIcon",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup:function(e){return function(){var t=e.existIcon,i=e.prefixCls,l=e.loading;if(t)return D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]);var a=!!l;return D(aa,{name:"".concat(i,"-loading-icon-motion"),onBeforeEnter:YY,onEnter:wY,onAfterEnter:gY,onBeforeLeave:wY,onLeave:function(r){setTimeout(function(){YY(r)})},onAfterLeave:gY},{default:function(){return[a?D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]):null]}})}}});var VY=/^[\u4e00-\u9fa5]{2}$/,LY=VY.test.bind(VY);function lb(n){return n==="text"||n==="link"}const qi=He({compatConfig:{MODE:3},name:"AButton",inheritAttrs:!1,__ANT_BUTTON:!0,props:pn(Cx(),{type:"default"}),slots:["icon"],setup:function(e,t){var i=t.slots,l=t.attrs,a=t.emit,o=Nt("btn",e),r=o.prefixCls,f=o.autoInsertSpaceInButton,v=o.direction,b=o.size,Z=Ne(null),p=Ne(void 0),y=!1,X=Ne(!1),m=Ne(!1),N=de(function(){return f.value!==!1}),G=de(function(){return Yt(e.loading)==="object"&&e.loading.delay?e.loading.delay||!0:!!e.loading});rt(G,function(c){clearTimeout(p.value),typeof G.value=="number"?p.value=setTimeout(function(){X.value=c},G.value):X.value=c},{immediate:!0});var d=de(function(){var c,W=e.type,M=e.shape,I=M===void 0?"default":M,w=e.ghost,C=e.block,x=e.danger,R=r.value,g={large:"lg",small:"sm",middle:void 0},S=b.value,L=S&&g[S]||"";return c={},ce(c,"".concat(R),!0),ce(c,"".concat(R,"-").concat(W),W),ce(c,"".concat(R,"-").concat(I),I!=="default"&&I),ce(c,"".concat(R,"-").concat(L),L),ce(c,"".concat(R,"-loading"),X.value),ce(c,"".concat(R,"-background-ghost"),w&&!lb(W)),ce(c,"".concat(R,"-two-chinese-chars"),m.value&&N.value),ce(c,"".concat(R,"-block"),C),ce(c,"".concat(R,"-dangerous"),!!x),ce(c,"".concat(R,"-rtl"),v.value==="rtl"),c}),u=function(){var W=Z.value;if(!(!W||f.value===!1)){var M=W.textContent;y&&LY(M)?m.value||(m.value=!0):m.value&&(m.value=!1)}},s=function(W){if(X.value||e.disabled){W.preventDefault();return}a("click",W)},h=function(W,M){var I=M?" ":"";if(W.type===Ns){var w=W.children.trim();return LY(w)&&(w=w.split("").join(I)),D("span",null,[w])}return W};return qt(function(){jn(!(e.ghost&&lb(e.type)),"Button","`link` or `text` button can't be a `ghost` button.")}),Kt(u),Dl(u),fn(function(){p.value&&clearTimeout(p.value)}),function(){var c,W,M=e.icon,I=M===void 0?(c=i.icon)===null||c===void 0?void 0:c.call(i):M,w=ti((W=i.default)===null||W===void 0?void 0:W.call(i));y=w.length===1&&!I&&!lb(e.type);var C=e.type,x=e.htmlType,R=e.disabled,g=e.href,S=e.title,L=e.target,V=e.onMousedown,Y=X.value?"loading":I,T=P(P({},l),{},{title:S,disabled:R,class:[d.value,l.class,ce({},"".concat(r.value,"-icon-only"),w.length===0&&!!Y)],onClick:s,onMousedown:V});R||delete T.disabled;var J=I&&!X.value?I:D(e8,{existIcon:!!I,prefixCls:r.value,loading:!!X.value},null),U=w.map(function(H){return h(H,y&&N.value)});if(g!==void 0)return D("a",P(P({},T),{},{href:g,target:L,ref:Z}),[J,U]);var K=D("button",P(P({},T),{},{ref:Z,type:x}),[J,U]);return lb(C)?K:D(jG,{ref:"wave",disabled:!!X.value},{default:function(){return[K]}})}}});function RY(n,e){for(var t=0;t=0?"".concat(f.value,"-slide-down"):"".concat(f.value,"-slide-up")}),p=function(){var N,G,d,u=e.overlay||((N=i.overlay)===null||N===void 0?void 0:N.call(i)),s=Array.isArray(u)?u[0]:u;if(!s)return null;var h=s.props||{};jn(!h.mode||h.mode==="vertical","Dropdown",'mode="'.concat(h.mode,`" is not supported for Dropdown's Menu.`));var c=h.selectable,W=c===void 0?!1:c,M=h.expandIcon,I=M===void 0?(G=s.children)===null||G===void 0||(d=G.expandIcon)===null||d===void 0?void 0:d.call(G):M,w=typeof I<"u"&&Si(I)?I:D("span",{class:"".concat(r.value,"-menu-submenu-arrow")},[D(To,{class:"".concat(r.value,"-menu-submenu-arrow-icon")},null)]),C=Si(s)?wn(s,{mode:"vertical",selectable:W,expandIcon:function(){return w}}):s;return C},y=de(function(){var m=e.placement;if(!m)return v.value==="rtl"?"bottomRight":"bottomLeft";if(m.includes("Center")){var N=m.slice(0,m.indexOf("Center"));return jn(!m.includes("Center"),"Dropdown","You are using '".concat(m,"' placement in Dropdown, which is deprecated. Try to use '").concat(N,"' instead.")),N}return m}),X=function(N){a("update:visible",N),a("visibleChange",N)};return function(){var m,N,G=e.arrow,d=e.trigger,u=e.disabled,s=e.overlayClassName,h=(m=i.default)===null||m===void 0?void 0:m.call(i)[0],c=wn(h,Xn({class:_e(h==null||(N=h.props)===null||N===void 0?void 0:N.class,ce({},"".concat(r.value,"-rtl"),v.value==="rtl"),"".concat(r.value,"-trigger"))},u?{disabled:u}:{})),W=_e(s,ce({},"".concat(r.value,"-rtl"),v.value==="rtl")),M=u?[]:d,I;M&&M.indexOf("contextmenu")!==-1&&(I=!0);var w=gx({arrowPointAtCenter:Yt(G)==="object"&&G.pointAtCenter,autoAdjustOverflow:!0}),C=dn(P(P(P({},e),l),{},{builtinPlacements:w,overlayClassName:W,arrow:G,alignPoint:I,prefixCls:r.value,getPopupContainer:b.value,transitionName:Z.value,trigger:M,onVisibleChange:X,placement:y.value}),["overlay","onUpdate:visible"]);return D(xx,C,{default:function(){return[c]},overlay:p})}}});zx.Button=Xh;const Hr=zx;var h8=["class","style"],f8=function(){return{prefixCls:String,href:String,separator:We.any,overlay:We.any,onClick:Function}};const Nh=He({compatConfig:{MODE:3},name:"ABreadcrumbItem",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:f8(),slots:["separator","overlay"],setup:function(e,t){var i=t.slots,l=t.attrs,a=Nt("breadcrumb",e),o=a.prefixCls,r=function(v,b){var Z=ui(i,e,"overlay");return Z?D(Hr,{overlay:Z,placement:"bottom"},{default:function(){return[D("span",{class:"".concat(b,"-overlay-link")},[v,D(kh,null,null)])]}}):v};return function(){var f,v=(f=ui(i,e,"separator"))!==null&&f!==void 0?f:"/",b=ui(i,e),Z=l.class,p=l.style,y=jt(l,h8),X;return e.href!==void 0?X=D("a",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]):X=D("span",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]),X=r(X,o.value),b?D("span",{class:Z,style:p},[X,v&&D("span",{class:"".concat(o.value,"-separator")},[v])]):null}}});function b8(n,e,t,i){var l=t?t.call(i,n,e):void 0;if(l!==void 0)return!!l;if(n===e)return!0;if(Yt(n)!=="object"||!n||Yt(e)!=="object"||!e)return!1;var a=Object.keys(n),o=Object.keys(e);if(a.length!==o.length)return!1;for(var r=Object.prototype.hasOwnProperty.bind(e),f=0;f-1}function Kx(n,e,t){for(var i=-1,l=n==null?0:n.length;++i=I8){var v=e?null:M8(n);if(v)return yG(v);o=!1,l=wm,f=new Vu}else f=e?[]:r;e:for(;++i"u"?pe=I&&he?se:"":oe===!1&&(pe="");var re={title:pe};!s.value&&!u.value&&(re.title=null,re.visible=!1);var _={};e.role==="option"&&(_["aria-selected"]=g.value);var E=ui(i,e,"icon");return D(Xr,P(P({},re),{},{placement:d.value?"left":"right",overlayClassName:"".concat(X.value,"-inline-collapsed-tooltip")}),{default:function(){return[D(Zu.Item,P(P(P({component:"li"},a),{},{id:e.id,style:P(P({},a.style||{}),H.value),class:[S.value,(Q={},ce(Q,"".concat(a.class),!!a.class),ce(Q,"".concat(X.value,"-item-only-child"),(E?he+1:he)===1),Q)],role:e.role||"menuitem",tabindex:e.disabled?null:-1,"data-menu-id":f,"aria-disabled":e.disabled},_),{},{onMouseenter:Y,onMouseleave:T,onClick:V,onKeydown:J,onFocus:U,title:typeof oe=="string"?oe:void 0}),{default:function(){return[wn(E,{class:"".concat(X.value,"-item-icon")},!1),K(E,se)]}})]}})}}});var hs={adjustX:1,adjustY:1},R8={topLeft:{points:["bl","tl"],overflow:hs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:hs,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:hs,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:hs,offset:[4,0]}},T8={topLeft:{points:["bl","tl"],overflow:hs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:hs,offset:[0,7]},rightTop:{points:["tr","tl"],overflow:hs,offset:[-4,0]},leftTop:{points:["tl","tr"],overflow:hs,offset:[4,0]}},x8={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"};const SY=He({compatConfig:{MODE:3},name:"PopupTrigger",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:["popup"],emits:["visibleChange"],setup:function(e,t){var i=t.slots,l=t.emit,a=Ne(!1),o=ws(),r=o.getPopupContainer,f=o.rtl,v=o.subMenuOpenDelay,b=o.subMenuCloseDelay,Z=o.builtinPlacements,p=o.triggerSubMenuAction,y=o.isRootMenu,X=o.forceSubMenuRender,m=o.motion,N=o.defaultMotions,G=Dx(),d=de(function(){return f.value?P(P({},T8),Z.value):P(P({},R8),Z.value)}),u=de(function(){return x8[e.mode]}),s=Ne();rt(function(){return e.visible},function(W){At.cancel(s.value),s.value=At(function(){a.value=W})},{immediate:!0}),fn(function(){At.cancel(s.value)});var h=function(M){l("visibleChange",M)},c=de(function(){var W,M,I=m.value||((W=N.value)===null||W===void 0?void 0:W[e.mode])||((M=N.value)===null||M===void 0?void 0:M.other),w=typeof I=="function"?I():I;return w?Is(w.name,{css:!0}):void 0});return function(){var W=e.prefixCls,M=e.popupClassName,I=e.mode,w=e.popupOffset,C=e.disabled;return D(Hu,{prefixCls:W,popupClassName:_e("".concat(W,"-popup"),ce({},"".concat(W,"-rtl"),f.value),M),stretch:I==="horizontal"?"minWidth":null,getPopupContainer:y.value?r.value:function(x){return x.parentNode},builtinPlacements:d.value,popupPlacement:u.value,popupVisible:a.value,popupAlign:w&&{offset:w},action:C?[]:[p.value],mouseEnterDelay:v.value,mouseLeaveDelay:b.value,onPopupVisibleChange:h,forceRender:G||X.value,popupAnimation:c.value},{popup:i.popup,default:i.default})}}});var _x=function(e,t){var i,l=t.slots,a=t.attrs,o=ws(),r=o.prefixCls,f=o.mode;return D("ul",P(P({},a),{},{class:_e(r.value,"".concat(r.value,"-sub"),"".concat(r.value,"-").concat(f.value==="inline"?"inline":"vertical")),"data-menu-list":!0}),[(i=l.default)===null||i===void 0?void 0:i.call(l)])};_x.displayName="SubMenuList";const $x=_x,C8=He({compatConfig:{MODE:3},name:"InlineSubMenuList",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup:function(e,t){var i=t.slots,l=de(function(){return"inline"}),a=ws(),o=a.motion,r=a.mode,f=a.defaultMotions,v=de(function(){return r.value===l.value}),b=Ne(!v.value),Z=de(function(){return v.value?e.open:!1});rt(r,function(){v.value&&(b.value=!1)},{flush:"post"});var p=de(function(){var y,X,m=o.value||((y=f.value)===null||y===void 0?void 0:y[l.value])||((X=f.value)===null||X===void 0?void 0:X.other),N=typeof m=="function"?m():m;return P(P({},N),{},{appear:e.keyPath.length<=1})});return function(){var y;return b.value?null:D(Dm,{mode:l.value},{default:function(){return[D(aa,p.value,{default:function(){return[vl(D($x,{id:e.id},{default:function(){return[(y=i.default)===null||y===void 0?void 0:y.call(i)]}}),[[gr,Z.value]])]}})]}})}}});var zY=0,S8=function(){return{icon:We.any,title:We.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function}};const Tu=He({compatConfig:{MODE:3},name:"ASubMenu",inheritAttrs:!1,props:S8(),slots:["icon","title","expandIcon"],setup:function(e,t){var i,l,a=t.slots,o=t.attrs,r=t.emit;jx(!1);var f=PG(),v=Wl(),b=Yt(v.vnode.key)==="symbol"?String(v.vnode.key):v.vnode.key;jn(Yt(v.vnode.key)!=="symbol","SubMenu",'SubMenu `:key="'.concat(String(b),'"` not support Symbol type'));var Z=b2(b)?b:"sub_menu_".concat(++zY,"_$$_not_set_key"),p=(i=e.eventKey)!==null&&i!==void 0?i:b2(b)?"sub_menu_".concat(++zY,"_$$_").concat(b):Z,y=HG(),X=y.parentEventKeys,m=y.parentInfo,N=y.parentKeys,G=de(function(){return[].concat(yt(N.value),[Z])}),d=Ne([]),u={eventKey:p,key:Z,parentEventKeys:X,childrenEventKeys:d,parentKeys:N};(l=m.childrenEventKeys)===null||l===void 0||l.value.push(p),fn(function(){if(m.childrenEventKeys){var B;m.childrenEventKeys.value=(B=m.childrenEventKeys)===null||B===void 0?void 0:B.value.filter(function(q){return q!=p})}}),g8(p,Z,u);var s=ws(),h=s.prefixCls,c=s.activeKeys,W=s.disabled,M=s.changeActiveKeys,I=s.mode,w=s.inlineCollapsed,C=s.antdMenuTheme,x=s.openKeys,R=s.overflowDisabled,g=s.onOpenChange,S=s.registerMenuInfo,L=s.unRegisterMenuInfo,V=s.selectedSubMenuKeys,Y=s.expandIcon,T=b!=null,J=!f&&(Dx()||!T);m8(J),(f&&T||!f&&!T||J)&&(S(p,u),fn(function(){L(p)}));var U=de(function(){return"".concat(h.value,"-submenu")}),K=de(function(){return W.value||e.disabled}),H=Ne(),k=Ne(),F=de(function(){return x.value.includes(Z)}),O=de(function(){return!R.value&&F.value}),Q=de(function(){return V.value.includes(Z)}),oe=Ne(!1);rt(c,function(){oe.value=!!c.value.find(function(B){return B===Z})},{immediate:!0});var se=function(q){K.value||(r("titleClick",q,Z),I.value==="inline"&&g(Z,!F.value))},he=function(q){K.value||(M(G.value),r("mouseenter",q))},pe=function(q){K.value||(M([]),r("mouseleave",q))},re=Ax(de(function(){return G.value.length})),_=function(q){I.value!=="inline"&&g(Z,q)},E=function(){M(G.value)},$=p&&"".concat(p,"-popup"),ae=de(function(){return _e(h.value,"".concat(h.value,"-").concat(C.value),e.popupClassName)}),le=function(q,ue){if(!ue)return w.value&&!N.value.length&&q&&typeof q=="string"?D("div",{class:"".concat(h.value,"-inline-collapsed-noicon")},[q.charAt(0)]):D("span",{class:"".concat(h.value,"-title-content")},[q]);var ve=Si(q)&&q.type==="span";return D(ln,null,[wn(ue,{class:"".concat(h.value,"-item-icon")},!1),ve?q:D("span",{class:"".concat(h.value,"-title-content")},[q])])},ee=de(function(){return I.value!=="inline"&&G.value.length>1?"vertical":I.value}),te=de(function(){return I.value==="horizontal"?"vertical":I.value}),be=de(function(){return ee.value==="horizontal"?"vertical":ee.value}),ne=function(){var q=U.value,ue=ui(a,e,"icon"),ve=e.expandIcon||a.expandIcon||Y.value,Ge=le(ui(a,e,"title"),ue);return D("div",{style:re.value,class:"".concat(q,"-title"),tabindex:K.value?null:-1,ref:H,title:typeof Ge=="string"?Ge:null,"data-menu-id":Z,"aria-expanded":O.value,"aria-haspopup":!0,"aria-controls":$,"aria-disabled":K.value,onClick:se,onFocus:E},[Ge,I.value!=="horizontal"&&ve?ve(P(P({},e),{},{isOpen:O.value})):D("i",{class:"".concat(q,"-arrow")},null)])};return function(){var B;if(f){var q;return T?(q=a.default)===null||q===void 0?void 0:q.call(a):null}var ue=U.value,ve=function(){return null};return!R.value&&I.value!=="inline"?ve=function(){return D(SY,{mode:ee.value,prefixCls:ue,visible:!e.internalPopupClose&&O.value,popupClassName:ae.value,popupOffset:e.popupOffset,disabled:K.value,onVisibleChange:_},{default:function(){return[ne()]},popup:function(){return D(Dm,{mode:be.value,isRootMenu:!1},{default:function(){return[D($x,{id:$,ref:k},{default:a.default})]}})}})}:ve=function(){return D(SY,null,{default:ne})},D(Dm,{mode:te.value},{default:function(){return[D(Zu.Item,P(P({component:"li"},o),{},{role:"none",class:_e(ue,"".concat(ue,"-").concat(I.value),o.class,(B={},ce(B,"".concat(ue,"-open"),O.value),ce(B,"".concat(ue,"-active"),oe.value),ce(B,"".concat(ue,"-selected"),Q.value),ce(B,"".concat(ue,"-disabled"),K.value),B)),onMouseenter:he,onMouseleave:pe,"data-submenu-id":Z}),{default:function(){return D(ln,null,[ve(),!R.value&&D(C8,{id:$,open:O.value,keyPath:G.value},{default:a.default})])}})]}})}}});function qx(n,e){if(n.classList)return n.classList.contains(e);var t=n.className;return" ".concat(t," ").indexOf(" ".concat(e," "))>-1}function kY(n,e){n.classList?n.classList.add(e):qx(n,e)||(n.className="".concat(n.className," ").concat(e))}function FY(n,e){if(n.classList)n.classList.remove(e);else if(qx(n,e)){var t=n.className;n.className=" ".concat(t," ").replace(" ".concat(e," ")," ")}}var z8=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:function(l){l.style.height="0px",l.style.opacity="0",kY(l,e)},onEnter:function(l){cn(function(){l.style.height="".concat(l.scrollHeight,"px"),l.style.opacity="1"})},onAfterEnter:function(l){l&&(FY(l,e),l.style.height=null,l.style.opacity=null)},onBeforeLeave:function(l){kY(l,e),l.style.height="".concat(l.offsetHeight,"px"),l.style.opacity=null},onLeave:function(l){setTimeout(function(){l.style.height="0px",l.style.opacity="0"})},onAfterLeave:function(l){l&&(FY(l,e),l.style&&(l.style.height=null,l.style.opacity=null))}}};const Fh=z8;var k8=function(){return{id:String,prefixCls:String,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},motion:Object,theme:{type:String,default:"light"},mode:{type:String,default:"vertical"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:.1},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:"hover"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}},JY=[];const Yi=He({compatConfig:{MODE:3},name:"AMenu",inheritAttrs:!1,props:k8(),slots:["expandIcon","overflowedIndicator"],setup:function(e,t){var i=t.slots,l=t.emit,a=t.attrs,o=Nt("menu",e),r=o.prefixCls,f=o.direction,v=o.getPrefixCls,b=Ne({}),Z=un(Hx,Ne(void 0)),p=de(function(){return Z.value!==void 0?Z.value:e.inlineCollapsed}),y=Ne(!1);Kt(function(){y.value=!0}),qt(function(){jn(!(e.inlineCollapsed===!0&&e.mode!=="inline"),"Menu","`inlineCollapsed` should only be used when `mode` is inline."),jn(!(Z.value!==void 0&&e.inlineCollapsed===!0),"Menu","`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});var X=Ne([]),m=Ne([]),N=Ne({});rt(b,function(){for(var k={},F=0,O=Object.values(b.value);F0&&arguments[0]!==void 0?arguments[0]:u.value;lu(u.value,k)||(u.value=k.slice())},{immediate:!0,deep:!0});var s,h=function(F){clearTimeout(s),s=setTimeout(function(){e.activeKey===void 0&&(X.value=F),l("update:activeKey",F[F.length-1])})},c=de(function(){return!!e.disabled}),W=de(function(){return f.value==="rtl"}),M=Ne("vertical"),I=Ne(!1);qt(function(){(e.mode==="inline"||e.mode==="vertical")&&p.value?(M.value="vertical",I.value=p.value):(M.value=e.mode,I.value=!1)});var w=de(function(){return M.value==="inline"}),C=function(F){u.value=F,l("update:openKeys",F),l("openChange",F)},x=Ne(u.value),R=Ne(!1);rt(u,function(){w.value&&(x.value=u.value)},{immediate:!0}),rt(w,function(){if(!R.value){R.value=!0;return}w.value?u.value=x.value:C(JY)},{immediate:!0});var g=de(function(){var k;return k={},ce(k,"".concat(r.value),!0),ce(k,"".concat(r.value,"-root"),!0),ce(k,"".concat(r.value,"-").concat(M.value),!0),ce(k,"".concat(r.value,"-inline-collapsed"),I.value),ce(k,"".concat(r.value,"-rtl"),W.value),ce(k,"".concat(r.value,"-").concat(e.theme),!0),k}),S=de(function(){return v()}),L=de(function(){return{horizontal:{name:"".concat(S.value,"-slide-up")},inline:Fh,other:{name:"".concat(S.value,"-zoom-big")}}});jx(!0);var V=function k(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],O=[],Q=b.value;return F.forEach(function(oe){var se=Q[oe],he=se.key,pe=se.childrenEventKeys;O.push.apply(O,[he].concat(yt(k(mi(pe)))))}),O},Y=function(F){l("click",F),d(F)},T=function(F,O){var Q,oe=((Q=N.value[F])===null||Q===void 0?void 0:Q.childrenEventKeys)||[],se=u.value.filter(function(pe){return pe!==F});if(O)se.push(F);else if(M.value!=="inline"){var he=V(mi(oe));se=lZ(se.filter(function(pe){return!he.includes(pe)}))}lu(u,se)||C(se)},J=function(F,O){b.value=P(P({},b.value),{},ce({},F,O))},U=function(F){delete b.value[F],b.value=P({},b.value)},K=Ne(0),H=de(function(){return e.expandIcon||i.expandIcon?function(k){var F=e.expandIcon||i.expandIcon;return F=typeof F=="function"?F(k):F,wn(F,{class:"".concat(r.value,"-submenu-expand-icon")},!1)}:null});return y8({store:b,prefixCls:r,activeKeys:X,openKeys:u,selectedKeys:m,changeActiveKeys:h,disabled:c,rtl:W,mode:M,inlineIndent:de(function(){return e.inlineIndent}),subMenuCloseDelay:de(function(){return e.subMenuCloseDelay}),subMenuOpenDelay:de(function(){return e.subMenuOpenDelay}),builtinPlacements:de(function(){return e.builtinPlacements}),triggerSubMenuAction:de(function(){return e.triggerSubMenuAction}),getPopupContainer:de(function(){return e.getPopupContainer}),inlineCollapsed:I,antdMenuTheme:de(function(){return e.theme}),siderCollapsed:Z,defaultMotions:de(function(){return y.value?L.value:null}),motion:de(function(){return y.value?e.motion:null}),overflowDisabled:Ne(void 0),onOpenChange:T,onItemClick:Y,registerMenuInfo:J,unRegisterMenuInfo:U,selectedSubMenuKeys:G,isRootMenu:Ne(!0),expandIcon:H,forceSubMenuRender:de(function(){return e.forceSubMenuRender})}),function(){var k,F,O=ti((k=i.default)===null||k===void 0?void 0:k.call(i)),Q=K.value>=O.length-1||M.value!=="horizontal"||e.disabledOverflow,oe=M.value!=="horizontal"||e.disabledOverflow?O:O.map(function(he,pe){return D(Dm,{key:he.key,overflowDisabled:pe>K.value},{default:function(){return he}})}),se=((F=i.overflowedIndicator)===null||F===void 0?void 0:F.call(i))||D(EG,null,null);return D(Zu,P(P({},a),{},{onMousedown:e.onMousedown,prefixCls:"".concat(r.value,"-overflow"),component:"ul",itemComponent:Lo,class:[g.value,a.class],role:"menu",id:e.id,data:oe,renderRawItem:function(pe){return pe},renderRawRest:function(pe){var re=pe.length,_=re?O.slice(-re):null;return D(ln,null,[D(Tu,{eventKey:ab,key:ab,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}}),D(CY,null,{default:function(){return[D(Tu,{eventKey:ab,key:ab,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}})]}})])},maxCount:M.value!=="horizontal"||e.disabledOverflow?Zu.INVALIDATE:Zu.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(pe){K.value=pe}}),{default:function(){return[D(gW,{to:"body"},{default:function(){return[D("div",{style:{display:"none"},"aria-hidden":!0},[D(CY,null,{default:function(){return[oe]}})])]}})]}})}}});var F8=function(){return{title:We.any}};const Om=He({compatConfig:{MODE:3},name:"AMenuItemGroup",inheritAttrs:!1,props:F8(),slots:["title"],setup:function(e,t){var i=t.slots,l=t.attrs,a=ws(),o=a.prefixCls,r=de(function(){return"".concat(o.value,"-item-group")}),f=PG();return function(){var v,b;return f?(v=i.default)===null||v===void 0?void 0:v.call(i):D("li",P(P({},l),{},{onClick:function(p){return p.stopPropagation()},class:r.value}),[D("div",{title:typeof e.title=="string"?e.title:void 0,class:"".concat(r.value,"-title")},[ui(i,e,"title")]),D("ul",{class:"".concat(r.value,"-list")},[(b=i.default)===null||b===void 0?void 0:b.call(i)])])}}});var J8=function(){return{prefixCls:String,dashed:Boolean}};const jm=He({compatConfig:{MODE:3},name:"AMenuDivider",props:J8(),setup:function(e){var t=Nt("menu",e),i=t.prefixCls,l=de(function(){var a;return a={},ce(a,"".concat(i.value,"-item-divider"),!0),ce(a,"".concat(i.value,"-item-divider-dashed"),!!e.dashed),a});return function(){return D("li",{class:l.value},null)}}});Yi.install=function(n){return n.component(Yi.name,Yi),n.component(Lo.name,Lo),n.component(Tu.name,Tu),n.component(jm.name,jm),n.component(Om.name,Om),n};Yi.Item=Lo;Yi.Divider=jm;Yi.SubMenu=Tu;Yi.ItemGroup=Om;var D8=function(){return{prefixCls:String,routes:{type:Array},params:We.any,separator:We.any,itemRender:{type:Function}}};function O8(n,e){if(!n.breadcrumbName)return null;var t=Object.keys(e).join("|"),i=n.breadcrumbName.replace(new RegExp(":(".concat(t,")"),"g"),function(l,a){return e[a]||l});return i}function DY(n){var e=n.route,t=n.params,i=n.routes,l=n.paths,a=i.indexOf(e)===i.length-1,o=O8(e,t);return a?D("span",null,[o]):D("a",{href:"#/".concat(l.join("/"))},[o])}const fc=He({compatConfig:{MODE:3},name:"ABreadcrumb",props:D8(),slots:["separator","itemRender"],setup:function(e,t){var i=t.slots,l=Nt("breadcrumb",e),a=l.prefixCls,o=l.direction,r=function(Z,p){return Z=(Z||"").replace(/^\//,""),Object.keys(p).forEach(function(y){Z=Z.replace(":".concat(y),p[y])}),Z},f=function(Z,p,y){var X=yt(Z),m=r(p||"",y);return m&&X.push(m),X},v=function(Z){var p=Z.routes,y=p===void 0?[]:p,X=Z.params,m=X===void 0?{}:X,N=Z.separator,G=Z.itemRender,d=G===void 0?DY:G,u=[];return y.map(function(s){var h=r(s.path,m);h&&u.push(h);var c=[].concat(u),W=null;return s.children&&s.children.length&&(W=D(Yi,null,{default:function(){return[s.children.map(function(I){return D(Yi.Item,{key:I.path||I.breadcrumbName},{default:function(){return[d({route:I,params:m,routes:y,paths:f(c,I.path,m)})]}})})]}})),D(Nh,{overlay:W,separator:N,key:h||s.breadcrumbName},{default:function(){return[d({route:s,params:m,routes:y,paths:c})]}})})};return function(){var b,Z,p,y=e.routes,X=e.params,m=X===void 0?{}:X,N=ti(ui(i,e)),G=(b=ui(i,e,"separator"))!==null&&b!==void 0?b:"/",d=e.itemRender||i.itemRender||DY;y&&y.length>0?p=v({routes:y,params:m,separator:G,itemRender:d}):N.length&&(p=N.map(function(s,h){return Ci(Yt(s.type)==="object"&&(s.type.__ANT_BREADCRUMB_ITEM||s.type.__ANT_BREADCRUMB_SEPARATOR),"Breadcrumb","Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"),Vl(s,{separator:G,key:h})}));var u=(Z={},ce(Z,a.value,!0),ce(Z,"".concat(a.value,"-rtl"),o.value==="rtl"),Z);return D("div",{class:u},[p])}}});var j8=["separator","class"],U8=function(){return{prefixCls:String}};const Um=He({compatConfig:{MODE:3},name:"ABreadcrumbSeparator",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:U8(),setup:function(e,t){var i=t.slots,l=t.attrs,a=Nt("breadcrumb",e),o=a.prefixCls;return function(){var r;l.separator;var f=l.class,v=jt(l,j8),b=ti((r=i.default)===null||r===void 0?void 0:r.call(i));return D("span",P({class:["".concat(o.value,"-separator"),f]},v),[b.length>0?b:"/"])}}});fc.Item=Nh;fc.Separator=Um;fc.install=function(n){return n.component(fc.name,fc),n.component(Nh.name,Nh),n.component(Um.name,Um),n};var U2={},E8={get exports(){return U2},set exports(n){U2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t=1e3,i=6e4,l=36e5,a="millisecond",o="second",r="minute",f="hour",v="day",b="week",Z="month",p="quarter",y="year",X="date",m="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,G=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var g=["th","st","nd","rd"],S=R%100;return"["+R+(g[(S-20)%10]||g[S]||g[0])+"]"}},u=function(R,g,S){var L=String(R);return!L||L.length>=g?R:""+Array(g+1-L.length).join(S)+R},s={s:u,z:function(R){var g=-R.utcOffset(),S=Math.abs(g),L=Math.floor(S/60),V=S%60;return(g<=0?"+":"-")+u(L,2,"0")+":"+u(V,2,"0")},m:function R(g,S){if(g.date()1)return R(T[0])}else{var J=g.name;c[J]=g,V=J}return!L&&V&&(h=V),V||!L&&h},I=function(R,g){if(W(R))return R.clone();var S=typeof g=="object"?g:{};return S.date=R,S.args=arguments,new C(S)},w=s;w.l=M,w.i=W,w.w=function(R,g){return I(R,{locale:g.$L,utc:g.$u,x:g.$x,$offset:g.$offset})};var C=function(){function R(S){this.$L=M(S.locale,null,!0),this.parse(S)}var g=R.prototype;return g.parse=function(S){this.$d=function(L){var V=L.date,Y=L.utc;if(V===null)return new Date(NaN);if(w.u(V))return new Date;if(V instanceof Date)return new Date(V);if(typeof V=="string"&&!/Z$/i.test(V)){var T=V.match(N);if(T){var J=T[2]-1||0,U=(T[7]||"0").substring(0,3);return Y?new Date(Date.UTC(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)):new Date(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)}}return new Date(V)}(S),this.$x=S.x||{},this.init()},g.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},g.$utils=function(){return w},g.isValid=function(){return this.$d.toString()!==m},g.isSame=function(S,L){var V=I(S);return this.startOf(L)<=V&&V<=this.endOf(L)},g.isAfter=function(S,L){return I(S)25){var b=o(this).startOf(i).add(1,i).date(v),Z=o(this).endOf(t);if(b.isBefore(Z))return 1}var p=o(this).startOf(i).date(v).startOf(t).subtract(1,"millisecond"),y=this.diff(p,t,!0);return y<0?o(this).startOf("week").week():Math.ceil(y)},r.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}})})(B8);const A8=H2;var P2={},_8={get exports(){return P2},set exports(n){P2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){i.prototype.weekYear=function(){var l=this.month(),a=this.week(),o=this.year();return a===1&&l===11?o+1:l===0&&a>=52?o-1:o}}})})(_8);const $8=P2;var Q2={},q8={get exports(){return Q2},set exports(n){Q2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){var l=i.prototype,a=l.format;l.format=function(o){var r=this,f=this.$locale();if(!this.isValid())return a.bind(this)(o);var v=this.$utils(),b=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(Z){switch(Z){case"Q":return Math.ceil((r.$M+1)/3);case"Do":return f.ordinal(r.$D);case"gggg":return r.weekYear();case"GGGG":return r.isoWeekYear();case"wo":return f.ordinal(r.week(),"W");case"w":case"ww":return v.s(r.week(),Z==="w"?1:2,"0");case"W":case"WW":return v.s(r.isoWeek(),Z==="W"?1:2,"0");case"k":case"kk":return v.s(String(r.$H===0?24:r.$H),Z==="k"?1:2,"0");case"X":return Math.floor(r.$d.getTime()/1e3);case"x":return r.$d.getTime();case"z":return"["+r.offsetName()+"]";case"zzz":return"["+r.offsetName("long")+"]";default:return Z}});return a.bind(this)(b)}}})})(q8);const e$=Q2;var B2={},t$={get exports(){return B2},set exports(n){B2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,l=/\d\d/,a=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,r={},f=function(m){return(m=+m)+(m>68?1900:2e3)},v=function(m){return function(N){this[m]=+N}},b=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(N){if(!N||N==="Z")return 0;var G=N.match(/([+-]|\d\d)/g),d=60*G[1]+(+G[2]||0);return d===0?0:G[0]==="+"?-d:d}(m)}],Z=function(m){var N=r[m];return N&&(N.indexOf?N:N.s.concat(N.f))},p=function(m,N){var G,d=r.meridiem;if(d){for(var u=1;u<=24;u+=1)if(m.indexOf(d(u,0,N))>-1){G=u>12;break}}else G=m===(N?"pm":"PM");return G},y={A:[o,function(m){this.afternoon=p(m,!1)}],a:[o,function(m){this.afternoon=p(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[l,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[a,v("seconds")],ss:[a,v("seconds")],m:[a,v("minutes")],mm:[a,v("minutes")],H:[a,v("hours")],h:[a,v("hours")],HH:[a,v("hours")],hh:[a,v("hours")],D:[a,v("day")],DD:[l,v("day")],Do:[o,function(m){var N=r.ordinal,G=m.match(/\d+/);if(this.day=G[0],N)for(var d=1;d<=31;d+=1)N(d).replace(/\[|\]/g,"")===m&&(this.day=d)}],M:[a,v("month")],MM:[l,v("month")],MMM:[o,function(m){var N=Z("months"),G=(Z("monthsShort")||N.map(function(d){return d.slice(0,3)})).indexOf(m)+1;if(G<1)throw new Error;this.month=G%12||G}],MMMM:[o,function(m){var N=Z("months").indexOf(m)+1;if(N<1)throw new Error;this.month=N%12||N}],Y:[/[+-]?\d+/,v("year")],YY:[l,function(m){this.year=f(m)}],YYYY:[/\d{4}/,v("year")],Z:b,ZZ:b};function X(m){var N,G;N=m,G=r&&r.formats;for(var d=(m=N.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(I,w,C){var x=C&&C.toUpperCase();return w||G[C]||t[C]||G[x].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,g,S){return g||S.slice(1)})})).match(i),u=d.length,s=0;s-1)return new Date((V==="X"?1e3:1)*L);var T=X(V)(L),J=T.year,U=T.month,K=T.day,H=T.hours,k=T.minutes,F=T.seconds,O=T.milliseconds,Q=T.zone,oe=new Date,se=K||(J||U?1:oe.getDate()),he=J||oe.getFullYear(),pe=0;J&&!U||(pe=U>0?U-1:oe.getMonth());var re=H||0,_=k||0,E=F||0,$=O||0;return Q?new Date(Date.UTC(he,pe,se,re,_,E,$+60*Q.offset*1e3)):Y?new Date(Date.UTC(he,pe,se,re,_,E,$)):new Date(he,pe,se,re,_,E,$)}catch{return new Date("")}}(h,M,c),this.init(),x&&x!==!0&&(this.$L=this.locale(x).$L),C&&h!=this.format(M)&&(this.$d=new Date("")),r={}}else if(M instanceof Array)for(var R=M.length,g=1;g<=R;g+=1){W[1]=M[g-1];var S=G.apply(this,W);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}g===R&&(this.$d=new Date(""))}else u.call(this,s)}}})})(t$);const n$=B2;ml.extend(n$);ml.extend(e$);ml.extend(H8);ml.extend(Q8);ml.extend(A8);ml.extend($8);ml.extend(function(n,e){var t=e.prototype,i=t.format;t.format=function(a){var o=(a||"").replace("Wo","wo");return i.bind(this)(o)}});var i$={bn_BD:"bn-bd",by_BY:"be",en_GB:"en-gb",en_US:"en",fr_BE:"fr",fr_CA:"fr-ca",hy_AM:"hy-am",kmr_IQ:"ku",nl_BE:"nl-be",pt_BR:"pt-br",zh_CN:"zh-cn",zh_HK:"zh-hk",zh_TW:"zh-tw"},Us=function(e){var t=i$[e];return t||e.split("_")[0]},OY=function(){OK(!1,"Not match any format. Please help to fire a issue about this.")},l$={getNow:function(){return ml()},getFixedDate:function(e){return ml(e,["YYYY-M-DD","YYYY-MM-DD"])},getEndDate:function(e){return e.endOf("month")},getWeekDay:function(e){var t=e.locale("en");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:function(e){return e.year()},getMonth:function(e){return e.month()},getDate:function(e){return e.date()},getHour:function(e){return e.hour()},getMinute:function(e){return e.minute()},getSecond:function(e){return e.second()},addYear:function(e,t){return e.add(t,"year")},addMonth:function(e,t){return e.add(t,"month")},addDate:function(e,t){return e.add(t,"day")},setYear:function(e,t){return e.year(t)},setMonth:function(e,t){return e.month(t)},setDate:function(e,t){return e.date(t)},setHour:function(e,t){return e.hour(t)},setMinute:function(e,t){return e.minute(t)},setSecond:function(e,t){return e.second(t)},isAfter:function(e,t){return e.isAfter(t)},isValidate:function(e){return e.isValid()},locale:{getWeekFirstDay:function(e){return ml().locale(Us(e)).localeData().firstDayOfWeek()},getWeekFirstDate:function(e,t){return t.locale(Us(e)).weekday(0)},getWeek:function(e,t){return t.locale(Us(e)).week()},getShortWeekDays:function(e){return ml().locale(Us(e)).localeData().weekdaysMin()},getShortMonths:function(e){return ml().locale(Us(e)).localeData().monthsShort()},format:function(e,t,i){return t.locale(Us(e)).format(i)},parse:function(e,t,i){for(var l=Us(e),a=0;aa$)return t;do e%2&&(t+=n),e=r$(e/2),e&&(n+=n);while(e);return t}function A0(n,e){for(var t=-1,i=n==null?0:n.length,l=Array(i);++tl?0:l+e),t=t>l?l:t,t<0&&(t+=l),l=e>t?0:t-e>>>0,e>>>=0;for(var a=Array(l);++i=i?n:e3(n,e,t)}var u$="\\ud800-\\udfff",d$="\\u0300-\\u036f",h$="\\ufe20-\\ufe2f",f$="\\u20d0-\\u20ff",b$=d$+h$+f$,m$="\\ufe0e\\ufe0f",p$="\\u200d",y$=RegExp("["+p$+u$+b$+m$+"]");function AG(n){return y$.test(n)}function t3(n){return function(e){return e==null?void 0:e[n]}}var Z$=t3("length");const v$=Z$;var n3="\\ud800-\\udfff",W$="\\u0300-\\u036f",G$="\\ufe20-\\ufe2f",X$="\\u20d0-\\u20ff",N$=W$+G$+X$,M$="\\ufe0e\\ufe0f",I$="["+n3+"]",A2="["+N$+"]",_2="\\ud83c[\\udffb-\\udfff]",Y$="(?:"+A2+"|"+_2+")",i3="[^"+n3+"]",l3="(?:\\ud83c[\\udde6-\\uddff]){2}",a3="[\\ud800-\\udbff][\\udc00-\\udfff]",w$="\\u200d",r3=Y$+"?",o3="["+M$+"]?",g$="(?:"+w$+"(?:"+[i3,l3,a3].join("|")+")"+o3+r3+")*",V$=o3+r3+g$,L$="(?:"+[i3+A2+"?",A2,l3,a3,I$].join("|")+")",KY=RegExp(_2+"(?="+_2+")|"+L$+V$,"g");function R$(n){for(var e=KY.lastIndex=0;KY.test(n);)++e;return e}function _G(n){return AG(n)?R$(n):v$(n)}function T$(n){return n.split("")}var s3="\\ud800-\\udfff",x$="\\u0300-\\u036f",C$="\\ufe20-\\ufe2f",S$="\\u20d0-\\u20ff",z$=x$+C$+S$,k$="\\ufe0e\\ufe0f",F$="["+s3+"]",$2="["+z$+"]",q2="\\ud83c[\\udffb-\\udfff]",J$="(?:"+$2+"|"+q2+")",c3="[^"+s3+"]",u3="(?:\\ud83c[\\udde6-\\uddff]){2}",d3="[\\ud800-\\udbff][\\udc00-\\udfff]",D$="\\u200d",h3=J$+"?",f3="["+k$+"]?",O$="(?:"+D$+"(?:"+[c3,u3,d3].join("|")+")"+f3+h3+")*",j$=f3+h3+O$,U$="(?:"+[c3+$2+"?",$2,u3,d3,F$].join("|")+")",E$=RegExp(q2+"(?="+q2+")|"+U$+j$,"g");function K$(n){return n.match(E$)||[]}function H$(n){return AG(n)?K$(n):T$(n)}var P$=Math.ceil;function b3(n,e){e=e===void 0?" ":BG(e);var t=e.length;if(t<2)return t?jY(e,n):e;var i=jY(e,P$(n/_G(e)));return AG(e)?c$(H$(i),0,n).join(""):i.slice(0,n)}var Q$=/\s/;function B$(n){for(var e=n.length;e--&&Q$.test(n.charAt(e)););return e}var A$=/^\s+/;function _$(n){return n&&n.slice(0,B$(n)+1).replace(A$,"")}var HY=0/0,$$=/^[-+]0x[0-9a-f]+$/i,q$=/^0b[01]+$/i,eq=/^0o[0-7]+$/i,tq=parseInt;function ev(n){if(typeof n=="number")return n;if(_0(n))return HY;if(wr(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=wr(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=_$(n);var t=q$.test(n);return t||eq.test(n)?tq(n.slice(2),t?2:8):$$.test(n)?HY:+n}var PY=1/0,nq=17976931348623157e292;function iq(n){if(!n)return n===0?n:0;if(n=ev(n),n===PY||n===-PY){var e=n<0?-1:1;return e*nq}return n===n?n:0}function $G(n){var e=iq(n),t=e%1;return e===e?t?e-t:e:0}function qG(n){return n==null?"":BG(n)}function m3(n,e,t){n=qG(n),e=$G(e);var i=e?_G(n):0;return e&&i1&&(o=e.addDate(o,-7)),o}function Bd(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(e){case"year":return t.addYear(n,i*10);case"quarter":case"month":return t.addYear(n,i);default:return t.addMonth(n,i)}}function wl(n,e){var t=e.generateConfig,i=e.locale,l=e.format;return typeof l=="function"?l(n):t.locale.format(i.locale,n,l)}function N3(n,e){var t=e.generateConfig,i=e.locale,l=e.formatList;return!n||typeof l[0]=="function"?null:t.locale.parse(i.locale,n,l)}function lv(n){var e=n.cellDate,t=n.mode,i=n.disabledDate,l=n.generateConfig;if(!i)return!1;var a=function(X,m,N){for(var G=m;G<=N;){var d=void 0;switch(X){case"date":{if(d=l.setDate(e,G),!i(d))return!1;break}case"month":{if(d=l.setMonth(e,G),!lv({cellDate:d,mode:"month",generateConfig:l,disabledDate:i}))return!1;break}case"year":{if(d=l.setYear(e,G),!lv({cellDate:d,mode:"year",generateConfig:l,disabledDate:i}))return!1;break}}G+=1}return!0};switch(t){case"date":case"week":return i(e);case"month":{var o=1,r=l.getDate(l.getEndDate(e));return a("date",o,r)}case"quarter":{var f=Math.floor(l.getMonth(e)/3)*3,v=f+2;return a("month",f,v)}case"year":return a("month",0,11);case"decade":{var b=l.getYear(e),Z=Math.floor(b/Zr)*Zr,p=Z+Zr-1;return a("year",Z,p)}}}function a1(n){var e=zi(n),t=Ar(),i=t.hideHeader;if(i.value)return null;var l=e.prefixCls,a=e.generateConfig,o=e.locale,r=e.value,f=e.format,v="".concat(l,"-header");return D(gs,{prefixCls:v},{default:function(){return[r?wl(r,{locale:o,format:f,generateConfig:a}):" "]}})}a1.displayName="TimeHeader";a1.inheritAttrs=!1;const ub=He({name:"TimeUnitColumn",props:["prefixCls","units","onSelect","value","active","hideDisabledOptions"],setup:function(e){var t=Ar(),i=t.open,l=Ne(null),a=Ne(new Map),o=Ne();return rt(function(){return e.value},function(){var r=a.value.get(e.value);r&&i.value!==!1&&nv(l.value,r.offsetTop,120)}),fn(function(){var r;(r=o.value)===null||r===void 0||r.call(o)}),rt(i,function(){var r;(r=o.value)===null||r===void 0||r.call(o),cn(function(){if(i.value){var f=a.value.get(e.value);f&&(o.value=rq(f,function(){nv(l.value,f.offsetTop,0)}))}})},{immediate:!0,flush:"post"}),function(){var r=e.prefixCls,f=e.units,v=e.onSelect,b=e.value,Z=e.active,p=e.hideDisabledOptions,y="".concat(r,"-cell");return D("ul",{class:_e("".concat(r,"-column"),ce({},"".concat(r,"-column-active"),Z)),ref:l,style:{position:"relative"}},[f.map(function(X){var m;return p&&X.disabled?null:D("li",{key:X.value,ref:function(G){a.value.set(X.value,G)},class:_e(y,(m={},ce(m,"".concat(y,"-disabled"),X.disabled),ce(m,"".concat(y,"-selected"),b===X.value),m)),onClick:function(){X.disabled||v(X.value)}},[D("div",{class:"".concat(y,"-inner")},[X.label])])})])}}});function M3(n,e){for(var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",i=String(n);i.length=12:!1}),l=de(function(){return e.use12Hours?t.value%12:t.value}),a=de(function(){return e.value?e.generateConfig.getMinute(e.value):-1}),o=de(function(){return e.value?e.generateConfig.getSecond(e.value):-1}),r=Ne(e.generateConfig.getNow()),f=Ne(),v=Ne(),b=Ne();MW(function(){r.value=e.generateConfig.getNow()}),qt(function(){if(e.disabledTime){var G=e.disabledTime(r),d=[G.disabledHours,G.disabledMinutes,G.disabledSeconds];f.value=d[0],v.value=d[1],b.value=d[2]}else{var u=[e.disabledHours,e.disabledMinutes,e.disabledSeconds];f.value=u[0],v.value=u[1],b.value=u[2]}});var Z=function(d,u,s,h){var c=e.value||e.generateConfig.getNow(),W=Math.max(0,u),M=Math.max(0,s),I=Math.max(0,h);return c=y3(e.generateConfig,c,!e.use12Hours||!d?W:W+12,M,I),c},p=de(function(){var G;return aZ(0,23,(G=e.hourStep)!==null&&G!==void 0?G:1,f.value&&f.value())}),y=de(function(){if(!e.use12Hours)return[!1,!1];var G=[!0,!0];return p.value.forEach(function(d){var u=d.disabled,s=d.value;u||(s>=12?G[1]=!1:G[0]=!1)}),G}),X=de(function(){return e.use12Hours?p.value.filter(i.value?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var d=G.value%12,u=d===0?"12":M3(d,2);return P(P({},G),{},{label:u,value:d})}):p.value}),m=de(function(){var G;return aZ(0,59,(G=e.minuteStep)!==null&&G!==void 0?G:1,v.value&&v.value(t.value))}),N=de(function(){var G;return aZ(0,59,(G=e.secondStep)!==null&&G!==void 0?G:1,b.value&&b.value(t.value,a))});return function(){var G=e.prefixCls,d=e.operationRef,u=e.activeColumnIndex,s=e.showHour,h=e.showMinute,c=e.showSecond,W=e.use12Hours,M=e.hideDisabledOptions,I=e.onSelect,w=[],C="".concat(G,"-content"),x="".concat(G,"-time-panel");d.value={onUpDown:function(L){var V=w[u];if(V)for(var Y=V.units.findIndex(function(K){return K.value===V.value}),T=V.units.length,J=1;J2&&arguments[2]!==void 0?arguments[2]:!1,he=e.picker,pe=e.generateConfig,re=e.onSelect,_=e.onChange,E=e.disabledDate;(L.value===he||se)&&(W(Q),re&&re(Q),Z&&Z(Q,oe),_&&!Wu(pe,Q,c.value)&&!(E!=null&&E(Q))&&_(Q))},K=function(Q){return u.value&&u.value.onKeydown?([bt.LEFT,bt.RIGHT,bt.UP,bt.DOWN,bt.PAGE_UP,bt.PAGE_DOWN,bt.ENTER].includes(Q.which)&&Q.preventDefault(),u.value.onKeydown(Q)):!1},H=function(Q){u.value&&u.value.onBlur&&u.value.onBlur(Q)},k=function(){var Q=e.generateConfig,oe=e.hourStep,se=e.minuteStep,he=e.secondStep,pe=Q.getNow(),re=lq(Q.getHour(pe),Q.getMinute(pe),Q.getSecond(pe),a.value?oe:1,o.value?se:1,r.value?he:1),_=y3(Q,pe,re[0],re[1],re[2]);U(_,"submit")},F=de(function(){var O,Q=e.prefixCls,oe=e.direction;return _e("".concat(Q,"-panel"),(O={},ce(O,"".concat(Q,"-panel-has-range"),G&&G.value&&G.value[0]&&G.value[1]),ce(O,"".concat(Q,"-panel-has-range-hover"),d&&d.value&&d.value[0]&&d.value[1]),ce(O,"".concat(Q,"-panel-rtl"),oe==="rtl"),O))});return e1(P(P({},f),{},{mode:L,hideHeader:de(function(){var O;return e.hideHeader!==void 0?e.hideHeader:(O=f.hideHeader)===null||O===void 0?void 0:O.value}),hidePrevBtn:de(function(){return m.value&&N.value==="right"}),hideNextBtn:de(function(){return m.value&&N.value==="left"})})),rt(function(){return e.value},function(){e.value&&C(e.value)}),function(){var O=e.prefixCls,Q=O===void 0?"ant-picker":O,oe=e.locale,se=e.generateConfig,he=e.disabledDate,pe=e.picker,re=pe===void 0?"date":pe,_=e.tabindex,E=_===void 0?0:_,$=e.showNow,ae=e.showTime,le=e.showToday,ee=e.renderExtraFooter,te=e.onMousedown,be=e.onOk,ne=e.components;v&&N.value!=="right"&&(v.value={onKeydown:K,onClose:function(){u.value&&u.value.onClose&&u.value.onClose()}});var B,q=P(P(P({},i),e),{},{operationRef:u,prefixCls:Q,viewDate:w.value,value:c.value,onViewDateChange:x,sourceMode:Y.value,onPanelChange:J,disabledDate:he});switch(delete q.onChange,delete q.onSelect,L.value){case"decade":B=D(i1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"year":B=D(y1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"month":B=D(d1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"quarter":B=D(b1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"week":B=D(s1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"time":delete q.showTime,B=D(q0,P(P(P({},q),Yt(ae)==="object"?ae:null),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;default:ae?B=D(o1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null):B=D(Dh,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null)}var ue,ve;p!=null&&p.value||(ue=V3(Q,L.value,ee),ve=L3({prefixCls:Q,components:ne,needConfirmButton:l.value,okDisabled:!c.value||he&&he(c.value),locale:oe,showNow:$,onNow:l.value&&k,onOk:function(){c.value&&(U(c.value,"submit",!0),be&&be(c.value))}}));var Ge;if(le&&L.value==="date"&&re==="date"&&!ae){var Je=se.getNow(),xe="".concat(Q,"-today-btn"),ke=he&&he(Je);Ge=D("a",{class:_e(xe,ke&&"".concat(xe,"-disabled")),"aria-disabled":ke,onClick:function(){ke||U(Je,"mouse",!0)}},[oe.today])}return D("div",{tabindex:E,class:_e(F.value,i.class),style:i.style,onKeydown:K,onBlur:H,onMousedown:te,ref:b},[B,ue||ve||Ge?D("div",{class:"".concat(Q,"-footer")},[ue,ve,Ge]):null])}}})}var gq=wq();const Z1=function(n){return D(gq,n)};var Vq={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function R3(n,e){var t,i=e.slots,l=zi(n),a=l.prefixCls,o=l.popupStyle,r=l.visible,f=l.dropdownClassName,v=l.dropdownAlign,b=l.transitionName,Z=l.getPopupContainer,p=l.range,y=l.popupPlacement,X=l.direction,m="".concat(a,"-dropdown"),N=function(){return y!==void 0?y:X==="rtl"?"bottomRight":"bottomLeft"};return D(Hu,{showAction:[],hideAction:[],popupPlacement:N(),builtinPlacements:Vq,prefixCls:m,popupTransitionName:b,popupAlign:v,popupVisible:r,popupClassName:_e(f,(t={},ce(t,"".concat(m,"-range"),p),ce(t,"".concat(m,"-rtl"),X==="rtl"),t)),popupStyle:o,getPopupContainer:Z,tryPopPortal:!0},{default:i.default,popup:i.popupElement})}function rv(n){var e=n.open,t=n.value,i=n.isClickOutside,l=n.triggerOpen,a=n.forwardKeydown,o=n.onKeydown,r=n.blurToCancel,f=n.onSubmit,v=n.onCancel,b=n.onFocus,Z=n.onBlur,p=Ne(!1),y=Ne(!1),X=Ne(!1),m=Ne(!1),N=Ne(!1),G=de(function(){return{onMousedown:function(){p.value=!0,l(!0)},onKeydown:function(s){var h=function(){N.value=!0};if(o(s,h),!N.value){switch(s.which){case bt.ENTER:{e.value?f()!==!1&&(p.value=!0):l(!0),s.preventDefault();return}case bt.TAB:{p.value&&e.value&&!s.shiftKey?(p.value=!1,s.preventDefault()):!p.value&&e.value&&!a(s)&&s.shiftKey&&(p.value=!0,s.preventDefault());return}case bt.ESC:{p.value=!0,v();return}}!e.value&&![bt.SHIFT].includes(s.which)?l(!0):p.value||a(s)}},onFocus:function(s){p.value=!0,y.value=!0,b&&b(s)},onBlur:function(s){if(X.value||!i(document.activeElement)){X.value=!1;return}r.value?setTimeout(function(){for(var h=document,c=h.activeElement;c&&c.shadowRoot;)c=c.shadowRoot.activeElement;i(c)&&v()},0):e.value&&(l(!1),m.value&&f()),y.value=!1,Z&&Z(s)}}});rt(e,function(){m.value=!1}),rt(t,function(){m.value=!0});var d=Ne();return Kt(function(){d.value=oq(function(u){var s=sq(u);if(e.value){var h=i(s);h?(!y.value||h)&&l(!1):(X.value=!0,At(function(){X.value=!1}))}})}),fn(function(){d.value&&d.value()}),[G,{focused:y,typing:p}]}function ov(n){var e=n.valueTexts,t=n.onTextChange,i=Ne("");function l(o){i.value=o,t(o)}function a(){i.value=e.value[0]}return rt(function(){return yt(e.value)},function(o){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];o.join("||")!==r.join("||")&&e.value.every(function(f){return f!==i.value})&&a()},{immediate:!0}),[i,l,a]}function Em(n,e){var t=e.formatList,i=e.generateConfig,l=e.locale,a=gG(function(){if(!n.value)return[[""],""];for(var f="",v=[],b=0;b1&&arguments[1]!==void 0?arguments[1]:!1;if(At.cancel(o),X){a.value=y;return}o=At(function(){a.value=y})}var f=Em(a,{formatList:t,generateConfig:i,locale:l}),v=ft(f,2),b=v[1];function Z(y){r(y)}function p(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;r(null,y)}return rt(n,function(){p(!0)}),fn(function(){At.cancel(o)}),[b,Z,p]}function Lq(){return He({name:"Picker",inheritAttrs:!1,props:["prefixCls","id","tabindex","dropdownClassName","dropdownAlign","popupStyle","transitionName","generateConfig","locale","inputReadOnly","allowClear","autofocus","showTime","showNow","showHour","showMinute","showSecond","picker","format","use12Hours","value","defaultValue","open","defaultOpen","defaultOpenValue","suffixIcon","clearIcon","disabled","disabledDate","placeholder","getPopupContainer","panelRender","inputRender","onChange","onOpenChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onContextmenu","onClick","onKeydown","onSelect","direction","autocomplete","showToday","renderExtraFooter","dateRender","minuteStep","hourStep","secondStep","hideDisabledOptions"],setup:function(e,t){var i=t.attrs,l=t.expose,a=Ne(null),o=de(function(){var _;return(_=e.picker)!==null&&_!==void 0?_:"date"}),r=de(function(){return o.value==="date"&&!!e.showTime||o.value==="time"}),f=de(function(){return I3(Z3(e.format,o.value,e.showTime,e.use12Hours))}),v=Ne(null),b=Ne(null),Z=Ne(null),p=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue}),y=ft(p,2),X=y[0],m=y[1],N=Ne(X.value),G=function(E){N.value=E},d=Ne(null),u=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(E){return e.disabled?!1:E},onChange:function(E){e.onOpenChange&&e.onOpenChange(E),!E&&d.value&&d.value.onClose&&d.value.onClose()}}),s=ft(u,2),h=s[0],c=s[1],W=Em(N,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),M=ft(W,2),I=M[0],w=M[1],C=ov({valueTexts:I,onTextChange:function(E){var $=N3(E,{locale:e.locale,formatList:f.value,generateConfig:e.generateConfig});$&&(!e.disabledDate||!e.disabledDate($))&&G($)}}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=function(E){var $=e.onChange,ae=e.generateConfig,le=e.locale;G(E),m(E),$&&!Wu(ae,X.value,E)&&$(E,E?wl(E,{generateConfig:ae,locale:le,format:f.value[0]}):"")},V=function(E){e.disabled&&E||c(E)},Y=function(E){return h.value&&d.value&&d.value.onKeydown?d.value.onKeydown(E):!1},T=function(){e.onMouseup&&e.onMouseup.apply(e,arguments),a.value&&(a.value.focus(),V(!0))},J=rv({blurToCancel:r,open:h,value:R,triggerOpen:V,forwardKeydown:Y,isClickOutside:function(E){return!W3([v.value,b.value,Z.value],E)},onSubmit:function(){return!N.value||e.disabledDate&&e.disabledDate(N.value)?!1:(L(N.value),V(!1),S(),!0)},onCancel:function(){V(!1),G(X.value),S()},onKeydown:function(E,$){var ae;(ae=e.onKeydown)===null||ae===void 0||ae.call(e,E,$)},onFocus:function(E){var $;($=e.onFocus)===null||$===void 0||$.call(e,E)},onBlur:function(E){var $;($=e.onBlur)===null||$===void 0||$.call(e,E)}}),U=ft(J,2),K=U[0],H=U[1],k=H.focused,F=H.typing;rt([h,I],function(){h.value||(G(X.value),!I.value.length||I.value[0]===""?g(""):w.value!==R.value&&S())}),rt(o,function(){h.value||S()}),rt(X,function(){G(X.value)});var O=sv(R,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),Q=ft(O,3),oe=Q[0],se=Q[1],he=Q[2],pe=function(E,$){($==="submit"||$!=="key"&&!r.value)&&(L(E),V(!1))};e1({operationRef:d,hideHeader:de(function(){return o.value==="time"}),panelRef:v,onSelect:pe,open:h,defaultOpenValue:Ot(e,"defaultOpenValue"),onDateMouseenter:se,onDateMouseleave:he}),l({focus:function(){a.value&&a.value.focus()},blur:function(){a.value&&a.value.blur()}});var re=sx();return function(){var _,E=e.prefixCls,$=E===void 0?"rc-picker":E,ae=e.id,le=e.tabindex,ee=e.dropdownClassName,te=e.dropdownAlign,be=e.popupStyle,ne=e.transitionName,B=e.generateConfig,q=e.locale,ue=e.inputReadOnly,ve=e.allowClear,Ge=e.autofocus,Je=e.picker,xe=Je===void 0?"date":Je;e.defaultOpenValue;var ke=e.suffixIcon,Pe=e.clearIcon,Be=e.disabled,Te=e.placeholder,we=e.getPopupContainer,Se=e.panelRender,De=e.onMousedown,me=e.onMouseenter,Ve=e.onMouseleave,Me=e.onContextmenu,Ie=e.onClick,Ze=e.onSelect,Ce=e.direction,ye=e.autocomplete,Ue=ye===void 0?"off":ye,qe=P(P(P({},e),i),{},{class:_e(ce({},"".concat($,"-panel-focused"),!F.value)),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null}),ie=D(Z1,P(P({},qe),{},{generateConfig:B,value:N.value,locale:q,tabindex:-1,onSelect:function(ot){Ze==null||Ze(ot),G(ot)},direction:Ce,onPanelChange:function(ot,wt){var Mt=e.onPanelChange;he(!0),Mt==null||Mt(ot,wt)}}),null);Se&&(ie=Se(ie));var Oe=D("div",{class:"".concat($,"-panel-container"),onMousedown:function(ot){ot.preventDefault()}},[ie]),Ke;ke&&(Ke=D("span",{class:"".concat($,"-suffix")},[ke]));var Xe;ve&&X.value&&!Be&&(Xe=D("span",{onMousedown:function(ot){ot.preventDefault(),ot.stopPropagation()},onMouseup:function(ot){ot.preventDefault(),ot.stopPropagation(),L(null),V(!1)},class:"".concat($,"-clear"),role:"button"},[Pe||D("span",{class:"".concat($,"-clear-btn")},null)]));var Re=P(P(P({id:ae,tabindex:le,disabled:Be,readonly:ue||typeof f.value[0]=="function"||!F.value,value:oe.value||R.value,onInput:function(ot){g(ot.target.value)},autofocus:Ge,placeholder:Te,ref:a,title:R.value},K.value),{},{size:v3(xe,f.value[0],B)},Y3(e)),{},{autocomplete:Ue}),Ae=e.inputRender?e.inputRender(Re):D("input",Re,null),ct=Ce==="rtl"?"bottomRight":"bottomLeft";return D(R3,{visible:h.value,popupStyle:be,prefixCls:$,dropdownClassName:ee,dropdownAlign:te,getPopupContainer:we,transitionName:ne,popupPlacement:ct,direction:Ce},{default:function(){return[D("div",{ref:Z,class:_e($,i.class,(_={},ce(_,"".concat($,"-disabled"),Be),ce(_,"".concat($,"-focused"),k.value),ce(_,"".concat($,"-rtl"),Ce==="rtl"),_)),style:i.style,onMousedown:De,onMouseup:T,onMouseenter:me,onMouseleave:Ve,onContextmenu:Me,onClick:Ie},[D("div",{class:_e("".concat($,"-input"),ce({},"".concat($,"-input-placeholder"),!!oe.value)),ref:b},[Ae,Ke,Xe]),re()])]},popupElement:function(){return Oe}})}}})}const Rq=Lq();function Tq(n,e){var t=n.picker,i=n.locale,l=n.selectedValue,a=n.disabledDate,o=n.disabled,r=n.generateConfig,f=de(function(){return Kn(l.value,0)}),v=de(function(){return Kn(l.value,1)});function b(m){return r.value.locale.getWeekFirstDate(i.value.locale,m)}function Z(m){var N=r.value.getYear(m),G=r.value.getMonth(m);return N*100+G}function p(m){var N=r.value.getYear(m),G=iv(r.value,m);return N*10+G}var y=function(N){var G;if(a&&a!==null&&a!==void 0&&(G=a.value)!==null&&G!==void 0&&G.call(a,N))return!0;if(o[1]&&v)return!wo(r.value,N,v.value)&&r.value.isAfter(N,v.value);if(e.value[1]&&v.value)switch(t.value){case"quarter":return p(N)>p(v.value);case"month":return Z(N)>Z(v.value);case"week":return b(N)>b(v.value);default:return!wo(r.value,N,v.value)&&r.value.isAfter(N,v.value)}return!1},X=function(N){var G;if((G=a.value)!==null&&G!==void 0&&G.call(a,N))return!0;if(o[0]&&f)return!wo(r.value,N,v.value)&&r.value.isAfter(f.value,N);if(e.value[0]&&f.value)switch(t.value){case"quarter":return p(N)1&&arguments[1]!==void 0?arguments[1]:!0;Wl()?Kt(n):e?n():cn(n)}function Jq(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=Ne(),i=function(){return t.value=Boolean(n())};return i(),Fq(i,e),t}var rZ,oZ,x3=typeof window<"u";x3&&(!((rZ=window)===null||rZ===void 0||(oZ=rZ.navigator)===null||oZ===void 0)&&oZ.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var Dq=x3?window:void 0,Oq=["window"];function jq(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.window,l=i===void 0?Dq:i,a=jt(t,Oq),o,r=Jq(function(){return l&&"ResizeObserver"in l}),f=function(){o&&(o.disconnect(),o=void 0)},v=rt(function(){return T3(n)},function(Z){f(),r.value&&l&&Z&&(o=new ResizeObserver(e),o.observe(Z,a))},{immediate:!0,flush:"post"}),b=function(){f(),v()};return zq(b),{isSupported:r,stop:b}}function Xd(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.box,l=i===void 0?"content-box":i,a=Ne(e.width),o=Ne(e.height);return jq(n,function(r){var f=ft(r,1),v=f[0],b=l==="border-box"?v.borderBoxSize:l==="content-box"?v.contentBoxSize:v.devicePixelContentBoxSize;b?(a.value=b.reduce(function(Z,p){var y=p.inlineSize;return Z+y},0),o.value=b.reduce(function(Z,p){var y=p.blockSize;return Z+y},0)):(a.value=v.contentRect.width,o.value=v.contentRect.height)},t),rt(function(){return T3(n)},function(r){a.value=r?e.width:0,o.value=r?e.height:0}),{width:a,height:o}}function _Y(n,e){return n&&n[0]&&n[1]&&e.isAfter(n[0],n[1])?[n[1],n[0]]:n}function $Y(n,e,t,i){return!!(n||i&&i[e]||t[(e+1)%2])}function Uq(){return He({name:"RangerPicker",inheritAttrs:!1,props:["prefixCls","id","popupStyle","dropdownClassName","transitionName","dropdownAlign","getPopupContainer","generateConfig","locale","placeholder","autofocus","disabled","format","picker","showTime","showNow","showHour","showMinute","showSecond","use12Hours","separator","value","defaultValue","defaultPickerValue","open","defaultOpen","disabledDate","disabledTime","dateRender","panelRender","ranges","allowEmpty","allowClear","suffixIcon","clearIcon","pickerRef","inputReadOnly","mode","renderExtraFooter","onChange","onOpenChange","onPanelChange","onCalendarChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onClick","onOk","onKeydown","components","order","direction","activePickerIndex","autocomplete","minuteStep","hourStep","secondStep","hideDisabledOptions","disabledMinutes"],setup:function(e,t){var i=t.attrs,l=t.expose,a=de(function(){return e.picker==="date"&&!!e.showTime||e.picker==="time"}),o=sx(),r=Ne({}),f=Ne(null),v=Ne(null),b=Ne(null),Z=Ne(null),p=Ne(null),y=Ne(null),X=Ne(null),m=Ne(null),N=de(function(){return I3(Z3(e.format,e.picker,e.showTime,e.use12Hours))}),G=Wi(0,{value:Ot(e,"activePickerIndex")}),d=ft(G,2),u=d[0],s=d[1],h=Ne(null),c=de(function(){var _t=e.disabled;return Array.isArray(_t)?_t:[_t||!1,_t||!1]}),W=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue,postState:function(Rt){return e.picker==="time"&&!e.order?Rt:_Y(Rt,e.generateConfig)}}),M=ft(W,2),I=M[0],w=M[1],C=Sq({values:I,picker:Ot(e,"picker"),defaultDates:e.defaultPickerValue,generateConfig:Ot(e,"generateConfig")}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=Wi(I.value,{postState:function(Rt){var zt=Rt;if(c.value[0]&&c.value[1])return zt;for(var Ht=0;Ht<2;Ht+=1)c[Ht]&&!Kn(zt,Ht)&&!Kn(e.allowEmpty,Ht)&&(zt=tr(zt,e.generateConfig.getNow(),Ht));return zt}}),V=ft(L,2),Y=V[0],T=V[1],J=Wi([e.picker,e.picker],{value:Ot(e,"mode")}),U=ft(J,2),K=U[0],H=U[1];rt(function(){return e.picker},function(){H([e.picker,e.picker])});var k=function(Rt,zt){var Ht;H(Rt),(Ht=e.onPanelChange)===null||Ht===void 0||Ht.call(e,zt,Rt)},F=Tq({picker:Ot(e,"picker"),selectedValue:Y,locale:Ot(e,"locale"),disabled:c,disabledDate:Ot(e,"disabledDate"),generateConfig:Ot(e,"generateConfig")},r),O=ft(F,2),Q=O[0],oe=O[1],se=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(Rt){return c.value[u.value]?!1:Rt},onChange:function(Rt){var zt;(zt=e.onOpenChange)===null||zt===void 0||zt.call(e,Rt),!Rt&&h.value&&h.value.onClose&&h.value.onClose()}}),he=ft(se,2),pe=he[0],re=he[1],_=de(function(){return pe.value&&u.value===0}),E=de(function(){return pe.value&&u.value===1}),$=Ne(0),ae=Ne(0),le=Ne(0),ee=Xd(f),te=ee.width;rt([pe,te],function(){!pe.value&&f.value&&(le.value=te.value)});var be=Xd(v),ne=be.width,B=Xd(m),q=B.width,ue=Xd(b),ve=ue.width,Ge=Xd(p),Je=Ge.width;rt([u,pe,ne,q,ve,Je,function(){return e.direction}],function(){ae.value=0,pe.value&&u.value?b.value&&p.value&&v.value&&(ae.value=ve.value+Je.value,ne.value&&q.value&&ae.value>ne.value-q.value-(e.direction==="rtl"||m.value.offsetLeft>ae.value?0:m.value.offsetLeft)&&($.value=ae.value)):u.value===0&&($.value=0)},{immediate:!0});var xe=Ne();function ke(_t,Rt){if(_t)clearTimeout(xe.value),r.value[Rt]=!0,s(Rt),re(_t),pe.value||S(null,Rt);else if(u.value===Rt){re(_t);var zt=r.value;xe.value=setTimeout(function(){zt===r.value&&(r.value={})})}}function Pe(_t){ke(!0,_t),setTimeout(function(){var Rt=[y,X][_t];Rt.value&&Rt.value.focus()},0)}function Be(_t,Rt){var zt=_t,Ht=Kn(zt,0),$t=Kn(zt,1),si=e.generateConfig,Ul=e.locale,Xl=e.picker,El=e.order,ll=e.onCalendarChange,Na=e.allowEmpty,Rl=e.onChange,dl=e.showTime;Ht&&$t&&si.isAfter(Ht,$t)&&(Xl==="week"&&!X3(si,Ul.locale,Ht,$t)||Xl==="quarter"&&!G3(si,Ht,$t)||Xl!=="week"&&Xl!=="quarter"&&Xl!=="time"&&!(dl?Wu(si,Ht,$t):wo(si,Ht,$t))?(Rt===0?(zt=[Ht,null],$t=null):(Ht=null,zt=[null,$t]),r.value=ce({},Rt,!0)):(Xl!=="time"||El!==!1)&&(zt=_Y(zt,si))),T(zt);var Tl=zt&&zt[0]?wl(zt[0],{generateConfig:si,locale:Ul,format:N.value[0]}):"",hl=zt&&zt[1]?wl(zt[1],{generateConfig:si,locale:Ul,format:N.value[0]}):"";if(ll){var Nl={range:Rt===0?"start":"end"};ll(zt,[Tl,hl],Nl)}var fl=$Y(Ht,0,c.value,Na),eo=$Y($t,1,c.value,Na),Ml=zt===null||fl&&eo;Ml&&(w(zt),Rl&&(!Wu(si,Kn(I.value,0),Ht)||!Wu(si,Kn(I.value,1),$t))&&Rl(zt,[Tl,hl]));var xl=null;Rt===0&&!c.value[1]?xl=1:Rt===1&&!c.value[0]&&(xl=0),xl!==null&&xl!==u.value&&(!r.value[xl]||!Kn(zt,xl))&&Kn(zt,Rt)?Pe(xl):ke(!1,Rt)}var Te=function(Rt){return pe&&h.value&&h.value.onKeydown?h.value.onKeydown(Rt):!1},we={formatList:N,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")},Se=Em(de(function(){return Kn(Y.value,0)}),we),De=ft(Se,2),me=De[0],Ve=De[1],Me=Em(de(function(){return Kn(Y.value,1)}),we),Ie=ft(Me,2),Ze=Ie[0],Ce=Ie[1],ye=function(Rt,zt){var Ht=N3(Rt,{locale:e.locale,formatList:N.value,generateConfig:e.generateConfig}),$t=zt===0?Q:oe;Ht&&!$t(Ht)&&(T(tr(Y.value,Ht,zt)),S(Ht,zt))},Ue=ov({valueTexts:me,onTextChange:function(Rt){return ye(Rt,0)}}),qe=ft(Ue,3),ie=qe[0],Oe=qe[1],Ke=qe[2],Xe=ov({valueTexts:Ze,onTextChange:function(Rt){return ye(Rt,1)}}),Re=ft(Xe,3),Ae=Re[0],ct=Re[1],lt=Re[2],ot=di(null),wt=ft(ot,2),Mt=wt[0],xt=wt[1],Gt=di(null),Zt=ft(Gt,2),Tt=Zt[0],Ct=Zt[1],St=sv(ie,we),Pt=ft(St,3),Ut=Pt[0],kt=Pt[1],en=Pt[2],nn=sv(Ae,we),Ft=ft(nn,3),Ln=Ft[0],An=Ft[1],Gi=Ft[2],Pi=function(Rt){Ct(tr(Y.value,Rt,u.value)),u.value===0?kt(Rt):An(Rt)},Gl=function(){Ct(tr(Y.value,null,u.value)),u.value===0?en():Gi()},Fn=function(Rt,zt){return{forwardKeydown:Te,onBlur:function($t){var si;(si=e.onBlur)===null||si===void 0||si.call(e,$t)},isClickOutside:function($t){return!W3([v.value,b.value,Z.value,f.value],$t)},onFocus:function($t){var si;s(Rt),(si=e.onFocus)===null||si===void 0||si.call(e,$t)},triggerOpen:function($t){ke($t,Rt)},onSubmit:function(){if(!Y.value||e.disabledDate&&e.disabledDate(Y.value[Rt]))return!1;Be(Y.value,Rt),zt()},onCancel:function(){ke(!1,Rt),T(I.value),zt()}}},cl=rv(P(P({},Fn(0,Ke)),{},{blurToCancel:a,open:_,value:ie,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),ki=ft(cl,2),tl=ki[0],nl=ki[1],Dt=nl.focused,ht=nl.typing,Fe=rv(P(P({},Fn(1,lt)),{},{blurToCancel:a,open:E,value:Ae,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),tt=ft(Fe,2),nt=tt[0],Vt=tt[1],Bt=Vt.focused,Nn=Vt.typing,oi=function(Rt){var zt;(zt=e.onClick)===null||zt===void 0||zt.call(e,Rt),!pe.value&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&(c.value[0]?c.value[1]||Pe(1):Pe(0))},gi=function(Rt){var zt;(zt=e.onMousedown)===null||zt===void 0||zt.call(e,Rt),pe.value&&(Dt.value||Bt.value)&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&Rt.preventDefault()},Ll=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[0]?wl(I.value[0],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""}),il=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[1]?wl(I.value[1],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""});rt([pe,me,Ze],function(){pe.value||(T(I.value),!me.value.length||me.value[0]===""?Oe(""):Ve.value!==ie.value&&Ke(),!Ze.value.length||Ze.value[0]===""?ct(""):Ce.value!==Ae.value&<())}),rt([Ll,il],function(){T(I.value)}),l({focus:function(){y.value&&y.value.focus()},blur:function(){y.value&&y.value.blur(),X.value&&X.value.blur()}});var Lr=de(function(){return Object.keys(e.ranges||{}).map(function(_t){var Rt=e.ranges[_t],zt=typeof Rt=="function"?Rt():Rt;return{label:_t,onClick:function(){Be(zt,null),ke(!1,u.value)},onMouseenter:function(){xt(zt)},onMouseleave:function(){xt(null)}}})}),ul=de(function(){return pe.value&&Tt.value&&Tt.value[0]&&Tt.value[1]&&e.generateConfig.isAfter(Tt.value[1],Tt.value[0])?Tt.value:null});function Ol(){var _t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Rt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},zt=e.generateConfig,Ht=e.showTime,$t=e.dateRender,si=e.direction,Ul=e.disabledTime,Xl=e.prefixCls,El=e.locale,ll=Ht;if(Ht&&Yt(Ht)==="object"&&Ht.defaultValue){var Na=Ht.defaultValue;ll=P(P({},Ht),{},{defaultValue:Kn(Na,u.value)||void 0})}var Rl=null;return $t&&(Rl=function(Tl){var hl=Tl.current,Nl=Tl.today;return $t({current:hl,today:Nl,info:{range:u.value?"end":"start"}})}),D(Xq,{value:{inRange:!0,panelPosition:_t,rangedValue:Mt.value||Y.value,hoverRangedValue:ul.value}},{default:function(){return[D(Z1,P(P(P({},e),Rt),{},{dateRender:Rl,showTime:ll,mode:K.value[u.value],generateConfig:zt,style:void 0,direction:si,disabledDate:u.value===0?Q:oe,disabledTime:function(hl){return Ul?Ul(hl,u.value===0?"start":"end"):!1},class:_e(ce({},"".concat(Xl,"-panel-focused"),u.value===0?!ht.value:!Nn.value)),value:Kn(Y.value,u.value),locale:El,tabIndex:-1,onPanelChange:function(hl,Nl){u.value===0&&en(!0),u.value===1&&Gi(!0),k(tr(K.value,Nl,u.value),tr(Y.value,hl,u.value));var fl=hl;_t==="right"&&K.value[u.value]===Nl&&(fl=Bd(fl,Nl,zt,-1)),S(fl,u.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:u.value===0?Kn(Y.value,1):Kn(Y.value,0)}),null)]}})}var jl=function(Rt,zt){var Ht=tr(Y.value,Rt,u.value);zt==="submit"||zt!=="key"&&!a.value?(Be(Ht,u.value),u.value===0?en():Gi()):T(Ht)};return e1({operationRef:h,hideHeader:de(function(){return e.picker==="time"}),onDateMouseenter:Pi,onDateMouseleave:Gl,hideRanges:de(function(){return!0}),onSelect:jl,open:pe}),function(){var _t,Rt,zt,Ht=e.prefixCls,$t=Ht===void 0?"rc-picker":Ht,si=e.id,Ul=e.popupStyle,Xl=e.dropdownClassName,El=e.transitionName,ll=e.dropdownAlign,Na=e.getPopupContainer,Rl=e.generateConfig,dl=e.locale,Tl=e.placeholder,hl=e.autofocus,Nl=e.picker,fl=Nl===void 0?"date":Nl,eo=e.showTime,Ml=e.separator,xl=Ml===void 0?"~":Ml,Rr=e.disabledDate,ra=e.panelRender,Vs=e.allowClear,Kl=e.suffixIcon,oa=e.clearIcon,to=e.inputReadOnly,$n=e.renderExtraFooter,Un=e.onMouseenter,sr=e.onMouseleave,Fo=e.onMouseup,Jo=e.onOk,Do=e.components,ja=e.direction,je=e.autocomplete,et=je===void 0?"off":je,mt=ja==="rtl"?{right:"".concat(ae.value,"px")}:{left:"".concat(ae.value,"px")};function Lt(){var fi,Qn=V3($t,K.value[u.value],$n),qn=L3({prefixCls:$t,components:Do,needConfirmButton:a.value,okDisabled:!Kn(Y.value,u.value)||Rr&&Rr(Y.value[u.value]),locale:dl,rangeList:Lr.value,onOk:function(){Kn(Y.value,u.value)&&(Be(Y.value,u.value),Jo&&Jo(Y.value))}});if(fl!=="time"&&!eo){var Ti=u.value===0?R.value:g.value,yi=Bd(Ti,fl,Rl),Hl=K.value[u.value],Zi=Hl===fl,no=Ol(Zi?"left":!1,{pickerValue:Ti,onPickerValueChange:function(ge){S(ge,u.value)}}),Pl=Ol("right",{pickerValue:yi,onPickerValueChange:function(ge){S(Bd(ge,fl,Rl,-1),u.value)}});ja==="rtl"?fi=D(ln,null,[Pl,Zi&&no]):fi=D(ln,null,[no,Zi&&Pl])}else fi=Ol();var al=D(ln,null,[D("div",{class:"".concat($t,"-panels")},[fi]),(Qn||qn)&&D("div",{class:"".concat($t,"-footer")},[Qn,qn])]);return ra&&(al=ra(al)),D("div",{class:"".concat($t,"-panel-container"),style:{marginLeft:"".concat($.value,"px")},ref:v,onMousedown:function(ge){ge.preventDefault()}},[al])}var Jn=D("div",{class:_e("".concat($t,"-range-wrapper"),"".concat($t,"-").concat(fl,"-range-wrapper")),style:{minWidth:"".concat(le.value,"px")}},[D("div",{ref:m,class:"".concat($t,"-range-arrow"),style:mt},null),Lt()]),sn;Kl&&(sn=D("span",{class:"".concat($t,"-suffix")},[Kl]));var ii;Vs&&(Kn(I.value,0)&&!c.value[0]||Kn(I.value,1)&&!c.value[1])&&(ii=D("span",{onMousedown:function(Qn){Qn.preventDefault(),Qn.stopPropagation()},onMouseup:function(Qn){Qn.preventDefault(),Qn.stopPropagation();var qn=I.value;c.value[0]||(qn=tr(qn,null,0)),c.value[1]||(qn=tr(qn,null,1)),Be(qn,null),ke(!1,u.value)},class:"".concat($t,"-clear")},[oa||D("span",{class:"".concat($t,"-clear-btn")},null)]));var _n={size:v3(fl,N.value[0],Rl)},Dn=0,ni=0;b.value&&Z.value&&p.value&&(u.value===0?ni=b.value.offsetWidth:(Dn=ae.value,ni=Z.value.offsetWidth));var Fi=ja==="rtl"?{right:"".concat(Dn,"px")}:{left:"".concat(Dn,"px")};return D(R3,{visible:pe.value,popupStyle:Ul,prefixCls:$t,dropdownClassName:Xl,dropdownAlign:ll,getPopupContainer:Na,transitionName:El,range:!0,direction:ja},{default:function(){return[D("div",P({ref:f,class:_e($t,"".concat($t,"-range"),i.class,(_t={},ce(_t,"".concat($t,"-disabled"),c.value[0]&&c.value[1]),ce(_t,"".concat($t,"-focused"),u.value===0?Dt.value:Bt.value),ce(_t,"".concat($t,"-rtl"),ja==="rtl"),_t)),style:i.style,onClick:oi,onMouseenter:Un,onMouseleave:sr,onMousedown:gi,onMouseup:Fo},Y3(e)),[D("div",{class:_e("".concat($t,"-input"),(Rt={},ce(Rt,"".concat($t,"-input-active"),u.value===0),ce(Rt,"".concat($t,"-input-placeholder"),!!Ut.value),Rt)),ref:b},[D("input",P(P(P({id:si,disabled:c.value[0],readonly:to||typeof N.value[0]=="function"||!ht.value,value:Ut.value||ie.value,onInput:function(qn){Oe(qn.target.value)},autofocus:hl,placeholder:Kn(Tl,0)||"",ref:y},tl.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-range-separator"),ref:p},[xl]),D("div",{class:_e("".concat($t,"-input"),(zt={},ce(zt,"".concat($t,"-input-active"),u.value===1),ce(zt,"".concat($t,"-input-placeholder"),!!Ln.value),zt)),ref:Z},[D("input",P(P(P({disabled:c.value[1],readonly:to||typeof N.value[0]=="function"||!Nn.value,value:Ln.value||Ae.value,onInput:function(qn){ct(qn.target.value)},placeholder:Kn(Tl,1)||"",ref:X},nt.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-active-bar"),style:P(P({},Fi),{},{width:"".concat(ni,"px"),position:"absolute"})},null),sn,ii,o()])]},popupElement:function(){return Jn}})}}})}var Eq=Uq();const Kq=Eq;var Hq=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],Pq={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:We.any,required:Boolean};const C3=He({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:pn(Pq,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(e,t){var i=t.attrs,l=t.emit,a=t.expose,o=Ne(e.checked===void 0?e.defaultChecked:e.checked),r=Ne();rt(function(){return e.checked},function(){o.value=e.checked}),a({focus:function(){var p;(p=r.value)===null||p===void 0||p.focus()},blur:function(){var p;(p=r.value)===null||p===void 0||p.blur()}});var f=Ne(),v=function(p){if(!e.disabled){e.checked===void 0&&(o.value=p.target.checked),p.shiftKey=f.value;var y={target:P(P({},e),{},{checked:p.target.checked}),stopPropagation:function(){p.stopPropagation()},preventDefault:function(){p.preventDefault()},nativeEvent:p};e.checked!==void 0&&(r.value.checked=!!e.checked),l("change",y),f.value=!1}},b=function(p){l("click",p),f.value=p.shiftKey};return function(){var Z,p=e.prefixCls,y=e.name,X=e.id,m=e.type,N=e.disabled,G=e.readonly,d=e.tabindex,u=e.autofocus,s=e.value,h=e.required,c=jt(e,Hq),W=i.class,M=i.onFocus,I=i.onBlur,w=i.onKeydown,C=i.onKeypress,x=i.onKeyup,R=P(P({},c),i),g=Object.keys(R).reduce(function(V,Y){return(Y.substr(0,5)==="aria-"||Y.substr(0,5)==="data-"||Y==="role")&&(V[Y]=R[Y]),V},{}),S=_e(p,W,(Z={},ce(Z,"".concat(p,"-checked"),o.value),ce(Z,"".concat(p,"-disabled"),N),Z)),L=P(P({name:y,id:X,type:m,readonly:G,disabled:N,tabindex:d,class:"".concat(p,"-input"),checked:!!o.value,autofocus:u,value:s},g),{},{onChange:v,onClick:b,onFocus:M,onBlur:I,onKeydown:w,onKeypress:C,onKeyup:x,required:h});return D("span",{class:S},[D("input",P({ref:r},L),null),D("span",{class:"".concat(p,"-inner")},null)])}}});var Qq=["prefixCls","id"],S3=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},isGroup:{type:Boolean,default:void 0},value:We.any,name:String,id:String,autofocus:{type:Boolean,default:void 0},onChange:Function,onFocus:Function,onBlur:Function,onClick:Function,"onUpdate:checked":Function,"onUpdate:value":Function}};const ta=He({compatConfig:{MODE:3},name:"ARadio",props:S3(),setup:function(e,t){var i=t.emit,l=t.expose,a=t.slots,o=Hi(),r=Ne(),f=un("radioGroupContext",void 0),v=Nt("radio",e),b=v.prefixCls,Z=v.direction,p=function(){r.value.focus()},y=function(){r.value.blur()};l({focus:p,blur:y});var X=function(G){var d=G.target.checked;i("update:checked",d),i("update:value",d),i("change",G),o.onFieldChange()},m=function(G){i("change",G),f&&f.onRadioChange&&f.onRadioChange(G)};return function(){var N,G=f;e.prefixCls;var d=e.id,u=d===void 0?o.id.value:d,s=jt(e,Qq),h=P({prefixCls:b.value,id:u},dn(s,["onUpdate:checked","onUpdate:value"]));G?(h.name=G.props.name,h.onChange=m,h.checked=e.value===G.stateValue.value,h.disabled=e.disabled||G.props.disabled):h.onChange=X;var c=_e((N={},ce(N,"".concat(b.value,"-wrapper"),!0),ce(N,"".concat(b.value,"-wrapper-checked"),h.checked),ce(N,"".concat(b.value,"-wrapper-disabled"),h.disabled),ce(N,"".concat(b.value,"-wrapper-rtl"),Z.value==="rtl"),N));return D("label",{class:c},[D(C3,P(P({},h),{},{type:"radio",ref:r}),null),a.default&&D("span",null,[a.default()])])}}});var Bq=pi("large","default","small"),Aq=function(){return{prefixCls:String,value:We.any,size:We.oneOf(Bq),options:{type:Array},disabled:{type:Boolean,default:void 0},name:String,buttonStyle:{type:String,default:"outline"},id:String,optionType:{type:String,default:"default"},onChange:Function,"onUpdate:value":Function}};const v1=He({compatConfig:{MODE:3},name:"ARadioGroup",props:Aq(),setup:function(e,t){var i=t.slots,l=t.emit,a=Hi(),o=Nt("radio",e),r=o.prefixCls,f=o.direction,v=o.size,b=Ne(e.value),Z=Ne(!1);rt(function(){return e.value},function(y){b.value=y,Z.value=!1});var p=function(X){var m=b.value,N=X.target.value;"value"in e||(b.value=N),!Z.value&&N!==m&&(Z.value=!0,l("update:value",N),l("change",X),a.onFieldChange()),cn(function(){Z.value=!1})};return hn("radioGroupContext",{onRadioChange:p,stateValue:b,props:e}),function(){var y,X=e.options,m=e.optionType,N=e.buttonStyle,G=e.id,d=G===void 0?a.id.value:G,u="".concat(r.value,"-group"),s=_e(u,"".concat(u,"-").concat(N),(y={},ce(y,"".concat(u,"-").concat(v.value),v.value),ce(y,"".concat(u,"-rtl"),f.value==="rtl"),y)),h=null;if(X&&X.length>0){var c=m==="button"?"".concat(r.value,"-button"):r.value;h=X.map(function(M){if(typeof M=="string"||typeof M=="number")return D(ta,{key:M,prefixCls:c,disabled:e.disabled,value:M,checked:b.value===M},{default:function(){return[M]}});var I=M.value,w=M.disabled,C=M.label;return D(ta,{key:"radio-group-value-options-".concat(I),prefixCls:c,disabled:w||e.disabled,value:I,checked:b.value===I},{default:function(){return[C]}})})}else{var W;h=(W=i.default)===null||W===void 0?void 0:W.call(i)}return D("div",{class:s,id:d},[h])}}}),Km=He({compatConfig:{MODE:3},name:"ARadioButton",props:S3(),setup:function(e,t){var i=t.slots,l=Nt("radio-button",e),a=l.prefixCls,o=un("radioGroupContext",void 0);return function(){var r,f=P(P({},e),{},{prefixCls:a.value});return o&&(f.onChange=o.onRadioChange,f.checked=f.value===o.stateValue.value,f.disabled=f.disabled||o.props.disabled),D(ta,f,{default:function(){return[(r=i.default)===null||r===void 0?void 0:r.call(i)]}})}}});ta.Group=v1;ta.Button=Km;ta.install=function(n){return n.component(ta.name,ta),n.component(ta.Group.name,ta.Group),n.component(ta.Button.name,ta.Button),n};var _q=10,$q=20;function z3(n){var e=n.fullscreen,t=n.validRange,i=n.generateConfig,l=n.locale,a=n.prefixCls,o=n.value,r=n.onChange,f=n.divRef,v=i.getYear(o||i.getNow()),b=v-_q,Z=b+$q;t&&(b=i.getYear(t[0]),Z=i.getYear(t[1])+1);for(var p=l&&l.year==="年"?"年":"",y=[],X=b;Xi.getMonth(s)&&(G=i.setMonth(G,i.getMonth(s))),h===i.getYear(u)&&cY?(L=g,c.value="x"):(L=S,c.value="y"),e(-L,-L)&&R.preventDefault()}var M=Ne({onTouchStart:u,onTouchMove:s,onTouchEnd:h,onWheel:W});function I(R){M.value.onTouchStart(R)}function w(R){M.value.onTouchMove(R)}function C(R){M.value.onTouchEnd(R)}function x(R){M.value.onWheel(R)}Kt(function(){var R,g;document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("touchend",C,{passive:!1}),(R=n.value)===null||R===void 0||R.addEventListener("touchstart",I,{passive:!1}),(g=n.value)===null||g===void 0||g.addEventListener("wheel",x,{passive:!1})}),fn(function(){document.removeEventListener("touchmove",w),document.removeEventListener("touchend",C)})}function nw(n,e){var t=Ne(n);function i(l){var a=typeof l=="function"?l(t.value):l;a!==t.value&&e(a,t.value),t.value=a}return[t,i]}var dee=function(){var e=Ne(new Map),t=function(l){return function(a){e.value.set(l,a)}};return MW(function(){e.value=new Map}),[t,e]};const W1=dee;var hee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,fee=/^\w*$/;function G1(n,e){if(or(n))return!1;var t=typeof n;return t=="number"||t=="symbol"||t=="boolean"||n==null||_0(n)?!0:fee.test(n)||!hee.test(n)||e!=null&&n in Object(e)}var bee="Expected a function";function X1(n,e){if(typeof n!="function"||e!=null&&typeof e!="function")throw new TypeError(bee);var t=function(){var i=arguments,l=e?e.apply(this,i):i[0],a=t.cache;if(a.has(l))return a.get(l);var o=n.apply(this,i);return t.cache=a.set(l,o)||a,o};return t.cache=new(X1.Cache||zo),t}X1.Cache=zo;var mee=500;function pee(n){var e=X1(n,function(i){return t.size===mee&&t.clear(),i}),t=e.cache;return e}var yee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Zee=/\\(\\)?/g,vee=pee(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(yee,function(t,i,l,a){e.push(l?a.replace(Zee,"$1"):i||t)}),e});const Wee=vee;function Au(n,e){return or(n)?n:G1(n,e)?[n]:Wee(qG(n))}var Gee=1/0;function _u(n){if(typeof n=="string"||_0(n))return n;var e=n+"";return e=="0"&&1/n==-Gee?"-0":e}function np(n,e){e=Au(e,n);for(var t=0,i=e.length;n!=null&&t0&&t(r)?e>1?K3(r,e-1,t,i,l):ZG(l,r):i||(l[l.length]=r)}return l}function Ree(n){var e=n==null?0:n.length;return e?K3(n,1):[]}function Tee(n,e,t){switch(t.length){case 0:return n.call(e);case 1:return n.call(e,t[0]);case 2:return n.call(e,t[0],t[1]);case 3:return n.call(e,t[0],t[1],t[2])}return n.apply(e,t)}var lw=Math.max;function H3(n,e,t){return e=lw(e===void 0?n.length-1:e,0),function(){for(var i=arguments,l=-1,a=lw(i.length-e,0),o=Array(a);++l0){if(++e>=zee)return arguments[0]}else e=0;return n.apply(void 0,arguments)}}var Dee=Jee(See);const P3=Dee;function Q3(n){return P3(H3(n,void 0,Ree),n+"")}var Oee=Q3(function(n,e){return n==null?{}:Vee(n,e)});const B3=Oee;var aw={width:0,height:0,left:0,top:0,right:0},jee=function(){return{id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:{type:Object,default:void 0},editable:{type:Object},moreIcon:We.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:{type:Object,default:void 0},onTabClick:{type:Function},onTabScroll:{type:Function}}};const rw=He({compatConfig:{MODE:3},name:"TabNavList",inheritAttrs:!1,props:jee(),slots:["moreIcon","leftExtra","rightExtra","tabBarExtraContent"],emits:["tabClick","tabScroll"],setup:function(e,t){var i=t.attrs,l=t.slots,a=j3(),o=a.tabs,r=a.prefixCls,f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=W1(),y=ft(p,2),X=y[0],m=y[1],N=de(function(){return e.tabPosition==="top"||e.tabPosition==="bottom"}),G=nw(0,function(Ue,qe){N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"left":"right"})}),d=ft(G,2),u=d[0],s=d[1],h=nw(0,function(Ue,qe){!N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"top":"bottom"})}),c=ft(h,2),W=c[0],M=c[1],I=di(0),w=ft(I,2),C=w[0],x=w[1],R=di(0),g=ft(R,2),S=g[0],L=g[1],V=di(null),Y=ft(V,2),T=Y[0],J=Y[1],U=di(null),K=ft(U,2),H=K[0],k=K[1],F=di(0),O=ft(F,2),Q=O[0],oe=O[1],se=di(0),he=ft(se,2),pe=he[0],re=he[1],_=lee(new Map),E=ft(_,2),$=E[0],ae=E[1],le=ree(o,$),ee=de(function(){return"".concat(r.value,"-nav-operations-hidden")}),te=Ne(0),be=Ne(0);qt(function(){N.value?e.rtl?(te.value=0,be.value=Math.max(0,C.value-T.value)):(te.value=Math.min(0,T.value-C.value),be.value=0):(te.value=Math.min(0,H.value-S.value),be.value=0)});var ne=function(qe){return qebe.value?be.value:qe},B=Ne(),q=di(),ue=ft(q,2),ve=ue[0],Ge=ue[1],Je=function(){Ge(Date.now())},xe=function(){clearTimeout(B.value)},ke=function(qe,ie){qe(function(Oe){var Ke=ne(Oe+ie);return Ke})};uee(f,function(Ue,qe){if(N.value){if(T.value>=C.value)return!1;ke(s,Ue)}else{if(H.value>=S.value)return!1;ke(M,qe)}return xe(),Je(),!0}),rt(ve,function(){xe(),ve.value&&(B.value=setTimeout(function(){Ge(0)},100))});var Pe=function(){var qe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey,ie=le.value.get(qe)||{width:0,height:0,left:0,right:0,top:0};if(N.value){var Oe=u.value;e.rtl?ie.rightu.value+T.value&&(Oe=ie.right+ie.width-T.value):ie.left<-u.value?Oe=-ie.left:ie.left+ie.width>-u.value+T.value&&(Oe=-(ie.left+ie.width-T.value)),M(0),s(ne(Oe))}else{var Ke=W.value;ie.top<-W.value?Ke=-ie.top:ie.top+ie.height>-W.value+H.value&&(Ke=-(ie.top+ie.height-H.value)),s(0),M(ne(Ke))}},Be=Ne(0),Te=Ne(0);qt(function(){var Ue,qe,ie,Oe,Ke,Xe,Re,Ae=le.value;["top","bottom"].includes(e.tabPosition)?(qe="width",Ke=T.value,Xe=C.value,Re=Q.value,ie=e.rtl?"right":"left",Oe=Math.abs(u.value)):(qe="height",Ke=H.value,Xe=C.value,Re=pe.value,ie="top",Oe=-W.value);var ct=Ke;Xe+Re>Ke&&XeOe+ct){Mt=xt-1;break}}for(var Zt=0,Tt=wt-1;Tt>=0;Tt-=1){var Ct=Ae.get(lt[Tt].key)||aw;if(Ct[ie]0,Zt=u.value+T.value0?"".concat(y[0]/-2,"px"):void 0,N=y[1]>0?"".concat(y[1]/-2,"px"):void 0;return m&&(X.marginLeft=m,X.marginRight=m),v.value?X.rowGap="".concat(y[1],"px"):N&&(X.marginTop=N,X.marginBottom=N),X});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}});const w1=nte;function ite(n){return typeof n=="number"?"".concat(n," ").concat(n," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(n)?"0 0 ".concat(n):n}var lte=function(){return{span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},xxxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}};const ip=He({compatConfig:{MODE:3},name:"ACol",props:lte(),setup:function(e,t){var i=t.slots,l=ete(),a=l.gutter,o=l.supportFlexGap,r=l.wrap,f=Nt("col",e),v=f.prefixCls,b=f.direction,Z=de(function(){var y,X=e.span,m=e.order,N=e.offset,G=e.push,d=e.pull,u=v.value,s={};return["xs","sm","md","lg","xl","xxl","xxxl"].forEach(function(h){var c,W={},M=e[h];typeof M=="number"?W.span=M:Yt(M)==="object"&&(W=M||{}),s=P(P({},s),{},(c={},ce(c,"".concat(u,"-").concat(h,"-").concat(W.span),W.span!==void 0),ce(c,"".concat(u,"-").concat(h,"-order-").concat(W.order),W.order||W.order===0),ce(c,"".concat(u,"-").concat(h,"-offset-").concat(W.offset),W.offset||W.offset===0),ce(c,"".concat(u,"-").concat(h,"-push-").concat(W.push),W.push||W.push===0),ce(c,"".concat(u,"-").concat(h,"-pull-").concat(W.pull),W.pull||W.pull===0),ce(c,"".concat(u,"-rtl"),b.value==="rtl"),c))}),_e(u,(y={},ce(y,"".concat(u,"-").concat(X),X!==void 0),ce(y,"".concat(u,"-order-").concat(m),m),ce(y,"".concat(u,"-offset-").concat(N),N),ce(y,"".concat(u,"-push-").concat(G),G),ce(y,"".concat(u,"-pull-").concat(d),d),y),s)}),p=de(function(){var y=e.flex,X=a.value,m={};if(X&&X[0]>0){var N="".concat(X[0]/2,"px");m.paddingLeft=N,m.paddingRight=N}if(X&&X[1]>0&&!o.value){var G="".concat(X[1]/2,"px");m.paddingTop=G,m.paddingBottom=G}return y&&(m.flex=ite(y),r.value===!1&&!m.minWidth&&(m.minWidth=0)),m});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}}),ate={useBreakpoint:Qu},au=wi(w1),mr=wi(ip);var rte=bc.TabPane,ote=function(){return{prefixCls:String,title:We.any,extra:We.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:We.any,tabList:{type:Array},tabBarExtraContent:We.any,activeTabKey:String,defaultActiveTabKey:String,cover:We.any,onTabChange:{type:Function}}},ste=He({compatConfig:{MODE:3},name:"ACard",props:ote(),slots:["title","extra","tabBarExtraContent","actions","cover","customTab"],setup:function(e,t){var i=t.slots,l=Nt("card",e),a=l.prefixCls,o=l.direction,r=l.size,f=function(p){var y=p.map(function(X,m){return yl(X)&&!Rh(X)||!yl(X)?D("li",{style:{width:"".concat(100/p.length,"%")},key:"action-".concat(m)},[D("span",null,[X])]):null});return y},v=function(p){var y;(y=e.onTabChange)===null||y===void 0||y.call(e,p)},b=function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],y;return p.forEach(function(X){X&&CW(X.type)&&X.type.__ANT_CARD_GRID&&(y=!0)}),y};return function(){var Z,p,y,X,m,N,G,d,u=e.headStyle,s=u===void 0?{}:u,h=e.bodyStyle,c=h===void 0?{}:h,W=e.loading,M=e.bordered,I=M===void 0?!0:M,w=e.type,C=e.tabList,x=e.hoverable,R=e.activeTabKey,g=e.defaultActiveTabKey,S=e.tabBarExtraContent,L=S===void 0?Zd((Z=i.tabBarExtraContent)===null||Z===void 0?void 0:Z.call(i)):S,V=e.title,Y=V===void 0?Zd((p=i.title)===null||p===void 0?void 0:p.call(i)):V,T=e.extra,J=T===void 0?Zd((y=i.extra)===null||y===void 0?void 0:y.call(i)):T,U=e.actions,K=U===void 0?Zd((X=i.actions)===null||X===void 0?void 0:X.call(i)):U,H=e.cover,k=H===void 0?Zd((m=i.cover)===null||m===void 0?void 0:m.call(i)):H,F=ti((N=i.default)===null||N===void 0?void 0:N.call(i)),O=a.value,Q=(G={},ce(G,"".concat(O),!0),ce(G,"".concat(O,"-loading"),W),ce(G,"".concat(O,"-bordered"),I),ce(G,"".concat(O,"-hoverable"),!!x),ce(G,"".concat(O,"-contain-grid"),b(F)),ce(G,"".concat(O,"-contain-tabs"),C&&C.length),ce(G,"".concat(O,"-").concat(r.value),r.value),ce(G,"".concat(O,"-type-").concat(w),!!w),ce(G,"".concat(O,"-rtl"),o.value==="rtl"),G),oe=c.padding===0||c.padding==="0px"?{padding:"24px"}:void 0,se=D("div",{class:"".concat(O,"-loading-block")},null),he=D("div",{class:"".concat(O,"-loading-content"),style:oe},[D(au,{gutter:8},{default:function(){return[D(mr,{span:22},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:8},{default:function(){return[se]}}),D(mr,{span:15},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:6},{default:function(){return[se]}}),D(mr,{span:18},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:13},{default:function(){return[se]}}),D(mr,{span:9},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:4},{default:function(){return[se]}}),D(mr,{span:3},{default:function(){return[se]}}),D(mr,{span:16},{default:function(){return[se]}})]}})]),pe=R!==void 0,re=(d={size:"large"},ce(d,pe?"activeKey":"defaultActiveKey",pe?R:g),ce(d,"onChange",v),ce(d,"class","".concat(O,"-head-tabs")),d),_,E=C&&C.length?D(bc,re,{default:function(){return[C.map(function(te){var be=te.tab,ne=te.slots,B=ne==null?void 0:ne.tab;jn(!ne,"Card","tabList slots is deprecated, Please use `customTab` instead.");var q=be!==void 0?be:i[B]?i[B](te):null;return q=g0(i,"customTab",te,function(){return[q]}),D(rte,{tab:q,key:te.key,disabled:te.disabled},null)})]},rightExtra:L?function(){return L}:null}):null;(Y||J||E)&&(_=D("div",{class:"".concat(O,"-head"),style:s},[D("div",{class:"".concat(O,"-head-wrapper")},[Y&&D("div",{class:"".concat(O,"-head-title")},[Y]),J&&D("div",{class:"".concat(O,"-extra")},[J])]),E]));var $=k?D("div",{class:"".concat(O,"-cover")},[k]):null,ae=D("div",{class:"".concat(O,"-body"),style:c},[W?he:F]),le=K&&K.length?D("ul",{class:"".concat(O,"-actions")},[f(K)]):null;return D("div",{class:Q,ref:"cardContainerRef"},[_,$,F&&F.length?ae:null,le])}}});const Gu=ste;var cte=function(){return{prefixCls:String,title:We.any,description:We.any,avatar:We.any}};const Qm=He({compatConfig:{MODE:3},name:"ACardMeta",props:cte(),slots:["title","description","avatar"],setup:function(e,t){var i=t.slots,l=Nt("card",e),a=l.prefixCls;return function(){var o=ce({},"".concat(a.value,"-meta"),!0),r=ui(i,e,"avatar"),f=ui(i,e,"title"),v=ui(i,e,"description"),b=r?D("div",{class:"".concat(a.value,"-meta-avatar")},[r]):null,Z=f?D("div",{class:"".concat(a.value,"-meta-title")},[f]):null,p=v?D("div",{class:"".concat(a.value,"-meta-description")},[v]):null,y=Z||p?D("div",{class:"".concat(a.value,"-meta-detail")},[Z,p]):null;return D("div",{class:o},[b,y])}}});var ute=function(){return{prefixCls:String,hoverable:{type:Boolean,default:!0}}};const Bm=He({compatConfig:{MODE:3},name:"ACardGrid",__ANT_CARD_GRID:!0,props:ute(),setup:function(e,t){var i=t.slots,l=Nt("card",e),a=l.prefixCls,o=de(function(){var r;return r={},ce(r,"".concat(a.value,"-grid"),!0),ce(r,"".concat(a.value,"-grid-hoverable"),e.hoverable),r});return function(){var r;return D("div",{class:o.value},[(r=i.default)===null||r===void 0?void 0:r.call(i)])}}});Gu.Meta=Qm;Gu.Grid=Bm;Gu.install=function(n){return n.component(Gu.name,Gu),n.component(Qm.name,Qm),n.component(Bm.name,Bm),n};var dte=function(){return{prefixCls:String,activeKey:{type:[Array,Number,String]},defaultActiveKey:{type:[Array,Number,String]},accordion:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},expandIcon:Function,openAnimation:We.object,expandIconPosition:We.oneOf(pi("left","right")),collapsible:{type:String},ghost:{type:Boolean,default:void 0},onChange:Function,"onUpdate:activeKey":Function}},t9=function(){return{openAnimation:We.object,prefixCls:String,header:We.any,headerClass:String,showArrow:{type:Boolean,default:void 0},isActive:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},accordion:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},expandIcon:Function,extra:We.any,panelKey:We.oneOfType([We.string,We.number]),collapsible:{type:String},role:String,onItemClick:{type:Function}}};function cw(n){var e=n;if(!Array.isArray(e)){var t=Yt(e);e=t==="number"||t==="string"?[e]:[]}return e.map(function(i){return String(i)})}const Ad=He({compatConfig:{MODE:3},name:"ACollapse",inheritAttrs:!1,props:pn(dte(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,openAnimation:Fh("ant-motion-collapse",!1),expandIconPosition:"left"}),slots:["expandIcon"],setup:function(e,t){var i=t.attrs,l=t.slots,a=t.emit,o=Ne(cw(Sm([e.activeKey,e.defaultActiveKey])));rt(function(){return e.activeKey},function(){o.value=cw(e.activeKey)},{deep:!0});var r=Nt("collapse",e),f=r.prefixCls,v=r.direction,b=de(function(){var N=e.expandIconPosition;return N!==void 0?N:v.value==="rtl"?"right":"left"}),Z=function(G){var d=e.expandIcon,u=d===void 0?l.expandIcon:d,s=u?u(G):D(To,{rotate:G.isActive?90:void 0},null);return D("div",null,[Si(Array.isArray(u)?s[0]:s)?wn(s,{class:"".concat(f.value,"-arrow")},!1):s])},p=function(G){e.activeKey===void 0&&(o.value=G);var d=e.accordion?G[0]:G;a("update:activeKey",d),a("change",d)},y=function(G){var d=o.value;if(e.accordion)d=d[0]===G?[]:[G];else{d=yt(d);var u=d.indexOf(G),s=u>-1;s?d.splice(u,1):d.push(G)}p(d)},X=function(G,d){var u,s,h;if(!Rh(G)){var c=o.value,W=e.accordion,M=e.destroyInactivePanel,I=e.collapsible,w=e.openAnimation,C=String((u=G.key)!==null&&u!==void 0?u:d),x=G.props||{},R=x.header,g=R===void 0?(s=G.children)===null||s===void 0||(h=s.header)===null||h===void 0?void 0:h.call(s):R,S=x.headerClass,L=x.collapsible,V=x.disabled,Y=!1;W?Y=c[0]===C:Y=c.indexOf(C)>-1;var T=L??I;(V||V==="")&&(T="disabled");var J={key:C,panelKey:C,header:g,headerClass:S,isActive:Y,prefixCls:f.value,destroyInactivePanel:M,openAnimation:w,accordion:W,onItemClick:T==="disabled"?null:y,expandIcon:Z,collapsible:T};return wn(G,J)}},m=function(){var G;return ti((G=l.default)===null||G===void 0?void 0:G.call(l)).map(X)};return function(){var N,G=e.accordion,d=e.bordered,u=e.ghost,s=_e((N={},ce(N,f.value,!0),ce(N,"".concat(f.value,"-borderless"),!d),ce(N,"".concat(f.value,"-icon-position-").concat(b.value),!0),ce(N,"".concat(f.value,"-rtl"),v.value==="rtl"),ce(N,"".concat(f.value,"-ghost"),!!u),ce(N,i.class,!!i.class),N));return D("div",P(P({class:s},ZE(i)),{},{style:i.style,role:G?"tablist":null}),[m()])}}}),hte=He({compatConfig:{MODE:3},name:"PanelContent",props:t9(),setup:function(e,t){var i=t.slots,l=Ne(!1);return qt(function(){(e.isActive||e.forceRender)&&(l.value=!0)}),function(){var a,o;if(!l.value)return null;var r=e.prefixCls,f=e.isActive,v=e.role;return D("div",{ref:Ne,class:_e("".concat(r,"-content"),(a={},ce(a,"".concat(r,"-content-active"),f),ce(a,"".concat(r,"-content-inactive"),!f),a)),role:v},[D("div",{class:"".concat(r,"-content-box")},[(o=i.default)===null||o===void 0?void 0:o.call(i)])])}}}),Am=He({compatConfig:{MODE:3},name:"ACollapsePanel",inheritAttrs:!1,props:pn(t9(),{showArrow:!0,isActive:!1,onItemClick:function(){},headerClass:"",forceRender:!1}),slots:["expandIcon","extra","header"],setup:function(e,t){var i=t.slots,l=t.emit,a=t.attrs;jn(e.disabled===void 0,"Collapse.Panel",'`disabled` is deprecated. Please use `collapsible="disabled"` instead.');var o=Nt("collapse",e),r=o.prefixCls,f=function(){l("itemClick",e.panelKey)},v=function(Z){(Z.key==="Enter"||Z.keyCode===13||Z.which===13)&&f()};return function(){var b,Z,p,y,X=e.header,m=X===void 0?(b=i.header)===null||b===void 0?void 0:b.call(i):X,N=e.headerClass,G=e.isActive,d=e.showArrow,u=e.destroyInactivePanel,s=e.accordion,h=e.forceRender,c=e.openAnimation,W=e.expandIcon,M=W===void 0?i.expandIcon:W,I=e.extra,w=I===void 0?(Z=i.extra)===null||Z===void 0?void 0:Z.call(i):I,C=e.collapsible,x=C==="disabled",R=r.value,g=_e("".concat(R,"-header"),(p={},ce(p,N,N),ce(p,"".concat(R,"-header-collapsible-only"),C==="header"),p)),S=_e((y={},ce(y,"".concat(R,"-item"),!0),ce(y,"".concat(R,"-item-active"),G),ce(y,"".concat(R,"-item-disabled"),x),ce(y,"".concat(R,"-no-arrow"),!d),ce(y,"".concat(a.class),!!a.class),y)),L=D("i",{class:"arrow"},null);d&&typeof M=="function"&&(L=M(e));var V=vl(D(hte,{prefixCls:R,isActive:G,forceRender:h,role:s?"tabpanel":null},{default:i.default}),[[gr,G]]),Y=P({appear:!1,css:!1},c);return D("div",P(P({},a),{},{class:S}),[D("div",{class:g,onClick:function(){return C!=="header"&&f()},role:s?"tab":"button",tabindex:x?-1:0,"aria-expanded":G,onKeypress:v},[d&&L,C==="header"?D("span",{onClick:f,class:"".concat(R,"-header-text")},[m]):m,w&&D("div",{class:"".concat(R,"-extra")},[w])]),D(aa,Y,{default:function(){return[!u||G?V:null]}})])}}});Ad.Panel=Am;Ad.install=function(n){return n.component(Ad.name,Ad),n.component(Am.name,Am),n};var fte=function(e){return e.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()}).toLowerCase()},bte=function(e){var t=/[height|width]$/;return t.test(e)},uw=function(e){var t="",i=Object.keys(e);return i.forEach(function(l,a){var o=e[l];l=fte(l),bte(l)&&typeof o=="number"&&(o=o+"px"),o===!0?t+=l:o===!1?t+="not "+l:t+="("+l+": "+o+")",a=e||W<0||Z&&M>=a}function G(){var c=cZ();if(N(c))return d(c);r=setTimeout(G,m(c))}function d(c){return r=void 0,p&&i?y(c):(i=l=void 0,o)}function u(){r!==void 0&&clearTimeout(r),v=0,i=f=l=r=void 0}function s(){return r===void 0?o:d(cZ())}function h(){var c=cZ(),W=N(c);if(i=arguments,l=this,f=c,W){if(r===void 0)return X(f);if(Z)return clearTimeout(r),r=setTimeout(G,e),y(f)}return r===void 0&&(r=setTimeout(G,e)),o}return h.cancel=u,h.flush=s,h}var vte={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:We.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:We.number.def(3e3),beforeChange:We.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:We.string.def("50px"),cssEase:We.string.def("ease"),dots:{type:Boolean,default:!1},dotsClass:We.string.def("slick-dots"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:We.string.def("linear"),edgeFriction:We.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:We.number.def(0),lazyLoad:We.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:We.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:We.array,rows:We.number.def(1),rtl:{type:Boolean,default:!1},slide:We.string.def("div"),slidesPerRow:We.number.def(1),slidesToScroll:We.number.def(1),slidesToShow:We.number.def(1),speed:We.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:We.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:We.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:We.array,__propsSymbol__:We.any};const n9=vte;var Wte={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};const Gte=Wte;function cv(n,e,t){return Math.max(e,Math.min(n,t))}var Xu=function(e){var t=["touchstart","touchmove","wheel"];t.includes(e.type)||e.preventDefault()},_m=function(e){for(var t=[],i=i9(e),l=l9(e),a=i;a0?1:0):0},Nte=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow},uv=function(e){return e&&e.offsetWidth||0},g1=function(e){return e&&e.offsetHeight||0},a9=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i,l=e.startX-e.curX,a=e.startY-e.curY,o=Math.atan2(a,l);return i=Math.round(o*180/Math.PI),i<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":t===!0?i>=35&&i<=135?"up":"down":"vertical"},ap=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},uZ=function(e,t){var i={};return t.forEach(function(l){return i[l]=e[l]}),i},Mte=function(e){var t=e.children.length,i=e.listRef,l=Math.ceil(uv(i)),a=e.trackRef,o=Math.ceil(uv(a)),r;if(e.vertical)r=l;else{var f=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding=="string"&&e.centerPadding.slice(-1)==="%"&&(f*=l/100),r=Math.ceil((l-f)/e.slidesToShow)}var v=i&&g1(i.querySelector('[data-index="0"]')),b=v*e.slidesToShow,Z=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(Z=t-1-e.initialSlide);var p=e.lazyLoadedList||[],y=_m(P(P({},e),{},{currentSlide:Z,lazyLoadedList:p}));p=p.concat(y);var X={slideCount:t,slideWidth:r,listWidth:l,trackWidth:o,currentSlide:Z,slideHeight:v,listHeight:b,lazyLoadedList:p};return e.autoplaying===null&&e.autoplay&&(X.autoplaying="playing"),X},Ite=function(e){var t=e.waitForAnimate,i=e.animating,l=e.fade,a=e.infinite,o=e.index,r=e.slideCount,f=e.lazyLoad,v=e.currentSlide,b=e.centerMode,Z=e.slidesToScroll,p=e.slidesToShow,y=e.useCSS,X=e.lazyLoadedList;if(t&&i)return{};var m=o,N,G,d,u={},s={},h=a?o:cv(o,0,r-1);if(l){if(!a&&(o<0||o>=r))return{};o<0?m=o+r:o>=r&&(m=o-r),f&&X.indexOf(m)<0&&(X=X.concat(m)),u={animating:!0,currentSlide:m,lazyLoadedList:X,targetSlide:m},s={animating:!1,targetSlide:m}}else N=m,m<0?(N=m+r,a?r%Z!==0&&(N=r-r%Z):N=0):!ap(e)&&m>v?m=N=v:b&&m>=r?(m=a?r:r-1,N=a?0:r-1):m>=r&&(N=m-r,a?r%Z!==0&&(N=0):N=r-p),!a&&m+p>=r&&(N=r-p),G=Ih(P(P({},e),{},{slideIndex:m})),d=Ih(P(P({},e),{},{slideIndex:N})),a||(G===d&&(m=N),G=d),f&&(X=X.concat(_m(P(P({},e),{},{currentSlide:m})))),y?(u={animating:!0,currentSlide:N,trackStyle:r9(P(P({},e),{},{left:G})),lazyLoadedList:X,targetSlide:h},s={animating:!1,currentSlide:N,trackStyle:Mh(P(P({},e),{},{left:d})),swipeLeft:null,targetSlide:h}):u={currentSlide:N,trackStyle:Mh(P(P({},e),{},{left:d})),lazyLoadedList:X,targetSlide:h};return{state:u,nextState:s}},Yte=function(e,t){var i,l,a,o=e.slidesToScroll,r=e.slidesToShow,f=e.slideCount,v=e.currentSlide,b=e.targetSlide,Z=e.lazyLoad,p=e.infinite,y=f%o!==0,X=y?0:(f-v)%o;if(t.message==="previous")l=X===0?o:r-X,a=v-l,Z&&!p&&(i=v-l,a=i===-1?f-1:i),p||(a=b-o);else if(t.message==="next")l=X===0?o:X,a=v+l,Z&&!p&&(a=(v+o)%f+X),p||(a=b+o);else if(t.message==="dots")a=t.index*t.slidesToScroll;else if(t.message==="children"){if(a=t.index,p){var m=xte(P(P({},e),{},{targetSlide:a}));a>t.currentSlide&&m==="left"?a=a-f:a10)return{scrolling:!0};r&&(d.swipeLength=I);var w=(f?-1:1)*(d.curX>d.startX?1:-1);r&&(w=d.curY>d.startY?1:-1);var C=Math.ceil(m/N),x=a9(t.touchObject,r),R=d.swipeLength;return G||(v===0&&(x==="right"||x==="down")||v+1>=C&&(x==="left"||x==="up")||!ap(t)&&(x==="left"||x==="up"))&&(R=d.swipeLength*b,Z===!1&&p&&(p(x),W.edgeDragged=!0)),!y&&u&&(u(x),W.swiped=!0),a?c=M+R*(s/h)*w:f?c=M-R*w:c=M+R*w,r&&(c=M+R*w),W=P(P({},W),{},{touchObject:d,swipeLeft:c,trackStyle:Mh(P(P({},t),{},{left:c}))}),Math.abs(d.curX-d.startX)10&&(W.swiping=!0,Xu(e)),W}},Lte=function(e,t){var i=t.dragging,l=t.swipe,a=t.touchObject,o=t.listWidth,r=t.touchThreshold,f=t.verticalSwiping,v=t.listHeight,b=t.swipeToSlide,Z=t.scrolling,p=t.onSwipe,y=t.targetSlide,X=t.currentSlide,m=t.infinite;if(!i)return l&&Xu(e),{};var N=f?v/r:o/r,G=a9(a,f),d={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(Z||!a.swipeLength)return d;if(a.swipeLength>N){Xu(e),p&&p(G);var u,s,h=m?X:y;switch(G){case"left":case"up":s=h+hw(t),u=b?dw(t,s):s,d.currentDirection=0;break;case"right":case"down":s=h-hw(t),u=b?dw(t,s):s,d.currentDirection=1;break;default:u=h}d.triggerSlideHandler=u}else{var c=Ih(t);d.trackStyle=r9(P(P({},t),{},{left:c}))}return d},Rte=function(e){for(var t=e.infinite?e.slideCount*2:e.slideCount,i=e.infinite?e.slidesToShow*-1:0,l=e.infinite?e.slidesToShow*-1:0,a=[];ii[i.length-1])t=i[i.length-1];else for(var a in i){if(te.swipeLeft*-1)return i=f,!1}else if(f.offsetLeft-t+uv(f)/2>e.swipeLeft*-1)return i=f,!1;return!0}),!i)return 0;var o=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide,r=Math.abs(i.dataset.index-o)||1;return r}else return e.slidesToScroll},V1=function(e,t){return t.reduce(function(i,l){return i&&e.hasOwnProperty(l)},!0)?null:console.error("Keys Missing:",e)},Mh=function(e){V1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var t,i,l=e.slideCount+2*e.slidesToShow;e.vertical?i=l*e.slideHeight:t=Tte(e)*e.slideWidth;var a={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",r=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",f=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";a=P(P({},a),{},{WebkitTransform:o,transform:r,msTransform:f})}else e.vertical?a.top=e.left:a.left=e.left;return e.fade&&(a={opacity:1}),t&&(a.width=t+"px"),i&&(a.height=i+"px"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?a.marginTop=e.left+"px":a.marginLeft=e.left+"px"),a},r9=function(e){V1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=Mh(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t},Ih=function(e){if(e.unslick)return 0;V1(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t=e.slideIndex,i=e.trackRef,l=e.infinite,a=e.centerMode,o=e.slideCount,r=e.slidesToShow,f=e.slidesToScroll,v=e.slideWidth,b=e.listWidth,Z=e.variableWidth,p=e.slideHeight,y=e.fade,X=e.vertical,m=0,N,G,d=0;if(y||e.slideCount===1)return 0;var u=0;if(l?(u=-go(e),o%f!==0&&t+f>o&&(u=-(t>o?r-(t-o):o%f)),a&&(u+=parseInt(r/2))):(o%f!==0&&t+f>o&&(u=r-o%f),a&&(u=parseInt(r/2))),m=u*v,d=u*p,X?N=t*p*-1+d:N=t*v*-1+m,Z===!0){var s,h=i;if(s=t+go(e),G=h&&h.childNodes[s],N=G?G.offsetLeft*-1:0,a===!0){s=l?t+go(e):t,G=h&&h.children[s],N=0;for(var c=0;ce.currentSlide?e.targetSlide>e.currentSlide+Cte(e)?"left":"right":e.targetSlide0&&(o+=1),l&&t%2===0&&(o+=1),o}return l?0:t-1},Ste=function(e){var t=e.slidesToShow,i=e.centerMode,l=e.rtl,a=e.centerPadding;if(i){var o=(t-1)/2+1;return parseInt(a)>0&&(o+=1),!l&&t%2===0&&(o+=1),o}return l?t-1:0},fw=function(){return!!(typeof window<"u"&&window.document&&window.document.createElement)},dZ=function(e){var t,i,l,a;e.rtl?a=e.slideCount-1-e.index:a=e.index;var o=a<0||a>=e.slideCount;e.centerMode?(l=Math.floor(e.slidesToShow/2),i=(a-e.currentSlide)%e.slideCount===0,a>e.currentSlide-l-1&&a<=e.currentSlide+l&&(t=!0)):t=e.currentSlide<=a&&a=e.slideCount?r=e.targetSlide-e.slideCount:r=e.targetSlide;var f=a===r;return{"slick-slide":!0,"slick-active":t,"slick-center":i,"slick-cloned":o,"slick-current":f}},zte=function(e){var t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth=="number"?"px":"")),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+"px":t.left=-e.index*parseInt(e.slideWidth)+"px",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t},hZ=function(e,t){return e.key+"-"+t},kte=function(e,t){var i,l=[],a=[],o=[],r=t.length,f=i9(e),v=l9(e);return t.forEach(function(b,Z){var p,y={message:"children",index:Z,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(Z)>=0?p=b:p=D("div");var X=zte(P(P({},e),{},{index:Z})),m=p.props.class||"",N=dZ(P(P({},e),{},{index:Z}));if(l.push(wn(p,{key:"original"+hZ(p,Z),tabindex:"-1","data-index":Z,"aria-hidden":!N["slick-active"],class:_e(N,m),style:P(P({outline:"none"},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}})),e.infinite&&e.fade===!1){var G=r-Z;G<=go(e)&&r!==e.slidesToShow&&(i=-G,i>=f&&(p=b),N=dZ(P(P({},e),{},{index:i})),a.push(wn(p,{key:"precloned"+hZ(p,i),class:_e(N,m),tabindex:"-1","data-index":i,"aria-hidden":!N["slick-active"],style:P(P({},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}}))),r!==e.slidesToShow&&(i=r+Z,i=w&&f<=M:f===w}),x={message:"dots",index:c,slidesToScroll:a,currentSlide:f};function R(g){g&&g.preventDefault(),Z(x)}d=d.concat(D("li",{key:c,class:C},[wn(b({i:c}),{onClick:R})]))},s=0;s=t.children.length&&e.changeSlide({message:"index",index:t.children.length-t.slidesToShow,currentSlide:e.currentSlide}),!e.preProps.autoplay&&t.autoplay?e.handleAutoPlay("playing"):t.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.preProps=P({},t)}},mounted:function(){var e=this;if(this.__emit("init"),this.lazyLoad){var t=_m(P(P({},this.$props),this.$data));t.length>0&&(this.setState(function(i){return{lazyLoadedList:i.lazyLoadedList.concat(t)}}),this.__emit("lazyLoad",t))}this.$nextTick(function(){var i=P({listRef:e.list,trackRef:e.track,children:e.children},e.$props);e.updateState(i,!0,function(){e.adaptHeight(),e.autoplay&&e.handleAutoPlay("playing")}),e.lazyLoad==="progressive"&&(e.lazyLoadTimer=setInterval(e.progressiveLazyLoad,1e3)),e.ro=new TW(function(){e.animating?(e.onWindowResized(!1),e.callbackTimers.push(setTimeout(function(){return e.onWindowResized()},e.speed))):e.onWindowResized()}),e.ro.observe(e.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),function(l){l.onfocus=e.$props.pauseOnFocus?e.onSlideFocus:null,l.onblur=e.$props.pauseOnFocus?e.onSlideBlur:null}),window.addEventListener?window.addEventListener("resize",e.onWindowResized):window.attachEvent("onresize",e.onWindowResized)})},beforeUnmount:function(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(function(t){return clearTimeout(t)}),this.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",this.onWindowResized):window.detachEvent("onresize",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated:function(){if(this.checkImagesLoad(),this.__emit("reInit"),this.lazyLoad){var e=_m(P(P({},this.$props),this.$data));e.length>0&&(this.setState(function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad"))}this.adaptHeight()},methods:{listRefHandler:function(e){this.list=e},trackRefHandler:function(e){this.track=e},adaptHeight:function(){if(this.adaptiveHeight&&this.list){var e=this.list.querySelector('[data-index="'.concat(this.currentSlide,'"]'));this.list.style.height=g1(e)+"px"}},onWindowResized:function(e){var t=this;this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=lp(function(){return t.resizeWindow(e)},50),this.debouncedResize()},resizeWindow:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,i=Boolean(this.track);if(i){var l=P(P({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(l,t,function(){e.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback}},updateState:function(e,t,i){var l=Mte(e);e=P(P(P({},e),l),{},{slideIndex:l.currentSlide});var a=Ih(e);e=P(P({},e),{},{left:a});var o=Mh(e);(t||this.children.length!==e.children.length)&&(l.trackStyle=o),this.setState(l,i)},ssrInit:function(){var e=this.children;if(this.variableWidth){var t=0,i=0,l=[],a=go(P(P(P({},this.$props),this.$data),{},{slideCount:e.length})),o=Ob(P(P(P({},this.$props),this.$data),{},{slideCount:e.length}));e.forEach(function(u){var s,h,c=((s=u.props.style)===null||s===void 0||(h=s.width)===null||h===void 0?void 0:h.split("px")[0])||0;l.push(c),t+=c});for(var r=0;r=i&&e.onWindowResized()};if(!a.onclick)a.onclick=function(){return a.parentNode.focus()};else{var r=a.onclick;a.onclick=function(){r(),a.parentNode.focus()}}a.onload||(e.$props.lazyLoad?a.onload=function(){e.adaptHeight(),e.callbackTimers.push(setTimeout(e.onWindowResized,e.speed))}:(a.onload=o,a.onerror=function(){o(),e.__emit("lazyLoadError")}))})},progressiveLazyLoad:function(){for(var e=[],t=P(P({},this.$props),this.$data),i=this.currentSlide;i=-go(t);l--)if(this.lazyLoadedList.indexOf(l)<0){e.push(l);break}e.length>0?(this.setState(function(a){return{lazyLoadedList:a.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,l=this.$props,a=l.asNavFor,o=l.currentSlide,r=l.beforeChange,f=l.speed,v=l.afterChange,b=Ite(P(P(P({index:e},this.$props),this.$data),{},{trackRef:this.track,useCSS:this.useCSS&&!i})),Z=b.state,p=b.nextState;if(Z){r&&r(o,Z.currentSlide);var y=Z.lazyLoadedList.filter(function(X){return t.lazyLoadedList.indexOf(X)<0});this.$attrs.onLazyLoad&&y.length>0&&this.__emit("lazyLoad",y),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),v&&v(o),delete this.animationEndCallback),this.setState(Z,function(){a&&t.asNavForIndex!==e&&(t.asNavForIndex=e,a.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout(function(){var X=p.animating,m=jt(p,Ote);t.setState(m,function(){t.callbackTimers.push(setTimeout(function(){return t.setState({animating:X})},10)),v&&v(Z.currentSlide),delete t.animationEndCallback})},f))})}},changeSlide:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=P(P({},this.$props),this.$data),l=Yte(i,e);if(!(l!==0&&!l)&&(t===!0?this.slideHandler(l,t):this.slideHandler(l),this.$props.autoplay&&this.handleAutoPlay("update"),this.$props.focusOnSelect)){var a=this.list.querySelectorAll(".slick-current");a[0]&&a[0].focus()}},clickHandler:function(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler:function(e){var t=wte(e,this.accessibility,this.rtl);t!==""&&this.changeSlide({message:t})},selectHandler:function(e){this.changeSlide(e)},disableBodyScroll:function(){var e=function(i){i=i||window.event,i.preventDefault&&i.preventDefault(),i.returnValue=!1};window.ontouchmove=e},enableBodyScroll:function(){window.ontouchmove=null},swipeStart:function(e){this.verticalSwiping&&this.disableBodyScroll();var t=gte(e,this.swipe,this.draggable);t!==""&&this.setState(t)},swipeMove:function(e){var t=Vte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd:function(e){var t=Lte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(t){var i=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),i!==void 0&&(this.slideHandler(i),this.$props.verticalSwiping&&this.enableBodyScroll())}},touchEnd:function(e){this.swipeEnd(e),this.clickable=!0},slickPrev:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"previous"})},0))},slickNext:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"next"})},0))},slickGoTo:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return"";this.callbackTimers.push(setTimeout(function(){return t.changeSlide({message:"index",index:e,currentSlide:t.currentSlide},i)},0))},play:function(){var e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(ap(P(P({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay:function(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);var t=this.autoplaying;if(e==="update"){if(t==="hovered"||t==="focused"||t==="paused")return}else if(e==="leave"){if(t==="paused"||t==="focused")return}else if(e==="blur"&&(t==="paused"||t==="hovered"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:"playing"})},pause:function(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);var t=this.autoplaying;e==="paused"?this.setState({autoplaying:"paused"}):e==="focused"?(t==="hovered"||t==="playing")&&this.setState({autoplaying:"focused"}):t==="playing"&&this.setState({autoplaying:"hovered"})},onDotsOver:function(){this.autoplay&&this.pause("hovered")},onDotsLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onTrackOver:function(){this.autoplay&&this.pause("hovered")},onTrackLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onSlideFocus:function(){this.autoplay&&this.pause("focused")},onSlideBlur:function(){this.autoplay&&this.autoplaying==="focused"&&this.handleAutoPlay("blur")},customPaging:function(e){var t=e.i;return D("button",null,[t+1])},appendDots:function(e){var t=e.dots;return D("ul",{style:{display:"block"}},[t])}},render:function(){var e,t=this,i=_e("slick-slider",this.$attrs.class,{"slick-vertical":this.vertical,"slick-initialized":!0}),l=P(P({},this.$props),this.$data),a=uZ(l,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),o=this.$props.pauseOnHover;a=P(P({},a),{},{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Ra,onMouseover:o?this.onTrackOver:Ra});var r;if(this.dots===!0&&this.slideCount>=this.slidesToShow){var f=uZ(l,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","infinite","appendDots"]);f.customPaging=this.customPaging,f.appendDots=this.appendDots;var v=this.$slots,b=v.customPaging,Z=v.appendDots;b&&(f.customPaging=b),Z&&(f.appendDots=Z);var p=this.$props.pauseOnDotsHover;f=P(P({},f),{},{clickHandler:this.changeSlide,onMouseover:p?this.onDotsOver:Ra,onMouseleave:p?this.onDotsLeave:Ra}),r=D(Dte,f,null)}var y,X,m=uZ(l,["infinite","centerMode","currentSlide","slideCount","slidesToShow"]);m.clickHandler=this.changeSlide;var N=this.$slots,G=N.prevArrow,d=N.nextArrow;G&&(m.prevArrow=G),d&&(m.nextArrow=d),this.arrows&&(y=D(d9,m,null),X=D(h9,m,null));var u=null;this.vertical&&(u={height:typeof this.listHeight=="number"?"".concat(this.listHeight,"px"):this.listHeight});var s=null;this.vertical===!1?this.centerMode===!0&&(s={padding:"0px "+this.centerPadding}):this.centerMode===!0&&(s={padding:this.centerPadding+" 0px"});var h=P(P({},u),s),c=this.touchMove,W=(e={ref:this.listRefHandler,class:"slick-list",style:h,onClick:this.clickHandler,onMousedown:c?this.swipeStart:Ra,onMousemove:this.dragging&&c?this.swipeMove:Ra,onMouseup:c?this.swipeEnd:Ra,onMouseleave:this.dragging&&c?this.swipeEnd:Ra},ce(e,Ui?"onTouchstartPassive":"onTouchstart",c?this.swipeStart:Ra),ce(e,Ui?"onTouchmovePassive":"onTouchmove",this.dragging&&c?this.swipeMove:Ra),ce(e,"onTouchend",c?this.touchEnd:Ra),ce(e,"onTouchcancel",this.dragging&&c?this.swipeEnd:Ra),ce(e,"onKeydown",this.accessibility?this.keyHandler:Ra),e),M={class:i,dir:"ltr",style:this.$attrs.style};return this.unslick&&(W={class:"slick-list",ref:this.listRefHandler},M={class:i}),D("div",M,[this.unslick?"":y,D("div",W,[D(Fte,a,{default:function(){return[t.children]}})]),this.unslick?"":X,this.unslick?"":r])}},Ute=He({name:"Slider",mixins:[Vc],inheritAttrs:!1,props:P({},n9),data:function(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted:function(){var e=this;if(this.responsive){var t=this.responsive.map(function(l){return l.breakpoint});t.sort(function(l,a){return l-a}),t.forEach(function(l,a){var o;a===0?o=sZ({minWidth:0,maxWidth:l}):o=sZ({minWidth:t[a-1]+1,maxWidth:l}),fw()&&e.media(o,function(){e.setState({breakpoint:l})})});var i=sZ({minWidth:t.slice(-1)[0]});fw()&&this.media(i,function(){e.setState({breakpoint:null})})}},beforeUnmount:function(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler:function(e){this.innerSlider=e},media:function(e,t){var i=window.matchMedia(e),l=function(o){var r=o.matches;r&&t()};i.addListener(l),l(i),this._responsiveMediaHandlers.push({mql:i,query:e,listener:l})},slickPrev:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo:function(e){var t,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(t=this.innerSlider)===null||t===void 0||t.slickGoTo(e,i)},slickPause:function(){var e;(e=this.innerSlider)===null||e===void 0||e.pause("paused")},slickPlay:function(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay("play")}},render:function(){var e=this,t,i;this.breakpoint?(i=this.responsive.filter(function(m){return m.breakpoint===e.breakpoint}),t=i[0].settings==="unslick"?"unslick":P(P({},this.$props),i[0].settings)):t=P({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);var l=Lh(this)||[];l=l.filter(function(m){return typeof m=="string"?!!m.trim():!!m}),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),t.variableWidth=!1);for(var a=[],o=null,r=0;r=l.length)break;b.push(wn(l[Z],{key:100*r+10*v+Z,tabindex:-1,style:{width:"".concat(100/t.slidesPerRow,"%"),display:"inline-block"}}))}f.push(D("div",{key:10*r+v},[b]))}t.variableWidth?a.push(D("div",{key:r,style:{width:o}},[f])):a.push(D("div",{key:r},[f]))}if(t==="unslick"){var y="regular slider "+(this.className||"");return D("div",{class:y},[l])}else a.length<=t.slidesToShow&&(t.unslick=!0);var X=P(P(P({},this.$attrs),t),{},{children:a,ref:this.innerSliderRefHandler});return D(jte,P(P({},X),{},{__propsSymbol__:[]}),this.$slots)}});var Ete=["class","style"],Kte=function(){return{effect:String,dots:{type:Boolean,default:!0},vertical:{type:Boolean,default:void 0},autoplay:{type:Boolean,default:void 0},easing:String,beforeChange:Function,afterChange:Function,prefixCls:String,accessibility:{type:Boolean,default:void 0},nextArrow:We.any,prevArrow:We.any,pauseOnHover:{type:Boolean,default:void 0},adaptiveHeight:{type:Boolean,default:void 0},arrows:{type:Boolean,default:!1},autoplaySpeed:Number,centerMode:{type:Boolean,default:void 0},centerPadding:String,cssEase:String,dotsClass:String,draggable:{type:Boolean,default:!1},fade:{type:Boolean,default:void 0},focusOnSelect:{type:Boolean,default:void 0},infinite:{type:Boolean,default:void 0},initialSlide:Number,lazyLoad:String,rtl:{type:Boolean,default:void 0},slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:{type:Boolean,default:void 0},swipeToSlide:{type:Boolean,default:void 0},swipeEvent:Function,touchMove:{type:Boolean,default:void 0},touchThreshold:Number,variableWidth:{type:Boolean,default:void 0},useCSS:{type:Boolean,default:void 0},slickGoTo:Number,responsive:Array,dotPosition:{type:String,default:void 0},verticalSwiping:{type:Boolean,default:!1}}},Hte=He({compatConfig:{MODE:3},name:"ACarousel",inheritAttrs:!1,props:Kte(),setup:function(e,t){var i=t.slots,l=t.attrs,a=t.expose,o=Ne(),r=function(m){var N,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(N=o.value)===null||N===void 0||N.slickGoTo(m,G)};a({goTo:r,autoplay:function(m){var N,G;(N=o.value)===null||N===void 0||(G=N.innerSlider)===null||G===void 0||G.handleAutoPlay(m)},prev:function(){var m;(m=o.value)===null||m===void 0||m.slickPrev()},next:function(){var m;(m=o.value)===null||m===void 0||m.slickNext()},innerSlider:de(function(){var X;return(X=o.value)===null||X===void 0?void 0:X.innerSlider})}),qt(function(){Ci(e.vertical===void 0,"Carousel","`vertical` is deprecated, please use `dotPosition` instead.")});var f=Nt("carousel",e),v=f.prefixCls,b=f.direction,Z=de(function(){return e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?"right":"bottom"}),p=de(function(){return Z.value==="left"||Z.value==="right"}),y=de(function(){var X,m="slick-dots";return _e((X={},ce(X,m,!0),ce(X,"".concat(m,"-").concat(Z.value),!0),ce(X,"".concat(e.dotsClass),!!e.dotsClass),X))});return function(){var X,m=e.dots,N=e.arrows,G=e.draggable,d=e.effect,u=l.class,s=l.style,h=jt(l,Ete),c=d==="fade"?!0:e.fade,W=_e(v.value,(X={},ce(X,"".concat(v.value,"-rtl"),b.value==="rtl"),ce(X,"".concat(v.value,"-vertical"),p.value),ce(X,"".concat(u),!!u),X));return D("div",{class:W,style:s},[D(Ute,P(P(P({ref:o},e),h),{},{dots:!!m,dotsClass:y.value,arrows:N,draggable:G,fade:c,vertical:p.value}),i)])}}});const Pte=wi(Hte);var L1="__RC_CASCADER_SPLIT__",Qte="SHOW_PARENT",Bte="SHOW_CHILD";function ys(n){return n.join(L1)}function cu(n){return n.map(ys)}function Ate(n){return n.split(L1)}function _te(n){var e=n||{},t=e.label,i=e.value,l=e.children,a=i||"value";return{label:t||"label",value:a,key:a,children:l||"children"}}function Td(n,e){var t,i;return(t=n.isLeaf)!==null&&t!==void 0?t:!((i=n[e.children])!==null&&i!==void 0&&i.length)}function $te(n){var e=n.parentElement;if(e){var t=n.offsetTop-e.offsetTop;t-e.scrollTop<0?e.scrollTo({top:t}):t+n.offsetHeight-e.scrollTop>e.offsetHeight&&e.scrollTo({top:t+n.offsetHeight-e.offsetHeight})}}var f9=Symbol("TreeContextKey"),qte=He({compatConfig:{MODE:3},name:"TreeContext",props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(f9,de(function(){return e.value})),function(){var l;return(l=i.default)===null||l===void 0?void 0:l.call(i)}}}),R1=function(){return un(f9,de(function(){return{}}))},b9=Symbol("KeysStateKey"),ene=function(e){hn(b9,e)},m9=function(){return un(b9,{expandedKeys:Gn([]),selectedKeys:Gn([]),loadedKeys:Gn([]),loadingKeys:Gn([]),checkedKeys:Gn([]),halfCheckedKeys:Gn([]),expandedKeysSet:de(function(){return new Set}),selectedKeysSet:de(function(){return new Set}),loadedKeysSet:de(function(){return new Set}),loadingKeysSet:de(function(){return new Set}),checkedKeysSet:de(function(){return new Set}),halfCheckedKeysSet:de(function(){return new Set}),flattenNodes:Gn([])})},tne=function(e){for(var t=e.prefixCls,i=e.level,l=e.isStart,a=e.isEnd,o="".concat(t,"-indent-unit"),r=[],f=0;f=0&&t.splice(i,1),t}function ns(n,e){var t=(n||[]).slice();return t.indexOf(e)===-1&&t.push(e),t}function x1(n){return n.split("-")}function y9(n,e){return"".concat(n,"-").concat(e)}function rne(n){return n&&n.type&&n.type.isTreeNode}function one(n,e){var t=[],i=e[n];function l(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];a.forEach(function(o){var r=o.key,f=o.children;t.push(r),l(f)})}return l(i.children),t}function sne(n){if(n.parent){var e=x1(n.pos);return Number(e[e.length-1])===n.parent.children.length-1}return!1}function cne(n){var e=x1(n.pos);return Number(e[e.length-1])===0}function pw(n,e,t,i,l,a,o,r,f,v){var b,Z=n.clientX,p=n.clientY,y=n.target.getBoundingClientRect(),X=y.top,m=y.height,N=(v==="rtl"?-1:1)*(((l==null?void 0:l.x)||0)-Z),G=(N-12)/i,d=r[t.eventKey];if(p-1.5?a({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:a({dragNode:x,dropNode:R,dropPosition:0})?I=0:a({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:a({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1,{dropPosition:I,dropLevelOffset:w,dropTargetKey:d.key,dropTargetPos:d.pos,dragOverNodeKey:M,dropContainerKey:I===0?null:((b=d.parent)===null||b===void 0?void 0:b.key)||null,dropAllowed:g}}function yw(n,e){if(n){var t=e.multiple;return t?n.slice():n.length?[n[0]]:n}}function fZ(n){if(!n)return null;var e;if(Array.isArray(n))e={checkedKeys:n,halfCheckedKeys:void 0};else if(Yt(n)==="object")e={checkedKeys:n.checked||void 0,halfCheckedKeys:n.halfChecked||void 0};else return null;return e}function hv(n,e){var t=new Set;function i(l){if(!t.has(l)){var a=e[l];if(a){t.add(l);var o=a.parent,r=a.node;r.disabled||o&&i(o.key)}}}return(n||[]).forEach(function(l){i(l)}),yt(t)}var une=["title","icon","switcherIcon"];function Oh(n,e){return n??e}function rp(n){var e=n||{},t=e.title,i=e._title,l=e.key,a=e.children,o=t||"title";return{title:o,_title:i||[o],key:l||"key",children:a||"children"}}function fv(n){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],i=Ri(t);return i.map(function(l){var a,o,r,f;if(!rne(l))return null;for(var v=l.children||{},b=l.key,Z={},p=0,y=Object.entries(l.props);p1&&arguments[1]!==void 0?arguments[1]:null;return b.map(function(p,y){for(var X=y9(Z?Z.pos:"0",y),m=Oh(p[a],X),N,G=0;G1&&arguments[1]!==void 0?arguments[1]:{},t=e.initWrapper,i=e.processEntity,l=e.onProcessFinished,a=e.externalGetKey,o=e.childrenPropName,r=e.fieldNames,f=arguments.length>2?arguments[2]:void 0,v=a||f,b={},Z={},p={posEntities:b,keyEntities:Z};return t&&(p=t(p)||p),hne(n,function(y){var X=y.node,m=y.index,N=y.pos,G=y.key,d=y.parentPos,u=y.level,s=y.nodes,h={node:X,nodes:s,index:m,key:G,pos:N,level:u},c=Oh(G,N);b[N]=h,Z[c]=h,h.parent=b[d],h.parent&&(h.parent.children=h.parent.children||[],h.parent.children.push(h)),i&&i(h,p)},{externalGetKey:v,childrenPropName:o,fieldNames:r}),l&&l(p),p}function bv(n,e){var t=e.expandedKeysSet,i=e.selectedKeysSet,l=e.loadedKeysSet,a=e.loadingKeysSet,o=e.checkedKeysSet,r=e.halfCheckedKeysSet,f=e.dragOverNodeKey,v=e.dropPosition,b=e.keyEntities,Z=b[n],p={eventKey:n,expanded:t.has(n),selected:i.has(n),loaded:l.has(n),loading:a.has(n),checked:o.has(n),halfChecked:r.has(n),pos:String(Z?Z.pos:""),parent:Z.parent,dragOver:f===n&&v===0,dragOverGapTop:f===n&&v===-1,dragOverGapBottom:f===n&&v===1};return p}function mv(n){var e=n.data,t=n.expanded,i=n.selected,l=n.checked,a=n.loaded,o=n.loading,r=n.halfChecked,f=n.dragOver,v=n.dragOverGapTop,b=n.dragOverGapBottom,Z=n.pos,p=n.active,y=n.eventKey,X=P(P({dataRef:e},e),{},{expanded:t,selected:i,checked:l,loaded:a,loading:o,halfChecked:r,dragOver:f,dragOverGapTop:v,dragOverGapBottom:b,pos:Z,active:p,eventKey:y,key:y});return"props"in X||Object.defineProperty(X,"props",{get:function(){return n}}),X}const fne=function(n,e){var t=de(function(){return jh(n.value,{fieldNames:e.value,initWrapper:function(l){return P(P({},l),{},{pathKeyEntities:{}})},processEntity:function(l,a){var o=l.nodes.map(function(r){return r[e.value.value]}).join(L1);a.pathKeyEntities[o]=l,l.key=o}}).pathKeyEntities});return t};function bne(n){var e=Ne(!1),t=Ne({});return qt(function(){if(!n.value){e.value=!1,t.value={};return}var i={matchInputWidth:!0,limit:50};n.value&&Yt(n.value)==="object"&&(i=P(P({},i),n.value)),i.limit<=0&&delete i.limit,e.value=!0,t.value=i}),{showSearch:e,searchConfig:t}}var _d="__rc_cascader_search_mark__",mne=function(e,t,i){var l=i.label;return t.some(function(a){return String(a[l]).toLowerCase().includes(e.toLowerCase())})},pne=function(e){var t=e.path,i=e.fieldNames;return t.map(function(l){return l[i.label]}).join(" / ")};const yne=function(n,e,t,i,l,a){return de(function(){var o=l.value,r=o.filter,f=r===void 0?mne:r,v=o.render,b=v===void 0?pne:v,Z=o.limit,p=Z===void 0?50:Z,y=o.sort,X=[];if(!n.value)return[];function m(N,G){N.forEach(function(d){if(!(!y&&p>0&&X.length>=p)){var u=[].concat(yt(G),[d]),s=d[t.value.children];if((!s||s.length===0||a.value)&&f(n.value,u,{label:t.value.label})){var h;X.push(P(P({},d),{},(h={},ce(h,t.value.label,b({inputValue:n.value,path:u,prefixCls:i.value,fieldNames:t.value})),ce(h,_d,u),h)))}s&&m(d[t.value.children],u)}})}return m(e.value,[]),y&&X.sort(function(N,G){return y(N[_d],G[_d],n.value,t.value)}),p>0?X.slice(0,p):X})};function Zw(n,e,t){var i=new Set(n);return n.filter(function(l){var a=e[l],o=a?a.parent:null,r=a?a.children:null;return t===Bte?!(r&&r.some(function(f){return f.key&&i.has(f.key)})):!(o&&!o.node.disabled&&i.has(o.key))})}function Yh(n,e,t){for(var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,l=e,a=[],o=function(v){var b,Z,p,y=n[v],X=(b=l)===null||b===void 0?void 0:b.findIndex(function(N){var G=N[t.value];return i?String(G)===String(y):G===y}),m=X!==-1?(Z=l)===null||Z===void 0?void 0:Z[X]:null;a.push({value:(p=m==null?void 0:m[t.value])!==null&&p!==void 0?p:y,index:X,option:m}),l=m==null?void 0:m[t.children]},r=0;r=0;v-=1){var b=e.get(v)||new Set;b.forEach(function(Z){var p=Z.parent,y=Z.node;if(!(i(y)||!Z.parent||f.has(Z.parent.key))){if(i(Z.parent.node)){f.add(p.key);return}var X=!0,m=!1;(p.children||[]).filter(function(N){return!i(N.node)}).forEach(function(N){var G=N.key,d=l.has(G);X&&!d&&(X=!1),!m&&(d||a.has(G))&&(m=!0)}),X&&l.add(p.key),m&&a.add(p.key),f.add(p.key)}})}return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(Z9(a,l))}}function Gne(n,e,t,i,l){for(var a=new Set(n),o=new Set(e),r=0;r<=i;r+=1){var f=t.get(r)||new Set;f.forEach(function(p){var y=p.key,X=p.node,m=p.children,N=m===void 0?[]:m;!a.has(y)&&!o.has(y)&&!l(X)&&N.filter(function(G){return!l(G.node)}).forEach(function(G){a.delete(G.key)})})}o=new Set;for(var v=new Set,b=i;b>=0;b-=1){var Z=t.get(b)||new Set;Z.forEach(function(p){var y=p.parent,X=p.node;if(!(l(X)||!p.parent||v.has(p.parent.key))){if(l(p.parent.node)){v.add(y.key);return}var m=!0,N=!1;(y.children||[]).filter(function(G){return!l(G.node)}).forEach(function(G){var d=G.key,u=a.has(d);m&&!u&&(m=!1),!N&&(u||o.has(d))&&(N=!0)}),m||a.delete(y.key),N&&o.add(y.key),v.add(y.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(Z9(o,a))}}function ir(n,e,t,i,l,a){var o;a?o=a:o=vne;var r=new Set(n.filter(function(v){var b=!!t[v];return b})),f;return e===!0?f=Wne(r,l,i,o):f=Gne(r,e.halfCheckedKeys,l,i,o),f}const Xne=function(n,e,t,i,l){return de(function(){var a=l.value||function(o){var r=o.labels,f=i.value?r.slice(-1):r,v=" / ";return f.every(function(b){return["string","number"].includes(Yt(b))})?f.join(v):f.reduce(function(b,Z,p){var y=Si(Z)?wn(Z,{key:p}):Z;return p===0?[y]:[].concat(yt(b),[v,y])},[])};return n.value.map(function(o){var r=Yh(o,e.value,t.value),f=a({labels:r.map(function(b){var Z,p=b.option,y=b.value;return(Z=p==null?void 0:p[t.value.label])!==null&&Z!==void 0?Z:y}),selectedOptions:r.map(function(b){var Z=b.option;return Z})}),v=ys(o);return{label:f,value:v,key:v,valueCells:o}})})};var v9=Symbol("CascaderContextKey"),Nne=function(e){hn(v9,e)},op=function(){return un(v9)};const Mne=function(){var n=zh(),e=op(),t=e.values,i=di([]),l=ft(i,2),a=l[0],o=l[1];return rt(function(){return n.open},function(){if(n.open&&!n.multiple){var r=t.value[0];o(r||[])}},{immediate:!0}),[a,o]},Ine=function(n,e,t,i,l,a){var o=zh(),r=de(function(){return o.direction==="rtl"}),f=[Ne([]),Ne(),Ne([])],v=f[0],b=f[1],Z=f[2];qt(function(){for(var N=-1,G=e.value,d=[],u=[],s=i.value.length,h=function(x){var R=G.findIndex(function(g){return g[t.value.value]===i.value[x]});if(R===-1)return"break";N=R,d.push(N),u.push(i.value[x]),G=G[N][t.value.children]},c=0;c1){var G=v.value.slice(0,-1);p(G)}else o.toggleOpen(!1)},m=function(){var G,d=((G=Z.value[b.value])===null||G===void 0?void 0:G[t.value.children])||[],u=d.find(function(h){return!h.disabled});if(u){var s=[].concat(yt(v.value),[u[t.value.value]]);p(s)}};n.expose({onKeydown:function(G){var d=G.which;switch(d){case bt.UP:case bt.DOWN:{var u=0;d===bt.UP?u=-1:d===bt.DOWN&&(u=1),u!==0&&y(u);break}case bt.LEFT:{r.value?m():X();break}case bt.RIGHT:{r.value?X():m();break}case bt.BACKSPACE:{o.searchValue||X();break}case bt.ENTER:{if(v.value.length){var s=Z.value[b.value],h=(s==null?void 0:s[_d])||[];h.length?a(h.map(function(c){return c[t.value.value]}),h[h.length-1]):a(v.value,s)}break}case bt.ESC:o.toggleOpen(!1),open&&G.stopPropagation()}},onKeyup:function(){}})};function sp(n){var e,t=n.prefixCls,i=n.checked,l=n.halfChecked,a=n.disabled,o=n.onClick,r=op(),f=r.customSlots,v=r.checkable,b=v.value!==!1?f.value.checkable:v.value,Z=typeof b=="function"?b():typeof b=="boolean"?null:b;return D("span",{class:(e={},ce(e,t,!0),ce(e,"".concat(t,"-checked"),i),ce(e,"".concat(t,"-indeterminate"),!i&&l),ce(e,"".concat(t,"-disabled"),a),e),onClick:o},[Z])}sp.props=["prefixCls","checked","halfChecked","disabled","onClick"];sp.displayName="Checkbox";sp.inheritAttrs=!1;var W9="__cascader_fix_label__";function cp(n){var e,t,i,l,a,o,r=n.prefixCls,f=n.multiple,v=n.options,b=n.activeValue,Z=n.prevValuePath,p=n.onToggleOpen,y=n.onSelect,X=n.onActive,m=n.checkedSet,N=n.halfCheckedSet,G=n.loadingKeys,d=n.isSelectable,u="".concat(r,"-menu"),s="".concat(r,"-menu-item"),h=op(),c=h.fieldNames,W=h.changeOnSelect,M=h.expandTrigger,I=h.expandIcon,w=h.loadingIcon,C=h.dropdownMenuColumnStyle,x=h.customSlots,R=(e=I.value)!==null&&e!==void 0?e:(t=(i=x.value).expandIcon)===null||t===void 0?void 0:t.call(i),g=(l=w.value)!==null&&l!==void 0?l:(a=(o=x.value).loadingIcon)===null||a===void 0?void 0:a.call(o),S=M.value==="hover";return D("ul",{class:u,role:"menu"},[v.map(function(L){var V,Y,T=L.disabled,J=L[_d],U=(V=L[W9])!==null&&V!==void 0?V:L[c.value.label],K=L[c.value.value],H=Td(L,c.value),k=J?J.map(function(re){return re[c.value.value]}):[].concat(yt(Z),[K]),F=ys(k),O=G.includes(F),Q=m.has(F),oe=N.has(F),se=function(){!T&&(!S||!H)&&X(k)},he=function(){d(L)&&y(k,H)},pe;return typeof L.title=="string"?pe=L.title:typeof U=="string"&&(pe=U),D("li",{key:F,class:[s,(Y={},ce(Y,"".concat(s,"-expand"),!H),ce(Y,"".concat(s,"-active"),b===K),ce(Y,"".concat(s,"-disabled"),T),ce(Y,"".concat(s,"-loading"),O),Y)],style:C.value,role:"menuitemcheckbox",title:pe,"aria-checked":Q,"data-path-key":F,onClick:function(){se(),(!f||H)&&he()},onDblclick:function(){W.value&&p(!1)},onMouseenter:function(){S&&se()},onMousedown:function(_){_.preventDefault()}},[f&&D(sp,{prefixCls:"".concat(r,"-checkbox"),checked:Q,halfChecked:oe,disabled:T,onClick:function(_){_.stopPropagation(),he()}},null),D("div",{class:"".concat(s,"-content")},[U]),!O&&R&&!H&&D("div",{class:"".concat(s,"-expand-icon")},[R]),O&&g&&D("div",{class:"".concat(s,"-loading-icon")},[g])])})])}cp.props=["prefixCls","multiple","options","activeValue","prevValuePath","onToggleOpen","onSelect","onActive","checkedSet","halfCheckedSet","loadingKeys","isSelectable"];cp.displayName="Column";cp.inheritAttrs=!1;const Yne=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,l=t.slots,a=zh(),o=Ne(),r=de(function(){return a.direction==="rtl"}),f=op(),v=f.options,b=f.values,Z=f.halfValues,p=f.fieldNames,y=f.changeOnSelect,X=f.onSelect,m=f.searchOptions,N=f.dropdownPrefixCls,G=f.loadData,d=f.expandTrigger,u=f.customSlots,s=de(function(){return N.value||a.prefixCls}),h=Gn([]),c=function(U){if(!(!G.value||a.searchValue)){var K=Yh(U,v.value,p.value),H=K.map(function(O){var Q=O.option;return Q}),k=H[H.length-1];if(k&&!Td(k,p.value)){var F=ys(U);h.value=[].concat(yt(h.value),[F]),G.value(H)}}};qt(function(){h.value.length&&h.value.forEach(function(J){var U=Ate(J),K=Yh(U,v.value,p.value,!0).map(function(k){var F=k.option;return F}),H=K[K.length-1];(!H||H[p.value.children]||Td(H,p.value))&&(h.value=h.value.filter(function(k){return k!==J}))})});var W=de(function(){return new Set(cu(b.value))}),M=de(function(){return new Set(cu(Z.value))}),I=Mne(),w=ft(I,2),C=w[0],x=w[1],R=function(U){x(U),c(U)},g=function(U){var K=U.disabled,H=Td(U,p.value);return!K&&(H||y.value||a.multiple)},S=function(U,K){var H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;X(U),!a.multiple&&(K||y.value&&(d.value==="hover"||H))&&a.toggleOpen(!1)},L=de(function(){return a.searchValue?m.value:v.value}),V=de(function(){for(var J=[{options:L.value}],U=L.value,K=function(O){var Q=C.value[O],oe=U.find(function(he){return he[p.value.value]===Q}),se=oe==null?void 0:oe[p.value.children];if(!(se!=null&&se.length))return"break";U=se,J.push({options:se})},H=0;H"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ub(n,e,t){return ole()?Ub=Reflect.construct.bind():Ub=function(l,a,o){var r=[null];r.push.apply(r,a);var f=Function.bind.apply(l,r),v=new f;return o&&wh(v,o.prototype),v},Ub.apply(null,arguments)}function sle(n){return Function.toString.call(n).indexOf("[native code]")!==-1}function yv(n){var e=typeof Map=="function"?new Map:void 0;return yv=function(i){if(i===null||!sle(i))return i;if(typeof i!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(i))return e.get(i);e.set(i,l)}function l(){return Ub(i,arguments,pv(this).constructor)}return l.prototype=Object.create(i.prototype,{constructor:{value:l,enumerable:!1,writable:!0,configurable:!0}}),wh(l,i)},yv(n)}var cle=/%[sdj%]/g,ule=function(){};typeof process<"u"&&process.env;function Zv(n){if(!n||!n.length)return null;var e={};return n.forEach(function(t){var i=t.field;e[i]=e[i]||[],e[i].push(t)}),e}function ka(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i=a)return r;switch(r){case"%s":return String(t[l++]);case"%d":return Number(t[l++]);case"%j":try{return JSON.stringify(t[l++])}catch{return"[Circular]"}break;default:return r}});return o}return n}function dle(n){return n==="string"||n==="url"||n==="hex"||n==="email"||n==="date"||n==="pattern"}function sl(n,e){return!!(n==null||e==="array"&&Array.isArray(n)&&!n.length||dle(e)&&typeof n=="string"&&!n)}function hle(n,e,t){var i=[],l=0,a=n.length;function o(r){i.push.apply(i,r||[]),l++,l===a&&t(i)}n.forEach(function(r){e(r,o)})}function Vw(n,e,t){var i=0,l=n.length;function a(o){if(o&&o.length){t(o);return}var r=i;i=i+1,r=0)){var W=function(I){if(!(I.target.tagName==="INPUT"||wY(I.target))){u(c);var w=getComputedStyle(c).getPropertyValue("border-top-color")||getComputedStyle(c).getPropertyValue("border-color")||getComputedStyle(c).getPropertyValue("background-color");b=setTimeout(function(){return d(c,w)},0),At.cancel(Z),p=!0,Z=At(function(){p=!1},10)}};return c.addEventListener("click",W,!0),{cancel:function(){c.removeEventListener("click",W,!0)}}}};return Kt(function(){cn(function(){var h=us(l);h.nodeType===1&&(v=s(h))})}),fn(function(){v&&v.cancel(),clearTimeout(b),X=!0}),function(){var h;return(h=i.default)===null||h===void 0?void 0:h.call(i)[0]}}});function Jm(n){return n==="danger"?{danger:!0}:{type:n}}var i8=function(){return{prefixCls:String,type:String,htmlType:{type:String,default:"button"},shape:{type:String},size:{type:String},loading:{type:[Boolean,Object],default:function(){return!1}},disabled:{type:Boolean,default:void 0},ghost:{type:Boolean,default:void 0},block:{type:Boolean,default:void 0},danger:{type:Boolean,default:void 0},icon:We.any,href:String,target:String,title:String,onClick:{type:Function},onMousedown:{type:Function}}};const zx=i8;var gY=function(e){e&&(e.style.width="0px",e.style.opacity="0",e.style.transform="scale(0)")},VY=function(e){cn(function(){e&&(e.style.width="".concat(e.scrollWidth,"px"),e.style.opacity="1",e.style.transform="scale(1)")})},LY=function(e){e&&e.style&&(e.style.width=null,e.style.opacity=null,e.style.transform=null)};const l8=He({compatConfig:{MODE:3},name:"LoadingIcon",props:{prefixCls:String,loading:[Boolean,Object],existIcon:Boolean},setup:function(e){return function(){var t=e.existIcon,i=e.prefixCls,a=e.loading;if(t)return D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]);var l=!!a;return D(aa,{name:"".concat(i,"-loading-icon-motion"),onBeforeEnter:gY,onEnter:VY,onAfterEnter:LY,onBeforeLeave:VY,onLeave:function(r){setTimeout(function(){gY(r)})},onAfterLeave:LY},{default:function(){return[l?D("span",{class:"".concat(i,"-loading-icon")},[D(Yr,null,null)]):null]}})}}});var RY=/^[\u4e00-\u9fa5]{2}$/,TY=RY.test.bind(RY);function ab(n){return n==="text"||n==="link"}const qi=He({compatConfig:{MODE:3},name:"AButton",inheritAttrs:!1,__ANT_BUTTON:!0,props:pn(zx(),{type:"default"}),slots:["icon"],setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=Nt("btn",e),r=o.prefixCls,f=o.autoInsertSpaceInButton,v=o.direction,b=o.size,Z=Ne(null),p=Ne(void 0),y=!1,X=Ne(!1),m=Ne(!1),N=de(function(){return f.value!==!1}),G=de(function(){return Yt(e.loading)==="object"&&e.loading.delay?e.loading.delay||!0:!!e.loading});rt(G,function(c){clearTimeout(p.value),typeof G.value=="number"?p.value=setTimeout(function(){X.value=c},G.value):X.value=c},{immediate:!0});var d=de(function(){var c,W=e.type,M=e.shape,I=M===void 0?"default":M,w=e.ghost,C=e.block,x=e.danger,R=r.value,g={large:"lg",small:"sm",middle:void 0},S=b.value,L=S&&g[S]||"";return c={},ce(c,"".concat(R),!0),ce(c,"".concat(R,"-").concat(W),W),ce(c,"".concat(R,"-").concat(I),I!=="default"&&I),ce(c,"".concat(R,"-").concat(L),L),ce(c,"".concat(R,"-loading"),X.value),ce(c,"".concat(R,"-background-ghost"),w&&!ab(W)),ce(c,"".concat(R,"-two-chinese-chars"),m.value&&N.value),ce(c,"".concat(R,"-block"),C),ce(c,"".concat(R,"-dangerous"),!!x),ce(c,"".concat(R,"-rtl"),v.value==="rtl"),c}),u=function(){var W=Z.value;if(!(!W||f.value===!1)){var M=W.textContent;y&&TY(M)?m.value||(m.value=!0):m.value&&(m.value=!1)}},s=function(W){if(X.value||e.disabled){W.preventDefault();return}l("click",W)},h=function(W,M){var I=M?" ":"";if(W.type===Ns){var w=W.children.trim();return TY(w)&&(w=w.split("").join(I)),D("span",null,[w])}return W};return qt(function(){jn(!(e.ghost&&ab(e.type)),"Button","`link` or `text` button can't be a `ghost` button.")}),Kt(u),Dl(u),fn(function(){p.value&&clearTimeout(p.value)}),function(){var c,W,M=e.icon,I=M===void 0?(c=i.icon)===null||c===void 0?void 0:c.call(i):M,w=ti((W=i.default)===null||W===void 0?void 0:W.call(i));y=w.length===1&&!I&&!ab(e.type);var C=e.type,x=e.htmlType,R=e.disabled,g=e.href,S=e.title,L=e.target,V=e.onMousedown,Y=X.value?"loading":I,T=P(P({},a),{},{title:S,disabled:R,class:[d.value,a.class,ce({},"".concat(r.value,"-icon-only"),w.length===0&&!!Y)],onClick:s,onMousedown:V});R||delete T.disabled;var J=I&&!X.value?I:D(l8,{existIcon:!!I,prefixCls:r.value,loading:!!X.value},null),U=w.map(function(H){return h(H,y&&N.value)});if(g!==void 0)return D("a",P(P({},T),{},{href:g,target:L,ref:Z}),[J,U]);var K=D("button",P(P({},T),{},{ref:Z,type:x}),[J,U]);return ab(C)?K:D(EG,{ref:"wave",disabled:!!X.value},{default:function(){return[K]}})}}});function xY(n,e){for(var t=0;t=0?"".concat(f.value,"-slide-down"):"".concat(f.value,"-slide-up")}),p=function(){var N,G,d,u=e.overlay||((N=i.overlay)===null||N===void 0?void 0:N.call(i)),s=Array.isArray(u)?u[0]:u;if(!s)return null;var h=s.props||{};jn(!h.mode||h.mode==="vertical","Dropdown",'mode="'.concat(h.mode,`" is not supported for Dropdown's Menu.`));var c=h.selectable,W=c===void 0?!1:c,M=h.expandIcon,I=M===void 0?(G=s.children)===null||G===void 0||(d=G.expandIcon)===null||d===void 0?void 0:d.call(G):M,w=typeof I<"u"&&Si(I)?I:D("span",{class:"".concat(r.value,"-menu-submenu-arrow")},[D(To,{class:"".concat(r.value,"-menu-submenu-arrow-icon")},null)]),C=Si(s)?wn(s,{mode:"vertical",selectable:W,expandIcon:function(){return w}}):s;return C},y=de(function(){var m=e.placement;if(!m)return v.value==="rtl"?"bottomRight":"bottomLeft";if(m.includes("Center")){var N=m.slice(0,m.indexOf("Center"));return jn(!m.includes("Center"),"Dropdown","You are using '".concat(m,"' placement in Dropdown, which is deprecated. Try to use '").concat(N,"' instead.")),N}return m}),X=function(N){l("update:visible",N),l("visibleChange",N)};return function(){var m,N,G=e.arrow,d=e.trigger,u=e.disabled,s=e.overlayClassName,h=(m=i.default)===null||m===void 0?void 0:m.call(i)[0],c=wn(h,Xn({class:_e(h==null||(N=h.props)===null||N===void 0?void 0:N.class,ce({},"".concat(r.value,"-rtl"),v.value==="rtl"),"".concat(r.value,"-trigger"))},u?{disabled:u}:{})),W=_e(s,ce({},"".concat(r.value,"-rtl"),v.value==="rtl")),M=u?[]:d,I;M&&M.indexOf("contextmenu")!==-1&&(I=!0);var w=Lx({arrowPointAtCenter:Yt(G)==="object"&&G.pointAtCenter,autoAdjustOverflow:!0}),C=dn(P(P(P({},e),a),{},{builtinPlacements:w,overlayClassName:W,arrow:G,alignPoint:I,prefixCls:r.value,getPopupContainer:b.value,transitionName:Z.value,trigger:M,onVisibleChange:X,placement:y.value}),["overlay","onUpdate:visible"]);return D(Sx,C,{default:function(){return[c]},overlay:p})}}});Fx.Button=Xh;const Hr=Fx;var p8=["class","style"],y8=function(){return{prefixCls:String,href:String,separator:We.any,overlay:We.any,onClick:Function}};const Nh=He({compatConfig:{MODE:3},name:"ABreadcrumbItem",inheritAttrs:!1,__ANT_BREADCRUMB_ITEM:!0,props:y8(),slots:["separator","overlay"],setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls,r=function(v,b){var Z=ui(i,e,"overlay");return Z?D(Hr,{overlay:Z,placement:"bottom"},{default:function(){return[D("span",{class:"".concat(b,"-overlay-link")},[v,D(Fh,null,null)])]}}):v};return function(){var f,v=(f=ui(i,e,"separator"))!==null&&f!==void 0?f:"/",b=ui(i,e),Z=a.class,p=a.style,y=jt(a,p8),X;return e.href!==void 0?X=D("a",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]):X=D("span",P({class:"".concat(o.value,"-link"),onClick:e.onClick},y),[b]),X=r(X,o.value),b?D("span",{class:Z,style:p},[X,v&&D("span",{class:"".concat(o.value,"-separator")},[v])]):null}}});function Z8(n,e,t,i){var a=t?t.call(i,n,e):void 0;if(a!==void 0)return!!a;if(n===e)return!0;if(Yt(n)!=="object"||!n||Yt(e)!=="object"||!e)return!1;var l=Object.keys(n),o=Object.keys(e);if(l.length!==o.length)return!1;for(var r=Object.prototype.hasOwnProperty.bind(e),f=0;f-1}function Px(n,e,t){for(var i=-1,a=n==null?0:n.length;++i=V8){var v=e?null:g8(n);if(v)return vG(v);o=!1,a=gm,f=new Vu}else f=e?[]:r;e:for(;++i"u"?pe=I&&he?se:"":oe===!1&&(pe="");var re={title:pe};!s.value&&!u.value&&(re.title=null,re.visible=!1);var _={};e.role==="option"&&(_["aria-selected"]=g.value);var E=ui(i,e,"icon");return D(Xr,P(P({},re),{},{placement:d.value?"left":"right",overlayClassName:"".concat(X.value,"-inline-collapsed-tooltip")}),{default:function(){return[D(Zu.Item,P(P(P({component:"li"},l),{},{id:e.id,style:P(P({},l.style||{}),H.value),class:[S.value,(Q={},ce(Q,"".concat(l.class),!!l.class),ce(Q,"".concat(X.value,"-item-only-child"),(E?he+1:he)===1),Q)],role:e.role||"menuitem",tabindex:e.disabled?null:-1,"data-menu-id":f,"aria-disabled":e.disabled},_),{},{onMouseenter:Y,onMouseleave:T,onClick:V,onKeydown:J,onFocus:U,title:typeof oe=="string"?oe:void 0}),{default:function(){return[wn(E,{class:"".concat(X.value,"-item-icon")},!1),K(E,se)]}})]}})}}});var hs={adjustX:1,adjustY:1},S8={topLeft:{points:["bl","tl"],overflow:hs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:hs,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:hs,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:hs,offset:[4,0]}},z8={topLeft:{points:["bl","tl"],overflow:hs,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:hs,offset:[0,7]},rightTop:{points:["tr","tl"],overflow:hs,offset:[-4,0]},leftTop:{points:["tl","tr"],overflow:hs,offset:[4,0]}},k8={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"};const kY=He({compatConfig:{MODE:3},name:"PopupTrigger",inheritAttrs:!1,props:{prefixCls:String,mode:String,visible:Boolean,popupClassName:String,popupOffset:Array,disabled:Boolean,onVisibleChange:Function},slots:["popup"],emits:["visibleChange"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(!1),o=ws(),r=o.getPopupContainer,f=o.rtl,v=o.subMenuOpenDelay,b=o.subMenuCloseDelay,Z=o.builtinPlacements,p=o.triggerSubMenuAction,y=o.isRootMenu,X=o.forceSubMenuRender,m=o.motion,N=o.defaultMotions,G=jx(),d=de(function(){return f.value?P(P({},z8),Z.value):P(P({},S8),Z.value)}),u=de(function(){return k8[e.mode]}),s=Ne();rt(function(){return e.visible},function(W){At.cancel(s.value),s.value=At(function(){l.value=W})},{immediate:!0}),fn(function(){At.cancel(s.value)});var h=function(M){a("visibleChange",M)},c=de(function(){var W,M,I=m.value||((W=N.value)===null||W===void 0?void 0:W[e.mode])||((M=N.value)===null||M===void 0?void 0:M.other),w=typeof I=="function"?I():I;return w?Is(w.name,{css:!0}):void 0});return function(){var W=e.prefixCls,M=e.popupClassName,I=e.mode,w=e.popupOffset,C=e.disabled;return D(Hu,{prefixCls:W,popupClassName:_e("".concat(W,"-popup"),ce({},"".concat(W,"-rtl"),f.value),M),stretch:I==="horizontal"?"minWidth":null,getPopupContainer:y.value?r.value:function(x){return x.parentNode},builtinPlacements:d.value,popupPlacement:u.value,popupVisible:l.value,popupAlign:w&&{offset:w},action:C?[]:[p.value],mouseEnterDelay:v.value,mouseLeaveDelay:b.value,onPopupVisibleChange:h,forceRender:G||X.value,popupAnimation:c.value},{popup:i.popup,default:i.default})}}});var qx=function(e,t){var i,a=t.slots,l=t.attrs,o=ws(),r=o.prefixCls,f=o.mode;return D("ul",P(P({},l),{},{class:_e(r.value,"".concat(r.value,"-sub"),"".concat(r.value,"-").concat(f.value==="inline"?"inline":"vertical")),"data-menu-list":!0}),[(i=a.default)===null||i===void 0?void 0:i.call(a)])};qx.displayName="SubMenuList";const e3=qx,F8=He({compatConfig:{MODE:3},name:"InlineSubMenuList",inheritAttrs:!1,props:{id:String,open:Boolean,keyPath:Array},setup:function(e,t){var i=t.slots,a=de(function(){return"inline"}),l=ws(),o=l.motion,r=l.mode,f=l.defaultMotions,v=de(function(){return r.value===a.value}),b=Ne(!v.value),Z=de(function(){return v.value?e.open:!1});rt(r,function(){v.value&&(b.value=!1)},{flush:"post"});var p=de(function(){var y,X,m=o.value||((y=f.value)===null||y===void 0?void 0:y[a.value])||((X=f.value)===null||X===void 0?void 0:X.other),N=typeof m=="function"?m():m;return P(P({},N),{},{appear:e.keyPath.length<=1})});return function(){var y;return b.value?null:D(Om,{mode:a.value},{default:function(){return[D(aa,p.value,{default:function(){return[vl(D(e3,{id:e.id},{default:function(){return[(y=i.default)===null||y===void 0?void 0:y.call(i)]}}),[[gr,Z.value]])]}})]}})}}});var FY=0,J8=function(){return{icon:We.any,title:We.any,disabled:Boolean,level:Number,popupClassName:String,popupOffset:Array,internalPopupClose:Boolean,eventKey:String,expandIcon:Function,onMouseenter:Function,onMouseleave:Function,onTitleClick:Function}};const Tu=He({compatConfig:{MODE:3},name:"ASubMenu",inheritAttrs:!1,props:J8(),slots:["icon","title","expandIcon"],setup:function(e,t){var i,a,l=t.slots,o=t.attrs,r=t.emit;Ex(!1);var f=BG(),v=Wl(),b=Yt(v.vnode.key)==="symbol"?String(v.vnode.key):v.vnode.key;jn(Yt(v.vnode.key)!=="symbol","SubMenu",'SubMenu `:key="'.concat(String(b),'"` not support Symbol type'));var Z=p2(b)?b:"sub_menu_".concat(++FY,"_$$_not_set_key"),p=(i=e.eventKey)!==null&&i!==void 0?i:p2(b)?"sub_menu_".concat(++FY,"_$$_").concat(b):Z,y=QG(),X=y.parentEventKeys,m=y.parentInfo,N=y.parentKeys,G=de(function(){return[].concat(yt(N.value),[Z])}),d=Ne([]),u={eventKey:p,key:Z,parentEventKeys:X,childrenEventKeys:d,parentKeys:N};(a=m.childrenEventKeys)===null||a===void 0||a.value.push(p),fn(function(){if(m.childrenEventKeys){var B;m.childrenEventKeys.value=(B=m.childrenEventKeys)===null||B===void 0?void 0:B.value.filter(function(q){return q!=p})}}),T8(p,Z,u);var s=ws(),h=s.prefixCls,c=s.activeKeys,W=s.disabled,M=s.changeActiveKeys,I=s.mode,w=s.inlineCollapsed,C=s.antdMenuTheme,x=s.openKeys,R=s.overflowDisabled,g=s.onOpenChange,S=s.registerMenuInfo,L=s.unRegisterMenuInfo,V=s.selectedSubMenuKeys,Y=s.expandIcon,T=b!=null,J=!f&&(jx()||!T);v8(J),(f&&T||!f&&!T||J)&&(S(p,u),fn(function(){L(p)}));var U=de(function(){return"".concat(h.value,"-submenu")}),K=de(function(){return W.value||e.disabled}),H=Ne(),k=Ne(),F=de(function(){return x.value.includes(Z)}),O=de(function(){return!R.value&&F.value}),Q=de(function(){return V.value.includes(Z)}),oe=Ne(!1);rt(c,function(){oe.value=!!c.value.find(function(B){return B===Z})},{immediate:!0});var se=function(q){K.value||(r("titleClick",q,Z),I.value==="inline"&&g(Z,!F.value))},he=function(q){K.value||(M(G.value),r("mouseenter",q))},pe=function(q){K.value||(M([]),r("mouseleave",q))},re=$x(de(function(){return G.value.length})),_=function(q){I.value!=="inline"&&g(Z,q)},E=function(){M(G.value)},$=p&&"".concat(p,"-popup"),ae=de(function(){return _e(h.value,"".concat(h.value,"-").concat(C.value),e.popupClassName)}),le=function(q,ue){if(!ue)return w.value&&!N.value.length&&q&&typeof q=="string"?D("div",{class:"".concat(h.value,"-inline-collapsed-noicon")},[q.charAt(0)]):D("span",{class:"".concat(h.value,"-title-content")},[q]);var ve=Si(q)&&q.type==="span";return D(ln,null,[wn(ue,{class:"".concat(h.value,"-item-icon")},!1),ve?q:D("span",{class:"".concat(h.value,"-title-content")},[q])])},ee=de(function(){return I.value!=="inline"&&G.value.length>1?"vertical":I.value}),te=de(function(){return I.value==="horizontal"?"vertical":I.value}),be=de(function(){return ee.value==="horizontal"?"vertical":ee.value}),ne=function(){var q=U.value,ue=ui(l,e,"icon"),ve=e.expandIcon||l.expandIcon||Y.value,Ge=le(ui(l,e,"title"),ue);return D("div",{style:re.value,class:"".concat(q,"-title"),tabindex:K.value?null:-1,ref:H,title:typeof Ge=="string"?Ge:null,"data-menu-id":Z,"aria-expanded":O.value,"aria-haspopup":!0,"aria-controls":$,"aria-disabled":K.value,onClick:se,onFocus:E},[Ge,I.value!=="horizontal"&&ve?ve(P(P({},e),{},{isOpen:O.value})):D("i",{class:"".concat(q,"-arrow")},null)])};return function(){var B;if(f){var q;return T?(q=l.default)===null||q===void 0?void 0:q.call(l):null}var ue=U.value,ve=function(){return null};return!R.value&&I.value!=="inline"?ve=function(){return D(kY,{mode:ee.value,prefixCls:ue,visible:!e.internalPopupClose&&O.value,popupClassName:ae.value,popupOffset:e.popupOffset,disabled:K.value,onVisibleChange:_},{default:function(){return[ne()]},popup:function(){return D(Om,{mode:be.value,isRootMenu:!1},{default:function(){return[D(e3,{id:$,ref:k},{default:l.default})]}})}})}:ve=function(){return D(kY,null,{default:ne})},D(Om,{mode:te.value},{default:function(){return[D(Zu.Item,P(P({component:"li"},o),{},{role:"none",class:_e(ue,"".concat(ue,"-").concat(I.value),o.class,(B={},ce(B,"".concat(ue,"-open"),O.value),ce(B,"".concat(ue,"-active"),oe.value),ce(B,"".concat(ue,"-selected"),Q.value),ce(B,"".concat(ue,"-disabled"),K.value),B)),onMouseenter:he,onMouseleave:pe,"data-submenu-id":Z}),{default:function(){return D(ln,null,[ve(),!R.value&&D(F8,{id:$,open:O.value,keyPath:G.value},{default:l.default})])}})]}})}}});function t3(n,e){if(n.classList)return n.classList.contains(e);var t=n.className;return" ".concat(t," ").indexOf(" ".concat(e," "))>-1}function JY(n,e){n.classList?n.classList.add(e):t3(n,e)||(n.className="".concat(n.className," ").concat(e))}function DY(n,e){if(n.classList)n.classList.remove(e);else if(t3(n,e)){var t=n.className;n.className=" ".concat(t," ").replace(" ".concat(e," ")," ")}}var D8=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ant-motion-collapse",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return{name:e,appear:t,css:!0,onBeforeEnter:function(a){a.style.height="0px",a.style.opacity="0",JY(a,e)},onEnter:function(a){cn(function(){a.style.height="".concat(a.scrollHeight,"px"),a.style.opacity="1"})},onAfterEnter:function(a){a&&(DY(a,e),a.style.height=null,a.style.opacity=null)},onBeforeLeave:function(a){JY(a,e),a.style.height="".concat(a.offsetHeight,"px"),a.style.opacity=null},onLeave:function(a){setTimeout(function(){a.style.height="0px",a.style.opacity="0"})},onAfterLeave:function(a){a&&(DY(a,e),a.style&&(a.style.height=null,a.style.opacity=null))}}};const Jh=D8;var O8=function(){return{id:String,prefixCls:String,disabled:Boolean,inlineCollapsed:Boolean,disabledOverflow:Boolean,forceSubMenuRender:Boolean,openKeys:Array,selectedKeys:Array,activeKey:String,selectable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},motion:Object,theme:{type:String,default:"light"},mode:{type:String,default:"vertical"},inlineIndent:{type:Number,default:24},subMenuOpenDelay:{type:Number,default:.1},subMenuCloseDelay:{type:Number,default:.1},builtinPlacements:{type:Object},triggerSubMenuAction:{type:String,default:"hover"},getPopupContainer:Function,expandIcon:Function,onOpenChange:Function,onSelect:Function,onDeselect:Function,onClick:[Function,Array],onFocus:Function,onBlur:Function,onMousedown:Function,"onUpdate:openKeys":Function,"onUpdate:selectedKeys":Function,"onUpdate:activeKey":Function}},OY=[];const Yi=He({compatConfig:{MODE:3},name:"AMenu",inheritAttrs:!1,props:O8(),slots:["expandIcon","overflowedIndicator"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("menu",e),r=o.prefixCls,f=o.direction,v=o.getPrefixCls,b=Ne({}),Z=un(Qx,Ne(void 0)),p=de(function(){return Z.value!==void 0?Z.value:e.inlineCollapsed}),y=Ne(!1);Kt(function(){y.value=!0}),qt(function(){jn(!(e.inlineCollapsed===!0&&e.mode!=="inline"),"Menu","`inlineCollapsed` should only be used when `mode` is inline."),jn(!(Z.value!==void 0&&e.inlineCollapsed===!0),"Menu","`inlineCollapsed` not control Menu under Sider. Should set `collapsed` on Sider instead.")});var X=Ne([]),m=Ne([]),N=Ne({});rt(b,function(){for(var k={},F=0,O=Object.values(b.value);F0&&arguments[0]!==void 0?arguments[0]:u.value;lu(u.value,k)||(u.value=k.slice())},{immediate:!0,deep:!0});var s,h=function(F){clearTimeout(s),s=setTimeout(function(){e.activeKey===void 0&&(X.value=F),a("update:activeKey",F[F.length-1])})},c=de(function(){return!!e.disabled}),W=de(function(){return f.value==="rtl"}),M=Ne("vertical"),I=Ne(!1);qt(function(){(e.mode==="inline"||e.mode==="vertical")&&p.value?(M.value="vertical",I.value=p.value):(M.value=e.mode,I.value=!1)});var w=de(function(){return M.value==="inline"}),C=function(F){u.value=F,a("update:openKeys",F),a("openChange",F)},x=Ne(u.value),R=Ne(!1);rt(u,function(){w.value&&(x.value=u.value)},{immediate:!0}),rt(w,function(){if(!R.value){R.value=!0;return}w.value?u.value=x.value:C(OY)},{immediate:!0});var g=de(function(){var k;return k={},ce(k,"".concat(r.value),!0),ce(k,"".concat(r.value,"-root"),!0),ce(k,"".concat(r.value,"-").concat(M.value),!0),ce(k,"".concat(r.value,"-inline-collapsed"),I.value),ce(k,"".concat(r.value,"-rtl"),W.value),ce(k,"".concat(r.value,"-").concat(e.theme),!0),k}),S=de(function(){return v()}),L=de(function(){return{horizontal:{name:"".concat(S.value,"-slide-up")},inline:Jh,other:{name:"".concat(S.value,"-zoom-big")}}});Ex(!0);var V=function k(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],O=[],Q=b.value;return F.forEach(function(oe){var se=Q[oe],he=se.key,pe=se.childrenEventKeys;O.push.apply(O,[he].concat(yt(k(mi(pe)))))}),O},Y=function(F){a("click",F),d(F)},T=function(F,O){var Q,oe=((Q=N.value[F])===null||Q===void 0?void 0:Q.childrenEventKeys)||[],se=u.value.filter(function(pe){return pe!==F});if(O)se.push(F);else if(M.value!=="inline"){var he=V(mi(oe));se=lZ(se.filter(function(pe){return!he.includes(pe)}))}lu(u,se)||C(se)},J=function(F,O){b.value=P(P({},b.value),{},ce({},F,O))},U=function(F){delete b.value[F],b.value=P({},b.value)},K=Ne(0),H=de(function(){return e.expandIcon||i.expandIcon?function(k){var F=e.expandIcon||i.expandIcon;return F=typeof F=="function"?F(k):F,wn(F,{class:"".concat(r.value,"-submenu-expand-icon")},!1)}:null});return G8({store:b,prefixCls:r,activeKeys:X,openKeys:u,selectedKeys:m,changeActiveKeys:h,disabled:c,rtl:W,mode:M,inlineIndent:de(function(){return e.inlineIndent}),subMenuCloseDelay:de(function(){return e.subMenuCloseDelay}),subMenuOpenDelay:de(function(){return e.subMenuOpenDelay}),builtinPlacements:de(function(){return e.builtinPlacements}),triggerSubMenuAction:de(function(){return e.triggerSubMenuAction}),getPopupContainer:de(function(){return e.getPopupContainer}),inlineCollapsed:I,antdMenuTheme:de(function(){return e.theme}),siderCollapsed:Z,defaultMotions:de(function(){return y.value?L.value:null}),motion:de(function(){return y.value?e.motion:null}),overflowDisabled:Ne(void 0),onOpenChange:T,onItemClick:Y,registerMenuInfo:J,unRegisterMenuInfo:U,selectedSubMenuKeys:G,isRootMenu:Ne(!0),expandIcon:H,forceSubMenuRender:de(function(){return e.forceSubMenuRender})}),function(){var k,F,O=ti((k=i.default)===null||k===void 0?void 0:k.call(i)),Q=K.value>=O.length-1||M.value!=="horizontal"||e.disabledOverflow,oe=M.value!=="horizontal"||e.disabledOverflow?O:O.map(function(he,pe){return D(Om,{key:he.key,overflowDisabled:pe>K.value},{default:function(){return he}})}),se=((F=i.overflowedIndicator)===null||F===void 0?void 0:F.call(i))||D(HG,null,null);return D(Zu,P(P({},l),{},{onMousedown:e.onMousedown,prefixCls:"".concat(r.value,"-overflow"),component:"ul",itemComponent:Lo,class:[g.value,l.class],role:"menu",id:e.id,data:oe,renderRawItem:function(pe){return pe},renderRawRest:function(pe){var re=pe.length,_=re?O.slice(-re):null;return D(ln,null,[D(Tu,{eventKey:rb,key:rb,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}}),D(zY,null,{default:function(){return[D(Tu,{eventKey:rb,key:rb,title:se,disabled:Q,internalPopupClose:re===0},{default:function(){return _}})]}})])},maxCount:M.value!=="horizontal"||e.disabledOverflow?Zu.INVALIDATE:Zu.RESPONSIVE,ssr:"full","data-menu-list":!0,onVisibleChange:function(pe){K.value=pe}}),{default:function(){return[D(LW,{to:"body"},{default:function(){return[D("div",{style:{display:"none"},"aria-hidden":!0},[D(zY,null,{default:function(){return[oe]}})])]}})]}})}}});var j8=function(){return{title:We.any}};const jm=He({compatConfig:{MODE:3},name:"AMenuItemGroup",inheritAttrs:!1,props:j8(),slots:["title"],setup:function(e,t){var i=t.slots,a=t.attrs,l=ws(),o=l.prefixCls,r=de(function(){return"".concat(o.value,"-item-group")}),f=BG();return function(){var v,b;return f?(v=i.default)===null||v===void 0?void 0:v.call(i):D("li",P(P({},a),{},{onClick:function(p){return p.stopPropagation()},class:r.value}),[D("div",{title:typeof e.title=="string"?e.title:void 0,class:"".concat(r.value,"-title")},[ui(i,e,"title")]),D("ul",{class:"".concat(r.value,"-list")},[(b=i.default)===null||b===void 0?void 0:b.call(i)])])}}});var U8=function(){return{prefixCls:String,dashed:Boolean}};const Um=He({compatConfig:{MODE:3},name:"AMenuDivider",props:U8(),setup:function(e){var t=Nt("menu",e),i=t.prefixCls,a=de(function(){var l;return l={},ce(l,"".concat(i.value,"-item-divider"),!0),ce(l,"".concat(i.value,"-item-divider-dashed"),!!e.dashed),l});return function(){return D("li",{class:a.value},null)}}});Yi.install=function(n){return n.component(Yi.name,Yi),n.component(Lo.name,Lo),n.component(Tu.name,Tu),n.component(Um.name,Um),n.component(jm.name,jm),n};Yi.Item=Lo;Yi.Divider=Um;Yi.SubMenu=Tu;Yi.ItemGroup=jm;var E8=function(){return{prefixCls:String,routes:{type:Array},params:We.any,separator:We.any,itemRender:{type:Function}}};function K8(n,e){if(!n.breadcrumbName)return null;var t=Object.keys(e).join("|"),i=n.breadcrumbName.replace(new RegExp(":(".concat(t,")"),"g"),function(a,l){return e[l]||a});return i}function jY(n){var e=n.route,t=n.params,i=n.routes,a=n.paths,l=i.indexOf(e)===i.length-1,o=K8(e,t);return l?D("span",null,[o]):D("a",{href:"#/".concat(a.join("/"))},[o])}const fc=He({compatConfig:{MODE:3},name:"ABreadcrumb",props:E8(),slots:["separator","itemRender"],setup:function(e,t){var i=t.slots,a=Nt("breadcrumb",e),l=a.prefixCls,o=a.direction,r=function(Z,p){return Z=(Z||"").replace(/^\//,""),Object.keys(p).forEach(function(y){Z=Z.replace(":".concat(y),p[y])}),Z},f=function(Z,p,y){var X=yt(Z),m=r(p||"",y);return m&&X.push(m),X},v=function(Z){var p=Z.routes,y=p===void 0?[]:p,X=Z.params,m=X===void 0?{}:X,N=Z.separator,G=Z.itemRender,d=G===void 0?jY:G,u=[];return y.map(function(s){var h=r(s.path,m);h&&u.push(h);var c=[].concat(u),W=null;return s.children&&s.children.length&&(W=D(Yi,null,{default:function(){return[s.children.map(function(I){return D(Yi.Item,{key:I.path||I.breadcrumbName},{default:function(){return[d({route:I,params:m,routes:y,paths:f(c,I.path,m)})]}})})]}})),D(Nh,{overlay:W,separator:N,key:h||s.breadcrumbName},{default:function(){return[d({route:s,params:m,routes:y,paths:c})]}})})};return function(){var b,Z,p,y=e.routes,X=e.params,m=X===void 0?{}:X,N=ti(ui(i,e)),G=(b=ui(i,e,"separator"))!==null&&b!==void 0?b:"/",d=e.itemRender||i.itemRender||jY;y&&y.length>0?p=v({routes:y,params:m,separator:G,itemRender:d}):N.length&&(p=N.map(function(s,h){return Ci(Yt(s.type)==="object"&&(s.type.__ANT_BREADCRUMB_ITEM||s.type.__ANT_BREADCRUMB_SEPARATOR),"Breadcrumb","Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children"),Vl(s,{separator:G,key:h})}));var u=(Z={},ce(Z,l.value,!0),ce(Z,"".concat(l.value,"-rtl"),o.value==="rtl"),Z);return D("div",{class:u},[p])}}});var H8=["separator","class"],P8=function(){return{prefixCls:String}};const Em=He({compatConfig:{MODE:3},name:"ABreadcrumbSeparator",__ANT_BREADCRUMB_SEPARATOR:!0,inheritAttrs:!1,props:P8(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("breadcrumb",e),o=l.prefixCls;return function(){var r;a.separator;var f=a.class,v=jt(a,H8),b=ti((r=i.default)===null||r===void 0?void 0:r.call(i));return D("span",P({class:["".concat(o.value,"-separator"),f]},v),[b.length>0?b:"/"])}}});fc.Item=Nh;fc.Separator=Em;fc.install=function(n){return n.component(fc.name,fc),n.component(Nh.name,Nh),n.component(Em.name,Em),n};var K2={},Q8={get exports(){return K2},set exports(n){K2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t=1e3,i=6e4,a=36e5,l="millisecond",o="second",r="minute",f="hour",v="day",b="week",Z="month",p="quarter",y="year",X="date",m="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,G=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(R){var g=["th","st","nd","rd"],S=R%100;return"["+R+(g[(S-20)%10]||g[S]||g[0])+"]"}},u=function(R,g,S){var L=String(R);return!L||L.length>=g?R:""+Array(g+1-L.length).join(S)+R},s={s:u,z:function(R){var g=-R.utcOffset(),S=Math.abs(g),L=Math.floor(S/60),V=S%60;return(g<=0?"+":"-")+u(L,2,"0")+":"+u(V,2,"0")},m:function R(g,S){if(g.date()1)return R(T[0])}else{var J=g.name;c[J]=g,V=J}return!L&&V&&(h=V),V||!L&&h},I=function(R,g){if(W(R))return R.clone();var S=typeof g=="object"?g:{};return S.date=R,S.args=arguments,new C(S)},w=s;w.l=M,w.i=W,w.w=function(R,g){return I(R,{locale:g.$L,utc:g.$u,x:g.$x,$offset:g.$offset})};var C=function(){function R(S){this.$L=M(S.locale,null,!0),this.parse(S)}var g=R.prototype;return g.parse=function(S){this.$d=function(L){var V=L.date,Y=L.utc;if(V===null)return new Date(NaN);if(w.u(V))return new Date;if(V instanceof Date)return new Date(V);if(typeof V=="string"&&!/Z$/i.test(V)){var T=V.match(N);if(T){var J=T[2]-1||0,U=(T[7]||"0").substring(0,3);return Y?new Date(Date.UTC(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)):new Date(T[1],J,T[3]||1,T[4]||0,T[5]||0,T[6]||0,U)}}return new Date(V)}(S),this.$x=S.x||{},this.init()},g.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},g.$utils=function(){return w},g.isValid=function(){return this.$d.toString()!==m},g.isSame=function(S,L){var V=I(S);return this.startOf(L)<=V&&V<=this.endOf(L)},g.isAfter=function(S,L){return I(S)25){var b=o(this).startOf(i).add(1,i).date(v),Z=o(this).endOf(t);if(b.isBefore(Z))return 1}var p=o(this).startOf(i).date(v).startOf(t).subtract(1,"millisecond"),y=this.diff(p,t,!0);return y<0?o(this).startOf("week").week():Math.ceil(y)},r.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}})})(q8);const e$=Q2;var B2={},t$={get exports(){return B2},set exports(n){B2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){i.prototype.weekYear=function(){var a=this.month(),l=this.week(),o=this.year();return l===1&&a===11?o+1:a===0&&l>=52?o-1:o}}})})(t$);const n$=B2;var A2={},i$={get exports(){return A2},set exports(n){A2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){return function(t,i){var a=i.prototype,l=a.format;a.format=function(o){var r=this,f=this.$locale();if(!this.isValid())return l.bind(this)(o);var v=this.$utils(),b=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(Z){switch(Z){case"Q":return Math.ceil((r.$M+1)/3);case"Do":return f.ordinal(r.$D);case"gggg":return r.weekYear();case"GGGG":return r.isoWeekYear();case"wo":return f.ordinal(r.week(),"W");case"w":case"ww":return v.s(r.week(),Z==="w"?1:2,"0");case"W":case"WW":return v.s(r.isoWeek(),Z==="W"?1:2,"0");case"k":case"kk":return v.s(String(r.$H===0?24:r.$H),Z==="k"?1:2,"0");case"X":return Math.floor(r.$d.getTime()/1e3);case"x":return r.$d.getTime();case"z":return"["+r.offsetName()+"]";case"zzz":return"["+r.offsetName("long")+"]";default:return Z}});return l.bind(this)(b)}}})})(i$);const l$=A2;var _2={},a$={get exports(){return _2},set exports(n){_2=n}};(function(n,e){(function(t,i){n.exports=i()})(vn,function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},i=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,a=/\d\d/,l=/\d\d?/,o=/\d*[^-_:/,()\s\d]+/,r={},f=function(m){return(m=+m)+(m>68?1900:2e3)},v=function(m){return function(N){this[m]=+N}},b=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(N){if(!N||N==="Z")return 0;var G=N.match(/([+-]|\d\d)/g),d=60*G[1]+(+G[2]||0);return d===0?0:G[0]==="+"?-d:d}(m)}],Z=function(m){var N=r[m];return N&&(N.indexOf?N:N.s.concat(N.f))},p=function(m,N){var G,d=r.meridiem;if(d){for(var u=1;u<=24;u+=1)if(m.indexOf(d(u,0,N))>-1){G=u>12;break}}else G=m===(N?"pm":"PM");return G},y={A:[o,function(m){this.afternoon=p(m,!1)}],a:[o,function(m){this.afternoon=p(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[a,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[l,v("seconds")],ss:[l,v("seconds")],m:[l,v("minutes")],mm:[l,v("minutes")],H:[l,v("hours")],h:[l,v("hours")],HH:[l,v("hours")],hh:[l,v("hours")],D:[l,v("day")],DD:[a,v("day")],Do:[o,function(m){var N=r.ordinal,G=m.match(/\d+/);if(this.day=G[0],N)for(var d=1;d<=31;d+=1)N(d).replace(/\[|\]/g,"")===m&&(this.day=d)}],M:[l,v("month")],MM:[a,v("month")],MMM:[o,function(m){var N=Z("months"),G=(Z("monthsShort")||N.map(function(d){return d.slice(0,3)})).indexOf(m)+1;if(G<1)throw new Error;this.month=G%12||G}],MMMM:[o,function(m){var N=Z("months").indexOf(m)+1;if(N<1)throw new Error;this.month=N%12||N}],Y:[/[+-]?\d+/,v("year")],YY:[a,function(m){this.year=f(m)}],YYYY:[/\d{4}/,v("year")],Z:b,ZZ:b};function X(m){var N,G;N=m,G=r&&r.formats;for(var d=(m=N.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(I,w,C){var x=C&&C.toUpperCase();return w||G[C]||t[C]||G[x].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(R,g,S){return g||S.slice(1)})})).match(i),u=d.length,s=0;s-1)return new Date((V==="X"?1e3:1)*L);var T=X(V)(L),J=T.year,U=T.month,K=T.day,H=T.hours,k=T.minutes,F=T.seconds,O=T.milliseconds,Q=T.zone,oe=new Date,se=K||(J||U?1:oe.getDate()),he=J||oe.getFullYear(),pe=0;J&&!U||(pe=U>0?U-1:oe.getMonth());var re=H||0,_=k||0,E=F||0,$=O||0;return Q?new Date(Date.UTC(he,pe,se,re,_,E,$+60*Q.offset*1e3)):Y?new Date(Date.UTC(he,pe,se,re,_,E,$)):new Date(he,pe,se,re,_,E,$)}catch{return new Date("")}}(h,M,c),this.init(),x&&x!==!0&&(this.$L=this.locale(x).$L),C&&h!=this.format(M)&&(this.$d=new Date("")),r={}}else if(M instanceof Array)for(var R=M.length,g=1;g<=R;g+=1){W[1]=M[g-1];var S=G.apply(this,W);if(S.isValid()){this.$d=S.$d,this.$L=S.$L,this.init();break}g===R&&(this.$d=new Date(""))}else u.call(this,s)}}})})(a$);const r$=_2;ml.extend(r$);ml.extend(l$);ml.extend(A8);ml.extend($8);ml.extend(e$);ml.extend(n$);ml.extend(function(n,e){var t=e.prototype,i=t.format;t.format=function(l){var o=(l||"").replace("Wo","wo");return i.bind(this)(o)}});var o$={bn_BD:"bn-bd",by_BY:"be",en_GB:"en-gb",en_US:"en",fr_BE:"fr",fr_CA:"fr-ca",hy_AM:"hy-am",kmr_IQ:"ku",nl_BE:"nl-be",pt_BR:"pt-br",zh_CN:"zh-cn",zh_HK:"zh-hk",zh_TW:"zh-tw"},Us=function(e){var t=o$[e];return t||e.split("_")[0]},UY=function(){KK(!1,"Not match any format. Please help to fire a issue about this.")},s$={getNow:function(){return ml()},getFixedDate:function(e){return ml(e,["YYYY-M-DD","YYYY-MM-DD"])},getEndDate:function(e){return e.endOf("month")},getWeekDay:function(e){var t=e.locale("en");return t.weekday()+t.localeData().firstDayOfWeek()},getYear:function(e){return e.year()},getMonth:function(e){return e.month()},getDate:function(e){return e.date()},getHour:function(e){return e.hour()},getMinute:function(e){return e.minute()},getSecond:function(e){return e.second()},addYear:function(e,t){return e.add(t,"year")},addMonth:function(e,t){return e.add(t,"month")},addDate:function(e,t){return e.add(t,"day")},setYear:function(e,t){return e.year(t)},setMonth:function(e,t){return e.month(t)},setDate:function(e,t){return e.date(t)},setHour:function(e,t){return e.hour(t)},setMinute:function(e,t){return e.minute(t)},setSecond:function(e,t){return e.second(t)},isAfter:function(e,t){return e.isAfter(t)},isValidate:function(e){return e.isValid()},locale:{getWeekFirstDay:function(e){return ml().locale(Us(e)).localeData().firstDayOfWeek()},getWeekFirstDate:function(e,t){return t.locale(Us(e)).weekday(0)},getWeek:function(e,t){return t.locale(Us(e)).week()},getShortWeekDays:function(e){return ml().locale(Us(e)).localeData().weekdaysMin()},getShortMonths:function(e){return ml().locale(Us(e)).localeData().monthsShort()},format:function(e,t,i){return t.locale(Us(e)).format(i)},parse:function(e,t,i){for(var a=Us(e),l=0;lc$)return t;do e%2&&(t+=n),e=u$(e/2),e&&(n+=n);while(e);return t}function A0(n,e){for(var t=-1,i=n==null?0:n.length,a=Array(i);++ta?0:a+e),t=t>a?a:t,t<0&&(t+=a),a=e>t?0:t-e>>>0,e>>>=0;for(var l=Array(a);++i=i?n:n3(n,e,t)}var b$="\\ud800-\\udfff",m$="\\u0300-\\u036f",p$="\\ufe20-\\ufe2f",y$="\\u20d0-\\u20ff",Z$=m$+p$+y$,v$="\\ufe0e\\ufe0f",W$="\\u200d",G$=RegExp("["+W$+b$+Z$+v$+"]");function $G(n){return G$.test(n)}function i3(n){return function(e){return e==null?void 0:e[n]}}var X$=i3("length");const N$=X$;var l3="\\ud800-\\udfff",M$="\\u0300-\\u036f",I$="\\ufe20-\\ufe2f",Y$="\\u20d0-\\u20ff",w$=M$+I$+Y$,g$="\\ufe0e\\ufe0f",V$="["+l3+"]",$2="["+w$+"]",q2="\\ud83c[\\udffb-\\udfff]",L$="(?:"+$2+"|"+q2+")",a3="[^"+l3+"]",r3="(?:\\ud83c[\\udde6-\\uddff]){2}",o3="[\\ud800-\\udbff][\\udc00-\\udfff]",R$="\\u200d",s3=L$+"?",c3="["+g$+"]?",T$="(?:"+R$+"(?:"+[a3,r3,o3].join("|")+")"+c3+s3+")*",x$=c3+s3+T$,C$="(?:"+[a3+$2+"?",$2,r3,o3,V$].join("|")+")",PY=RegExp(q2+"(?="+q2+")|"+C$+x$,"g");function S$(n){for(var e=PY.lastIndex=0;PY.test(n);)++e;return e}function qG(n){return $G(n)?S$(n):N$(n)}function z$(n){return n.split("")}var u3="\\ud800-\\udfff",k$="\\u0300-\\u036f",F$="\\ufe20-\\ufe2f",J$="\\u20d0-\\u20ff",D$=k$+F$+J$,O$="\\ufe0e\\ufe0f",j$="["+u3+"]",ev="["+D$+"]",tv="\\ud83c[\\udffb-\\udfff]",U$="(?:"+ev+"|"+tv+")",d3="[^"+u3+"]",h3="(?:\\ud83c[\\udde6-\\uddff]){2}",f3="[\\ud800-\\udbff][\\udc00-\\udfff]",E$="\\u200d",b3=U$+"?",m3="["+O$+"]?",K$="(?:"+E$+"(?:"+[d3,h3,f3].join("|")+")"+m3+b3+")*",H$=m3+b3+K$,P$="(?:"+[d3+ev+"?",ev,h3,f3,j$].join("|")+")",Q$=RegExp(tv+"(?="+tv+")|"+P$+H$,"g");function B$(n){return n.match(Q$)||[]}function A$(n){return $G(n)?B$(n):z$(n)}var _$=Math.ceil;function p3(n,e){e=e===void 0?" ":_G(e);var t=e.length;if(t<2)return t?EY(e,n):e;var i=EY(e,_$(n/qG(e)));return $G(e)?f$(A$(i),0,n).join(""):i.slice(0,n)}var $$=/\s/;function q$(n){for(var e=n.length;e--&&$$.test(n.charAt(e)););return e}var eq=/^\s+/;function tq(n){return n&&n.slice(0,q$(n)+1).replace(eq,"")}var QY=0/0,nq=/^[-+]0x[0-9a-f]+$/i,iq=/^0b[01]+$/i,lq=/^0o[0-7]+$/i,aq=parseInt;function nv(n){if(typeof n=="number")return n;if(_0(n))return QY;if(wr(n)){var e=typeof n.valueOf=="function"?n.valueOf():n;n=wr(e)?e+"":e}if(typeof n!="string")return n===0?n:+n;n=tq(n);var t=iq.test(n);return t||lq.test(n)?aq(n.slice(2),t?2:8):nq.test(n)?QY:+n}var BY=1/0,rq=17976931348623157e292;function oq(n){if(!n)return n===0?n:0;if(n=nv(n),n===BY||n===-BY){var e=n<0?-1:1;return e*rq}return n===n?n:0}function e1(n){var e=oq(n),t=e%1;return e===e?t?e-t:e:0}function t1(n){return n==null?"":_G(n)}function y3(n,e,t){n=t1(n),e=e1(e);var i=e?qG(n):0;return e&&i1&&(o=e.addDate(o,-7)),o}function Bd(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;switch(e){case"year":return t.addYear(n,i*10);case"quarter":case"month":return t.addYear(n,i);default:return t.addMonth(n,i)}}function wl(n,e){var t=e.generateConfig,i=e.locale,a=e.format;return typeof a=="function"?a(n):t.locale.format(i.locale,n,a)}function I3(n,e){var t=e.generateConfig,i=e.locale,a=e.formatList;return!n||typeof a[0]=="function"?null:t.locale.parse(i.locale,n,a)}function rv(n){var e=n.cellDate,t=n.mode,i=n.disabledDate,a=n.generateConfig;if(!i)return!1;var l=function(X,m,N){for(var G=m;G<=N;){var d=void 0;switch(X){case"date":{if(d=a.setDate(e,G),!i(d))return!1;break}case"month":{if(d=a.setMonth(e,G),!rv({cellDate:d,mode:"month",generateConfig:a,disabledDate:i}))return!1;break}case"year":{if(d=a.setYear(e,G),!rv({cellDate:d,mode:"year",generateConfig:a,disabledDate:i}))return!1;break}}G+=1}return!0};switch(t){case"date":case"week":return i(e);case"month":{var o=1,r=a.getDate(a.getEndDate(e));return l("date",o,r)}case"quarter":{var f=Math.floor(a.getMonth(e)/3)*3,v=f+2;return l("month",f,v)}case"year":return l("month",0,11);case"decade":{var b=a.getYear(e),Z=Math.floor(b/Zr)*Zr,p=Z+Zr-1;return l("year",Z,p)}}}function o1(n){var e=zi(n),t=Ar(),i=t.hideHeader;if(i.value)return null;var a=e.prefixCls,l=e.generateConfig,o=e.locale,r=e.value,f=e.format,v="".concat(a,"-header");return D(gs,{prefixCls:v},{default:function(){return[r?wl(r,{locale:o,format:f,generateConfig:l}):" "]}})}o1.displayName="TimeHeader";o1.inheritAttrs=!1;const db=He({name:"TimeUnitColumn",props:["prefixCls","units","onSelect","value","active","hideDisabledOptions"],setup:function(e){var t=Ar(),i=t.open,a=Ne(null),l=Ne(new Map),o=Ne();return rt(function(){return e.value},function(){var r=l.value.get(e.value);r&&i.value!==!1&&lv(a.value,r.offsetTop,120)}),fn(function(){var r;(r=o.value)===null||r===void 0||r.call(o)}),rt(i,function(){var r;(r=o.value)===null||r===void 0||r.call(o),cn(function(){if(i.value){var f=l.value.get(e.value);f&&(o.value=uq(f,function(){lv(a.value,f.offsetTop,0)}))}})},{immediate:!0,flush:"post"}),function(){var r=e.prefixCls,f=e.units,v=e.onSelect,b=e.value,Z=e.active,p=e.hideDisabledOptions,y="".concat(r,"-cell");return D("ul",{class:_e("".concat(r,"-column"),ce({},"".concat(r,"-column-active"),Z)),ref:a,style:{position:"relative"}},[f.map(function(X){var m;return p&&X.disabled?null:D("li",{key:X.value,ref:function(G){l.value.set(X.value,G)},class:_e(y,(m={},ce(m,"".concat(y,"-disabled"),X.disabled),ce(m,"".concat(y,"-selected"),b===X.value),m)),onClick:function(){X.disabled||v(X.value)}},[D("div",{class:"".concat(y,"-inner")},[X.label])])})])}}});function Y3(n,e){for(var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0",i=String(n);i.length=12:!1}),a=de(function(){return e.use12Hours?t.value%12:t.value}),l=de(function(){return e.value?e.generateConfig.getMinute(e.value):-1}),o=de(function(){return e.value?e.generateConfig.getSecond(e.value):-1}),r=Ne(e.generateConfig.getNow()),f=Ne(),v=Ne(),b=Ne();YW(function(){r.value=e.generateConfig.getNow()}),qt(function(){if(e.disabledTime){var G=e.disabledTime(r),d=[G.disabledHours,G.disabledMinutes,G.disabledSeconds];f.value=d[0],v.value=d[1],b.value=d[2]}else{var u=[e.disabledHours,e.disabledMinutes,e.disabledSeconds];f.value=u[0],v.value=u[1],b.value=u[2]}});var Z=function(d,u,s,h){var c=e.value||e.generateConfig.getNow(),W=Math.max(0,u),M=Math.max(0,s),I=Math.max(0,h);return c=v3(e.generateConfig,c,!e.use12Hours||!d?W:W+12,M,I),c},p=de(function(){var G;return aZ(0,23,(G=e.hourStep)!==null&&G!==void 0?G:1,f.value&&f.value())}),y=de(function(){if(!e.use12Hours)return[!1,!1];var G=[!0,!0];return p.value.forEach(function(d){var u=d.disabled,s=d.value;u||(s>=12?G[1]=!1:G[0]=!1)}),G}),X=de(function(){return e.use12Hours?p.value.filter(i.value?function(G){return G.value>=12}:function(G){return G.value<12}).map(function(G){var d=G.value%12,u=d===0?"12":Y3(d,2);return P(P({},G),{},{label:u,value:d})}):p.value}),m=de(function(){var G;return aZ(0,59,(G=e.minuteStep)!==null&&G!==void 0?G:1,v.value&&v.value(t.value))}),N=de(function(){var G;return aZ(0,59,(G=e.secondStep)!==null&&G!==void 0?G:1,b.value&&b.value(t.value,l))});return function(){var G=e.prefixCls,d=e.operationRef,u=e.activeColumnIndex,s=e.showHour,h=e.showMinute,c=e.showSecond,W=e.use12Hours,M=e.hideDisabledOptions,I=e.onSelect,w=[],C="".concat(G,"-content"),x="".concat(G,"-time-panel");d.value={onUpDown:function(L){var V=w[u];if(V)for(var Y=V.units.findIndex(function(K){return K.value===V.value}),T=V.units.length,J=1;J2&&arguments[2]!==void 0?arguments[2]:!1,he=e.picker,pe=e.generateConfig,re=e.onSelect,_=e.onChange,E=e.disabledDate;(L.value===he||se)&&(W(Q),re&&re(Q),Z&&Z(Q,oe),_&&!Wu(pe,Q,c.value)&&!(E!=null&&E(Q))&&_(Q))},K=function(Q){return u.value&&u.value.onKeydown?([bt.LEFT,bt.RIGHT,bt.UP,bt.DOWN,bt.PAGE_UP,bt.PAGE_DOWN,bt.ENTER].includes(Q.which)&&Q.preventDefault(),u.value.onKeydown(Q)):!1},H=function(Q){u.value&&u.value.onBlur&&u.value.onBlur(Q)},k=function(){var Q=e.generateConfig,oe=e.hourStep,se=e.minuteStep,he=e.secondStep,pe=Q.getNow(),re=sq(Q.getHour(pe),Q.getMinute(pe),Q.getSecond(pe),l.value?oe:1,o.value?se:1,r.value?he:1),_=v3(Q,pe,re[0],re[1],re[2]);U(_,"submit")},F=de(function(){var O,Q=e.prefixCls,oe=e.direction;return _e("".concat(Q,"-panel"),(O={},ce(O,"".concat(Q,"-panel-has-range"),G&&G.value&&G.value[0]&&G.value[1]),ce(O,"".concat(Q,"-panel-has-range-hover"),d&&d.value&&d.value[0]&&d.value[1]),ce(O,"".concat(Q,"-panel-rtl"),oe==="rtl"),O))});return n1(P(P({},f),{},{mode:L,hideHeader:de(function(){var O;return e.hideHeader!==void 0?e.hideHeader:(O=f.hideHeader)===null||O===void 0?void 0:O.value}),hidePrevBtn:de(function(){return m.value&&N.value==="right"}),hideNextBtn:de(function(){return m.value&&N.value==="left"})})),rt(function(){return e.value},function(){e.value&&C(e.value)}),function(){var O=e.prefixCls,Q=O===void 0?"ant-picker":O,oe=e.locale,se=e.generateConfig,he=e.disabledDate,pe=e.picker,re=pe===void 0?"date":pe,_=e.tabindex,E=_===void 0?0:_,$=e.showNow,ae=e.showTime,le=e.showToday,ee=e.renderExtraFooter,te=e.onMousedown,be=e.onOk,ne=e.components;v&&N.value!=="right"&&(v.value={onKeydown:K,onClose:function(){u.value&&u.value.onClose&&u.value.onClose()}});var B,q=P(P(P({},i),e),{},{operationRef:u,prefixCls:Q,viewDate:w.value,value:c.value,onViewDateChange:x,sourceMode:Y.value,onPanelChange:J,disabledDate:he});switch(delete q.onChange,delete q.onSelect,L.value){case"decade":B=D(a1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"year":B=D(v1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"month":B=D(f1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"quarter":B=D(p1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"week":B=D(u1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;case"time":delete q.showTime,B=D(q0,P(P(P({},q),Yt(ae)==="object"?ae:null),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null);break;default:ae?B=D(c1,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null):B=D(Oh,P(P({},q),{},{onSelect:function(Be,Te){x(Be),U(Be,Te)}}),null)}var ue,ve;p!=null&&p.value||(ue=R3(Q,L.value,ee),ve=T3({prefixCls:Q,components:ne,needConfirmButton:a.value,okDisabled:!c.value||he&&he(c.value),locale:oe,showNow:$,onNow:a.value&&k,onOk:function(){c.value&&(U(c.value,"submit",!0),be&&be(c.value))}}));var Ge;if(le&&L.value==="date"&&re==="date"&&!ae){var Je=se.getNow(),xe="".concat(Q,"-today-btn"),ke=he&&he(Je);Ge=D("a",{class:_e(xe,ke&&"".concat(xe,"-disabled")),"aria-disabled":ke,onClick:function(){ke||U(Je,"mouse",!0)}},[oe.today])}return D("div",{tabindex:E,class:_e(F.value,i.class),style:i.style,onKeydown:K,onBlur:H,onMousedown:te,ref:b},[B,ue||ve||Ge?D("div",{class:"".concat(Q,"-footer")},[ue,ve,Ge]):null])}}})}var Tq=Rq();const W1=function(n){return D(Tq,n)};var xq={bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:1,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:0,adjustY:1}}};function x3(n,e){var t,i=e.slots,a=zi(n),l=a.prefixCls,o=a.popupStyle,r=a.visible,f=a.dropdownClassName,v=a.dropdownAlign,b=a.transitionName,Z=a.getPopupContainer,p=a.range,y=a.popupPlacement,X=a.direction,m="".concat(l,"-dropdown"),N=function(){return y!==void 0?y:X==="rtl"?"bottomRight":"bottomLeft"};return D(Hu,{showAction:[],hideAction:[],popupPlacement:N(),builtinPlacements:xq,prefixCls:m,popupTransitionName:b,popupAlign:v,popupVisible:r,popupClassName:_e(f,(t={},ce(t,"".concat(m,"-range"),p),ce(t,"".concat(m,"-rtl"),X==="rtl"),t)),popupStyle:o,getPopupContainer:Z,tryPopPortal:!0},{default:i.default,popup:i.popupElement})}function sv(n){var e=n.open,t=n.value,i=n.isClickOutside,a=n.triggerOpen,l=n.forwardKeydown,o=n.onKeydown,r=n.blurToCancel,f=n.onSubmit,v=n.onCancel,b=n.onFocus,Z=n.onBlur,p=Ne(!1),y=Ne(!1),X=Ne(!1),m=Ne(!1),N=Ne(!1),G=de(function(){return{onMousedown:function(){p.value=!0,a(!0)},onKeydown:function(s){var h=function(){N.value=!0};if(o(s,h),!N.value){switch(s.which){case bt.ENTER:{e.value?f()!==!1&&(p.value=!0):a(!0),s.preventDefault();return}case bt.TAB:{p.value&&e.value&&!s.shiftKey?(p.value=!1,s.preventDefault()):!p.value&&e.value&&!l(s)&&s.shiftKey&&(p.value=!0,s.preventDefault());return}case bt.ESC:{p.value=!0,v();return}}!e.value&&![bt.SHIFT].includes(s.which)?a(!0):p.value||l(s)}},onFocus:function(s){p.value=!0,y.value=!0,b&&b(s)},onBlur:function(s){if(X.value||!i(document.activeElement)){X.value=!1;return}r.value?setTimeout(function(){for(var h=document,c=h.activeElement;c&&c.shadowRoot;)c=c.shadowRoot.activeElement;i(c)&&v()},0):e.value&&(a(!1),m.value&&f()),y.value=!1,Z&&Z(s)}}});rt(e,function(){m.value=!1}),rt(t,function(){m.value=!0});var d=Ne();return Kt(function(){d.value=dq(function(u){var s=hq(u);if(e.value){var h=i(s);h?(!y.value||h)&&a(!1):(X.value=!0,At(function(){X.value=!1}))}})}),fn(function(){d.value&&d.value()}),[G,{focused:y,typing:p}]}function cv(n){var e=n.valueTexts,t=n.onTextChange,i=Ne("");function a(o){i.value=o,t(o)}function l(){i.value=e.value[0]}return rt(function(){return yt(e.value)},function(o){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];o.join("||")!==r.join("||")&&e.value.every(function(f){return f!==i.value})&&l()},{immediate:!0}),[i,a,l]}function Km(n,e){var t=e.formatList,i=e.generateConfig,a=e.locale,l=LG(function(){if(!n.value)return[[""],""];for(var f="",v=[],b=0;b1&&arguments[1]!==void 0?arguments[1]:!1;if(At.cancel(o),X){l.value=y;return}o=At(function(){l.value=y})}var f=Km(l,{formatList:t,generateConfig:i,locale:a}),v=ft(f,2),b=v[1];function Z(y){r(y)}function p(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;r(null,y)}return rt(n,function(){p(!0)}),fn(function(){At.cancel(o)}),[b,Z,p]}function Cq(){return He({name:"Picker",inheritAttrs:!1,props:["prefixCls","id","tabindex","dropdownClassName","dropdownAlign","popupStyle","transitionName","generateConfig","locale","inputReadOnly","allowClear","autofocus","showTime","showNow","showHour","showMinute","showSecond","picker","format","use12Hours","value","defaultValue","open","defaultOpen","defaultOpenValue","suffixIcon","clearIcon","disabled","disabledDate","placeholder","getPopupContainer","panelRender","inputRender","onChange","onOpenChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onContextmenu","onClick","onKeydown","onSelect","direction","autocomplete","showToday","renderExtraFooter","dateRender","minuteStep","hourStep","secondStep","hideDisabledOptions"],setup:function(e,t){var i=t.attrs,a=t.expose,l=Ne(null),o=de(function(){var _;return(_=e.picker)!==null&&_!==void 0?_:"date"}),r=de(function(){return o.value==="date"&&!!e.showTime||o.value==="time"}),f=de(function(){return w3(W3(e.format,o.value,e.showTime,e.use12Hours))}),v=Ne(null),b=Ne(null),Z=Ne(null),p=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue}),y=ft(p,2),X=y[0],m=y[1],N=Ne(X.value),G=function(E){N.value=E},d=Ne(null),u=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(E){return e.disabled?!1:E},onChange:function(E){e.onOpenChange&&e.onOpenChange(E),!E&&d.value&&d.value.onClose&&d.value.onClose()}}),s=ft(u,2),h=s[0],c=s[1],W=Km(N,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),M=ft(W,2),I=M[0],w=M[1],C=cv({valueTexts:I,onTextChange:function(E){var $=I3(E,{locale:e.locale,formatList:f.value,generateConfig:e.generateConfig});$&&(!e.disabledDate||!e.disabledDate($))&&G($)}}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=function(E){var $=e.onChange,ae=e.generateConfig,le=e.locale;G(E),m(E),$&&!Wu(ae,X.value,E)&&$(E,E?wl(E,{generateConfig:ae,locale:le,format:f.value[0]}):"")},V=function(E){e.disabled&&E||c(E)},Y=function(E){return h.value&&d.value&&d.value.onKeydown?d.value.onKeydown(E):!1},T=function(){e.onMouseup&&e.onMouseup.apply(e,arguments),l.value&&(l.value.focus(),V(!0))},J=sv({blurToCancel:r,open:h,value:R,triggerOpen:V,forwardKeydown:Y,isClickOutside:function(E){return!X3([v.value,b.value,Z.value],E)},onSubmit:function(){return!N.value||e.disabledDate&&e.disabledDate(N.value)?!1:(L(N.value),V(!1),S(),!0)},onCancel:function(){V(!1),G(X.value),S()},onKeydown:function(E,$){var ae;(ae=e.onKeydown)===null||ae===void 0||ae.call(e,E,$)},onFocus:function(E){var $;($=e.onFocus)===null||$===void 0||$.call(e,E)},onBlur:function(E){var $;($=e.onBlur)===null||$===void 0||$.call(e,E)}}),U=ft(J,2),K=U[0],H=U[1],k=H.focused,F=H.typing;rt([h,I],function(){h.value||(G(X.value),!I.value.length||I.value[0]===""?g(""):w.value!==R.value&&S())}),rt(o,function(){h.value||S()}),rt(X,function(){G(X.value)});var O=uv(R,{formatList:f,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")}),Q=ft(O,3),oe=Q[0],se=Q[1],he=Q[2],pe=function(E,$){($==="submit"||$!=="key"&&!r.value)&&(L(E),V(!1))};n1({operationRef:d,hideHeader:de(function(){return o.value==="time"}),panelRef:v,onSelect:pe,open:h,defaultOpenValue:Ot(e,"defaultOpenValue"),onDateMouseenter:se,onDateMouseleave:he}),a({focus:function(){l.value&&l.value.focus()},blur:function(){l.value&&l.value.blur()}});var re=ux();return function(){var _,E=e.prefixCls,$=E===void 0?"rc-picker":E,ae=e.id,le=e.tabindex,ee=e.dropdownClassName,te=e.dropdownAlign,be=e.popupStyle,ne=e.transitionName,B=e.generateConfig,q=e.locale,ue=e.inputReadOnly,ve=e.allowClear,Ge=e.autofocus,Je=e.picker,xe=Je===void 0?"date":Je;e.defaultOpenValue;var ke=e.suffixIcon,Pe=e.clearIcon,Be=e.disabled,Te=e.placeholder,we=e.getPopupContainer,Se=e.panelRender,De=e.onMousedown,me=e.onMouseenter,Ve=e.onMouseleave,Me=e.onContextmenu,Ie=e.onClick,Ze=e.onSelect,Ce=e.direction,ye=e.autocomplete,Ue=ye===void 0?"off":ye,qe=P(P(P({},e),i),{},{class:_e(ce({},"".concat($,"-panel-focused"),!F.value)),style:void 0,pickerValue:void 0,onPickerValueChange:void 0,onChange:null}),ie=D(W1,P(P({},qe),{},{generateConfig:B,value:N.value,locale:q,tabindex:-1,onSelect:function(ot){Ze==null||Ze(ot),G(ot)},direction:Ce,onPanelChange:function(ot,wt){var Mt=e.onPanelChange;he(!0),Mt==null||Mt(ot,wt)}}),null);Se&&(ie=Se(ie));var Oe=D("div",{class:"".concat($,"-panel-container"),onMousedown:function(ot){ot.preventDefault()}},[ie]),Ke;ke&&(Ke=D("span",{class:"".concat($,"-suffix")},[ke]));var Xe;ve&&X.value&&!Be&&(Xe=D("span",{onMousedown:function(ot){ot.preventDefault(),ot.stopPropagation()},onMouseup:function(ot){ot.preventDefault(),ot.stopPropagation(),L(null),V(!1)},class:"".concat($,"-clear"),role:"button"},[Pe||D("span",{class:"".concat($,"-clear-btn")},null)]));var Re=P(P(P({id:ae,tabindex:le,disabled:Be,readonly:ue||typeof f.value[0]=="function"||!F.value,value:oe.value||R.value,onInput:function(ot){g(ot.target.value)},autofocus:Ge,placeholder:Te,ref:l,title:R.value},K.value),{},{size:G3(xe,f.value[0],B)},g3(e)),{},{autocomplete:Ue}),Ae=e.inputRender?e.inputRender(Re):D("input",Re,null),ct=Ce==="rtl"?"bottomRight":"bottomLeft";return D(x3,{visible:h.value,popupStyle:be,prefixCls:$,dropdownClassName:ee,dropdownAlign:te,getPopupContainer:we,transitionName:ne,popupPlacement:ct,direction:Ce},{default:function(){return[D("div",{ref:Z,class:_e($,i.class,(_={},ce(_,"".concat($,"-disabled"),Be),ce(_,"".concat($,"-focused"),k.value),ce(_,"".concat($,"-rtl"),Ce==="rtl"),_)),style:i.style,onMousedown:De,onMouseup:T,onMouseenter:me,onMouseleave:Ve,onContextmenu:Me,onClick:Ie},[D("div",{class:_e("".concat($,"-input"),ce({},"".concat($,"-input-placeholder"),!!oe.value)),ref:b},[Ae,Ke,Xe]),re()])]},popupElement:function(){return Oe}})}}})}const Sq=Cq();function zq(n,e){var t=n.picker,i=n.locale,a=n.selectedValue,l=n.disabledDate,o=n.disabled,r=n.generateConfig,f=de(function(){return Kn(a.value,0)}),v=de(function(){return Kn(a.value,1)});function b(m){return r.value.locale.getWeekFirstDate(i.value.locale,m)}function Z(m){var N=r.value.getYear(m),G=r.value.getMonth(m);return N*100+G}function p(m){var N=r.value.getYear(m),G=av(r.value,m);return N*10+G}var y=function(N){var G;if(l&&l!==null&&l!==void 0&&(G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[1]&&v)return!wo(r.value,N,v.value)&&r.value.isAfter(N,v.value);if(e.value[1]&&v.value)switch(t.value){case"quarter":return p(N)>p(v.value);case"month":return Z(N)>Z(v.value);case"week":return b(N)>b(v.value);default:return!wo(r.value,N,v.value)&&r.value.isAfter(N,v.value)}return!1},X=function(N){var G;if((G=l.value)!==null&&G!==void 0&&G.call(l,N))return!0;if(o[0]&&f)return!wo(r.value,N,v.value)&&r.value.isAfter(f.value,N);if(e.value[0]&&f.value)switch(t.value){case"quarter":return p(N)1&&arguments[1]!==void 0?arguments[1]:!0;Wl()?Kt(n):e?n():cn(n)}function Uq(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=Ne(),i=function(){return t.value=Boolean(n())};return i(),jq(i,e),t}var rZ,oZ,S3=typeof window<"u";S3&&(!((rZ=window)===null||rZ===void 0||(oZ=rZ.navigator)===null||oZ===void 0)&&oZ.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);var Eq=S3?window:void 0,Kq=["window"];function Hq(n,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.window,a=i===void 0?Eq:i,l=jt(t,Kq),o,r=Uq(function(){return a&&"ResizeObserver"in a}),f=function(){o&&(o.disconnect(),o=void 0)},v=rt(function(){return C3(n)},function(Z){f(),r.value&&a&&Z&&(o=new ResizeObserver(e),o.observe(Z,l))},{immediate:!0,flush:"post"}),b=function(){f(),v()};return Dq(b),{isSupported:r,stop:b}}function Xd(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{width:0,height:0},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=t.box,a=i===void 0?"content-box":i,l=Ne(e.width),o=Ne(e.height);return Hq(n,function(r){var f=ft(r,1),v=f[0],b=a==="border-box"?v.borderBoxSize:a==="content-box"?v.contentBoxSize:v.devicePixelContentBoxSize;b?(l.value=b.reduce(function(Z,p){var y=p.inlineSize;return Z+y},0),o.value=b.reduce(function(Z,p){var y=p.blockSize;return Z+y},0)):(l.value=v.contentRect.width,o.value=v.contentRect.height)},t),rt(function(){return C3(n)},function(r){l.value=r?e.width:0,o.value=r?e.height:0}),{width:l,height:o}}function qY(n,e){return n&&n[0]&&n[1]&&e.isAfter(n[0],n[1])?[n[1],n[0]]:n}function ew(n,e,t,i){return!!(n||i&&i[e]||t[(e+1)%2])}function Pq(){return He({name:"RangerPicker",inheritAttrs:!1,props:["prefixCls","id","popupStyle","dropdownClassName","transitionName","dropdownAlign","getPopupContainer","generateConfig","locale","placeholder","autofocus","disabled","format","picker","showTime","showNow","showHour","showMinute","showSecond","use12Hours","separator","value","defaultValue","defaultPickerValue","open","defaultOpen","disabledDate","disabledTime","dateRender","panelRender","ranges","allowEmpty","allowClear","suffixIcon","clearIcon","pickerRef","inputReadOnly","mode","renderExtraFooter","onChange","onOpenChange","onPanelChange","onCalendarChange","onFocus","onBlur","onMousedown","onMouseup","onMouseenter","onMouseleave","onClick","onOk","onKeydown","components","order","direction","activePickerIndex","autocomplete","minuteStep","hourStep","secondStep","hideDisabledOptions","disabledMinutes"],setup:function(e,t){var i=t.attrs,a=t.expose,l=de(function(){return e.picker==="date"&&!!e.showTime||e.picker==="time"}),o=ux(),r=Ne({}),f=Ne(null),v=Ne(null),b=Ne(null),Z=Ne(null),p=Ne(null),y=Ne(null),X=Ne(null),m=Ne(null),N=de(function(){return w3(W3(e.format,e.picker,e.showTime,e.use12Hours))}),G=Wi(0,{value:Ot(e,"activePickerIndex")}),d=ft(G,2),u=d[0],s=d[1],h=Ne(null),c=de(function(){var _t=e.disabled;return Array.isArray(_t)?_t:[_t||!1,_t||!1]}),W=Wi(null,{value:Ot(e,"value"),defaultValue:e.defaultValue,postState:function(Rt){return e.picker==="time"&&!e.order?Rt:qY(Rt,e.generateConfig)}}),M=ft(W,2),I=M[0],w=M[1],C=Jq({values:I,picker:Ot(e,"picker"),defaultDates:e.defaultPickerValue,generateConfig:Ot(e,"generateConfig")}),x=ft(C,3),R=x[0],g=x[1],S=x[2],L=Wi(I.value,{postState:function(Rt){var zt=Rt;if(c.value[0]&&c.value[1])return zt;for(var Ht=0;Ht<2;Ht+=1)c[Ht]&&!Kn(zt,Ht)&&!Kn(e.allowEmpty,Ht)&&(zt=tr(zt,e.generateConfig.getNow(),Ht));return zt}}),V=ft(L,2),Y=V[0],T=V[1],J=Wi([e.picker,e.picker],{value:Ot(e,"mode")}),U=ft(J,2),K=U[0],H=U[1];rt(function(){return e.picker},function(){H([e.picker,e.picker])});var k=function(Rt,zt){var Ht;H(Rt),(Ht=e.onPanelChange)===null||Ht===void 0||Ht.call(e,zt,Rt)},F=zq({picker:Ot(e,"picker"),selectedValue:Y,locale:Ot(e,"locale"),disabled:c,disabledDate:Ot(e,"disabledDate"),generateConfig:Ot(e,"generateConfig")},r),O=ft(F,2),Q=O[0],oe=O[1],se=Wi(!1,{value:Ot(e,"open"),defaultValue:e.defaultOpen,postState:function(Rt){return c.value[u.value]?!1:Rt},onChange:function(Rt){var zt;(zt=e.onOpenChange)===null||zt===void 0||zt.call(e,Rt),!Rt&&h.value&&h.value.onClose&&h.value.onClose()}}),he=ft(se,2),pe=he[0],re=he[1],_=de(function(){return pe.value&&u.value===0}),E=de(function(){return pe.value&&u.value===1}),$=Ne(0),ae=Ne(0),le=Ne(0),ee=Xd(f),te=ee.width;rt([pe,te],function(){!pe.value&&f.value&&(le.value=te.value)});var be=Xd(v),ne=be.width,B=Xd(m),q=B.width,ue=Xd(b),ve=ue.width,Ge=Xd(p),Je=Ge.width;rt([u,pe,ne,q,ve,Je,function(){return e.direction}],function(){ae.value=0,pe.value&&u.value?b.value&&p.value&&v.value&&(ae.value=ve.value+Je.value,ne.value&&q.value&&ae.value>ne.value-q.value-(e.direction==="rtl"||m.value.offsetLeft>ae.value?0:m.value.offsetLeft)&&($.value=ae.value)):u.value===0&&($.value=0)},{immediate:!0});var xe=Ne();function ke(_t,Rt){if(_t)clearTimeout(xe.value),r.value[Rt]=!0,s(Rt),re(_t),pe.value||S(null,Rt);else if(u.value===Rt){re(_t);var zt=r.value;xe.value=setTimeout(function(){zt===r.value&&(r.value={})})}}function Pe(_t){ke(!0,_t),setTimeout(function(){var Rt=[y,X][_t];Rt.value&&Rt.value.focus()},0)}function Be(_t,Rt){var zt=_t,Ht=Kn(zt,0),$t=Kn(zt,1),si=e.generateConfig,Ul=e.locale,Xl=e.picker,El=e.order,ll=e.onCalendarChange,Na=e.allowEmpty,Rl=e.onChange,dl=e.showTime;Ht&&$t&&si.isAfter(Ht,$t)&&(Xl==="week"&&!M3(si,Ul.locale,Ht,$t)||Xl==="quarter"&&!N3(si,Ht,$t)||Xl!=="week"&&Xl!=="quarter"&&Xl!=="time"&&!(dl?Wu(si,Ht,$t):wo(si,Ht,$t))?(Rt===0?(zt=[Ht,null],$t=null):(Ht=null,zt=[null,$t]),r.value=ce({},Rt,!0)):(Xl!=="time"||El!==!1)&&(zt=qY(zt,si))),T(zt);var Tl=zt&&zt[0]?wl(zt[0],{generateConfig:si,locale:Ul,format:N.value[0]}):"",hl=zt&&zt[1]?wl(zt[1],{generateConfig:si,locale:Ul,format:N.value[0]}):"";if(ll){var Nl={range:Rt===0?"start":"end"};ll(zt,[Tl,hl],Nl)}var fl=ew(Ht,0,c.value,Na),eo=ew($t,1,c.value,Na),Ml=zt===null||fl&&eo;Ml&&(w(zt),Rl&&(!Wu(si,Kn(I.value,0),Ht)||!Wu(si,Kn(I.value,1),$t))&&Rl(zt,[Tl,hl]));var xl=null;Rt===0&&!c.value[1]?xl=1:Rt===1&&!c.value[0]&&(xl=0),xl!==null&&xl!==u.value&&(!r.value[xl]||!Kn(zt,xl))&&Kn(zt,Rt)?Pe(xl):ke(!1,Rt)}var Te=function(Rt){return pe&&h.value&&h.value.onKeydown?h.value.onKeydown(Rt):!1},we={formatList:N,generateConfig:Ot(e,"generateConfig"),locale:Ot(e,"locale")},Se=Km(de(function(){return Kn(Y.value,0)}),we),De=ft(Se,2),me=De[0],Ve=De[1],Me=Km(de(function(){return Kn(Y.value,1)}),we),Ie=ft(Me,2),Ze=Ie[0],Ce=Ie[1],ye=function(Rt,zt){var Ht=I3(Rt,{locale:e.locale,formatList:N.value,generateConfig:e.generateConfig}),$t=zt===0?Q:oe;Ht&&!$t(Ht)&&(T(tr(Y.value,Ht,zt)),S(Ht,zt))},Ue=cv({valueTexts:me,onTextChange:function(Rt){return ye(Rt,0)}}),qe=ft(Ue,3),ie=qe[0],Oe=qe[1],Ke=qe[2],Xe=cv({valueTexts:Ze,onTextChange:function(Rt){return ye(Rt,1)}}),Re=ft(Xe,3),Ae=Re[0],ct=Re[1],lt=Re[2],ot=di(null),wt=ft(ot,2),Mt=wt[0],xt=wt[1],Gt=di(null),Zt=ft(Gt,2),Tt=Zt[0],Ct=Zt[1],St=uv(ie,we),Pt=ft(St,3),Ut=Pt[0],kt=Pt[1],en=Pt[2],nn=uv(Ae,we),Ft=ft(nn,3),Ln=Ft[0],An=Ft[1],Gi=Ft[2],Pi=function(Rt){Ct(tr(Y.value,Rt,u.value)),u.value===0?kt(Rt):An(Rt)},Gl=function(){Ct(tr(Y.value,null,u.value)),u.value===0?en():Gi()},Fn=function(Rt,zt){return{forwardKeydown:Te,onBlur:function($t){var si;(si=e.onBlur)===null||si===void 0||si.call(e,$t)},isClickOutside:function($t){return!X3([v.value,b.value,Z.value,f.value],$t)},onFocus:function($t){var si;s(Rt),(si=e.onFocus)===null||si===void 0||si.call(e,$t)},triggerOpen:function($t){ke($t,Rt)},onSubmit:function(){if(!Y.value||e.disabledDate&&e.disabledDate(Y.value[Rt]))return!1;Be(Y.value,Rt),zt()},onCancel:function(){ke(!1,Rt),T(I.value),zt()}}},cl=sv(P(P({},Fn(0,Ke)),{},{blurToCancel:l,open:_,value:ie,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),ki=ft(cl,2),tl=ki[0],nl=ki[1],Dt=nl.focused,ht=nl.typing,Fe=sv(P(P({},Fn(1,lt)),{},{blurToCancel:l,open:E,value:Ae,onKeydown:function(Rt,zt){var Ht;(Ht=e.onKeydown)===null||Ht===void 0||Ht.call(e,Rt,zt)}})),tt=ft(Fe,2),nt=tt[0],Vt=tt[1],Bt=Vt.focused,Nn=Vt.typing,oi=function(Rt){var zt;(zt=e.onClick)===null||zt===void 0||zt.call(e,Rt),!pe.value&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&(c.value[0]?c.value[1]||Pe(1):Pe(0))},gi=function(Rt){var zt;(zt=e.onMousedown)===null||zt===void 0||zt.call(e,Rt),pe.value&&(Dt.value||Bt.value)&&!y.value.contains(Rt.target)&&!X.value.contains(Rt.target)&&Rt.preventDefault()},Ll=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[0]?wl(I.value[0],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""}),il=de(function(){var _t;return(_t=I.value)!==null&&_t!==void 0&&_t[1]?wl(I.value[1],{locale:e.locale,format:"YYYYMMDDHHmmss",generateConfig:e.generateConfig}):""});rt([pe,me,Ze],function(){pe.value||(T(I.value),!me.value.length||me.value[0]===""?Oe(""):Ve.value!==ie.value&&Ke(),!Ze.value.length||Ze.value[0]===""?ct(""):Ce.value!==Ae.value&<())}),rt([Ll,il],function(){T(I.value)}),a({focus:function(){y.value&&y.value.focus()},blur:function(){y.value&&y.value.blur(),X.value&&X.value.blur()}});var Lr=de(function(){return Object.keys(e.ranges||{}).map(function(_t){var Rt=e.ranges[_t],zt=typeof Rt=="function"?Rt():Rt;return{label:_t,onClick:function(){Be(zt,null),ke(!1,u.value)},onMouseenter:function(){xt(zt)},onMouseleave:function(){xt(null)}}})}),ul=de(function(){return pe.value&&Tt.value&&Tt.value[0]&&Tt.value[1]&&e.generateConfig.isAfter(Tt.value[1],Tt.value[0])?Tt.value:null});function Ol(){var _t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,Rt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},zt=e.generateConfig,Ht=e.showTime,$t=e.dateRender,si=e.direction,Ul=e.disabledTime,Xl=e.prefixCls,El=e.locale,ll=Ht;if(Ht&&Yt(Ht)==="object"&&Ht.defaultValue){var Na=Ht.defaultValue;ll=P(P({},Ht),{},{defaultValue:Kn(Na,u.value)||void 0})}var Rl=null;return $t&&(Rl=function(Tl){var hl=Tl.current,Nl=Tl.today;return $t({current:hl,today:Nl,info:{range:u.value?"end":"start"}})}),D(Yq,{value:{inRange:!0,panelPosition:_t,rangedValue:Mt.value||Y.value,hoverRangedValue:ul.value}},{default:function(){return[D(W1,P(P(P({},e),Rt),{},{dateRender:Rl,showTime:ll,mode:K.value[u.value],generateConfig:zt,style:void 0,direction:si,disabledDate:u.value===0?Q:oe,disabledTime:function(hl){return Ul?Ul(hl,u.value===0?"start":"end"):!1},class:_e(ce({},"".concat(Xl,"-panel-focused"),u.value===0?!ht.value:!Nn.value)),value:Kn(Y.value,u.value),locale:El,tabIndex:-1,onPanelChange:function(hl,Nl){u.value===0&&en(!0),u.value===1&&Gi(!0),k(tr(K.value,Nl,u.value),tr(Y.value,hl,u.value));var fl=hl;_t==="right"&&K.value[u.value]===Nl&&(fl=Bd(fl,Nl,zt,-1)),S(fl,u.value)},onOk:null,onSelect:void 0,onChange:void 0,defaultValue:u.value===0?Kn(Y.value,1):Kn(Y.value,0)}),null)]}})}var jl=function(Rt,zt){var Ht=tr(Y.value,Rt,u.value);zt==="submit"||zt!=="key"&&!l.value?(Be(Ht,u.value),u.value===0?en():Gi()):T(Ht)};return n1({operationRef:h,hideHeader:de(function(){return e.picker==="time"}),onDateMouseenter:Pi,onDateMouseleave:Gl,hideRanges:de(function(){return!0}),onSelect:jl,open:pe}),function(){var _t,Rt,zt,Ht=e.prefixCls,$t=Ht===void 0?"rc-picker":Ht,si=e.id,Ul=e.popupStyle,Xl=e.dropdownClassName,El=e.transitionName,ll=e.dropdownAlign,Na=e.getPopupContainer,Rl=e.generateConfig,dl=e.locale,Tl=e.placeholder,hl=e.autofocus,Nl=e.picker,fl=Nl===void 0?"date":Nl,eo=e.showTime,Ml=e.separator,xl=Ml===void 0?"~":Ml,Rr=e.disabledDate,ra=e.panelRender,Vs=e.allowClear,Kl=e.suffixIcon,oa=e.clearIcon,to=e.inputReadOnly,$n=e.renderExtraFooter,Un=e.onMouseenter,sr=e.onMouseleave,Fo=e.onMouseup,Jo=e.onOk,Do=e.components,ja=e.direction,je=e.autocomplete,et=je===void 0?"off":je,mt=ja==="rtl"?{right:"".concat(ae.value,"px")}:{left:"".concat(ae.value,"px")};function Lt(){var fi,Qn=R3($t,K.value[u.value],$n),qn=T3({prefixCls:$t,components:Do,needConfirmButton:l.value,okDisabled:!Kn(Y.value,u.value)||Rr&&Rr(Y.value[u.value]),locale:dl,rangeList:Lr.value,onOk:function(){Kn(Y.value,u.value)&&(Be(Y.value,u.value),Jo&&Jo(Y.value))}});if(fl!=="time"&&!eo){var Ti=u.value===0?R.value:g.value,yi=Bd(Ti,fl,Rl),Hl=K.value[u.value],Zi=Hl===fl,no=Ol(Zi?"left":!1,{pickerValue:Ti,onPickerValueChange:function(ge){S(ge,u.value)}}),Pl=Ol("right",{pickerValue:yi,onPickerValueChange:function(ge){S(Bd(ge,fl,Rl,-1),u.value)}});ja==="rtl"?fi=D(ln,null,[Pl,Zi&&no]):fi=D(ln,null,[no,Zi&&Pl])}else fi=Ol();var al=D(ln,null,[D("div",{class:"".concat($t,"-panels")},[fi]),(Qn||qn)&&D("div",{class:"".concat($t,"-footer")},[Qn,qn])]);return ra&&(al=ra(al)),D("div",{class:"".concat($t,"-panel-container"),style:{marginLeft:"".concat($.value,"px")},ref:v,onMousedown:function(ge){ge.preventDefault()}},[al])}var Jn=D("div",{class:_e("".concat($t,"-range-wrapper"),"".concat($t,"-").concat(fl,"-range-wrapper")),style:{minWidth:"".concat(le.value,"px")}},[D("div",{ref:m,class:"".concat($t,"-range-arrow"),style:mt},null),Lt()]),sn;Kl&&(sn=D("span",{class:"".concat($t,"-suffix")},[Kl]));var ii;Vs&&(Kn(I.value,0)&&!c.value[0]||Kn(I.value,1)&&!c.value[1])&&(ii=D("span",{onMousedown:function(Qn){Qn.preventDefault(),Qn.stopPropagation()},onMouseup:function(Qn){Qn.preventDefault(),Qn.stopPropagation();var qn=I.value;c.value[0]||(qn=tr(qn,null,0)),c.value[1]||(qn=tr(qn,null,1)),Be(qn,null),ke(!1,u.value)},class:"".concat($t,"-clear")},[oa||D("span",{class:"".concat($t,"-clear-btn")},null)]));var _n={size:G3(fl,N.value[0],Rl)},Dn=0,ni=0;b.value&&Z.value&&p.value&&(u.value===0?ni=b.value.offsetWidth:(Dn=ae.value,ni=Z.value.offsetWidth));var Fi=ja==="rtl"?{right:"".concat(Dn,"px")}:{left:"".concat(Dn,"px")};return D(x3,{visible:pe.value,popupStyle:Ul,prefixCls:$t,dropdownClassName:Xl,dropdownAlign:ll,getPopupContainer:Na,transitionName:El,range:!0,direction:ja},{default:function(){return[D("div",P({ref:f,class:_e($t,"".concat($t,"-range"),i.class,(_t={},ce(_t,"".concat($t,"-disabled"),c.value[0]&&c.value[1]),ce(_t,"".concat($t,"-focused"),u.value===0?Dt.value:Bt.value),ce(_t,"".concat($t,"-rtl"),ja==="rtl"),_t)),style:i.style,onClick:oi,onMouseenter:Un,onMouseleave:sr,onMousedown:gi,onMouseup:Fo},g3(e)),[D("div",{class:_e("".concat($t,"-input"),(Rt={},ce(Rt,"".concat($t,"-input-active"),u.value===0),ce(Rt,"".concat($t,"-input-placeholder"),!!Ut.value),Rt)),ref:b},[D("input",P(P(P({id:si,disabled:c.value[0],readonly:to||typeof N.value[0]=="function"||!ht.value,value:Ut.value||ie.value,onInput:function(qn){Oe(qn.target.value)},autofocus:hl,placeholder:Kn(Tl,0)||"",ref:y},tl.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-range-separator"),ref:p},[xl]),D("div",{class:_e("".concat($t,"-input"),(zt={},ce(zt,"".concat($t,"-input-active"),u.value===1),ce(zt,"".concat($t,"-input-placeholder"),!!Ln.value),zt)),ref:Z},[D("input",P(P(P({disabled:c.value[1],readonly:to||typeof N.value[0]=="function"||!Nn.value,value:Ln.value||Ae.value,onInput:function(qn){ct(qn.target.value)},placeholder:Kn(Tl,1)||"",ref:X},nt.value),_n),{},{autocomplete:et}),null)]),D("div",{class:"".concat($t,"-active-bar"),style:P(P({},Fi),{},{width:"".concat(ni,"px"),position:"absolute"})},null),sn,ii,o()])]},popupElement:function(){return Jn}})}}})}var Qq=Pq();const Bq=Qq;var Aq=["prefixCls","name","id","type","disabled","readonly","tabindex","autofocus","value","required"],_q={prefixCls:String,name:String,id:String,type:String,defaultChecked:{type:[Boolean,Number],default:void 0},checked:{type:[Boolean,Number],default:void 0},disabled:Boolean,tabindex:{type:[Number,String]},readonly:Boolean,autofocus:Boolean,value:We.any,required:Boolean};const z3=He({compatConfig:{MODE:3},name:"Checkbox",inheritAttrs:!1,props:pn(_q,{prefixCls:"rc-checkbox",type:"checkbox",defaultChecked:!1}),emits:["click","change"],setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(e.checked===void 0?e.defaultChecked:e.checked),r=Ne();rt(function(){return e.checked},function(){o.value=e.checked}),l({focus:function(){var p;(p=r.value)===null||p===void 0||p.focus()},blur:function(){var p;(p=r.value)===null||p===void 0||p.blur()}});var f=Ne(),v=function(p){if(!e.disabled){e.checked===void 0&&(o.value=p.target.checked),p.shiftKey=f.value;var y={target:P(P({},e),{},{checked:p.target.checked}),stopPropagation:function(){p.stopPropagation()},preventDefault:function(){p.preventDefault()},nativeEvent:p};e.checked!==void 0&&(r.value.checked=!!e.checked),a("change",y),f.value=!1}},b=function(p){a("click",p),f.value=p.shiftKey};return function(){var Z,p=e.prefixCls,y=e.name,X=e.id,m=e.type,N=e.disabled,G=e.readonly,d=e.tabindex,u=e.autofocus,s=e.value,h=e.required,c=jt(e,Aq),W=i.class,M=i.onFocus,I=i.onBlur,w=i.onKeydown,C=i.onKeypress,x=i.onKeyup,R=P(P({},c),i),g=Object.keys(R).reduce(function(V,Y){return(Y.substr(0,5)==="aria-"||Y.substr(0,5)==="data-"||Y==="role")&&(V[Y]=R[Y]),V},{}),S=_e(p,W,(Z={},ce(Z,"".concat(p,"-checked"),o.value),ce(Z,"".concat(p,"-disabled"),N),Z)),L=P(P({name:y,id:X,type:m,readonly:G,disabled:N,tabindex:d,class:"".concat(p,"-input"),checked:!!o.value,autofocus:u,value:s},g),{},{onChange:v,onClick:b,onFocus:M,onBlur:I,onKeydown:w,onKeypress:C,onKeyup:x,required:h});return D("span",{class:S},[D("input",P({ref:r},L),null),D("span",{class:"".concat(p,"-inner")},null)])}}});var $q=["prefixCls","id"],k3=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},isGroup:{type:Boolean,default:void 0},value:We.any,name:String,id:String,autofocus:{type:Boolean,default:void 0},onChange:Function,onFocus:Function,onBlur:Function,onClick:Function,"onUpdate:checked":Function,"onUpdate:value":Function}};const ta=He({compatConfig:{MODE:3},name:"ARadio",props:k3(),setup:function(e,t){var i=t.emit,a=t.expose,l=t.slots,o=Hi(),r=Ne(),f=un("radioGroupContext",void 0),v=Nt("radio",e),b=v.prefixCls,Z=v.direction,p=function(){r.value.focus()},y=function(){r.value.blur()};a({focus:p,blur:y});var X=function(G){var d=G.target.checked;i("update:checked",d),i("update:value",d),i("change",G),o.onFieldChange()},m=function(G){i("change",G),f&&f.onRadioChange&&f.onRadioChange(G)};return function(){var N,G=f;e.prefixCls;var d=e.id,u=d===void 0?o.id.value:d,s=jt(e,$q),h=P({prefixCls:b.value,id:u},dn(s,["onUpdate:checked","onUpdate:value"]));G?(h.name=G.props.name,h.onChange=m,h.checked=e.value===G.stateValue.value,h.disabled=e.disabled||G.props.disabled):h.onChange=X;var c=_e((N={},ce(N,"".concat(b.value,"-wrapper"),!0),ce(N,"".concat(b.value,"-wrapper-checked"),h.checked),ce(N,"".concat(b.value,"-wrapper-disabled"),h.disabled),ce(N,"".concat(b.value,"-wrapper-rtl"),Z.value==="rtl"),N));return D("label",{class:c},[D(z3,P(P({},h),{},{type:"radio",ref:r}),null),l.default&&D("span",null,[l.default()])])}}});var qq=pi("large","default","small"),eee=function(){return{prefixCls:String,value:We.any,size:We.oneOf(qq),options:{type:Array},disabled:{type:Boolean,default:void 0},name:String,buttonStyle:{type:String,default:"outline"},id:String,optionType:{type:String,default:"default"},onChange:Function,"onUpdate:value":Function}};const G1=He({compatConfig:{MODE:3},name:"ARadioGroup",props:eee(),setup:function(e,t){var i=t.slots,a=t.emit,l=Hi(),o=Nt("radio",e),r=o.prefixCls,f=o.direction,v=o.size,b=Ne(e.value),Z=Ne(!1);rt(function(){return e.value},function(y){b.value=y,Z.value=!1});var p=function(X){var m=b.value,N=X.target.value;"value"in e||(b.value=N),!Z.value&&N!==m&&(Z.value=!0,a("update:value",N),a("change",X),l.onFieldChange()),cn(function(){Z.value=!1})};return hn("radioGroupContext",{onRadioChange:p,stateValue:b,props:e}),function(){var y,X=e.options,m=e.optionType,N=e.buttonStyle,G=e.id,d=G===void 0?l.id.value:G,u="".concat(r.value,"-group"),s=_e(u,"".concat(u,"-").concat(N),(y={},ce(y,"".concat(u,"-").concat(v.value),v.value),ce(y,"".concat(u,"-rtl"),f.value==="rtl"),y)),h=null;if(X&&X.length>0){var c=m==="button"?"".concat(r.value,"-button"):r.value;h=X.map(function(M){if(typeof M=="string"||typeof M=="number")return D(ta,{key:M,prefixCls:c,disabled:e.disabled,value:M,checked:b.value===M},{default:function(){return[M]}});var I=M.value,w=M.disabled,C=M.label;return D(ta,{key:"radio-group-value-options-".concat(I),prefixCls:c,disabled:w||e.disabled,value:I,checked:b.value===I},{default:function(){return[C]}})})}else{var W;h=(W=i.default)===null||W===void 0?void 0:W.call(i)}return D("div",{class:s,id:d},[h])}}}),Hm=He({compatConfig:{MODE:3},name:"ARadioButton",props:k3(),setup:function(e,t){var i=t.slots,a=Nt("radio-button",e),l=a.prefixCls,o=un("radioGroupContext",void 0);return function(){var r,f=P(P({},e),{},{prefixCls:l.value});return o&&(f.onChange=o.onRadioChange,f.checked=f.value===o.stateValue.value,f.disabled=f.disabled||o.props.disabled),D(ta,f,{default:function(){return[(r=i.default)===null||r===void 0?void 0:r.call(i)]}})}}});ta.Group=G1;ta.Button=Hm;ta.install=function(n){return n.component(ta.name,ta),n.component(ta.Group.name,ta.Group),n.component(ta.Button.name,ta.Button),n};var tee=10,nee=20;function F3(n){var e=n.fullscreen,t=n.validRange,i=n.generateConfig,a=n.locale,l=n.prefixCls,o=n.value,r=n.onChange,f=n.divRef,v=i.getYear(o||i.getNow()),b=v-tee,Z=b+nee;t&&(b=i.getYear(t[0]),Z=i.getYear(t[1])+1);for(var p=a&&a.year==="年"?"年":"",y=[],X=b;Xi.getMonth(s)&&(G=i.setMonth(G,i.getMonth(s))),h===i.getYear(u)&&cY?(L=g,c.value="x"):(L=S,c.value="y"),e(-L,-L)&&R.preventDefault()}var M=Ne({onTouchStart:u,onTouchMove:s,onTouchEnd:h,onWheel:W});function I(R){M.value.onTouchStart(R)}function w(R){M.value.onTouchMove(R)}function C(R){M.value.onTouchEnd(R)}function x(R){M.value.onWheel(R)}Kt(function(){var R,g;document.addEventListener("touchmove",w,{passive:!1}),document.addEventListener("touchend",C,{passive:!1}),(R=n.value)===null||R===void 0||R.addEventListener("touchstart",I,{passive:!1}),(g=n.value)===null||g===void 0||g.addEventListener("wheel",x,{passive:!1})}),fn(function(){document.removeEventListener("touchmove",w),document.removeEventListener("touchend",C)})}function lw(n,e){var t=Ne(n);function i(a){var l=typeof a=="function"?a(t.value):a;l!==t.value&&e(l,t.value),t.value=l}return[t,i]}var mee=function(){var e=Ne(new Map),t=function(a){return function(l){e.value.set(a,l)}};return YW(function(){e.value=new Map}),[t,e]};const X1=mee;var pee=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,yee=/^\w*$/;function N1(n,e){if(or(n))return!1;var t=typeof n;return t=="number"||t=="symbol"||t=="boolean"||n==null||_0(n)?!0:yee.test(n)||!pee.test(n)||e!=null&&n in Object(e)}var Zee="Expected a function";function M1(n,e){if(typeof n!="function"||e!=null&&typeof e!="function")throw new TypeError(Zee);var t=function(){var i=arguments,a=e?e.apply(this,i):i[0],l=t.cache;if(l.has(a))return l.get(a);var o=n.apply(this,i);return t.cache=l.set(a,o)||l,o};return t.cache=new(M1.Cache||zo),t}M1.Cache=zo;var vee=500;function Wee(n){var e=M1(n,function(i){return t.size===vee&&t.clear(),i}),t=e.cache;return e}var Gee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Xee=/\\(\\)?/g,Nee=Wee(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Gee,function(t,i,a,l){e.push(a?l.replace(Xee,"$1"):i||t)}),e});const Mee=Nee;function Au(n,e){return or(n)?n:N1(n,e)?[n]:Mee(t1(n))}var Iee=1/0;function _u(n){if(typeof n=="string"||_0(n))return n;var e=n+"";return e=="0"&&1/n==-Iee?"-0":e}function np(n,e){e=Au(e,n);for(var t=0,i=e.length;n!=null&&t0&&t(r)?e>1?P3(r,e-1,t,i,a):WG(a,r):i||(a[a.length]=r)}return a}function See(n){var e=n==null?0:n.length;return e?P3(n,1):[]}function zee(n,e,t){switch(t.length){case 0:return n.call(e);case 1:return n.call(e,t[0]);case 2:return n.call(e,t[0],t[1]);case 3:return n.call(e,t[0],t[1],t[2])}return n.apply(e,t)}var rw=Math.max;function Q3(n,e,t){return e=rw(e===void 0?n.length-1:e,0),function(){for(var i=arguments,a=-1,l=rw(i.length-e,0),o=Array(l);++a0){if(++e>=Dee)return arguments[0]}else e=0;return n.apply(void 0,arguments)}}var Eee=Uee(Jee);const B3=Eee;function A3(n){return B3(Q3(n,void 0,See),n+"")}var Kee=A3(function(n,e){return n==null?{}:xee(n,e)});const _3=Kee;var ow={width:0,height:0,left:0,top:0,right:0},Hee=function(){return{id:{type:String},tabPosition:{type:String},activeKey:{type:[String,Number]},rtl:{type:Boolean},animated:{type:Object,default:void 0},editable:{type:Object},moreIcon:We.any,moreTransitionName:{type:String},mobile:{type:Boolean},tabBarGutter:{type:Number},renderTabBar:{type:Function},locale:{type:Object,default:void 0},onTabClick:{type:Function},onTabScroll:{type:Function}}};const sw=He({compatConfig:{MODE:3},name:"TabNavList",inheritAttrs:!1,props:Hee(),slots:["moreIcon","leftExtra","rightExtra","tabBarExtraContent"],emits:["tabClick","tabScroll"],setup:function(e,t){var i=t.attrs,a=t.slots,l=E3(),o=l.tabs,r=l.prefixCls,f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=X1(),y=ft(p,2),X=y[0],m=y[1],N=de(function(){return e.tabPosition==="top"||e.tabPosition==="bottom"}),G=lw(0,function(Ue,qe){N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"left":"right"})}),d=ft(G,2),u=d[0],s=d[1],h=lw(0,function(Ue,qe){!N.value&&e.onTabScroll&&e.onTabScroll({direction:Ue>qe?"top":"bottom"})}),c=ft(h,2),W=c[0],M=c[1],I=di(0),w=ft(I,2),C=w[0],x=w[1],R=di(0),g=ft(R,2),S=g[0],L=g[1],V=di(null),Y=ft(V,2),T=Y[0],J=Y[1],U=di(null),K=ft(U,2),H=K[0],k=K[1],F=di(0),O=ft(F,2),Q=O[0],oe=O[1],se=di(0),he=ft(se,2),pe=he[0],re=he[1],_=see(new Map),E=ft(_,2),$=E[0],ae=E[1],le=uee(o,$),ee=de(function(){return"".concat(r.value,"-nav-operations-hidden")}),te=Ne(0),be=Ne(0);qt(function(){N.value?e.rtl?(te.value=0,be.value=Math.max(0,C.value-T.value)):(te.value=Math.min(0,T.value-C.value),be.value=0):(te.value=Math.min(0,H.value-S.value),be.value=0)});var ne=function(qe){return qebe.value?be.value:qe},B=Ne(),q=di(),ue=ft(q,2),ve=ue[0],Ge=ue[1],Je=function(){Ge(Date.now())},xe=function(){clearTimeout(B.value)},ke=function(qe,ie){qe(function(Oe){var Ke=ne(Oe+ie);return Ke})};bee(f,function(Ue,qe){if(N.value){if(T.value>=C.value)return!1;ke(s,Ue)}else{if(H.value>=S.value)return!1;ke(M,qe)}return xe(),Je(),!0}),rt(ve,function(){xe(),ve.value&&(B.value=setTimeout(function(){Ge(0)},100))});var Pe=function(){var qe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activeKey,ie=le.value.get(qe)||{width:0,height:0,left:0,right:0,top:0};if(N.value){var Oe=u.value;e.rtl?ie.rightu.value+T.value&&(Oe=ie.right+ie.width-T.value):ie.left<-u.value?Oe=-ie.left:ie.left+ie.width>-u.value+T.value&&(Oe=-(ie.left+ie.width-T.value)),M(0),s(ne(Oe))}else{var Ke=W.value;ie.top<-W.value?Ke=-ie.top:ie.top+ie.height>-W.value+H.value&&(Ke=-(ie.top+ie.height-H.value)),s(0),M(ne(Ke))}},Be=Ne(0),Te=Ne(0);qt(function(){var Ue,qe,ie,Oe,Ke,Xe,Re,Ae=le.value;["top","bottom"].includes(e.tabPosition)?(qe="width",Ke=T.value,Xe=C.value,Re=Q.value,ie=e.rtl?"right":"left",Oe=Math.abs(u.value)):(qe="height",Ke=H.value,Xe=C.value,Re=pe.value,ie="top",Oe=-W.value);var ct=Ke;Xe+Re>Ke&&XeOe+ct){Mt=xt-1;break}}for(var Zt=0,Tt=wt-1;Tt>=0;Tt-=1){var Ct=Ae.get(lt[Tt].key)||ow;if(Ct[ie]0,Zt=u.value+T.value0?"".concat(y[0]/-2,"px"):void 0,N=y[1]>0?"".concat(y[1]/-2,"px"):void 0;return m&&(X.marginLeft=m,X.marginRight=m),v.value?X.rowGap="".concat(y[1],"px"):N&&(X.marginTop=N,X.marginBottom=N),X});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}});const V1=rte;function ote(n){return typeof n=="number"?"".concat(n," ").concat(n," auto"):/^\d+(\.\d+)?(px|em|rem|%)$/.test(n)?"0 0 ".concat(n):n}var ste=function(){return{span:[String,Number],order:[String,Number],offset:[String,Number],push:[String,Number],pull:[String,Number],xs:{type:[String,Number,Object],default:void 0},sm:{type:[String,Number,Object],default:void 0},md:{type:[String,Number,Object],default:void 0},lg:{type:[String,Number,Object],default:void 0},xl:{type:[String,Number,Object],default:void 0},xxl:{type:[String,Number,Object],default:void 0},xxxl:{type:[String,Number,Object],default:void 0},prefixCls:String,flex:[String,Number]}};const ip=He({compatConfig:{MODE:3},name:"ACol",props:ste(),setup:function(e,t){var i=t.slots,a=lte(),l=a.gutter,o=a.supportFlexGap,r=a.wrap,f=Nt("col",e),v=f.prefixCls,b=f.direction,Z=de(function(){var y,X=e.span,m=e.order,N=e.offset,G=e.push,d=e.pull,u=v.value,s={};return["xs","sm","md","lg","xl","xxl","xxxl"].forEach(function(h){var c,W={},M=e[h];typeof M=="number"?W.span=M:Yt(M)==="object"&&(W=M||{}),s=P(P({},s),{},(c={},ce(c,"".concat(u,"-").concat(h,"-").concat(W.span),W.span!==void 0),ce(c,"".concat(u,"-").concat(h,"-order-").concat(W.order),W.order||W.order===0),ce(c,"".concat(u,"-").concat(h,"-offset-").concat(W.offset),W.offset||W.offset===0),ce(c,"".concat(u,"-").concat(h,"-push-").concat(W.push),W.push||W.push===0),ce(c,"".concat(u,"-").concat(h,"-pull-").concat(W.pull),W.pull||W.pull===0),ce(c,"".concat(u,"-rtl"),b.value==="rtl"),c))}),_e(u,(y={},ce(y,"".concat(u,"-").concat(X),X!==void 0),ce(y,"".concat(u,"-order-").concat(m),m),ce(y,"".concat(u,"-offset-").concat(N),N),ce(y,"".concat(u,"-push-").concat(G),G),ce(y,"".concat(u,"-pull-").concat(d),d),y),s)}),p=de(function(){var y=e.flex,X=l.value,m={};if(X&&X[0]>0){var N="".concat(X[0]/2,"px");m.paddingLeft=N,m.paddingRight=N}if(X&&X[1]>0&&!o.value){var G="".concat(X[1]/2,"px");m.paddingTop=G,m.paddingBottom=G}return y&&(m.flex=ote(y),r.value===!1&&!m.minWidth&&(m.minWidth=0)),m});return function(){var y;return D("div",{class:Z.value,style:p.value},[(y=i.default)===null||y===void 0?void 0:y.call(i)])}}}),cte={useBreakpoint:Qu},au=wi(V1),mr=wi(ip);var ute=bc.TabPane,dte=function(){return{prefixCls:String,title:We.any,extra:We.any,bordered:{type:Boolean,default:!0},bodyStyle:{type:Object,default:void 0},headStyle:{type:Object,default:void 0},loading:{type:Boolean,default:!1},hoverable:{type:Boolean,default:!1},type:{type:String},size:{type:String},actions:We.any,tabList:{type:Array},tabBarExtraContent:We.any,activeTabKey:String,defaultActiveTabKey:String,cover:We.any,onTabChange:{type:Function}}},hte=He({compatConfig:{MODE:3},name:"ACard",props:dte(),slots:["title","extra","tabBarExtraContent","actions","cover","customTab"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=a.direction,r=a.size,f=function(p){var y=p.map(function(X,m){return yl(X)&&!Th(X)||!yl(X)?D("li",{style:{width:"".concat(100/p.length,"%")},key:"action-".concat(m)},[D("span",null,[X])]):null});return y},v=function(p){var y;(y=e.onTabChange)===null||y===void 0||y.call(e,p)},b=function(){var p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],y;return p.forEach(function(X){X&&zW(X.type)&&X.type.__ANT_CARD_GRID&&(y=!0)}),y};return function(){var Z,p,y,X,m,N,G,d,u=e.headStyle,s=u===void 0?{}:u,h=e.bodyStyle,c=h===void 0?{}:h,W=e.loading,M=e.bordered,I=M===void 0?!0:M,w=e.type,C=e.tabList,x=e.hoverable,R=e.activeTabKey,g=e.defaultActiveTabKey,S=e.tabBarExtraContent,L=S===void 0?Zd((Z=i.tabBarExtraContent)===null||Z===void 0?void 0:Z.call(i)):S,V=e.title,Y=V===void 0?Zd((p=i.title)===null||p===void 0?void 0:p.call(i)):V,T=e.extra,J=T===void 0?Zd((y=i.extra)===null||y===void 0?void 0:y.call(i)):T,U=e.actions,K=U===void 0?Zd((X=i.actions)===null||X===void 0?void 0:X.call(i)):U,H=e.cover,k=H===void 0?Zd((m=i.cover)===null||m===void 0?void 0:m.call(i)):H,F=ti((N=i.default)===null||N===void 0?void 0:N.call(i)),O=l.value,Q=(G={},ce(G,"".concat(O),!0),ce(G,"".concat(O,"-loading"),W),ce(G,"".concat(O,"-bordered"),I),ce(G,"".concat(O,"-hoverable"),!!x),ce(G,"".concat(O,"-contain-grid"),b(F)),ce(G,"".concat(O,"-contain-tabs"),C&&C.length),ce(G,"".concat(O,"-").concat(r.value),r.value),ce(G,"".concat(O,"-type-").concat(w),!!w),ce(G,"".concat(O,"-rtl"),o.value==="rtl"),G),oe=c.padding===0||c.padding==="0px"?{padding:"24px"}:void 0,se=D("div",{class:"".concat(O,"-loading-block")},null),he=D("div",{class:"".concat(O,"-loading-content"),style:oe},[D(au,{gutter:8},{default:function(){return[D(mr,{span:22},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:8},{default:function(){return[se]}}),D(mr,{span:15},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:6},{default:function(){return[se]}}),D(mr,{span:18},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:13},{default:function(){return[se]}}),D(mr,{span:9},{default:function(){return[se]}})]}}),D(au,{gutter:8},{default:function(){return[D(mr,{span:4},{default:function(){return[se]}}),D(mr,{span:3},{default:function(){return[se]}}),D(mr,{span:16},{default:function(){return[se]}})]}})]),pe=R!==void 0,re=(d={size:"large"},ce(d,pe?"activeKey":"defaultActiveKey",pe?R:g),ce(d,"onChange",v),ce(d,"class","".concat(O,"-head-tabs")),d),_,E=C&&C.length?D(bc,re,{default:function(){return[C.map(function(te){var be=te.tab,ne=te.slots,B=ne==null?void 0:ne.tab;jn(!ne,"Card","tabList slots is deprecated, Please use `customTab` instead.");var q=be!==void 0?be:i[B]?i[B](te):null;return q=g0(i,"customTab",te,function(){return[q]}),D(ute,{tab:q,key:te.key,disabled:te.disabled},null)})]},rightExtra:L?function(){return L}:null}):null;(Y||J||E)&&(_=D("div",{class:"".concat(O,"-head"),style:s},[D("div",{class:"".concat(O,"-head-wrapper")},[Y&&D("div",{class:"".concat(O,"-head-title")},[Y]),J&&D("div",{class:"".concat(O,"-extra")},[J])]),E]));var $=k?D("div",{class:"".concat(O,"-cover")},[k]):null,ae=D("div",{class:"".concat(O,"-body"),style:c},[W?he:F]),le=K&&K.length?D("ul",{class:"".concat(O,"-actions")},[f(K)]):null;return D("div",{class:Q,ref:"cardContainerRef"},[_,$,F&&F.length?ae:null,le])}}});const Gu=hte;var fte=function(){return{prefixCls:String,title:We.any,description:We.any,avatar:We.any}};const Bm=He({compatConfig:{MODE:3},name:"ACardMeta",props:fte(),slots:["title","description","avatar"],setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls;return function(){var o=ce({},"".concat(l.value,"-meta"),!0),r=ui(i,e,"avatar"),f=ui(i,e,"title"),v=ui(i,e,"description"),b=r?D("div",{class:"".concat(l.value,"-meta-avatar")},[r]):null,Z=f?D("div",{class:"".concat(l.value,"-meta-title")},[f]):null,p=v?D("div",{class:"".concat(l.value,"-meta-description")},[v]):null,y=Z||p?D("div",{class:"".concat(l.value,"-meta-detail")},[Z,p]):null;return D("div",{class:o},[b,y])}}});var bte=function(){return{prefixCls:String,hoverable:{type:Boolean,default:!0}}};const Am=He({compatConfig:{MODE:3},name:"ACardGrid",__ANT_CARD_GRID:!0,props:bte(),setup:function(e,t){var i=t.slots,a=Nt("card",e),l=a.prefixCls,o=de(function(){var r;return r={},ce(r,"".concat(l.value,"-grid"),!0),ce(r,"".concat(l.value,"-grid-hoverable"),e.hoverable),r});return function(){var r;return D("div",{class:o.value},[(r=i.default)===null||r===void 0?void 0:r.call(i)])}}});Gu.Meta=Bm;Gu.Grid=Am;Gu.install=function(n){return n.component(Gu.name,Gu),n.component(Bm.name,Bm),n.component(Am.name,Am),n};var mte=function(){return{prefixCls:String,activeKey:{type:[Array,Number,String]},defaultActiveKey:{type:[Array,Number,String]},accordion:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},expandIcon:Function,openAnimation:We.object,expandIconPosition:We.oneOf(pi("left","right")),collapsible:{type:String},ghost:{type:Boolean,default:void 0},onChange:Function,"onUpdate:activeKey":Function}},i9=function(){return{openAnimation:We.object,prefixCls:String,header:We.any,headerClass:String,showArrow:{type:Boolean,default:void 0},isActive:{type:Boolean,default:void 0},destroyInactivePanel:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},accordion:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},expandIcon:Function,extra:We.any,panelKey:We.oneOfType([We.string,We.number]),collapsible:{type:String},role:String,onItemClick:{type:Function}}};function dw(n){var e=n;if(!Array.isArray(e)){var t=Yt(e);e=t==="number"||t==="string"?[e]:[]}return e.map(function(i){return String(i)})}const Ad=He({compatConfig:{MODE:3},name:"ACollapse",inheritAttrs:!1,props:pn(mte(),{accordion:!1,destroyInactivePanel:!1,bordered:!0,openAnimation:Jh("ant-motion-collapse",!1),expandIconPosition:"left"}),slots:["expandIcon"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=Ne(dw(zm([e.activeKey,e.defaultActiveKey])));rt(function(){return e.activeKey},function(){o.value=dw(e.activeKey)},{deep:!0});var r=Nt("collapse",e),f=r.prefixCls,v=r.direction,b=de(function(){var N=e.expandIconPosition;return N!==void 0?N:v.value==="rtl"?"right":"left"}),Z=function(G){var d=e.expandIcon,u=d===void 0?a.expandIcon:d,s=u?u(G):D(To,{rotate:G.isActive?90:void 0},null);return D("div",null,[Si(Array.isArray(u)?s[0]:s)?wn(s,{class:"".concat(f.value,"-arrow")},!1):s])},p=function(G){e.activeKey===void 0&&(o.value=G);var d=e.accordion?G[0]:G;l("update:activeKey",d),l("change",d)},y=function(G){var d=o.value;if(e.accordion)d=d[0]===G?[]:[G];else{d=yt(d);var u=d.indexOf(G),s=u>-1;s?d.splice(u,1):d.push(G)}p(d)},X=function(G,d){var u,s,h;if(!Th(G)){var c=o.value,W=e.accordion,M=e.destroyInactivePanel,I=e.collapsible,w=e.openAnimation,C=String((u=G.key)!==null&&u!==void 0?u:d),x=G.props||{},R=x.header,g=R===void 0?(s=G.children)===null||s===void 0||(h=s.header)===null||h===void 0?void 0:h.call(s):R,S=x.headerClass,L=x.collapsible,V=x.disabled,Y=!1;W?Y=c[0]===C:Y=c.indexOf(C)>-1;var T=L??I;(V||V==="")&&(T="disabled");var J={key:C,panelKey:C,header:g,headerClass:S,isActive:Y,prefixCls:f.value,destroyInactivePanel:M,openAnimation:w,accordion:W,onItemClick:T==="disabled"?null:y,expandIcon:Z,collapsible:T};return wn(G,J)}},m=function(){var G;return ti((G=a.default)===null||G===void 0?void 0:G.call(a)).map(X)};return function(){var N,G=e.accordion,d=e.bordered,u=e.ghost,s=_e((N={},ce(N,f.value,!0),ce(N,"".concat(f.value,"-borderless"),!d),ce(N,"".concat(f.value,"-icon-position-").concat(b.value),!0),ce(N,"".concat(f.value,"-rtl"),v.value==="rtl"),ce(N,"".concat(f.value,"-ghost"),!!u),ce(N,i.class,!!i.class),N));return D("div",P(P({class:s},XE(i)),{},{style:i.style,role:G?"tablist":null}),[m()])}}}),pte=He({compatConfig:{MODE:3},name:"PanelContent",props:i9(),setup:function(e,t){var i=t.slots,a=Ne(!1);return qt(function(){(e.isActive||e.forceRender)&&(a.value=!0)}),function(){var l,o;if(!a.value)return null;var r=e.prefixCls,f=e.isActive,v=e.role;return D("div",{ref:Ne,class:_e("".concat(r,"-content"),(l={},ce(l,"".concat(r,"-content-active"),f),ce(l,"".concat(r,"-content-inactive"),!f),l)),role:v},[D("div",{class:"".concat(r,"-content-box")},[(o=i.default)===null||o===void 0?void 0:o.call(i)])])}}}),_m=He({compatConfig:{MODE:3},name:"ACollapsePanel",inheritAttrs:!1,props:pn(i9(),{showArrow:!0,isActive:!1,onItemClick:function(){},headerClass:"",forceRender:!1}),slots:["expandIcon","extra","header"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs;jn(e.disabled===void 0,"Collapse.Panel",'`disabled` is deprecated. Please use `collapsible="disabled"` instead.');var o=Nt("collapse",e),r=o.prefixCls,f=function(){a("itemClick",e.panelKey)},v=function(Z){(Z.key==="Enter"||Z.keyCode===13||Z.which===13)&&f()};return function(){var b,Z,p,y,X=e.header,m=X===void 0?(b=i.header)===null||b===void 0?void 0:b.call(i):X,N=e.headerClass,G=e.isActive,d=e.showArrow,u=e.destroyInactivePanel,s=e.accordion,h=e.forceRender,c=e.openAnimation,W=e.expandIcon,M=W===void 0?i.expandIcon:W,I=e.extra,w=I===void 0?(Z=i.extra)===null||Z===void 0?void 0:Z.call(i):I,C=e.collapsible,x=C==="disabled",R=r.value,g=_e("".concat(R,"-header"),(p={},ce(p,N,N),ce(p,"".concat(R,"-header-collapsible-only"),C==="header"),p)),S=_e((y={},ce(y,"".concat(R,"-item"),!0),ce(y,"".concat(R,"-item-active"),G),ce(y,"".concat(R,"-item-disabled"),x),ce(y,"".concat(R,"-no-arrow"),!d),ce(y,"".concat(l.class),!!l.class),y)),L=D("i",{class:"arrow"},null);d&&typeof M=="function"&&(L=M(e));var V=vl(D(pte,{prefixCls:R,isActive:G,forceRender:h,role:s?"tabpanel":null},{default:i.default}),[[gr,G]]),Y=P({appear:!1,css:!1},c);return D("div",P(P({},l),{},{class:S}),[D("div",{class:g,onClick:function(){return C!=="header"&&f()},role:s?"tab":"button",tabindex:x?-1:0,"aria-expanded":G,onKeypress:v},[d&&L,C==="header"?D("span",{onClick:f,class:"".concat(R,"-header-text")},[m]):m,w&&D("div",{class:"".concat(R,"-extra")},[w])]),D(aa,Y,{default:function(){return[!u||G?V:null]}})])}}});Ad.Panel=_m;Ad.install=function(n){return n.component(Ad.name,Ad),n.component(_m.name,_m),n};var yte=function(e){return e.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()}).toLowerCase()},Zte=function(e){var t=/[height|width]$/;return t.test(e)},hw=function(e){var t="",i=Object.keys(e);return i.forEach(function(a,l){var o=e[a];a=yte(a),Zte(a)&&typeof o=="number"&&(o=o+"px"),o===!0?t+=a:o===!1?t+="not "+a:t+="("+a+": "+o+")",l=e||W<0||Z&&M>=l}function G(){var c=cZ();if(N(c))return d(c);r=setTimeout(G,m(c))}function d(c){return r=void 0,p&&i?y(c):(i=a=void 0,o)}function u(){r!==void 0&&clearTimeout(r),v=0,i=f=a=r=void 0}function s(){return r===void 0?o:d(cZ())}function h(){var c=cZ(),W=N(c);if(i=arguments,a=this,f=c,W){if(r===void 0)return X(f);if(Z)return clearTimeout(r),r=setTimeout(G,e),y(f)}return r===void 0&&(r=setTimeout(G,e)),o}return h.cancel=u,h.flush=s,h}var Nte={accessibility:{type:Boolean,default:!0},adaptiveHeight:{type:Boolean,default:!1},afterChange:We.any.def(null),arrows:{type:Boolean,default:!0},autoplay:{type:Boolean,default:!1},autoplaySpeed:We.number.def(3e3),beforeChange:We.any.def(null),centerMode:{type:Boolean,default:!1},centerPadding:We.string.def("50px"),cssEase:We.string.def("ease"),dots:{type:Boolean,default:!1},dotsClass:We.string.def("slick-dots"),draggable:{type:Boolean,default:!0},unslick:{type:Boolean,default:!1},easing:We.string.def("linear"),edgeFriction:We.number.def(.35),fade:{type:Boolean,default:!1},focusOnSelect:{type:Boolean,default:!1},infinite:{type:Boolean,default:!0},initialSlide:We.number.def(0),lazyLoad:We.any.def(null),verticalSwiping:{type:Boolean,default:!1},asNavFor:We.any.def(null),pauseOnDotsHover:{type:Boolean,default:!1},pauseOnFocus:{type:Boolean,default:!1},pauseOnHover:{type:Boolean,default:!0},responsive:We.array,rows:We.number.def(1),rtl:{type:Boolean,default:!1},slide:We.string.def("div"),slidesPerRow:We.number.def(1),slidesToScroll:We.number.def(1),slidesToShow:We.number.def(1),speed:We.number.def(500),swipe:{type:Boolean,default:!0},swipeEvent:We.any.def(null),swipeToSlide:{type:Boolean,default:!1},touchMove:{type:Boolean,default:!0},touchThreshold:We.number.def(5),useCSS:{type:Boolean,default:!0},useTransform:{type:Boolean,default:!0},variableWidth:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},waitForAnimate:{type:Boolean,default:!0},children:We.array,__propsSymbol__:We.any};const l9=Nte;var Mte={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0};const Ite=Mte;function dv(n,e,t){return Math.max(e,Math.min(n,t))}var Xu=function(e){var t=["touchstart","touchmove","wheel"];t.includes(e.type)||e.preventDefault()},$m=function(e){for(var t=[],i=a9(e),a=r9(e),l=i;l0?1:0):0},wte=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow},hv=function(e){return e&&e.offsetWidth||0},L1=function(e){return e&&e.offsetHeight||0},o9=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i,a=e.startX-e.curX,l=e.startY-e.curY,o=Math.atan2(l,a);return i=Math.round(o*180/Math.PI),i<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":t===!0?i>=35&&i<=135?"up":"down":"vertical"},ap=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t},uZ=function(e,t){var i={};return t.forEach(function(a){return i[a]=e[a]}),i},gte=function(e){var t=e.children.length,i=e.listRef,a=Math.ceil(hv(i)),l=e.trackRef,o=Math.ceil(hv(l)),r;if(e.vertical)r=a;else{var f=e.centerMode&&parseInt(e.centerPadding)*2;typeof e.centerPadding=="string"&&e.centerPadding.slice(-1)==="%"&&(f*=a/100),r=Math.ceil((a-f)/e.slidesToShow)}var v=i&&L1(i.querySelector('[data-index="0"]')),b=v*e.slidesToShow,Z=e.currentSlide===void 0?e.initialSlide:e.currentSlide;e.rtl&&e.currentSlide===void 0&&(Z=t-1-e.initialSlide);var p=e.lazyLoadedList||[],y=$m(P(P({},e),{},{currentSlide:Z,lazyLoadedList:p}));p=p.concat(y);var X={slideCount:t,slideWidth:r,listWidth:a,trackWidth:o,currentSlide:Z,slideHeight:v,listHeight:b,lazyLoadedList:p};return e.autoplaying===null&&e.autoplay&&(X.autoplaying="playing"),X},Vte=function(e){var t=e.waitForAnimate,i=e.animating,a=e.fade,l=e.infinite,o=e.index,r=e.slideCount,f=e.lazyLoad,v=e.currentSlide,b=e.centerMode,Z=e.slidesToScroll,p=e.slidesToShow,y=e.useCSS,X=e.lazyLoadedList;if(t&&i)return{};var m=o,N,G,d,u={},s={},h=l?o:dv(o,0,r-1);if(a){if(!l&&(o<0||o>=r))return{};o<0?m=o+r:o>=r&&(m=o-r),f&&X.indexOf(m)<0&&(X=X.concat(m)),u={animating:!0,currentSlide:m,lazyLoadedList:X,targetSlide:m},s={animating:!1,targetSlide:m}}else N=m,m<0?(N=m+r,l?r%Z!==0&&(N=r-r%Z):N=0):!ap(e)&&m>v?m=N=v:b&&m>=r?(m=l?r:r-1,N=l?0:r-1):m>=r&&(N=m-r,l?r%Z!==0&&(N=0):N=r-p),!l&&m+p>=r&&(N=r-p),G=Ih(P(P({},e),{},{slideIndex:m})),d=Ih(P(P({},e),{},{slideIndex:N})),l||(G===d&&(m=N),G=d),f&&(X=X.concat($m(P(P({},e),{},{currentSlide:m})))),y?(u={animating:!0,currentSlide:N,trackStyle:s9(P(P({},e),{},{left:G})),lazyLoadedList:X,targetSlide:h},s={animating:!1,currentSlide:N,trackStyle:Mh(P(P({},e),{},{left:d})),swipeLeft:null,targetSlide:h}):u={currentSlide:N,trackStyle:Mh(P(P({},e),{},{left:d})),lazyLoadedList:X,targetSlide:h};return{state:u,nextState:s}},Lte=function(e,t){var i,a,l,o=e.slidesToScroll,r=e.slidesToShow,f=e.slideCount,v=e.currentSlide,b=e.targetSlide,Z=e.lazyLoad,p=e.infinite,y=f%o!==0,X=y?0:(f-v)%o;if(t.message==="previous")a=X===0?o:r-X,l=v-a,Z&&!p&&(i=v-a,l=i===-1?f-1:i),p||(l=b-o);else if(t.message==="next")a=X===0?o:X,l=v+a,Z&&!p&&(l=(v+o)%f+X),p||(l=b+o);else if(t.message==="dots")l=t.index*t.slidesToScroll;else if(t.message==="children"){if(l=t.index,p){var m=kte(P(P({},e),{},{targetSlide:l}));l>t.currentSlide&&m==="left"?l=l-f:l10)return{scrolling:!0};r&&(d.swipeLength=I);var w=(f?-1:1)*(d.curX>d.startX?1:-1);r&&(w=d.curY>d.startY?1:-1);var C=Math.ceil(m/N),x=o9(t.touchObject,r),R=d.swipeLength;return G||(v===0&&(x==="right"||x==="down")||v+1>=C&&(x==="left"||x==="up")||!ap(t)&&(x==="left"||x==="up"))&&(R=d.swipeLength*b,Z===!1&&p&&(p(x),W.edgeDragged=!0)),!y&&u&&(u(x),W.swiped=!0),l?c=M+R*(s/h)*w:f?c=M-R*w:c=M+R*w,r&&(c=M+R*w),W=P(P({},W),{},{touchObject:d,swipeLeft:c,trackStyle:Mh(P(P({},t),{},{left:c}))}),Math.abs(d.curX-d.startX)10&&(W.swiping=!0,Xu(e)),W}},Cte=function(e,t){var i=t.dragging,a=t.swipe,l=t.touchObject,o=t.listWidth,r=t.touchThreshold,f=t.verticalSwiping,v=t.listHeight,b=t.swipeToSlide,Z=t.scrolling,p=t.onSwipe,y=t.targetSlide,X=t.currentSlide,m=t.infinite;if(!i)return a&&Xu(e),{};var N=f?v/r:o/r,G=o9(l,f),d={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(Z||!l.swipeLength)return d;if(l.swipeLength>N){Xu(e),p&&p(G);var u,s,h=m?X:y;switch(G){case"left":case"up":s=h+bw(t),u=b?fw(t,s):s,d.currentDirection=0;break;case"right":case"down":s=h-bw(t),u=b?fw(t,s):s,d.currentDirection=1;break;default:u=h}d.triggerSlideHandler=u}else{var c=Ih(t);d.trackStyle=s9(P(P({},t),{},{left:c}))}return d},Ste=function(e){for(var t=e.infinite?e.slideCount*2:e.slideCount,i=e.infinite?e.slidesToShow*-1:0,a=e.infinite?e.slidesToShow*-1:0,l=[];ii[i.length-1])t=i[i.length-1];else for(var l in i){if(te.swipeLeft*-1)return i=f,!1}else if(f.offsetLeft-t+hv(f)/2>e.swipeLeft*-1)return i=f,!1;return!0}),!i)return 0;var o=e.rtl===!0?e.slideCount-e.currentSlide:e.currentSlide,r=Math.abs(i.dataset.index-o)||1;return r}else return e.slidesToScroll},R1=function(e,t){return t.reduce(function(i,a){return i&&e.hasOwnProperty(a)},!0)?null:console.error("Keys Missing:",e)},Mh=function(e){R1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var t,i,a=e.slideCount+2*e.slidesToShow;e.vertical?i=a*e.slideHeight:t=zte(e)*e.slideWidth;var l={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",r=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",f=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";l=P(P({},l),{},{WebkitTransform:o,transform:r,msTransform:f})}else e.vertical?l.top=e.left:l.left=e.left;return e.fade&&(l={opacity:1}),t&&(l.width=t+"px"),i&&(l.height=i+"px"),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?l.marginTop=e.left+"px":l.marginLeft=e.left+"px"),l},s9=function(e){R1(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=Mh(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t},Ih=function(e){if(e.unslick)return 0;R1(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t=e.slideIndex,i=e.trackRef,a=e.infinite,l=e.centerMode,o=e.slideCount,r=e.slidesToShow,f=e.slidesToScroll,v=e.slideWidth,b=e.listWidth,Z=e.variableWidth,p=e.slideHeight,y=e.fade,X=e.vertical,m=0,N,G,d=0;if(y||e.slideCount===1)return 0;var u=0;if(a?(u=-go(e),o%f!==0&&t+f>o&&(u=-(t>o?r-(t-o):o%f)),l&&(u+=parseInt(r/2))):(o%f!==0&&t+f>o&&(u=r-o%f),l&&(u=parseInt(r/2))),m=u*v,d=u*p,X?N=t*p*-1+d:N=t*v*-1+m,Z===!0){var s,h=i;if(s=t+go(e),G=h&&h.childNodes[s],N=G?G.offsetLeft*-1:0,l===!0){s=a?t+go(e):t,G=h&&h.children[s],N=0;for(var c=0;ce.currentSlide?e.targetSlide>e.currentSlide+Fte(e)?"left":"right":e.targetSlide0&&(o+=1),a&&t%2===0&&(o+=1),o}return a?0:t-1},Jte=function(e){var t=e.slidesToShow,i=e.centerMode,a=e.rtl,l=e.centerPadding;if(i){var o=(t-1)/2+1;return parseInt(l)>0&&(o+=1),!a&&t%2===0&&(o+=1),o}return a?t-1:0},mw=function(){return!!(typeof window<"u"&&window.document&&window.document.createElement)},dZ=function(e){var t,i,a,l;e.rtl?l=e.slideCount-1-e.index:l=e.index;var o=l<0||l>=e.slideCount;e.centerMode?(a=Math.floor(e.slidesToShow/2),i=(l-e.currentSlide)%e.slideCount===0,l>e.currentSlide-a-1&&l<=e.currentSlide+a&&(t=!0)):t=e.currentSlide<=l&&l=e.slideCount?r=e.targetSlide-e.slideCount:r=e.targetSlide;var f=l===r;return{"slick-slide":!0,"slick-active":t,"slick-center":i,"slick-cloned":o,"slick-current":f}},Dte=function(e){var t={};return(e.variableWidth===void 0||e.variableWidth===!1)&&(t.width=e.slideWidth+(typeof e.slideWidth=="number"?"px":"")),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight)+"px":t.left=-e.index*parseInt(e.slideWidth)+"px",t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t},hZ=function(e,t){return e.key+"-"+t},Ote=function(e,t){var i,a=[],l=[],o=[],r=t.length,f=a9(e),v=r9(e);return t.forEach(function(b,Z){var p,y={message:"children",index:Z,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(Z)>=0?p=b:p=D("div");var X=Dte(P(P({},e),{},{index:Z})),m=p.props.class||"",N=dZ(P(P({},e),{},{index:Z}));if(a.push(wn(p,{key:"original"+hZ(p,Z),tabindex:"-1","data-index":Z,"aria-hidden":!N["slick-active"],class:_e(N,m),style:P(P({outline:"none"},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}})),e.infinite&&e.fade===!1){var G=r-Z;G<=go(e)&&r!==e.slidesToShow&&(i=-G,i>=f&&(p=b),N=dZ(P(P({},e),{},{index:i})),l.push(wn(p,{key:"precloned"+hZ(p,i),class:_e(N,m),tabindex:"-1","data-index":i,"aria-hidden":!N["slick-active"],style:P(P({},p.props.style||{}),X),onClick:function(){e.focusOnSelect&&e.focusOnSelect(y)}}))),r!==e.slidesToShow&&(i=r+Z,i=w&&f<=M:f===w}),x={message:"dots",index:c,slidesToScroll:l,currentSlide:f};function R(g){g&&g.preventDefault(),Z(x)}d=d.concat(D("li",{key:c,class:C},[wn(b({i:c}),{onClick:R})]))},s=0;s=t.children.length&&e.changeSlide({message:"index",index:t.children.length-t.slidesToShow,currentSlide:e.currentSlide}),!e.preProps.autoplay&&t.autoplay?e.handleAutoPlay("playing"):t.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.preProps=P({},t)}},mounted:function(){var e=this;if(this.__emit("init"),this.lazyLoad){var t=$m(P(P({},this.$props),this.$data));t.length>0&&(this.setState(function(i){return{lazyLoadedList:i.lazyLoadedList.concat(t)}}),this.__emit("lazyLoad",t))}this.$nextTick(function(){var i=P({listRef:e.list,trackRef:e.track,children:e.children},e.$props);e.updateState(i,!0,function(){e.adaptHeight(),e.autoplay&&e.handleAutoPlay("playing")}),e.lazyLoad==="progressive"&&(e.lazyLoadTimer=setInterval(e.progressiveLazyLoad,1e3)),e.ro=new CW(function(){e.animating?(e.onWindowResized(!1),e.callbackTimers.push(setTimeout(function(){return e.onWindowResized()},e.speed))):e.onWindowResized()}),e.ro.observe(e.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),function(a){a.onfocus=e.$props.pauseOnFocus?e.onSlideFocus:null,a.onblur=e.$props.pauseOnFocus?e.onSlideBlur:null}),window.addEventListener?window.addEventListener("resize",e.onWindowResized):window.attachEvent("onresize",e.onWindowResized)})},beforeUnmount:function(){var e;this.animationEndCallback&&clearTimeout(this.animationEndCallback),this.lazyLoadTimer&&clearInterval(this.lazyLoadTimer),this.callbackTimers.length&&(this.callbackTimers.forEach(function(t){return clearTimeout(t)}),this.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",this.onWindowResized):window.detachEvent("onresize",this.onWindowResized),this.autoplayTimer&&clearInterval(this.autoplayTimer),(e=this.ro)===null||e===void 0||e.disconnect()},updated:function(){if(this.checkImagesLoad(),this.__emit("reInit"),this.lazyLoad){var e=$m(P(P({},this.$props),this.$data));e.length>0&&(this.setState(function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad"))}this.adaptHeight()},methods:{listRefHandler:function(e){this.list=e},trackRefHandler:function(e){this.track=e},adaptHeight:function(){if(this.adaptiveHeight&&this.list){var e=this.list.querySelector('[data-index="'.concat(this.currentSlide,'"]'));this.list.style.height=L1(e)+"px"}},onWindowResized:function(e){var t=this;this.debouncedResize&&this.debouncedResize.cancel(),this.debouncedResize=lp(function(){return t.resizeWindow(e)},50),this.debouncedResize()},resizeWindow:function(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,i=Boolean(this.track);if(i){var a=P(P({listRef:this.list,trackRef:this.track,children:this.children},this.$props),this.$data);this.updateState(a,t,function(){e.autoplay?e.handleAutoPlay("update"):e.pause("paused")}),this.setState({animating:!1}),clearTimeout(this.animationEndCallback),delete this.animationEndCallback}},updateState:function(e,t,i){var a=gte(e);e=P(P(P({},e),a),{},{slideIndex:a.currentSlide});var l=Ih(e);e=P(P({},e),{},{left:l});var o=Mh(e);(t||this.children.length!==e.children.length)&&(a.trackStyle=o),this.setState(a,i)},ssrInit:function(){var e=this.children;if(this.variableWidth){var t=0,i=0,a=[],l=go(P(P(P({},this.$props),this.$data),{},{slideCount:e.length})),o=jb(P(P(P({},this.$props),this.$data),{},{slideCount:e.length}));e.forEach(function(u){var s,h,c=((s=u.props.style)===null||s===void 0||(h=s.width)===null||h===void 0?void 0:h.split("px")[0])||0;a.push(c),t+=c});for(var r=0;r=i&&e.onWindowResized()};if(!l.onclick)l.onclick=function(){return l.parentNode.focus()};else{var r=l.onclick;l.onclick=function(){r(),l.parentNode.focus()}}l.onload||(e.$props.lazyLoad?l.onload=function(){e.adaptHeight(),e.callbackTimers.push(setTimeout(e.onWindowResized,e.speed))}:(l.onload=o,l.onerror=function(){o(),e.__emit("lazyLoadError")}))})},progressiveLazyLoad:function(){for(var e=[],t=P(P({},this.$props),this.$data),i=this.currentSlide;i=-go(t);a--)if(this.lazyLoadedList.indexOf(a)<0){e.push(a);break}e.length>0?(this.setState(function(l){return{lazyLoadedList:l.lazyLoadedList.concat(e)}}),this.__emit("lazyLoad",e)):this.lazyLoadTimer&&(clearInterval(this.lazyLoadTimer),delete this.lazyLoadTimer)},slideHandler:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,a=this.$props,l=a.asNavFor,o=a.currentSlide,r=a.beforeChange,f=a.speed,v=a.afterChange,b=Vte(P(P(P({index:e},this.$props),this.$data),{},{trackRef:this.track,useCSS:this.useCSS&&!i})),Z=b.state,p=b.nextState;if(Z){r&&r(o,Z.currentSlide);var y=Z.lazyLoadedList.filter(function(X){return t.lazyLoadedList.indexOf(X)<0});this.$attrs.onLazyLoad&&y.length>0&&this.__emit("lazyLoad",y),!this.$props.waitForAnimate&&this.animationEndCallback&&(clearTimeout(this.animationEndCallback),v&&v(o),delete this.animationEndCallback),this.setState(Z,function(){l&&t.asNavForIndex!==e&&(t.asNavForIndex=e,l.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout(function(){var X=p.animating,m=jt(p,Kte);t.setState(m,function(){t.callbackTimers.push(setTimeout(function(){return t.setState({animating:X})},10)),v&&v(Z.currentSlide),delete t.animationEndCallback})},f))})}},changeSlide:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,i=P(P({},this.$props),this.$data),a=Lte(i,e);if(!(a!==0&&!a)&&(t===!0?this.slideHandler(a,t):this.slideHandler(a),this.$props.autoplay&&this.handleAutoPlay("update"),this.$props.focusOnSelect)){var l=this.list.querySelectorAll(".slick-current");l[0]&&l[0].focus()}},clickHandler:function(e){this.clickable===!1&&(e.stopPropagation(),e.preventDefault()),this.clickable=!0},keyHandler:function(e){var t=Rte(e,this.accessibility,this.rtl);t!==""&&this.changeSlide({message:t})},selectHandler:function(e){this.changeSlide(e)},disableBodyScroll:function(){var e=function(i){i=i||window.event,i.preventDefault&&i.preventDefault(),i.returnValue=!1};window.ontouchmove=e},enableBodyScroll:function(){window.ontouchmove=null},swipeStart:function(e){this.verticalSwiping&&this.disableBodyScroll();var t=Tte(e,this.swipe,this.draggable);t!==""&&this.setState(t)},swipeMove:function(e){var t=xte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));t&&(t.swiping&&(this.clickable=!1),this.setState(t))},swipeEnd:function(e){var t=Cte(e,P(P(P({},this.$props),this.$data),{},{trackRef:this.track,listRef:this.list,slideIndex:this.currentSlide}));if(t){var i=t.triggerSlideHandler;delete t.triggerSlideHandler,this.setState(t),i!==void 0&&(this.slideHandler(i),this.$props.verticalSwiping&&this.enableBodyScroll())}},touchEnd:function(e){this.swipeEnd(e),this.clickable=!0},slickPrev:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"previous"})},0))},slickNext:function(){var e=this;this.callbackTimers.push(setTimeout(function(){return e.changeSlide({message:"next"})},0))},slickGoTo:function(e){var t=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e=Number(e),isNaN(e))return"";this.callbackTimers.push(setTimeout(function(){return t.changeSlide({message:"index",index:e,currentSlide:t.currentSlide},i)},0))},play:function(){var e;if(this.rtl)e=this.currentSlide-this.slidesToScroll;else if(ap(P(P({},this.$props),this.$data)))e=this.currentSlide+this.slidesToScroll;else return!1;this.slideHandler(e)},handleAutoPlay:function(e){this.autoplayTimer&&clearInterval(this.autoplayTimer);var t=this.autoplaying;if(e==="update"){if(t==="hovered"||t==="focused"||t==="paused")return}else if(e==="leave"){if(t==="paused"||t==="focused")return}else if(e==="blur"&&(t==="paused"||t==="hovered"))return;this.autoplayTimer=setInterval(this.play,this.autoplaySpeed+50),this.setState({autoplaying:"playing"})},pause:function(e){this.autoplayTimer&&(clearInterval(this.autoplayTimer),this.autoplayTimer=null);var t=this.autoplaying;e==="paused"?this.setState({autoplaying:"paused"}):e==="focused"?(t==="hovered"||t==="playing")&&this.setState({autoplaying:"focused"}):t==="playing"&&this.setState({autoplaying:"hovered"})},onDotsOver:function(){this.autoplay&&this.pause("hovered")},onDotsLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onTrackOver:function(){this.autoplay&&this.pause("hovered")},onTrackLeave:function(){this.autoplay&&this.autoplaying==="hovered"&&this.handleAutoPlay("leave")},onSlideFocus:function(){this.autoplay&&this.pause("focused")},onSlideBlur:function(){this.autoplay&&this.autoplaying==="focused"&&this.handleAutoPlay("blur")},customPaging:function(e){var t=e.i;return D("button",null,[t+1])},appendDots:function(e){var t=e.dots;return D("ul",{style:{display:"block"}},[t])}},render:function(){var e,t=this,i=_e("slick-slider",this.$attrs.class,{"slick-vertical":this.vertical,"slick-initialized":!0}),a=P(P({},this.$props),this.$data),l=uZ(a,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),o=this.$props.pauseOnHover;l=P(P({},l),{},{focusOnSelect:this.focusOnSelect&&this.clickable?this.selectHandler:null,ref:this.trackRefHandler,onMouseleave:o?this.onTrackLeave:Ra,onMouseover:o?this.onTrackOver:Ra});var r;if(this.dots===!0&&this.slideCount>=this.slidesToShow){var f=uZ(a,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","infinite","appendDots"]);f.customPaging=this.customPaging,f.appendDots=this.appendDots;var v=this.$slots,b=v.customPaging,Z=v.appendDots;b&&(f.customPaging=b),Z&&(f.appendDots=Z);var p=this.$props.pauseOnDotsHover;f=P(P({},f),{},{clickHandler:this.changeSlide,onMouseover:p?this.onDotsOver:Ra,onMouseleave:p?this.onDotsLeave:Ra}),r=D(Ete,f,null)}var y,X,m=uZ(a,["infinite","centerMode","currentSlide","slideCount","slidesToShow"]);m.clickHandler=this.changeSlide;var N=this.$slots,G=N.prevArrow,d=N.nextArrow;G&&(m.prevArrow=G),d&&(m.nextArrow=d),this.arrows&&(y=D(f9,m,null),X=D(b9,m,null));var u=null;this.vertical&&(u={height:typeof this.listHeight=="number"?"".concat(this.listHeight,"px"):this.listHeight});var s=null;this.vertical===!1?this.centerMode===!0&&(s={padding:"0px "+this.centerPadding}):this.centerMode===!0&&(s={padding:this.centerPadding+" 0px"});var h=P(P({},u),s),c=this.touchMove,W=(e={ref:this.listRefHandler,class:"slick-list",style:h,onClick:this.clickHandler,onMousedown:c?this.swipeStart:Ra,onMousemove:this.dragging&&c?this.swipeMove:Ra,onMouseup:c?this.swipeEnd:Ra,onMouseleave:this.dragging&&c?this.swipeEnd:Ra},ce(e,Ui?"onTouchstartPassive":"onTouchstart",c?this.swipeStart:Ra),ce(e,Ui?"onTouchmovePassive":"onTouchmove",this.dragging&&c?this.swipeMove:Ra),ce(e,"onTouchend",c?this.touchEnd:Ra),ce(e,"onTouchcancel",this.dragging&&c?this.swipeEnd:Ra),ce(e,"onKeydown",this.accessibility?this.keyHandler:Ra),e),M={class:i,dir:"ltr",style:this.$attrs.style};return this.unslick&&(W={class:"slick-list",ref:this.listRefHandler},M={class:i}),D("div",M,[this.unslick?"":y,D("div",W,[D(jte,l,{default:function(){return[t.children]}})]),this.unslick?"":X,this.unslick?"":r])}},Pte=He({name:"Slider",mixins:[Vc],inheritAttrs:!1,props:P({},l9),data:function(){return this._responsiveMediaHandlers=[],{breakpoint:null}},mounted:function(){var e=this;if(this.responsive){var t=this.responsive.map(function(a){return a.breakpoint});t.sort(function(a,l){return a-l}),t.forEach(function(a,l){var o;l===0?o=sZ({minWidth:0,maxWidth:a}):o=sZ({minWidth:t[l-1]+1,maxWidth:a}),mw()&&e.media(o,function(){e.setState({breakpoint:a})})});var i=sZ({minWidth:t.slice(-1)[0]});mw()&&this.media(i,function(){e.setState({breakpoint:null})})}},beforeUnmount:function(){this._responsiveMediaHandlers.forEach(function(e){e.mql.removeListener(e.listener)})},methods:{innerSliderRefHandler:function(e){this.innerSlider=e},media:function(e,t){var i=window.matchMedia(e),a=function(o){var r=o.matches;r&&t()};i.addListener(a),a(i),this._responsiveMediaHandlers.push({mql:i,query:e,listener:a})},slickPrev:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickPrev()},slickNext:function(){var e;(e=this.innerSlider)===null||e===void 0||e.slickNext()},slickGoTo:function(e){var t,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(t=this.innerSlider)===null||t===void 0||t.slickGoTo(e,i)},slickPause:function(){var e;(e=this.innerSlider)===null||e===void 0||e.pause("paused")},slickPlay:function(){var e;(e=this.innerSlider)===null||e===void 0||e.handleAutoPlay("play")}},render:function(){var e=this,t,i;this.breakpoint?(i=this.responsive.filter(function(m){return m.breakpoint===e.breakpoint}),t=i[0].settings==="unslick"?"unslick":P(P({},this.$props),i[0].settings)):t=P({},this.$props),t.centerMode&&(t.slidesToScroll>1,t.slidesToScroll=1),t.fade&&(t.slidesToShow>1,t.slidesToScroll>1,t.slidesToShow=1,t.slidesToScroll=1);var a=Rh(this)||[];a=a.filter(function(m){return typeof m=="string"?!!m.trim():!!m}),t.variableWidth&&(t.rows>1||t.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),t.variableWidth=!1);for(var l=[],o=null,r=0;r=a.length)break;b.push(wn(a[Z],{key:100*r+10*v+Z,tabindex:-1,style:{width:"".concat(100/t.slidesPerRow,"%"),display:"inline-block"}}))}f.push(D("div",{key:10*r+v},[b]))}t.variableWidth?l.push(D("div",{key:r,style:{width:o}},[f])):l.push(D("div",{key:r},[f]))}if(t==="unslick"){var y="regular slider "+(this.className||"");return D("div",{class:y},[a])}else l.length<=t.slidesToShow&&(t.unslick=!0);var X=P(P(P({},this.$attrs),t),{},{children:l,ref:this.innerSliderRefHandler});return D(Hte,P(P({},X),{},{__propsSymbol__:[]}),this.$slots)}});var Qte=["class","style"],Bte=function(){return{effect:String,dots:{type:Boolean,default:!0},vertical:{type:Boolean,default:void 0},autoplay:{type:Boolean,default:void 0},easing:String,beforeChange:Function,afterChange:Function,prefixCls:String,accessibility:{type:Boolean,default:void 0},nextArrow:We.any,prevArrow:We.any,pauseOnHover:{type:Boolean,default:void 0},adaptiveHeight:{type:Boolean,default:void 0},arrows:{type:Boolean,default:!1},autoplaySpeed:Number,centerMode:{type:Boolean,default:void 0},centerPadding:String,cssEase:String,dotsClass:String,draggable:{type:Boolean,default:!1},fade:{type:Boolean,default:void 0},focusOnSelect:{type:Boolean,default:void 0},infinite:{type:Boolean,default:void 0},initialSlide:Number,lazyLoad:String,rtl:{type:Boolean,default:void 0},slide:String,slidesToShow:Number,slidesToScroll:Number,speed:Number,swipe:{type:Boolean,default:void 0},swipeToSlide:{type:Boolean,default:void 0},swipeEvent:Function,touchMove:{type:Boolean,default:void 0},touchThreshold:Number,variableWidth:{type:Boolean,default:void 0},useCSS:{type:Boolean,default:void 0},slickGoTo:Number,responsive:Array,dotPosition:{type:String,default:void 0},verticalSwiping:{type:Boolean,default:!1}}},Ate=He({compatConfig:{MODE:3},name:"ACarousel",inheritAttrs:!1,props:Bte(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Ne(),r=function(m){var N,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;(N=o.value)===null||N===void 0||N.slickGoTo(m,G)};l({goTo:r,autoplay:function(m){var N,G;(N=o.value)===null||N===void 0||(G=N.innerSlider)===null||G===void 0||G.handleAutoPlay(m)},prev:function(){var m;(m=o.value)===null||m===void 0||m.slickPrev()},next:function(){var m;(m=o.value)===null||m===void 0||m.slickNext()},innerSlider:de(function(){var X;return(X=o.value)===null||X===void 0?void 0:X.innerSlider})}),qt(function(){Ci(e.vertical===void 0,"Carousel","`vertical` is deprecated, please use `dotPosition` instead.")});var f=Nt("carousel",e),v=f.prefixCls,b=f.direction,Z=de(function(){return e.dotPosition?e.dotPosition:e.vertical!==void 0&&e.vertical?"right":"bottom"}),p=de(function(){return Z.value==="left"||Z.value==="right"}),y=de(function(){var X,m="slick-dots";return _e((X={},ce(X,m,!0),ce(X,"".concat(m,"-").concat(Z.value),!0),ce(X,"".concat(e.dotsClass),!!e.dotsClass),X))});return function(){var X,m=e.dots,N=e.arrows,G=e.draggable,d=e.effect,u=a.class,s=a.style,h=jt(a,Qte),c=d==="fade"?!0:e.fade,W=_e(v.value,(X={},ce(X,"".concat(v.value,"-rtl"),b.value==="rtl"),ce(X,"".concat(v.value,"-vertical"),p.value),ce(X,"".concat(u),!!u),X));return D("div",{class:W,style:s},[D(Pte,P(P(P({ref:o},e),h),{},{dots:!!m,dotsClass:y.value,arrows:N,draggable:G,fade:c,vertical:p.value}),i)])}}});const _te=wi(Ate);var T1="__RC_CASCADER_SPLIT__",$te="SHOW_PARENT",qte="SHOW_CHILD";function ys(n){return n.join(T1)}function cu(n){return n.map(ys)}function ene(n){return n.split(T1)}function tne(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{label:t||"label",value:l,key:l,children:a||"children"}}function Td(n,e){var t,i;return(t=n.isLeaf)!==null&&t!==void 0?t:!((i=n[e.children])!==null&&i!==void 0&&i.length)}function nne(n){var e=n.parentElement;if(e){var t=n.offsetTop-e.offsetTop;t-e.scrollTop<0?e.scrollTo({top:t}):t+n.offsetHeight-e.scrollTop>e.offsetHeight&&e.scrollTo({top:t+n.offsetHeight-e.offsetHeight})}}var m9=Symbol("TreeContextKey"),ine=He({compatConfig:{MODE:3},name:"TreeContext",props:{value:{type:Object}},setup:function(e,t){var i=t.slots;return hn(m9,de(function(){return e.value})),function(){var a;return(a=i.default)===null||a===void 0?void 0:a.call(i)}}}),x1=function(){return un(m9,de(function(){return{}}))},p9=Symbol("KeysStateKey"),lne=function(e){hn(p9,e)},y9=function(){return un(p9,{expandedKeys:Gn([]),selectedKeys:Gn([]),loadedKeys:Gn([]),loadingKeys:Gn([]),checkedKeys:Gn([]),halfCheckedKeys:Gn([]),expandedKeysSet:de(function(){return new Set}),selectedKeysSet:de(function(){return new Set}),loadedKeysSet:de(function(){return new Set}),loadingKeysSet:de(function(){return new Set}),checkedKeysSet:de(function(){return new Set}),halfCheckedKeysSet:de(function(){return new Set}),flattenNodes:Gn([])})},ane=function(e){for(var t=e.prefixCls,i=e.level,a=e.isStart,l=e.isEnd,o="".concat(t,"-indent-unit"),r=[],f=0;f=0&&t.splice(i,1),t}function ns(n,e){var t=(n||[]).slice();return t.indexOf(e)===-1&&t.push(e),t}function S1(n){return n.split("-")}function v9(n,e){return"".concat(n,"-").concat(e)}function une(n){return n&&n.type&&n.type.isTreeNode}function dne(n,e){var t=[],i=e[n];function a(){var l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];l.forEach(function(o){var r=o.key,f=o.children;t.push(r),a(f)})}return a(i.children),t}function hne(n){if(n.parent){var e=S1(n.pos);return Number(e[e.length-1])===n.parent.children.length-1}return!1}function fne(n){var e=S1(n.pos);return Number(e[e.length-1])===0}function Zw(n,e,t,i,a,l,o,r,f,v){var b,Z=n.clientX,p=n.clientY,y=n.target.getBoundingClientRect(),X=y.top,m=y.height,N=(v==="rtl"?-1:1)*(((a==null?void 0:a.x)||0)-Z),G=(N-12)/i,d=r[t.eventKey];if(p-1.5?l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:0})?I=0:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1:l({dragNode:x,dropNode:R,dropPosition:1})?I=1:g=!1,{dropPosition:I,dropLevelOffset:w,dropTargetKey:d.key,dropTargetPos:d.pos,dragOverNodeKey:M,dropContainerKey:I===0?null:((b=d.parent)===null||b===void 0?void 0:b.key)||null,dropAllowed:g}}function vw(n,e){if(n){var t=e.multiple;return t?n.slice():n.length?[n[0]]:n}}function fZ(n){if(!n)return null;var e;if(Array.isArray(n))e={checkedKeys:n,halfCheckedKeys:void 0};else if(Yt(n)==="object")e={checkedKeys:n.checked||void 0,halfCheckedKeys:n.halfChecked||void 0};else return null;return e}function bv(n,e){var t=new Set;function i(a){if(!t.has(a)){var l=e[a];if(l){t.add(a);var o=l.parent,r=l.node;r.disabled||o&&i(o.key)}}}return(n||[]).forEach(function(a){i(a)}),yt(t)}var bne=["title","icon","switcherIcon"];function jh(n,e){return n??e}function rp(n){var e=n||{},t=e.title,i=e._title,a=e.key,l=e.children,o=t||"title";return{title:o,_title:i||[o],key:a||"key",children:l||"children"}}function mv(n){function e(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],i=Ri(t);return i.map(function(a){var l,o,r,f;if(!une(a))return null;for(var v=a.children||{},b=a.key,Z={},p=0,y=Object.entries(a.props);p1&&arguments[1]!==void 0?arguments[1]:null;return b.map(function(p,y){for(var X=v9(Z?Z.pos:"0",y),m=jh(p[l],X),N,G=0;G1&&arguments[1]!==void 0?arguments[1]:{},t=e.initWrapper,i=e.processEntity,a=e.onProcessFinished,l=e.externalGetKey,o=e.childrenPropName,r=e.fieldNames,f=arguments.length>2?arguments[2]:void 0,v=l||f,b={},Z={},p={posEntities:b,keyEntities:Z};return t&&(p=t(p)||p),pne(n,function(y){var X=y.node,m=y.index,N=y.pos,G=y.key,d=y.parentPos,u=y.level,s=y.nodes,h={node:X,nodes:s,index:m,key:G,pos:N,level:u},c=jh(G,N);b[N]=h,Z[c]=h,h.parent=b[d],h.parent&&(h.parent.children=h.parent.children||[],h.parent.children.push(h)),i&&i(h,p)},{externalGetKey:v,childrenPropName:o,fieldNames:r}),a&&a(p),p}function pv(n,e){var t=e.expandedKeysSet,i=e.selectedKeysSet,a=e.loadedKeysSet,l=e.loadingKeysSet,o=e.checkedKeysSet,r=e.halfCheckedKeysSet,f=e.dragOverNodeKey,v=e.dropPosition,b=e.keyEntities,Z=b[n],p={eventKey:n,expanded:t.has(n),selected:i.has(n),loaded:a.has(n),loading:l.has(n),checked:o.has(n),halfChecked:r.has(n),pos:String(Z?Z.pos:""),parent:Z.parent,dragOver:f===n&&v===0,dragOverGapTop:f===n&&v===-1,dragOverGapBottom:f===n&&v===1};return p}function yv(n){var e=n.data,t=n.expanded,i=n.selected,a=n.checked,l=n.loaded,o=n.loading,r=n.halfChecked,f=n.dragOver,v=n.dragOverGapTop,b=n.dragOverGapBottom,Z=n.pos,p=n.active,y=n.eventKey,X=P(P({dataRef:e},e),{},{expanded:t,selected:i,checked:a,loaded:l,loading:o,halfChecked:r,dragOver:f,dragOverGapTop:v,dragOverGapBottom:b,pos:Z,active:p,eventKey:y,key:y});return"props"in X||Object.defineProperty(X,"props",{get:function(){return n}}),X}const yne=function(n,e){var t=de(function(){return Uh(n.value,{fieldNames:e.value,initWrapper:function(a){return P(P({},a),{},{pathKeyEntities:{}})},processEntity:function(a,l){var o=a.nodes.map(function(r){return r[e.value.value]}).join(T1);l.pathKeyEntities[o]=a,a.key=o}}).pathKeyEntities});return t};function Zne(n){var e=Ne(!1),t=Ne({});return qt(function(){if(!n.value){e.value=!1,t.value={};return}var i={matchInputWidth:!0,limit:50};n.value&&Yt(n.value)==="object"&&(i=P(P({},i),n.value)),i.limit<=0&&delete i.limit,e.value=!0,t.value=i}),{showSearch:e,searchConfig:t}}var _d="__rc_cascader_search_mark__",vne=function(e,t,i){var a=i.label;return t.some(function(l){return String(l[a]).toLowerCase().includes(e.toLowerCase())})},Wne=function(e){var t=e.path,i=e.fieldNames;return t.map(function(a){return a[i.label]}).join(" / ")};const Gne=function(n,e,t,i,a,l){return de(function(){var o=a.value,r=o.filter,f=r===void 0?vne:r,v=o.render,b=v===void 0?Wne:v,Z=o.limit,p=Z===void 0?50:Z,y=o.sort,X=[];if(!n.value)return[];function m(N,G){N.forEach(function(d){if(!(!y&&p>0&&X.length>=p)){var u=[].concat(yt(G),[d]),s=d[t.value.children];if((!s||s.length===0||l.value)&&f(n.value,u,{label:t.value.label})){var h;X.push(P(P({},d),{},(h={},ce(h,t.value.label,b({inputValue:n.value,path:u,prefixCls:i.value,fieldNames:t.value})),ce(h,_d,u),h)))}s&&m(d[t.value.children],u)}})}return m(e.value,[]),y&&X.sort(function(N,G){return y(N[_d],G[_d],n.value,t.value)}),p>0?X.slice(0,p):X})};function Ww(n,e,t){var i=new Set(n);return n.filter(function(a){var l=e[a],o=l?l.parent:null,r=l?l.children:null;return t===qte?!(r&&r.some(function(f){return f.key&&i.has(f.key)})):!(o&&!o.node.disabled&&i.has(o.key))})}function Yh(n,e,t){for(var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=e,l=[],o=function(v){var b,Z,p,y=n[v],X=(b=a)===null||b===void 0?void 0:b.findIndex(function(N){var G=N[t.value];return i?String(G)===String(y):G===y}),m=X!==-1?(Z=a)===null||Z===void 0?void 0:Z[X]:null;l.push({value:(p=m==null?void 0:m[t.value])!==null&&p!==void 0?p:y,index:X,option:m}),a=m==null?void 0:m[t.children]},r=0;r=0;v-=1){var b=e.get(v)||new Set;b.forEach(function(Z){var p=Z.parent,y=Z.node;if(!(i(y)||!Z.parent||f.has(Z.parent.key))){if(i(Z.parent.node)){f.add(p.key);return}var X=!0,m=!1;(p.children||[]).filter(function(N){return!i(N.node)}).forEach(function(N){var G=N.key,d=a.has(G);X&&!d&&(X=!1),!m&&(d||l.has(G))&&(m=!0)}),X&&a.add(p.key),m&&l.add(p.key),f.add(p.key)}})}return{checkedKeys:Array.from(a),halfCheckedKeys:Array.from(W9(l,a))}}function Ine(n,e,t,i,a){for(var l=new Set(n),o=new Set(e),r=0;r<=i;r+=1){var f=t.get(r)||new Set;f.forEach(function(p){var y=p.key,X=p.node,m=p.children,N=m===void 0?[]:m;!l.has(y)&&!o.has(y)&&!a(X)&&N.filter(function(G){return!a(G.node)}).forEach(function(G){l.delete(G.key)})})}o=new Set;for(var v=new Set,b=i;b>=0;b-=1){var Z=t.get(b)||new Set;Z.forEach(function(p){var y=p.parent,X=p.node;if(!(a(X)||!p.parent||v.has(p.parent.key))){if(a(p.parent.node)){v.add(y.key);return}var m=!0,N=!1;(y.children||[]).filter(function(G){return!a(G.node)}).forEach(function(G){var d=G.key,u=l.has(d);m&&!u&&(m=!1),!N&&(u||o.has(d))&&(N=!0)}),m||l.delete(y.key),N&&o.add(y.key),v.add(y.key)}})}return{checkedKeys:Array.from(l),halfCheckedKeys:Array.from(W9(o,l))}}function ir(n,e,t,i,a,l){var o;l?o=l:o=Nne;var r=new Set(n.filter(function(v){var b=!!t[v];return b})),f;return e===!0?f=Mne(r,a,i,o):f=Ine(r,e.halfCheckedKeys,a,i,o),f}const Yne=function(n,e,t,i,a){return de(function(){var l=a.value||function(o){var r=o.labels,f=i.value?r.slice(-1):r,v=" / ";return f.every(function(b){return["string","number"].includes(Yt(b))})?f.join(v):f.reduce(function(b,Z,p){var y=Si(Z)?wn(Z,{key:p}):Z;return p===0?[y]:[].concat(yt(b),[v,y])},[])};return n.value.map(function(o){var r=Yh(o,e.value,t.value),f=l({labels:r.map(function(b){var Z,p=b.option,y=b.value;return(Z=p==null?void 0:p[t.value.label])!==null&&Z!==void 0?Z:y}),selectedOptions:r.map(function(b){var Z=b.option;return Z})}),v=ys(o);return{label:f,value:v,key:v,valueCells:o}})})};var G9=Symbol("CascaderContextKey"),wne=function(e){hn(G9,e)},op=function(){return un(G9)};const gne=function(){var n=kh(),e=op(),t=e.values,i=di([]),a=ft(i,2),l=a[0],o=a[1];return rt(function(){return n.open},function(){if(n.open&&!n.multiple){var r=t.value[0];o(r||[])}},{immediate:!0}),[l,o]},Vne=function(n,e,t,i,a,l){var o=kh(),r=de(function(){return o.direction==="rtl"}),f=[Ne([]),Ne(),Ne([])],v=f[0],b=f[1],Z=f[2];qt(function(){for(var N=-1,G=e.value,d=[],u=[],s=i.value.length,h=function(x){var R=G.findIndex(function(g){return g[t.value.value]===i.value[x]});if(R===-1)return"break";N=R,d.push(N),u.push(i.value[x]),G=G[N][t.value.children]},c=0;c1){var G=v.value.slice(0,-1);p(G)}else o.toggleOpen(!1)},m=function(){var G,d=((G=Z.value[b.value])===null||G===void 0?void 0:G[t.value.children])||[],u=d.find(function(h){return!h.disabled});if(u){var s=[].concat(yt(v.value),[u[t.value.value]]);p(s)}};n.expose({onKeydown:function(G){var d=G.which;switch(d){case bt.UP:case bt.DOWN:{var u=0;d===bt.UP?u=-1:d===bt.DOWN&&(u=1),u!==0&&y(u);break}case bt.LEFT:{r.value?m():X();break}case bt.RIGHT:{r.value?X():m();break}case bt.BACKSPACE:{o.searchValue||X();break}case bt.ENTER:{if(v.value.length){var s=Z.value[b.value],h=(s==null?void 0:s[_d])||[];h.length?l(h.map(function(c){return c[t.value.value]}),h[h.length-1]):l(v.value,s)}break}case bt.ESC:o.toggleOpen(!1),open&&G.stopPropagation()}},onKeyup:function(){}})};function sp(n){var e,t=n.prefixCls,i=n.checked,a=n.halfChecked,l=n.disabled,o=n.onClick,r=op(),f=r.customSlots,v=r.checkable,b=v.value!==!1?f.value.checkable:v.value,Z=typeof b=="function"?b():typeof b=="boolean"?null:b;return D("span",{class:(e={},ce(e,t,!0),ce(e,"".concat(t,"-checked"),i),ce(e,"".concat(t,"-indeterminate"),!i&&a),ce(e,"".concat(t,"-disabled"),l),e),onClick:o},[Z])}sp.props=["prefixCls","checked","halfChecked","disabled","onClick"];sp.displayName="Checkbox";sp.inheritAttrs=!1;var X9="__cascader_fix_label__";function cp(n){var e,t,i,a,l,o,r=n.prefixCls,f=n.multiple,v=n.options,b=n.activeValue,Z=n.prevValuePath,p=n.onToggleOpen,y=n.onSelect,X=n.onActive,m=n.checkedSet,N=n.halfCheckedSet,G=n.loadingKeys,d=n.isSelectable,u="".concat(r,"-menu"),s="".concat(r,"-menu-item"),h=op(),c=h.fieldNames,W=h.changeOnSelect,M=h.expandTrigger,I=h.expandIcon,w=h.loadingIcon,C=h.dropdownMenuColumnStyle,x=h.customSlots,R=(e=I.value)!==null&&e!==void 0?e:(t=(i=x.value).expandIcon)===null||t===void 0?void 0:t.call(i),g=(a=w.value)!==null&&a!==void 0?a:(l=(o=x.value).loadingIcon)===null||l===void 0?void 0:l.call(o),S=M.value==="hover";return D("ul",{class:u,role:"menu"},[v.map(function(L){var V,Y,T=L.disabled,J=L[_d],U=(V=L[X9])!==null&&V!==void 0?V:L[c.value.label],K=L[c.value.value],H=Td(L,c.value),k=J?J.map(function(re){return re[c.value.value]}):[].concat(yt(Z),[K]),F=ys(k),O=G.includes(F),Q=m.has(F),oe=N.has(F),se=function(){!T&&(!S||!H)&&X(k)},he=function(){d(L)&&y(k,H)},pe;return typeof L.title=="string"?pe=L.title:typeof U=="string"&&(pe=U),D("li",{key:F,class:[s,(Y={},ce(Y,"".concat(s,"-expand"),!H),ce(Y,"".concat(s,"-active"),b===K),ce(Y,"".concat(s,"-disabled"),T),ce(Y,"".concat(s,"-loading"),O),Y)],style:C.value,role:"menuitemcheckbox",title:pe,"aria-checked":Q,"data-path-key":F,onClick:function(){se(),(!f||H)&&he()},onDblclick:function(){W.value&&p(!1)},onMouseenter:function(){S&&se()},onMousedown:function(_){_.preventDefault()}},[f&&D(sp,{prefixCls:"".concat(r,"-checkbox"),checked:Q,halfChecked:oe,disabled:T,onClick:function(_){_.stopPropagation(),he()}},null),D("div",{class:"".concat(s,"-content")},[U]),!O&&R&&!H&&D("div",{class:"".concat(s,"-expand-icon")},[R]),O&&g&&D("div",{class:"".concat(s,"-loading-icon")},[g])])})])}cp.props=["prefixCls","multiple","options","activeValue","prevValuePath","onToggleOpen","onSelect","onActive","checkedSet","halfCheckedSet","loadingKeys","isSelectable"];cp.displayName="Column";cp.inheritAttrs=!1;const Lne=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=kh(),o=Ne(),r=de(function(){return l.direction==="rtl"}),f=op(),v=f.options,b=f.values,Z=f.halfValues,p=f.fieldNames,y=f.changeOnSelect,X=f.onSelect,m=f.searchOptions,N=f.dropdownPrefixCls,G=f.loadData,d=f.expandTrigger,u=f.customSlots,s=de(function(){return N.value||l.prefixCls}),h=Gn([]),c=function(U){if(!(!G.value||l.searchValue)){var K=Yh(U,v.value,p.value),H=K.map(function(O){var Q=O.option;return Q}),k=H[H.length-1];if(k&&!Td(k,p.value)){var F=ys(U);h.value=[].concat(yt(h.value),[F]),G.value(H)}}};qt(function(){h.value.length&&h.value.forEach(function(J){var U=ene(J),K=Yh(U,v.value,p.value,!0).map(function(k){var F=k.option;return F}),H=K[K.length-1];(!H||H[p.value.children]||Td(H,p.value))&&(h.value=h.value.filter(function(k){return k!==J}))})});var W=de(function(){return new Set(cu(b.value))}),M=de(function(){return new Set(cu(Z.value))}),I=gne(),w=ft(I,2),C=w[0],x=w[1],R=function(U){x(U),c(U)},g=function(U){var K=U.disabled,H=Td(U,p.value);return!K&&(H||y.value||l.multiple)},S=function(U,K){var H=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;X(U),!l.multiple&&(K||y.value&&(d.value==="hover"||H))&&l.toggleOpen(!1)},L=de(function(){return l.searchValue?m.value:v.value}),V=de(function(){for(var J=[{options:L.value}],U=L.value,K=function(O){var Q=C.value[O],oe=U.find(function(he){return he[p.value.value]===Q}),se=oe==null?void 0:oe[p.value.children];if(!(se!=null&&se.length))return"break";U=se,J.push({options:se})},H=0;H"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Eb(n,e,t){return dle()?Eb=Reflect.construct.bind():Eb=function(a,l,o){var r=[null];r.push.apply(r,l);var f=Function.bind.apply(a,r),v=new f;return o&&wh(v,o.prototype),v},Eb.apply(null,arguments)}function hle(n){return Function.toString.call(n).indexOf("[native code]")!==-1}function vv(n){var e=typeof Map=="function"?new Map:void 0;return vv=function(i){if(i===null||!hle(i))return i;if(typeof i!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(i))return e.get(i);e.set(i,a)}function a(){return Eb(i,arguments,Zv(this).constructor)}return a.prototype=Object.create(i.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),wh(a,i)},vv(n)}var fle=/%[sdj%]/g,ble=function(){};typeof process<"u"&&process.env;function Wv(n){if(!n||!n.length)return null;var e={};return n.forEach(function(t){var i=t.field;e[i]=e[i]||[],e[i].push(t)}),e}function ka(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i=l)return r;switch(r){case"%s":return String(t[a++]);case"%d":return Number(t[a++]);case"%j":try{return JSON.stringify(t[a++])}catch{return"[Circular]"}break;default:return r}});return o}return n}function mle(n){return n==="string"||n==="url"||n==="hex"||n==="email"||n==="date"||n==="pattern"}function sl(n,e){return!!(n==null||e==="array"&&Array.isArray(n)&&!n.length||mle(e)&&typeof n=="string"&&!n)}function ple(n,e,t){var i=[],a=0,l=n.length;function o(r){i.push.apply(i,r||[]),a++,a===l&&t(i)}n.forEach(function(r){e(r,o)})}function Rw(n,e,t){var i=0,a=n.length;function l(o){if(o&&o.length){t(o);return}var r=i;i=i+1,r()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},xd={integer:function(e){return xd.number(e)&&parseInt(e,10)===e},float:function(e){return xd.number(e)&&!xd.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!xd.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(xw.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Zle())},hex:function(e){return typeof e=="string"&&!!e.match(xw.hex)}},vle=function(e,t,i,l,a){if(e.required&&t===void 0){g9(e,t,i,l,a);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],r=e.type;o.indexOf(r)>-1?xd[r](t)||l.push(ka(a.messages.types[r],e.fullField,e.type)):r&&typeof t!==e.type&&l.push(ka(a.messages.types[r],e.fullField,e.type))},Wle=function(e,t,i,l,a){var o=typeof e.len=="number",r=typeof e.min=="number",f=typeof e.max=="number",v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=t,Z=null,p=typeof t=="number",y=typeof t=="string",X=Array.isArray(t);if(p?Z="number":y?Z="string":X&&(Z="array"),!Z)return!1;X&&(b=t.length),y&&(b=t.replace(v,"_").length),o?b!==e.len&&l.push(ka(a.messages[Z].len,e.fullField,e.len)):r&&!f&&be.max?l.push(ka(a.messages[Z].max,e.fullField,e.max)):r&&f&&(be.max)&&l.push(ka(a.messages[Z].range,e.fullField,e.min,e.max))},Qc="enum",Gle=function(e,t,i,l,a){e[Qc]=Array.isArray(e[Qc])?e[Qc]:[],e[Qc].indexOf(t)===-1&&l.push(ka(a.messages[Qc],e.fullField,e[Qc].join(", ")))},Xle=function(e,t,i,l,a){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||l.push(ka(a.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(t)||l.push(ka(a.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},Pn={required:g9,whitespace:yle,type:vle,range:Wle,enum:Gle,pattern:Xle},Nle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,l,o,a,"string"),sl(t,"string")||(Pn.type(e,t,l,o,a),Pn.range(e,t,l,o,a),Pn.pattern(e,t,l,o,a),e.whitespace===!0&&Pn.whitespace(e,t,l,o,a))}i(o)},Mle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&Pn.type(e,t,l,o,a)}i(o)},Ile=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(t===""&&(t=void 0),sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&(Pn.type(e,t,l,o,a),Pn.range(e,t,l,o,a))}i(o)},Yle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&Pn.type(e,t,l,o,a)}i(o)},wle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),sl(t)||Pn.type(e,t,l,o,a)}i(o)},gle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&(Pn.type(e,t,l,o,a),Pn.range(e,t,l,o,a))}i(o)},Vle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&(Pn.type(e,t,l,o,a),Pn.range(e,t,l,o,a))}i(o)},Lle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(t==null&&!e.required)return i();Pn.required(e,t,l,o,a,"array"),t!=null&&(Pn.type(e,t,l,o,a),Pn.range(e,t,l,o,a))}i(o)},Rle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&Pn.type(e,t,l,o,a)}i(o)},Tle="enum",xle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a),t!==void 0&&Pn[Tle](e,t,l,o,a)}i(o)},Cle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,l,o,a),sl(t,"string")||Pn.pattern(e,t,l,o,a)}i(o)},Sle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t,"date")&&!e.required)return i();if(Pn.required(e,t,l,o,a),!sl(t,"date")){var f;t instanceof Date?f=t:f=new Date(t),Pn.type(e,f,l,o,a),f&&Pn.range(e,f.getTime(),l,o,a)}}i(o)},zle=function(e,t,i,l,a){var o=[],r=Array.isArray(t)?"array":typeof t;Pn.required(e,t,l,o,a,r),i(o)},bZ=function(e,t,i,l,a){var o=e.type,r=[],f=e.required||!e.required&&l.hasOwnProperty(e.field);if(f){if(sl(t,o)&&!e.required)return i();Pn.required(e,t,l,r,a,o),sl(t,o)||Pn.type(e,t,l,r,a)}i(r)},kle=function(e,t,i,l,a){var o=[],r=e.required||!e.required&&l.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,l,o,a)}i(o)},qd={string:Nle,method:Mle,number:Ile,boolean:Yle,regexp:wle,integer:gle,float:Vle,array:Lle,object:Rle,enum:xle,pattern:Cle,date:Sle,url:bZ,hex:bZ,email:bZ,required:zle,any:kle};function vv(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Wv=vv(),Eh=function(){function n(t){this.rules=null,this._messages=Wv,this.define(t)}var e=n.prototype;return e.define=function(i){var l=this;if(!i)throw new Error("Cannot configure a schema with no rules");if(typeof i!="object"||Array.isArray(i))throw new Error("Rules must be an object");this.rules={},Object.keys(i).forEach(function(a){var o=i[a];l.rules[a]=Array.isArray(o)?o:[o]})},e.messages=function(i){return i&&(this._messages=Tw(vv(),i)),this._messages},e.validate=function(i,l,a){var o=this;l===void 0&&(l={}),a===void 0&&(a=function(){});var r=i,f=l,v=a;if(typeof f=="function"&&(v=f,f={}),!this.rules||Object.keys(this.rules).length===0)return v&&v(null,r),Promise.resolve(r);function b(m){var N=[],G={};function d(s){if(Array.isArray(s)){var h;N=(h=N).concat.apply(h,s)}else N.push(s)}for(var u=0;u3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&i&&t===void 0&&!V9(n,e.slice(0,-1))?n:L9(n,e,t,i)}function Gv(n){return Zs(n)}function Jle(n,e){var t=V9(n,e);return t}function Dle(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,l=Fle(n,e,t,i);return l}function Ole(n,e){return n&&n.some(function(t){return Ule(t,e)})}function Cw(n){return Yt(n)==="object"&&n!==null&&Object.getPrototypeOf(n)===Object.prototype}function R9(n,e){var t=Array.isArray(n)?yt(n):P({},n);return e&&Object.keys(e).forEach(function(i){var l=t[i],a=e[i],o=Cw(l)&&Cw(a);t[i]=o?R9(l,a||{}):a}),t}function jle(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i-1?l[a?e[o]:o]:void 0}}var rae=Math.max;function oae(n,e,t){var i=n==null?0:n.length;if(!i)return-1;var l=t==null?0:$G(t);return l<0&&(l=rae(i+l,0)),Ux(n,k1(e),l)}var sae=aae(oae);const cae=sae;var S9=Symbol("formContextKey"),z9=function(e){hn(S9,e)},F1=function(){return un(S9,{name:de(function(){}),labelAlign:de(function(){return"right"}),vertical:de(function(){return!1}),addField:function(t,i){},removeField:function(t){},model:de(function(){}),rules:de(function(){}),colon:de(function(){}),labelWrap:de(function(){}),labelCol:de(function(){}),requiredMark:de(function(){return!1}),validateTrigger:de(function(){}),onValidate:function(){},validateMessages:de(function(){return dp})})},k9=Symbol("formItemPrefixContextKey"),uae=function(e){hn(k9,e)},dae=function(){return un(k9,{prefixCls:de(function(){return""})})},J1=function(e,t){var i,l,a,o,r=t.slots,f=t.emit,v=t.attrs,b=P(P({},e),v),Z=b.prefixCls,p=b.htmlFor,y=b.labelCol,X=b.labelAlign,m=b.colon,N=b.required,G=b.requiredMark,d=Qr("Form"),u=ft(d,1),s=u[0],h=(i=e.label)!==null&&i!==void 0?i:(l=r.label)===null||l===void 0?void 0:l.call(r);if(!h)return null;var c=F1(),W=c.vertical,M=c.labelAlign,I=c.labelCol,w=c.labelWrap,C=c.colon,x=y||(I==null?void 0:I.value)||{},R=X||(M==null?void 0:M.value),g="".concat(Z,"-item-label"),S=_e(g,R==="left"&&"".concat(g,"-left"),x.class,ce({},"".concat(g,"-wrap"),!!w.value)),L=h,V=m===!0||(C==null?void 0:C.value)!==!1&&m!==!1,Y=V&&!W.value;if(Y&&typeof h=="string"&&h.trim()!==""&&(L=h.replace(/[:|:]\s*$/,"")),L=D(ln,null,[L,(a=r.tooltip)===null||a===void 0?void 0:a.call(r,{class:"".concat(Z,"-item-tooltip")})]),G==="optional"&&!N){var T,J;L=D(ln,null,[L,D("span",{class:"".concat(Z,"-item-optional")},[((T=s.value)===null||T===void 0?void 0:T.optional)||((J=Mr.Form)===null||J===void 0?void 0:J.optional)])])}var U=_e((o={},ce(o,"".concat(Z,"-item-required"),N),ce(o,"".concat(Z,"-item-required-mark-optional"),G==="optional"),ce(o,"".concat(Z,"-item-no-colon"),!V),o));return D(ip,P(P({},x),{},{class:S}),{default:function(){return[D("label",{for:p,class:U,title:typeof h=="string"?h:"",onClick:function(k){return f("click",k)}},[L])]}})};J1.displayName="FormItemLabel";J1.inheritAttrs=!1;const hae=J1,fae=He({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var t=Nt("",e),i=t.prefixCls,l=dae(),a=l.prefixCls,o=l.status,r=de(function(){return"".concat(a.value,"-item-explain")}),f=de(function(){return!!(e.errors&&e.errors.length)}),v=Ne(o.value);return rt([f,o],function(){f.value&&(v.value=o.value)}),function(){var b,Z,p=Fh("".concat(i.value,"-show-help-item")),y=DW("".concat(i.value,"-show-help-item"),p);return y.class=r.value,(b=e.errors)!==null&&b!==void 0&&b.length?D(LW,P(P({},y),{},{tag:"div"}),{default:function(){return[(Z=e.errors)===null||Z===void 0?void 0:Z.map(function(m,N){return D("div",{key:N,role:"alert",class:v.value?"".concat(r.value,"-").concat(v.value):""},[m])})]}}):null}}});var bae={success:xh,warning:Th,error:Co,validating:Yr},mae=He({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,t){var i=t.slots,l=F1(),a=l.wrapperCol,o=P({},l);return delete o.labelCol,delete o.wrapperCol,z9(o),uae({prefixCls:de(function(){return e.prefixCls}),status:de(function(){return e.status})}),function(){var r,f,v,b=e.prefixCls,Z=e.wrapperCol,p=e.help,y=p===void 0?(r=i.help)===null||r===void 0?void 0:r.call(i):p,X=e.errors,m=X===void 0?(f=i.errors)===null||f===void 0?void 0:f.call(i):X,N=e.hasFeedback,G=e.status,d=e.extra,u=d===void 0?(v=i.extra)===null||v===void 0?void 0:v.call(i):d,s="".concat(b,"-item"),h=Z||(a==null?void 0:a.value)||{},c=_e("".concat(s,"-control"),h.class),W=G&&bae[G];return D(ip,P(P({},h),{},{class:c}),{default:function(){var I;return D(ln,null,[D("div",{class:"".concat(s,"-control-input")},[D("div",{class:"".concat(s,"-control-input-content")},[(I=i.default)===null||I===void 0?void 0:I.call(i)]),N&&W?D("span",{class:"".concat(s,"-children-icon")},[D(W,null,null)]):null]),D(fae,{errors:m,help:y,class:"".concat(s,"-explain-connected")},null),u?D("div",{class:"".concat(s,"-extra")},[u]):null])}})}}});const pae=mae;function yae(n){var e=Gn(n.value.slice()),t=null;return qt(function(){clearTimeout(t),t=setTimeout(function(){e.value=n.value},n.value.length?0:10)}),e}pi("success","warning","error","validating","");function mZ(n,e,t){var i=n,l=e,a=0;try{for(var o=l.length;a0&&arguments[0]!==void 0?arguments[0]:[];if(c.value==="validating"){var oe=Q.filter(function(se){return se&&se.errors.length});c.value=oe.length?"error":"success",Z.value=oe.map(function(se){return se.errors}),v.onValidate(b.value,!Z.value.length,Z.value.length?on(Z.value[0]):null)}}),O}},I=function(){M({triggerName:"blur"})},w=function(){if(p.value){p.value=!1;return}M({triggerName:"change"})},C=function(){c.value=e.validateStatus,p.value=!1,Z.value=[]},x=function(){c.value=e.validateStatus,p.value=!0,Z.value=[];var J=v.model.value||{},U=G.value,K=mZ(J,X.value,!0);Array.isArray(U)?K.o[K.k]=[].concat(d.value):K.o[K.k]=d.value,cn(function(){p.value=!1})},R=de(function(){return e.htmlFor===void 0?m.value:e.htmlFor}),g=function(){var J=R.value;if(!(!J||!y.value)){var U=y.value.$el.querySelector('[id="'.concat(J,'"]'));U&&U.focus&&U.focus()}};a({onFieldBlur:I,onFieldChange:w,clearValidate:C,resetField:x}),q_({id:m,onFieldBlur:function(){e.autoLink&&I()},onFieldChange:function(){e.autoLink&&w()},clearValidate:C},de(function(){return!!(e.autoLink&&v.model.value&&b.value)}));var S=!1;rt(b,function(T){T?S||(S=!0,v.addField(o,{fieldValue:G,fieldId:m,fieldName:b,resetField:x,clearValidate:C,namePath:X,validateRules:M,rules:s})):(S=!1,v.removeField(o))},{immediate:!0}),fn(function(){v.removeField(o)});var L=yae(Z),V=de(function(){return e.validateStatus!==void 0?e.validateStatus:L.value.length?"error":c.value}),Y=de(function(){var T;return T={},ce(T,"".concat(f.value,"-item"),!0),ce(T,"".concat(f.value,"-item-has-feedback"),V.value&&e.hasFeedback),ce(T,"".concat(f.value,"-item-has-success"),V.value==="success"),ce(T,"".concat(f.value,"-item-has-warning"),V.value==="warning"),ce(T,"".concat(f.value,"-item-has-error"),V.value==="error"),ce(T,"".concat(f.value,"-item-is-validating"),V.value==="validating"),ce(T,"".concat(f.value,"-item-hidden"),e.hidden),T});return function(){var T,J;if(e.noStyle)return(T=i.default)===null||T===void 0?void 0:T.call(i);var U=(J=e.help)!==null&&J!==void 0?J:i.help?Ri(i.help()):null;return D(w1,P(P({},l),{},{class:[Y.value,U!=null||L.value.length?"".concat(f.value,"-item-with-help"):"",l.class],key:"row"}),{default:function(){var H,k,F,O;return D(ln,null,[D(hae,P(P({},e),{},{htmlFor:R.value,required:h.value,requiredMark:v.requiredMark.value,prefixCls:f.value,onClick:g,label:(H=e.label)!==null&&H!==void 0?H:(k=i.label)===null||k===void 0?void 0:k.call(i)}),null),D(pae,P(P({},e),{},{errors:U!=null?Zs(U):L.value,prefixCls:f.value,status:V.value,ref:y,help:U,extra:(F=e.extra)!==null&&F!==void 0?F:(O=i.extra)===null||O===void 0?void 0:O.call(i)}),{default:i.default})])}})}}});function J9(n){var e=!1,t=n.length,i=[];return n.length?new Promise(function(l,a){n.forEach(function(o,r){o.catch(function(f){return e=!0,f}).then(function(f){t-=1,i[r]=f,!(t>0)&&(e&&a(i),l(i))})})}):Promise.resolve([])}function zw(n){return typeof n=="object"&&n!=null&&n.nodeType===1}function kw(n,e){return(!e||n!=="hidden")&&n!=="visible"&&n!=="clip"}function pZ(n,e){if(n.clientHeighte||a>n&&o=e&&r>=t?a-n-i:o>e&&rt?o-e+l:0}var Fw=function(n,e){var t=window,i=e.scrollMode,l=e.block,a=e.inline,o=e.boundary,r=e.skipOverflowHiddenElements,f=typeof o=="function"?o:function(E){return E!==o};if(!zw(n))throw new TypeError("Invalid target");for(var v,b,Z=document.scrollingElement||document.documentElement,p=[],y=n;zw(y)&&f(y);){if((y=(b=(v=y).parentElement)==null?v.getRootNode().host||null:b)===Z){p.push(y);break}y!=null&&y===document.body&&pZ(y)&&!pZ(document.documentElement)||y!=null&&pZ(y,r)&&p.push(y)}for(var X=t.visualViewport?t.visualViewport.width:innerWidth,m=t.visualViewport?t.visualViewport.height:innerHeight,N=window.scrollX||pageXOffset,G=window.scrollY||pageYOffset,d=n.getBoundingClientRect(),u=d.height,s=d.width,h=d.top,c=d.right,W=d.bottom,M=d.left,I=l==="start"||l==="nearest"?h:l==="end"?W:h+u/2,w=a==="center"?M+s/2:a==="end"?c:M,C=[],x=0;x=0&&M>=0&&W<=m&&c<=X&&h>=V&&W<=T&&M>=J&&c<=Y)return C;var U=getComputedStyle(R),K=parseInt(U.borderLeftWidth,10),H=parseInt(U.borderTopWidth,10),k=parseInt(U.borderRightWidth,10),F=parseInt(U.borderBottomWidth,10),O=0,Q=0,oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-K-k:0,se="offsetHeight"in R?R.offsetHeight-R.clientHeight-H-F:0,he="offsetWidth"in R?R.offsetWidth===0?0:L/R.offsetWidth:0,pe="offsetHeight"in R?R.offsetHeight===0?0:S/R.offsetHeight:0;if(Z===R)O=l==="start"?I:l==="end"?I-m:l==="nearest"?fb(G,G+m,m,H,F,G+I,G+I+u,u):I-m/2,Q=a==="start"?w:a==="center"?w-X/2:a==="end"?w-X:fb(N,N+X,X,K,k,N+w,N+w+s,s),O=Math.max(0,O+G),Q=Math.max(0,Q+N);else{O=l==="start"?I-V-H:l==="end"?I-T+F+se:l==="nearest"?fb(V,T,S,H,F+se,I,I+u,u):I-(V+S/2)+se/2,Q=a==="start"?w-J-K:a==="center"?w-(J+L/2)+oe/2:a==="end"?w-Y+k+oe:fb(J,Y,L,K,k+oe,w,w+s,s);var re=R.scrollLeft,_=R.scrollTop;I+=_-(O=Math.max(0,Math.min(_+O/pe,R.scrollHeight-S/pe+se))),w+=re-(Q=Math.max(0,Math.min(re+Q/he,R.scrollWidth-L/he+oe)))}C.push({el:R,top:O,left:Q})}return C};function D9(n){return n===Object(n)&&Object.keys(n).length!==0}function Gae(n,e){e===void 0&&(e="auto");var t="scrollBehavior"in document.body.style;n.forEach(function(i){var l=i.el,a=i.top,o=i.left;l.scroll&&t?l.scroll({top:a,left:o,behavior:e}):(l.scrollTop=a,l.scrollLeft=o)})}function Xae(n){return n===!1?{block:"end",inline:"nearest"}:D9(n)?n:{block:"start",inline:"nearest"}}function Nae(n,e){var t=n.isConnected||n.ownerDocument.documentElement.contains(n);if(D9(e)&&typeof e.behavior=="function")return e.behavior(t?Fw(n,e):[]);if(t){var i=Xae(e);return Gae(Fw(n,i),i.behavior)}}var Mae=Math.min;function Iae(n,e,t){for(var i=t?Kx:Ex,l=n[0].length,a=n.length,o=a,r=Array(a),f=1/0,v=[];o--;){var b=n[o];o&&e&&(b=A0(b,F0(e))),f=Mae(b.length,f),r[o]=!t&&(e||l>=120&&b.length>=120)?new Vu(o&&b):void 0}b=n[0];var Z=-1,p=r[0];e:for(;++Z1),a}),Uh(n,M9(n),t),i&&(t=$d(t,Sae|zae|kae,Cae));for(var l=e.length;l--;)xae(t,e[l]);return t});const Jae=Fae;function Jw(n){var e=!1;return n&&n.length&&n.every(function(t){return t.required?(e=!0,!1):!0}),e}function Dw(n){return n==null?[]:Array.isArray(n)?n:[n]}function yZ(n,e,t){var i=n;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var l=e.split("."),a=0,o=l.length;a1&&arguments[1]!==void 0?arguments[1]:Ne({}),t=arguments.length>2?arguments[2]:void 0,i=jb(mi(n)),l=zn({}),a=Gn([]),o=function(s){Xn(mi(n),P(P({},jb(i)),s)),cn(function(){Object.keys(l).forEach(function(h){l[h]={autoLink:!1,required:Jw(mi(e)[h])}})})},r=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],h=arguments.length>1?arguments[1]:void 0;return h.length?s.filter(function(c){var W=Dw(c.trigger||"change");return Lae(W,h).length}):s},f=null,v=function(s){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=arguments.length>2?arguments[2]:void 0,W=[],M={},I=function(S){var L=s[S],V=yZ(mi(n),L,c);if(!V.isValid)return"continue";M[L]=V.v;var Y=r(mi(e)[L],Dw(h&&h.trigger));Y.length&&W.push(b(L,V.v,Y,h||{}).then(function(){return{name:L,errors:[],warnings:[]}}).catch(function(T){var J=[],U=[];return T.forEach(function(K){var H=K.rule.warningOnly,k=K.errors;H?U.push.apply(U,yt(k)):J.push.apply(J,yt(k))}),J.length?Promise.reject({name:L,errors:J,warnings:U}):{name:L,errors:J,warnings:U}}))},w=0;w3&&arguments[3]!==void 0?arguments[3]:{},M=T9([s],h,c,P({validateMessages:dp},W),!!W.validateFirst);return l[s]?(l[s].validateStatus="validating",M.catch(function(I){return I}).then(function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(l[s].validateStatus==="validating"){var w,C=I.filter(function(x){return x&&x.errors.length});l[s].validateStatus=C.length?"error":"success",l[s].help=C.length?C.map(function(x){return x.errors}):null,t==null||(w=t.onValidate)===null||w===void 0||w.call(t,s,!C.length,C.length?on(l[s].help[0]):null)}}),M):M.catch(function(I){return I})},Z=function(s,h){var c=[],W=!0;s?Array.isArray(s)?c=s:c=[s]:(W=!1,c=a.value);var M=v(c,h||{},W);return M.catch(function(I){return I}),M},p=function(s){var h=[];s?Array.isArray(s)?h=s:h=[s]:h=a.value,h.forEach(function(c){l[c]&&Xn(l[c],{validateStatus:"",help:null})})},y=function(s){for(var h={autoLink:!1},c=[],W=Array.isArray(s)?s:[s],M=0;M-1}):Object.values(s)},M=function(Y){if(!e.model){Ci(!1,"Form","model is required for resetFields to work.");return}W(Y).forEach(function(T){T.resetField()})},I=function(Y){W(Y).forEach(function(T){T.clearValidate()})},w=function(Y){var T=e.scrollToFirstError;if(i("finishFailed",Y),T&&Y.errorFields.length){var J={};Yt(T)==="object"&&(J=T),x(Y.errorFields[0].name,J)}},C=function(){return S.apply(void 0,arguments)},x=function(Y){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},J=W(Y?[Y]:void 0);if(J.length){var U=J[0].fieldId.value,K=U?document.getElementById(U):null;K&&Nae(K,P({scrollMode:"if-needed",block:"nearest"},T))}},R=function(){var Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(Y===!0){var T=[];return Object.values(s).forEach(function(J){var U=J.namePath;T.push(U.value)}),Sw(e.model,T)}else return Sw(e.model,Y)},g=function(Y,T){if(Ci(!(Y instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return Ci(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var J=!!Y,U=J?Zs(Y).map(Gv):[],K=[];Object.values(s).forEach(function(F){var O;if(J||U.push(F.namePath.value),!!((O=F.rules)!==null&&O!==void 0&&O.value.length)){var Q=F.namePath.value;if(!J||Ole(U,Q)){var oe=F.validateRules(P({validateMessages:G.value},T));K.push(oe.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(se){var he=[],pe=[];return se.forEach(function(re){var _=re.rule.warningOnly,E=re.errors;_?pe.push.apply(pe,yt(E)):he.push.apply(he,yt(E))}),he.length?Promise.reject({name:Q,errors:he,warnings:pe}):{name:Q,errors:he,warnings:pe}}))}}});var H=J9(K);u.value=H;var k=H.then(function(){return u.value===H?Promise.resolve(R(U)):Promise.reject([])}).catch(function(F){var O=F.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:R(U),errorFields:O,outOfDate:u.value!==H})});return k.catch(function(F){return F}),k},S=function(){return g.apply(void 0,arguments)},L=function(Y){if(Y.preventDefault(),Y.stopPropagation(),i("submit",Y),e.model){var T=g();T.then(function(J){i("finish",J)}).catch(function(J){w(J)})}};return a({resetFields:M,clearValidate:I,validateFields:g,getFieldsValue:R,validate:C,scrollToField:x}),z9({model:de(function(){return e.model}),name:de(function(){return e.name}),labelAlign:de(function(){return e.labelAlign}),labelCol:de(function(){return e.labelCol}),labelWrap:de(function(){return e.labelWrap}),wrapperCol:de(function(){return e.wrapperCol}),vertical:de(function(){return e.layout==="vertical"}),colon:X,requiredMark:y,validateTrigger:de(function(){return e.validateTrigger}),rules:de(function(){return e.rules}),addField:h,removeField:c,onValidate:function(Y,T,J){i("validate",Y,T,J)},validateMessages:G}),rt(function(){return e.rules},function(){e.validateOnRuleChange&&g()}),function(){var V;return D("form",P(P({},o),{},{onSubmit:L,class:[d.value,o.class]}),[(V=l.default)===null||V===void 0?void 0:V.call(l)])}}});const cs=Uae;cs.useInjectFormItemContext=Hi;cs.ItemRest=Cm;cs.install=function(n){return n.component(cs.name,cs),n.component(cs.Item.name,cs.Item),n.component(Cm.name,Cm),n};var Eae=["notFoundContent","expandIcon","multiple","bordered","allowClear","choiceTransitionName","transitionName","id"];function Kae(n,e,t){var i=n.toLowerCase().split(e).reduce(function(o,r,f){return f===0?[r]:[].concat(yt(o),[e,r])},[]),l=[],a=0;return i.forEach(function(o,r){var f=a+o.length,v=n.slice(a,f);a=f,r%2===1&&(v=D("span",{class:"".concat(t,"-menu-item-keyword"),key:"seperator"},[v])),l.push(v)}),l}var Hae=function(e){var t=e.inputValue,i=e.path,l=e.prefixCls,a=e.fieldNames,o=[],r=t.toLowerCase();return i.forEach(function(f,v){v!==0&&o.push(" / ");var b=f[a.label],Z=Yt(b);(Z==="string"||Z==="number")&&(b=Kae(String(b),r,l)),o.push(b)}),o};function Pae(){return P(P({},dn(G9(),["customSlots","checkable","options"])),{},{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:We.any,options:Array,"onUpdate:value":Function})}var Qae=He({compatConfig:{MODE:3},name:"ACascader",inheritAttrs:!1,props:pn(Pae(),{bordered:!0,choiceTransitionName:"",allowClear:!0}),setup:function(e,t){var i=t.attrs,l=t.expose,a=t.slots,o=t.emit,r=Hi(),f=Nt("cascader",e),v=f.prefixCls,b=f.rootPrefixCls,Z=f.getPrefixCls,p=f.direction,y=f.getPopupContainer,X=f.renderEmpty,m=f.size,N=de(function(){return Z("select",e.prefixCls)}),G=de(function(){return p.value==="rtl"}),d=de(function(){if(!e.showSearch)return e.showSearch;var I={render:Hae};return Yt(e.showSearch)==="object"&&(I=P(P({},I),e.showSearch)),I}),u=de(function(){return _e(e.dropdownClassName||e.popupClassName,"".concat(v.value,"-dropdown"),ce({},"".concat(v.value,"-dropdown-rtl"),G.value))}),s=Ne();l({focus:function(){var w;(w=s.value)===null||w===void 0||w.focus()},blur:function(){var w;(w=s.value)===null||w===void 0||w.blur()}});var h=function(){for(var w=arguments.length,C=new Array(w),x=0;x=n.length?{done:!0}:{done:!1,value:n[i++]}},e:function(v){throw v},f:l}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,o=!1,r;return{s:function(){t=t.call(n)},n:function(){var v=t.next();return a=v.done,v},e:function(v){o=!0,r=v},f:function(){try{!a&&t.return!=null&&t.return()}finally{if(o)throw r}}}}const $m=He({compatConfig:{MODE:3},name:"ACheckboxGroup",props:_ae(),setup:function(e,t){var i=t.slots,l=t.emit,a=t.expose,o=Hi(),r=Nt("checkbox",e),f=r.prefixCls,v=r.direction,b=Ne((e.value===void 0?e.defaultValue:e.value)||[]);rt(function(){return e.value},function(){b.value=e.value||[]});var Z=de(function(){return e.options.map(function(d){return typeof d=="string"||typeof d=="number"?{label:d,value:d}:d})}),p=Ne(Symbol()),y=Ne(new Map),X=function(u){y.value.delete(u),p.value=Symbol()},m=function(u,s){y.value.set(u,s),p.value=Symbol()},N=Ne(new Map);rt(p,function(){var d=new Map,u=nre(y.value.values()),s;try{for(u.s();!(s=u.n()).done;){var h=s.value;d.set(h,!0)}}catch(c){u.e(c)}finally{u.f()}N.value=d});var G=function(u){var s=b.value.indexOf(u.value),h=yt(b.value);s===-1?h.push(u.value):h.splice(s,1),e.value===void 0&&(b.value=h);var c=h.filter(function(W){return N.value.has(W)}).sort(function(W,M){var I=Z.value.findIndex(function(C){return C.value===W}),w=Z.value.findIndex(function(C){return C.value===M});return I-w});l("update:value",c),l("change",c),o.onFieldChange()};return hn(O9,{cancelValue:X,registerValue:m,toggleOption:G,mergedValue:b,name:de(function(){return e.name}),disabled:de(function(){return e.disabled})}),a({mergedValue:b}),function(){var d,u=e.id,s=u===void 0?o.id.value:u,h=null,c="".concat(f.value,"-group");return Z.value&&Z.value.length>0&&(h=Z.value.map(function(W){var M;return D(lr,{prefixCls:f.value,key:W.value.toString(),disabled:"disabled"in W?W.disabled:e.disabled,indeterminate:W.indeterminate,value:W.value,checked:b.value.indexOf(W.value)!==-1,onChange:W.onChange,class:"".concat(c,"-item")},{default:function(){return[W.label===void 0?(M=i.label)===null||M===void 0?void 0:M.call(i,W):W.label]}})})),D("div",{class:[c,ce({},"".concat(c,"-rtl"),v.value==="rtl")],id:s},[h||((d=i.default)===null||d===void 0?void 0:d.call(i))])}}});lr.Group=$m;lr.install=function(n){return n.component(lr.name,lr),n.component($m.name,$m),n};var ire=function(){return{actions:Array,author:We.any,avatar:We.any,content:We.any,prefixCls:String,datetime:We.any}},lre=He({compatConfig:{MODE:3},name:"AComment",props:ire(),slots:["actions","author","avatar","content","datetime"],setup:function(e,t){var i=t.slots,l=Nt("comment",e),a=l.prefixCls,o=l.direction,r=function(b,Z){return D("div",{class:"".concat(b,"-nested")},[Z])},f=function(b){if(!b||!b.length)return null;var Z=b.map(function(p,y){return D("li",{key:"action-".concat(y)},[p])});return Z};return function(){var v,b,Z,p,y,X,m,N,G,d,u,s=a.value,h=(v=e.actions)!==null&&v!==void 0?v:(b=i.actions)===null||b===void 0?void 0:b.call(i),c=(Z=e.author)!==null&&Z!==void 0?Z:(p=i.author)===null||p===void 0?void 0:p.call(i),W=(y=e.avatar)!==null&&y!==void 0?y:(X=i.avatar)===null||X===void 0?void 0:X.call(i),M=(m=e.content)!==null&&m!==void 0?m:(N=i.content)===null||N===void 0?void 0:N.call(i),I=(G=e.datetime)!==null&&G!==void 0?G:(d=i.datetime)===null||d===void 0?void 0:d.call(i),w=D("div",{class:"".concat(s,"-avatar")},[typeof W=="string"?D("img",{src:W,alt:"comment-avatar"},null):W]),C=h?D("ul",{class:"".concat(s,"-actions")},[f(Array.isArray(h)?h:[h])]):null,x=D("div",{class:"".concat(s,"-content-author")},[c&&D("span",{class:"".concat(s,"-content-author-name")},[c]),I&&D("span",{class:"".concat(s,"-content-author-time")},[I])]),R=D("div",{class:"".concat(s,"-content")},[x,D("div",{class:"".concat(s,"-content-detail")},[M]),C]),g=D("div",{class:"".concat(s,"-inner")},[w,R]),S=ti((u=i.default)===null||u===void 0?void 0:u.call(i));return D("div",{class:[s,ce({},"".concat(s,"-rtl"),o.value==="rtl")]},[g,S&&S.length?r(s,S):null])}}});const are=wi(lre);var rre=function(e,t){var i=t.attrs,l=t.slots;return D(qi,P(P({size:"small",type:"primary"},e),i),l)};const ore=rre;var sre=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},"onUpdate:checked":Function}},cre=He({compatConfig:{MODE:3},name:"ACheckableTag",props:sre(),setup:function(e,t){var i=t.slots,l=t.emit,a=Nt("tag",e),o=a.prefixCls,r=function(b){var Z=e.checked;l("update:checked",!Z),l("change",!Z),l("click",b)},f=de(function(){var v;return _e(o.value,(v={},ce(v,"".concat(o.value,"-checkable"),!0),ce(v,"".concat(o.value,"-checkable-checked"),e.checked),v))});return function(){var v;return D("span",{class:f.value,onClick:r},[(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});const qm=cre;var ure=new RegExp("^(".concat(JG.join("|"),")(-inverse)?$")),dre=new RegExp("^(".concat(X6.join("|"),")$")),hre=function(){return{prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:We.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},"onUpdate:visible":Function,icon:We.any}},eh=He({compatConfig:{MODE:3},name:"ATag",props:hre(),slots:["closeIcon","icon"],setup:function(e,t){var i=t.slots,l=t.emit,a=t.attrs,o=Nt("tag",e),r=o.prefixCls,f=o.direction,v=Ne(!0);qt(function(){e.visible!==void 0&&(v.value=e.visible)});var b=function(X){X.stopPropagation(),l("update:visible",!1),l("close",X),!X.defaultPrevented&&e.visible===void 0&&(v.value=!1)},Z=de(function(){var y=e.color;return y?ure.test(y)||dre.test(y):!1}),p=de(function(){var y;return _e(r.value,(y={},ce(y,"".concat(r.value,"-").concat(e.color),Z.value),ce(y,"".concat(r.value,"-has-color"),e.color&&!Z.value),ce(y,"".concat(r.value,"-hidden"),!v.value),ce(y,"".concat(r.value,"-rtl"),f.value==="rtl"),y))});return function(){var y,X,m,N=e.icon,G=N===void 0?(y=i.icon)===null||y===void 0?void 0:y.call(i):N,d=e.color,u=e.closeIcon,s=u===void 0?(X=i.closeIcon)===null||X===void 0?void 0:X.call(i):u,h=e.closable,c=h===void 0?!1:h,W=function(){return c?s?D("span",{class:"".concat(r.value,"-close-icon"),onClick:b},[s]):D(Br,{class:"".concat(r.value,"-close-icon"),onClick:b},null):null},M={backgroundColor:d&&!Z.value?d:void 0},I=G||null,w=(m=i.default)===null||m===void 0?void 0:m.call(i),C=I?D(ln,null,[I,D("span",null,[w])]):w,x="onClick"in a,R=D("span",{class:p.value,style:M},[C,W()]);return x?D(jG,null,{default:function(){return[R]}}):R}}});eh.CheckableTag=qm;eh.install=function(n){return n.component(eh.name,eh),n.component(qm.name,qm),n};const j9=eh;function fre(n,e){var t=e.slots,i=e.attrs;return D(j9,P(P({color:"blue"},n),i),t)}var bre={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const mre=bre;function Ow(n){for(var e=1;et)&&(i=wn(n,{span:t}),Ci(e===void 0,"Descriptions","Sum of column `span` in a line not match `column` of Descriptions.")),i}function Jre(n,e){var t=ti(n),i=[],l=[],a=e;return t.forEach(function(o,r){var f,v=(f=o.props)===null||f===void 0?void 0:f.span,b=v||1;if(r===t.length-1){l.push(Ew(o,v,a)),i.push(l);return}b0?"-"+e.orientation:e.orientation});return function(){var p,y=ti((p=i.default)===null||p===void 0?void 0:p.call(i));return D("div",{class:[v.value,y.length?"".concat(a.value,"-with-text ").concat(a.value,"-with-text").concat(Z.value):""],role:"separator"},[y.length?D("span",{class:"".concat(a.value,"-inner-text"),style:b.value},[y]):null])}}});const Ere=wi(Ure);Hr.Button=Xh;Hr.install=function(n){return n.component(Hr.name,Hr),n.component(Xh.name,Xh),n};var WZ;function xu(n){if(typeof document>"u")return 0;if(n||WZ===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var t=document.createElement("div"),i=t.style;i.position="absolute",i.top="0",i.left="0",i.pointerEvents="none",i.visibility="hidden",i.width="200px",i.height="150px",i.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var l=e.offsetWidth;t.style.overflow="scroll";var a=e.offsetWidth;l===a&&(a=t.clientWidth),document.body.removeChild(t),WZ=l-a}return WZ}function Kw(n){var e=n.match(/^(.*)px$/),t=Number(e==null?void 0:e[1]);return Number.isNaN(t)?xu():t}function Kre(n){if(typeof document>"u"||!n||!(n instanceof Element))return{width:0,height:0};var e=getComputedStyle(n,"::-webkit-scrollbar"),t=e.width,i=e.height;return{width:Kw(t),height:Kw(i)}}var $9=function(){return{prefixCls:String,width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},Hre=function(){return P(P({},$9()),{},{forceRender:{type:Boolean,default:void 0},getContainer:We.oneOfType([We.string,We.func,We.object,We.looseBool])})},Pre=function(){return P(P({},$9()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:We.any,switchScrollingEffect:Function})};function Qre(n){return Array.isArray(n)?n:[n]}var q9={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},Bre=Object.keys(q9).filter(function(n){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return n in(e?e.style:{})})[0],Hw=q9[Bre];function Pw(n,e,t,i){n.addEventListener?n.addEventListener(e,t,i):n.attachEvent&&n.attachEvent("on".concat(e),t)}function Qw(n,e,t,i){n.removeEventListener?n.removeEventListener(e,t,i):n.attachEvent&&n.detachEvent("on".concat(e),t)}function Are(n,e){var t=typeof n=="function"?n(e):n;return Array.isArray(t)?t.length===2?t:[t[0],t[1]]:[t]}var Bw=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},GZ=!(typeof window<"u"&&window.document&&window.document.createElement),_re=function n(e,t,i,l){if(!t||t===document||t instanceof Document)return!1;if(t===e.parentNode)return!0;var a=Math.max(Math.abs(i),Math.abs(l))===Math.abs(l),o=Math.max(Math.abs(i),Math.abs(l))===Math.abs(i),r=t.scrollHeight-t.clientHeight,f=t.scrollWidth-t.clientWidth,v=document.defaultView.getComputedStyle(t),b=v.overflowY==="auto"||v.overflowY==="scroll",Z=v.overflowX==="auto"||v.overflowX==="scroll",p=r&&b,y=f&&Z;return a&&(!p||p&&(t.scrollTop>=r&&l<0||t.scrollTop<=0&&l>0))||o&&(!y||y&&(t.scrollLeft>=f&&i<0||t.scrollLeft<=0&&i>0))?n(e,t.parentNode,i,l):!1},$re=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],Nd={},qre=He({compatConfig:{MODE:3},inheritAttrs:!1,props:Pre(),emits:["close","handleClick","change"],setup:function(e,t){var i=t.emit,l=t.slots,a=zn({startPos:{x:null,y:null}}),o,r=Ne(),f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=[],y="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),X=!GZ&&Ui?{passive:!1}:!1;Kt(function(){cn(function(){var V=e.open,Y=e.getContainer,T=e.showMask,J=e.autofocus,U=Y==null?void 0:Y();if(g(e),V&&(U&&U.parentNode===document.body&&(Nd[y]=V),W(),cn(function(){J&&m()}),T)){var K;(K=e.scrollLocker)===null||K===void 0||K.lock()}})}),rt(function(){return e.level},function(){g(e)},{flush:"post"}),rt(function(){return e.open},function(){var V=e.open,Y=e.getContainer,T=e.scrollLocker,J=e.showMask,U=e.autofocus,K=Y==null?void 0:Y();K&&K.parentNode===document.body&&(Nd[y]=!!V),W(),V?(U&&m(),J&&(T==null||T.lock())):T==null||T.unLock()},{flush:"post"}),la(function(){var V,Y=e.open;delete Nd[y],Y&&(M(!1),document.body.style.touchAction=""),(V=e.scrollLocker)===null||V===void 0||V.unLock()}),rt(function(){return e.placement},function(V){V&&(Z.value=null)});var m=function(){var Y,T;(Y=f.value)===null||Y===void 0||(T=Y.focus)===null||T===void 0||T.call(Y)},N=function(Y){Y.touches.length>1||(a.startPos={x:Y.touches[0].clientX,y:Y.touches[0].clientY})},G=function(Y){if(!(Y.changedTouches.length>1)){var T=Y.currentTarget,J=Y.changedTouches[0].clientX-a.startPos.x,U=Y.changedTouches[0].clientY-a.startPos.y;(T===v.value||T===b.value||T===Z.value&&_re(T,Y.target,J,U))&&Y.cancelable&&Y.preventDefault()}},d=function V(Y){var T=Y.target;Qw(T,Hw,V),T.style.transition=""},u=function(Y){i("close",Y)},s=function(Y){Y.keyCode===bt.ESC&&(Y.stopPropagation(),u(Y))},h=function(Y){var T=e.open,J=e.afterVisibleChange;Y.target===r.value&&Y.propertyName.match(/transform$/)&&(f.value.style.transition="",!T&&R()&&(document.body.style.overflowX="",v.value&&(v.value.style.left="",v.value.style.width="")),J&&J(!!T))},c=de(function(){var V=e.placement,Y=V==="left"||V==="right",T="translate".concat(Y?"X":"Y");return{isHorizontal:Y,placementName:T}}),W=function(){var Y=e.open,T=e.width,J=e.height,U=c.value,K=U.isHorizontal,H=U.placementName,k=Z.value?Z.value.getBoundingClientRect()[K?"width":"height"]:0,F=(K?T:J)||k;I(Y,H,F)},M=function(Y,T,J,U){var K=e.placement,H=e.levelMove,k=e.duration,F=e.ease,O=e.showMask;p.forEach(function(Q){Q.style.transition="transform ".concat(k," ").concat(F),Pw(Q,Hw,d);var oe=Y?J:0;if(H){var se=Are(H,{target:Q,open:Y});oe=Y?se[0]:se[1]||0}var he=typeof oe=="number"?"".concat(oe,"px"):oe,pe=K==="left"||K==="top"?he:"-".concat(he);pe=O&&K==="right"&&U?"calc(".concat(pe," + ").concat(U,"px)"):pe,Q.style.transform=oe?"".concat(T,"(").concat(pe,")"):""})},I=function(Y,T,J){if(!GZ){var U=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?xu(!0):0;M(Y,T,J,U),w(U)}i("change",Y)},w=function(Y){var T=e.getContainer,J=e.showMask,U=e.open,K=T==null?void 0:T();if(K&&K.parentNode===document.body&&J){var H=["touchstart"],k=[document.body,v.value,b.value,Z.value];U&&document.body.style.overflow!=="hidden"?(Y&&C(Y),document.body.style.touchAction="none",k.forEach(function(F,O){F&&Pw(F,H[O]||"touchmove",O?G:N,X)})):R()&&(document.body.style.touchAction="",Y&&x(Y),k.forEach(function(F,O){F&&Qw(F,H[O]||"touchmove",O?G:N,X)}))}},C=function(Y){var T=e.placement,J=e.duration,U=e.ease,K="width ".concat(J," ").concat(U),H="transform ".concat(J," ").concat(U);switch(f.value.style.transition="none",T){case"right":f.value.style.transform="translateX(-".concat(Y,"px)");break;case"top":case"bottom":f.value.style.width="calc(100% - ".concat(Y,"px)"),f.value.style.transform="translateZ(0)";break}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(H,",").concat(K),f.value.style.width="",f.value.style.transform="")})},x=function(Y){var T=e.placement,J=e.duration,U=e.ease;f.value.style.transition="none";var K,H="width ".concat(J," ").concat(U),k="transform ".concat(J," ").concat(U);switch(T){case"left":{f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J);break}case"right":{f.value.style.transform="translateX(".concat(Y,"px)"),f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J),v.value&&(v.value.style.left="-".concat(Y,"px"),v.value.style.width="calc(100% + ".concat(Y,"px)"));break}case"top":case"bottom":{f.value.style.width="calc(100% + ".concat(Y,"px)"),f.value.style.height="100%",f.value.style.transform="translateZ(0)",K="height 0s ".concat(U," ").concat(J);break}}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(k,",").concat(K?"".concat(K,","):"").concat(H),f.value.style.transform="",f.value.style.width="",f.value.style.height="")})},R=function(){return!Object.keys(Nd).some(function(Y){return Nd[Y]})},g=function(Y){var T=Y.level,J=Y.getContainer;if(!GZ){var U=J==null?void 0:J(),K=U?U.parentNode:null;if(p=[],T==="all"){var H=K?Array.prototype.slice.call(K.children):[];H.forEach(function(k){k.nodeName!=="SCRIPT"&&k.nodeName!=="STYLE"&&k.nodeName!=="LINK"&&k!==U&&p.push(k)})}else T&&Qre(T).forEach(function(k){document.querySelectorAll(k).forEach(function(F){p.push(F)})})}},S=function(Y){i("handleClick",Y)},L=Ne(!1);return rt(f,function(){cn(function(){L.value=!0})}),function(){var V,Y,T,J=e.width,U=e.height,K=e.open,H=e.prefixCls,k=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var F=e.showMask,O=e.maskClosable,Q=e.maskStyle,oe=e.keyboard;e.getOpenCount,e.scrollLocker;var se=e.contentWrapperStyle,he=e.style,pe=e.class,re=jt(e,$re),_=K&&L.value,E=_e(H,(V={},ce(V,"".concat(H,"-").concat(k),!0),ce(V,"".concat(H,"-open"),_),ce(V,pe,!!pe),ce(V,"no-mask",!F),V)),$=c.value.placementName,ae=k==="left"||k==="top"?"-100%":"100%",le=_?"":"".concat($,"(").concat(ae,")");return D("div",P(P({},dn(re,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:E,style:he,ref:f,onKeydown:_&&oe?s:void 0,onTransitionend:h}),[F&&D("div",{class:"".concat(H,"-mask"),onClick:O?u:void 0,style:Q,ref:v},null),D("div",{class:"".concat(H,"-content-wrapper"),style:P({transform:le,msTransform:le,width:Bw(J)?"".concat(J,"px"):J,height:Bw(U)?"".concat(U,"px"):U},se),ref:r},[D("div",{class:"".concat(H,"-content"),ref:Z},[(Y=l.default)===null||Y===void 0?void 0:Y.call(l)]),l.handler?D("div",{onClick:S,ref:b},[(T=l.handler)===null||T===void 0?void 0:T.call(l)]):null])])}}});const Aw=qre;function Cu(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.element,i=t===void 0?document.body:t,l={},a=Object.keys(n);return a.forEach(function(o){l[o]=i.style[o]}),a.forEach(function(o){i.style[o]=n[o]}),l}function eoe(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var XZ={};const _w=function(n){if(!(!eoe()&&!n)){var e="ant-scrolling-effect",t=new RegExp("".concat(e),"g"),i=document.body.className;if(n){if(!t.test(i))return;Cu(XZ),XZ={},document.body.className=i.replace(t,"").trim();return}var l=xu();if(l&&(XZ=Cu({position:"relative",width:"calc(100% - ".concat(l,"px)")}),!t.test(i))){var a="".concat(i," ").concat(e);document.body.className=a.trim()}}};var qa=[],eC="ant-scrolling-effect",NZ=new RegExp("".concat(eC),"g"),toe=0,MZ=new Map,noe=Q0(function n(e){var t=this;B0(this,n),ce(this,"getContainer",function(){var i;return(i=t.options)===null||i===void 0?void 0:i.container}),ce(this,"reLock",function(i){var l=qa.find(function(a){var o=a.target;return o===t.lockTarget});l&&t.unLock(),t.options=i,l&&(l.options=i,t.lock())}),ce(this,"lock",function(){var i;if(!qa.some(function(f){var v=f.target;return v===t.lockTarget})){if(qa.some(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)})){qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}]);return}var l=0,a=((i=t.options)===null||i===void 0?void 0:i.container)||document.body;(a===document.body&&window.innerWidth-document.documentElement.clientWidth>0||a.scrollHeight>a.clientHeight)&&(l=xu());var o=a.className;if(qa.filter(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)}).length===0&&MZ.set(a,Cu({width:l!==0?"calc(100% - ".concat(l,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:a})),!NZ.test(o)){var r="".concat(o," ").concat(eC);a.className=r.trim()}qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}])}}),ce(this,"unLock",function(){var i,l=qa.find(function(r){var f=r.target;return f===t.lockTarget});if(qa=qa.filter(function(r){var f=r.target;return f!==t.lockTarget}),!(!l||qa.some(function(r){var f,v=r.options;return(v==null?void 0:v.container)===((f=l.options)===null||f===void 0?void 0:f.container)}))){var a=((i=t.options)===null||i===void 0?void 0:i.container)||document.body,o=a.className;NZ.test(o)&&(Cu(MZ.get(a),{element:a}),MZ.delete(a),a.className=a.className.replace(NZ,"").trim())}}),this.lockTarget=toe++,this.options=e}),bo=0,Cd=Yc(),mb={},Bc=function(e){if(!Cd)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Yt(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const tC=He({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:We.any,visible:{type:Boolean,default:void 0}},setup:function(e,t){var i=t.slots,l=Ne(),a=Ne(),o=Ne(),r=new noe({container:Bc(e.getContainer)}),f=function(){var m,N;(m=l.value)===null||m===void 0||(N=m.parentNode)===null||N===void 0||N.removeChild(l.value)},v=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(m||l.value&&!l.value.parentNode){var N=Bc(e.getContainer);return N?(N.appendChild(l.value),!0):!1}return!0},b=function(){return Cd?(l.value||(l.value=document.createElement("div"),v(!0)),Z(),l.value):null},Z=function(){var m=e.wrapperClassName;l.value&&m&&m!==l.value.className&&(l.value.className=m)};Dl(function(){Z(),v()});var p=function(){bo===1&&!Object.keys(mb).length?(_w(),mb=Cu({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):bo||(Cu(mb),mb={},_w(!0))},y=Wl();return Kt(function(){var X=!1;rt([function(){return e.visible},function(){return e.getContainer}],function(m,N){var G=ft(m,2),d=G[0],u=G[1],s=ft(N,2),h=s[0],c=s[1];if(Cd&&Bc(e.getContainer)===document.body&&(d&&!h?bo+=1:X&&(bo-=1)),X){var W=typeof u=="function"&&typeof c=="function";(W?u.toString()!==c.toString():u!==c)&&f(),d&&d!==h&&Cd&&Bc(u)!==r.getContainer()&&r.reLock({container:Bc(u)})}X=!0},{immediate:!0,flush:"post"}),cn(function(){v()||(o.value=At(function(){y.update()}))})}),fn(function(){var X=e.visible,m=e.getContainer;Cd&&Bc(m)===document.body&&(bo=X&&bo?bo-1:bo),f(),At.cancel(o.value)}),function(){var X=e.forceRender,m=e.visible,N=null,G={getOpenCount:function(){return bo},getContainer:b,switchScrollingEffect:p,scrollLocker:r};return(X||m||a.value)&&(N=D(J2,{getContainer:b,ref:a},{default:function(){var u;return(u=i.default)===null||u===void 0?void 0:u.call(i,G)}})),N}}});var ioe=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],loe=["visible","afterClose"],aoe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:pn(Hre(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,t){var i=t.emit,l=t.slots,a=Ne(null),o=function(v){i("handleClick",v)},r=function(v){i("close",v)};return function(){e.afterVisibleChange;var f=e.getContainer,v=e.wrapperClassName,b=e.forceRender,Z=jt(e,ioe),p=null;if(!f)return D("div",{class:v,ref:a},[D(Aw,P(P({},Z),{},{open:e.open,getContainer:function(){return a.value},onClose:r,onHandleClick:o}),l)]);var y=!!l.handler||b;return(y||e.open||a.value)&&(p=D(tC,{visible:e.open,forceRender:y,getContainer:f,wrapperClassName:v},{default:function(m){var N=m.visible,G=m.afterClose,d=jt(m,loe);return D(Aw,P(P(P({ref:a},Z),d),{},{open:N!==void 0?N:e.open,afterVisibleChange:G!==void 0?G:e.afterVisibleChange,onClose:r,onHandleClick:o}),l)}})),p}}});const roe=aoe;var ooe=["width","height","visible","placement","mask","wrapClassName","class"],soe=pi("top","right","bottom","left");pi("default","large");var $w={distance:180},coe=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:We.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:We.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:We.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:We.any,visible:{type:Boolean,default:void 0},width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),zIndex:Number,prefixCls:String,push:We.oneOfType([We.looseBool,{type:Object}]),placement:We.oneOf(soe),keyboard:{type:Boolean,default:void 0},extra:We.any,footer:We.any,footerStyle:{type:Object,default:void 0},level:We.any,levelMove:{type:[Number,Array,Function]},handle:We.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},uoe=He({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:pn(coe(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:$w}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,t){var i=t.emit,l=t.slots,a=t.attrs,o=Ne(!1),r=Ne(!1),f=Ne(null),v=un("parentDrawerOpts",null),b=Nt("drawer",e),Z=b.prefixCls;jn(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),jn(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),jn(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var p=function(){o.value=!0},y=function(){o.value=!1,cn(function(){X()})};hn("parentDrawerOpts",{setPush:p,setPull:y}),Kt(function(){var w=e.visible;w&&v&&v.setPush()}),la(function(){v&&v.setPull()}),rt(function(){return e.visible},function(w){v&&(w?v.setPush():v.setPull())},{flush:"post"});var X=function(){var C,x;(C=f.value)===null||C===void 0||(x=C.domFocus)===null||x===void 0||x.call(C)},m=function(C){i("update:visible",!1),i("close",C)},N=function(C){var x;(x=e.afterVisibleChange)===null||x===void 0||x.call(e,C),i("afterVisibleChange",C)},G=de(function(){return e.destroyOnClose&&!e.visible}),d=function(){var C=G.value;C&&(e.visible||(r.value=!0))},u=de(function(){var w=e.push,C=e.placement,x;return typeof w=="boolean"?x=w?$w.distance:0:x=w.distance,x=parseFloat(String(x||0)),C==="left"||C==="right"?"translateX(".concat(C==="left"?x:-x,"px)"):C==="top"||C==="bottom"?"translateY(".concat(C==="top"?x:-x,"px)"):null}),s=de(function(){var w=e.visible,C=e.mask,x=e.placement,R=e.size,g=R===void 0?"default":R,S=e.width,L=e.height;if(!w&&!C)return{};var V={};if(x==="left"||x==="right"){var Y=g==="large"?736:378;V.width=typeof S>"u"?Y:S,V.width=typeof V.width=="string"?V.width:"".concat(V.width,"px")}else{var T=g==="large"?736:378;V.height=typeof L>"u"?T:L,V.height=typeof V.height=="string"?V.height:"".concat(V.height,"px")}return V}),h=de(function(){var w=e.zIndex,C=e.wrapStyle,x=e.mask,R=e.style,g=x?{}:s.value;return P(P(P({zIndex:w,transform:o.value?u.value:void 0},g),C),R)}),c=function(C){var x=e.closable,R=e.headerStyle,g=ui(l,e,"extra"),S=ui(l,e,"title");return!S&&!x?null:D("div",{class:_e("".concat(C,"-header"),ce({},"".concat(C,"-header-close-only"),x&&!S&&!g)),style:R},[D("div",{class:"".concat(C,"-header-title")},[W(C),S&&D("div",{class:"".concat(C,"-title")},[S])]),g&&D("div",{class:"".concat(C,"-extra")},[g])])},W=function(C){var x,R=e.closable,g=l.closeIcon?(x=l.closeIcon)===null||x===void 0?void 0:x.call(l):e.closeIcon;return R&&D("button",{key:"closer",onClick:m,"aria-label":"Close",class:"".concat(C,"-close")},[g===void 0?D(Br,null,null):g])},M=function(C){var x;if(r.value&&!e.visible)return null;r.value=!1;var R=e.bodyStyle,g=e.drawerStyle,S={},L=G.value;return L&&(S.opacity=0,S.transition="opacity .3s"),D("div",{class:"".concat(C,"-wrapper-body"),style:P(P({},S),g),onTransitionend:d},[c(C),D("div",{key:"body",class:"".concat(C,"-body"),style:R},[(x=l.default)===null||x===void 0?void 0:x.call(l)]),I(C)])},I=function(C){var x=ui(l,e,"footer");if(!x)return null;var R="".concat(C,"-footer");return D("div",{class:R,style:e.footerStyle},[x])};return function(){var w;e.width,e.height;var C=e.visible,x=e.placement,R=e.mask,g=e.wrapClassName,S=e.class,L=jt(e,ooe),V=R?s.value:{},Y=R?"":"no-mask",T=P(P(P(P({},a),dn(L,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),V),{},{onClose:m,afterVisibleChange:N,handler:!1,prefixCls:Z.value,open:C,showMask:R,placement:x,class:_e((w={},ce(w,S,S),ce(w,g,!!g),ce(w,Y,!!Y),w)),style:h.value,ref:f});return D(roe,T,{handler:e.handle?function(){return e.handle}:l.handle,default:function(){return M(Z.value)}})}}});const doe=wi(uoe);var nC=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:We.oneOfType([We.string,We.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:We.any,addonAfter:We.any,prefix:We.any,suffix:We.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}};const U1=nC;var iC=function(){return P(P({},dn(nC(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function lC(n,e,t,i,l){var a;return _e(n,(a={},ce(a,"".concat(n,"-sm"),t==="small"),ce(a,"".concat(n,"-lg"),t==="large"),ce(a,"".concat(n,"-disabled"),i),ce(a,"".concat(n,"-rtl"),l==="rtl"),ce(a,"".concat(n,"-borderless"),!e),a))}var th=function(e){return e!=null&&(Array.isArray(e)?Ri(e).length:!0)};function hoe(n){return th(n.prefix)||th(n.suffix)||th(n.allowClear)}function IZ(n){return th(n.addonBefore)||th(n.addonAfter)}var foe=["text","input"];const aC=He({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:We.oneOf(pi("text","input")),value:We.any,defaultValue:We.any,allowClear:{type:Boolean,default:void 0},element:We.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:We.any,prefix:We.any,addonBefore:We.any,addonAfter:We.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,t){var i=t.slots,l=t.attrs,a=Ne(),o=function(y){var X;if((X=a.value)!==null&&X!==void 0&&X.contains(y.target)){var m=e.triggerFocus;m==null||m()}},r=function(y){var X,m=e.allowClear,N=e.value,G=e.disabled,d=e.readonly,u=e.handleReset,s=e.suffix,h=s===void 0?i.suffix:s;if(!m)return null;var c=!G&&!d&&N,W="".concat(y,"-clear-icon");return D(Co,{onClick:u,onMousedown:function(I){return I.preventDefault()},class:_e((X={},ce(X,"".concat(W,"-hidden"),!c),ce(X,"".concat(W,"-has-suffix"),!!h),X),W),role:"button"},null)},f=function(y){var X,m=e.suffix,N=m===void 0?(X=i.suffix)===null||X===void 0?void 0:X.call(i):m,G=e.allowClear;return N||G?D("span",{class:"".concat(y,"-suffix")},[r(y),N]):null},v=function(y,X){var m,N,G,d=e.focused,u=e.value,s=e.prefix,h=s===void 0?(m=i.prefix)===null||m===void 0?void 0:m.call(i):s,c=e.size,W=e.suffix,M=W===void 0?(N=i.suffix)===null||N===void 0?void 0:N.call(i):W,I=e.disabled,w=e.allowClear,C=e.direction,x=e.readonly,R=e.bordered,g=e.hidden,S=e.addonAfter,L=S===void 0?i.addonAfter:S,V=e.addonBefore,Y=V===void 0?i.addonBefore:V,T=f(y);if(!hoe({prefix:h,suffix:M,allowClear:w}))return wn(X,{value:u});var J=h?D("span",{class:"".concat(y,"-prefix")},[h]):null,U=_e("".concat(y,"-affix-wrapper"),(G={},ce(G,"".concat(y,"-affix-wrapper-focused"),d),ce(G,"".concat(y,"-affix-wrapper-disabled"),I),ce(G,"".concat(y,"-affix-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-affix-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-affix-wrapper-input-with-clear-btn"),M&&w&&u),ce(G,"".concat(y,"-affix-wrapper-rtl"),C==="rtl"),ce(G,"".concat(y,"-affix-wrapper-readonly"),x),ce(G,"".concat(y,"-affix-wrapper-borderless"),!R),ce(G,"".concat(l.class),!IZ({addonAfter:L,addonBefore:Y})&&l.class),G));return D("span",{ref:a,class:U,style:l.style,onMouseup:o,hidden:g},[J,wn(X,{style:null,value:u,class:lC(y,R,c,I)}),T])},b=function(y,X){var m,N,G,d=e.addonBefore,u=d===void 0?(m=i.addonBefore)===null||m===void 0?void 0:m.call(i):d,s=e.addonAfter,h=s===void 0?(N=i.addonAfter)===null||N===void 0?void 0:N.call(i):s,c=e.size,W=e.direction,M=e.hidden;if(!IZ({addonBefore:u,addonAfter:h}))return X;var I="".concat(y,"-group"),w="".concat(I,"-addon"),C=u?D("span",{class:w},[u]):null,x=h?D("span",{class:w},[h]):null,R=_e("".concat(y,"-wrapper"),I,ce({},"".concat(I,"-rtl"),W==="rtl")),g=_e("".concat(y,"-group-wrapper"),(G={},ce(G,"".concat(y,"-group-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-group-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-group-wrapper-rtl"),W==="rtl"),G),l.class);return D("span",{class:g,style:l.style,hidden:M},[D("span",{class:R},[C,wn(X,{style:null}),x])])},Z=function(y,X){var m,N=e.value,G=e.allowClear,d=e.direction,u=e.bordered,s=e.hidden,h=e.addonAfter,c=h===void 0?i.addonAfter:h,W=e.addonBefore,M=W===void 0?i.addonBefore:W;if(!G)return wn(X,{value:N});var I=_e("".concat(y,"-affix-wrapper"),"".concat(y,"-affix-wrapper-textarea-with-clear-btn"),(m={},ce(m,"".concat(y,"-affix-wrapper-rtl"),d==="rtl"),ce(m,"".concat(y,"-affix-wrapper-borderless"),!u),ce(m,"".concat(l.class),!IZ({addonAfter:c,addonBefore:M})&&l.class),m));return D("span",{class:I,style:l.style,hidden:s},[wn(X,{style:null,value:N}),r(y)])};return function(){var p,y=e.prefixCls,X=e.inputType,m=e.element,N=m===void 0?(p=i.element)===null||p===void 0?void 0:p.call(i):m;return X===foe[0]?Z(y,N):b(y,v(y,N))}}});function Yv(n){return typeof n>"u"||n===null?"":String(n)}function nh(n,e,t,i){if(t){var l=e;if(e.type==="click"){Object.defineProperty(l,"target",{writable:!0}),Object.defineProperty(l,"currentTarget",{writable:!0});var a=n.cloneNode(!0);l.target=a,l.currentTarget=a,a.value="",t(l);return}if(i!==void 0){Object.defineProperty(l,"target",{writable:!0}),Object.defineProperty(l,"currentTarget",{writable:!0}),l.target=n,l.currentTarget=n,n.value=i,t(l);return}t(l)}}function rC(n,e){if(n){n.focus(e);var t=e||{},i=t.cursor;if(i){var l=n.value.length;switch(i){case"start":n.setSelectionRange(0,0);break;case"end":n.setSelectionRange(l,l);break;default:n.setSelectionRange(0,l)}}}}const Ai=He({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:U1(),setup:function(e,t){var i=t.slots,l=t.attrs,a=t.expose,o=t.emit,r=Ne(),f=Ne(),v,b=Hi(),Z=Nt("input",e),p=Z.direction,y=Z.prefixCls,X=Z.size,m=Z.autocomplete,N=Ne(e.value===void 0?e.defaultValue:e.value),G=Ne(!1);rt(function(){return e.value},function(){N.value=e.value}),rt(function(){return e.disabled},function(){e.value!==void 0&&(N.value=e.value),e.disabled&&(G.value=!1)});var d=function(){v=setTimeout(function(){var Y;((Y=r.value)===null||Y===void 0?void 0:Y.getAttribute("type"))==="password"&&r.value.hasAttribute("value")&&r.value.removeAttribute("value")})},u=function(Y){rC(r.value,Y)},s=function(){var Y;(Y=r.value)===null||Y===void 0||Y.blur()},h=function(Y,T,J){var U;(U=r.value)===null||U===void 0||U.setSelectionRange(Y,T,J)},c=function(){var Y;(Y=r.value)===null||Y===void 0||Y.select()};a({focus:u,blur:s,input:r,stateValue:N,setSelectionRange:h,select:c});var W=function(Y){var T=e.onFocus;G.value=!0,T==null||T(Y),cn(function(){d()})},M=function(Y){var T=e.onBlur;G.value=!1,T==null||T(Y),b.onFieldBlur(),cn(function(){d()})},I=function(Y){o("update:value",Y.target.value),o("change",Y),o("input",Y),b.onFieldChange()},w=Wl(),C=function(Y,T){N.value!==Y&&(e.value===void 0?N.value=Y:cn(function(){r.value.value!==N.value&&w.update()}),cn(function(){T&&T()}))},x=function(Y){nh(r.value,Y,I),C("",function(){u()})},R=function(Y){var T=Y.target,J=T.value,U=T.composing;if(!((Y.isComposing||U)&&e.lazy||N.value===J)){var K=Y.target.value;nh(r.value,Y,I),C(K,function(){d()})}},g=function(Y){Y.keyCode===13&&o("pressEnter",Y),o("keydown",Y)};Kt(function(){d()}),fn(function(){clearTimeout(v)});var S=function(){var Y,T=e.addonBefore,J=T===void 0?i.addonBefore:T,U=e.addonAfter,K=U===void 0?i.addonAfter:U,H=e.disabled,k=e.bordered,F=k===void 0?!0:k,O=e.valueModifiers,Q=O===void 0?{}:O,oe=e.htmlSize,se=dn(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),he=P(P(P({},se),l),{},{autocomplete:m.value,onChange:R,onInput:R,onFocus:W,onBlur:M,onKeydown:g,class:_e(lC(y.value,F,X.value,H,p.value),ce({},l.class,l.class&&!J&&!K)),ref:r,key:"ant-input",size:oe,id:(Y=se.id)!==null&&Y!==void 0?Y:b.id.value});Q.lazy&&delete he.onInput,he.autofocus||delete he.autofocus;var pe=D("input",dn(he,["size"]),null);return vl(pe,[[Pu]])},L=function(){var Y,T=N.value,J=e.maxlength,U=e.suffix,K=U===void 0?(Y=i.suffix)===null||Y===void 0?void 0:Y.call(i):U,H=e.showCount,k=Number(J)>0;if(K||H){var F=yt(Yv(T)).length,O=null;return Yt(H)==="object"?O=H.formatter({count:F,maxlength:J}):O="".concat(F).concat(k?" / ".concat(J):""),D(ln,null,[!!H&&D("span",{class:_e("".concat(y.value,"-show-count-suffix"),ce({},"".concat(y.value,"-show-count-has-suffix"),!!K))},[O]),K])}return null};return function(){var V=P(P(P({},l),e),{},{prefixCls:y.value,inputType:"input",value:Yv(N.value),handleReset:x,focused:G.value&&!e.disabled});return D(aC,P(P({},dn(V,["element","valueModifiers","suffix","showCount"])),{},{ref:f}),P(P({},i),{},{element:S,suffix:L}))}}}),oC=He({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,t){var i=t.slots,l=Nt("input-group",e),a=l.prefixCls,o=l.direction,r=de(function(){var f,v=a.value;return f={},ce(f,"".concat(v),!0),ce(f,"".concat(v,"-lg"),e.size==="large"),ce(f,"".concat(v,"-sm"),e.size==="small"),ce(f,"".concat(v,"-compact"),e.compact),ce(f,"".concat(v,"-rtl"),o.value==="rtl"),f});return function(){var f;return D("span",{class:r.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(f=i.default)===null||f===void 0?void 0:f.call(i)])}}});var YZ=/iPhone/i,qw=/iPod/i,eg=/iPad/i,wZ=/\bAndroid(?:.+)Mobile\b/i,tg=/Android/i,Ac=/\bAndroid(?:.+)SD4930UR\b/i,pb=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,mo=/Windows Phone/i,ng=/\bWindows(?:.+)ARM\b/i,ig=/BlackBerry/i,lg=/BB10/i,ag=/Opera Mini/i,rg=/\b(CriOS|Chrome)(?:.+)Mobile/i,og=/Mobile(?:.+)Firefox\b/i;function In(n,e){return n.test(e)}function sg(n){var e=n||(typeof navigator<"u"?navigator.userAgent:""),t=e.split("[FBAN");if(typeof t[1]<"u"){var i=t,l=ft(i,1);e=l[0]}if(t=e.split("Twitter"),typeof t[1]<"u"){var a=t,o=ft(a,1);e=o[0]}var r={apple:{phone:In(YZ,e)&&!In(mo,e),ipod:In(qw,e),tablet:!In(YZ,e)&&In(eg,e)&&!In(mo,e),device:(In(YZ,e)||In(qw,e)||In(eg,e))&&!In(mo,e)},amazon:{phone:In(Ac,e),tablet:!In(Ac,e)&&In(pb,e),device:In(Ac,e)||In(pb,e)},android:{phone:!In(mo,e)&&In(Ac,e)||!In(mo,e)&&In(wZ,e),tablet:!In(mo,e)&&!In(Ac,e)&&!In(wZ,e)&&(In(pb,e)||In(tg,e)),device:!In(mo,e)&&(In(Ac,e)||In(pb,e)||In(wZ,e)||In(tg,e))||In(/\bokhttp\b/i,e)},windows:{phone:In(mo,e),tablet:In(ng,e),device:In(mo,e)||In(ng,e)},other:{blackberry:In(ig,e),blackberry10:In(lg,e),opera:In(ag,e),firefox:In(og,e),chrome:In(rg,e),device:In(ig,e)||In(lg,e)||In(ag,e)||In(og,e)||In(rg,e)},any:null,phone:null,tablet:null};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}var boe=P(P({},sg()),{},{isMobile:sg});const moe=boe;var poe=["disabled","loading","addonAfter","suffix"];const sC=He({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:P(P({},U1()),{},{inputPrefixCls:String,enterButton:We.any,onSearch:{type:Function}}),setup:function(e,t){var i=t.slots,l=t.attrs,a=t.expose,o=t.emit,r=Ne(),f=function(){var s;(s=r.value)===null||s===void 0||s.focus()},v=function(){var s;(s=r.value)===null||s===void 0||s.blur()};a({focus:f,blur:v});var b=function(s){o("update:value",s.target.value),s&&s.target&&s.type==="click"&&o("search",s.target.value,s),o("change",s)},Z=function(s){var h;document.activeElement===((h=r.value)===null||h===void 0?void 0:h.input)&&s.preventDefault()},p=function(s){var h;o("search",(h=r.value)===null||h===void 0?void 0:h.stateValue,s),moe.tablet||r.value.focus()},y=Nt("input-search",e),X=y.prefixCls,m=y.getPrefixCls,N=y.direction,G=y.size,d=de(function(){return m("input",e.inputPrefixCls)});return function(){var u,s,h,c,W,M=e.disabled,I=e.loading,w=e.addonAfter,C=w===void 0?(u=i.addonAfter)===null||u===void 0?void 0:u.call(i):w,x=e.suffix,R=x===void 0?(s=i.suffix)===null||s===void 0?void 0:s.call(i):x,g=jt(e,poe),S=e.enterButton,L=S===void 0?(h=(c=i.enterButton)===null||c===void 0?void 0:c.call(i))!==null&&h!==void 0?h:!1:S;L=L||L==="";var V=typeof L=="boolean"?D(P0,null,null):null,Y="".concat(X.value,"-button"),T=Array.isArray(L)?L[0]:L,J,U=T.type&&CW(T.type)&&T.type.__ANT_BUTTON;if(U||T.tagName==="button")J=wn(T,P({onMousedown:Z,onClick:p,key:"enterButton"},U?{class:Y,size:G.value}:{}),!1);else{var K=V&&!L;J=D(qi,{class:Y,type:L?"primary":void 0,size:G.value,disabled:M,key:"enterButton",onMousedown:Z,onClick:p,loading:I,icon:K?V:null},{default:function(){return[K?null:V||L]}})}C&&(J=[J,C]);var H=_e(X.value,(W={},ce(W,"".concat(X.value,"-rtl"),N.value==="rtl"),ce(W,"".concat(X.value,"-").concat(G.value),!!G.value),ce(W,"".concat(X.value,"-with-button"),!!L),W),l.class);return D(Ai,P(P(P({ref:r},dn(g,["onUpdate:value","onSearch","enterButton"])),l),{},{onPressEnter:p,size:G.value,prefixCls:d.value,addonAfter:J,suffix:R,onChange:b,class:H,disabled:M}),i)}}});var yoe=` +`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),l=new RegExp("(?:^"+t+"$)|(?:^"+a+"$)"),o=new RegExp("^"+t+"$"),r=new RegExp("^"+a+"$"),f=function(s){return s&&s.exact?l:new RegExp("(?:"+e(s)+t+e(s)+")|(?:"+e(s)+a+e(s)+")","g")};f.v4=function(u){return u&&u.exact?o:new RegExp(""+e(u)+t+e(u),"g")},f.v6=function(u){return u&&u.exact?r:new RegExp(""+e(u)+a+e(u),"g")};var v="(?:(?:[a-z]+:)?//)",b="(?:\\S+(?::\\S*)?@)?",Z=f.v4().source,p=f.v6().source,y="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",X="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",m="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",N="(?::\\d{2,5})?",G='(?:[/?#][^\\s"]*)?',d="(?:"+v+"|www\\.)"+b+"(?:localhost|"+Z+"|"+p+"|"+y+X+m+")"+N+G;return fb=new RegExp("(?:^"+d+"$)","i"),fb},Sw={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},xd={integer:function(e){return xd.number(e)&&parseInt(e,10)===e},float:function(e){return xd.number(e)&&!xd.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!xd.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Sw.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(Xle())},hex:function(e){return typeof e=="string"&&!!e.match(Sw.hex)}},Nle=function(e,t,i,a,l){if(e.required&&t===void 0){L9(e,t,i,a,l);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],r=e.type;o.indexOf(r)>-1?xd[r](t)||a.push(ka(l.messages.types[r],e.fullField,e.type)):r&&typeof t!==e.type&&a.push(ka(l.messages.types[r],e.fullField,e.type))},Mle=function(e,t,i,a,l){var o=typeof e.len=="number",r=typeof e.min=="number",f=typeof e.max=="number",v=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=t,Z=null,p=typeof t=="number",y=typeof t=="string",X=Array.isArray(t);if(p?Z="number":y?Z="string":X&&(Z="array"),!Z)return!1;X&&(b=t.length),y&&(b=t.replace(v,"_").length),o?b!==e.len&&a.push(ka(l.messages[Z].len,e.fullField,e.len)):r&&!f&&be.max?a.push(ka(l.messages[Z].max,e.fullField,e.max)):r&&f&&(be.max)&&a.push(ka(l.messages[Z].range,e.fullField,e.min,e.max))},Qc="enum",Ile=function(e,t,i,a,l){e[Qc]=Array.isArray(e[Qc])?e[Qc]:[],e[Qc].indexOf(t)===-1&&a.push(ka(l.messages[Qc],e.fullField,e[Qc].join(", ")))},Yle=function(e,t,i,a,l){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(t)||a.push(ka(l.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},Pn={required:L9,whitespace:Gle,type:Nle,range:Mle,enum:Ile,pattern:Yle},wle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l,"string"),sl(t,"string")||(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l),Pn.pattern(e,t,a,o,l),e.whitespace===!0&&Pn.whitespace(e,t,a,o,l))}i(o)},gle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Vle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t===""&&(t=void 0),sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Lle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},Rle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t)||Pn.type(e,t,a,o,l)}i(o)},Tle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},xle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Cle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(t==null&&!e.required)return i();Pn.required(e,t,a,o,l,"array"),t!=null&&(Pn.type(e,t,a,o,l),Pn.range(e,t,a,o,l))}i(o)},Sle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn.type(e,t,a,o,l)}i(o)},zle="enum",kle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l),t!==void 0&&Pn[zle](e,t,a,o,l)}i(o)},Fle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"string")&&!e.required)return i();Pn.required(e,t,a,o,l),sl(t,"string")||Pn.pattern(e,t,a,o,l)}i(o)},Jle=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t,"date")&&!e.required)return i();if(Pn.required(e,t,a,o,l),!sl(t,"date")){var f;t instanceof Date?f=t:f=new Date(t),Pn.type(e,f,a,o,l),f&&Pn.range(e,f.getTime(),a,o,l)}}i(o)},Dle=function(e,t,i,a,l){var o=[],r=Array.isArray(t)?"array":typeof t;Pn.required(e,t,a,o,l,r),i(o)},bZ=function(e,t,i,a,l){var o=e.type,r=[],f=e.required||!e.required&&a.hasOwnProperty(e.field);if(f){if(sl(t,o)&&!e.required)return i();Pn.required(e,t,a,r,l,o),sl(t,o)||Pn.type(e,t,a,r,l)}i(r)},Ole=function(e,t,i,a,l){var o=[],r=e.required||!e.required&&a.hasOwnProperty(e.field);if(r){if(sl(t)&&!e.required)return i();Pn.required(e,t,a,o,l)}i(o)},qd={string:wle,method:gle,number:Vle,boolean:Lle,regexp:Rle,integer:Tle,float:xle,array:Cle,object:Sle,enum:kle,pattern:Fle,date:Jle,url:bZ,hex:bZ,email:bZ,required:Dle,any:Ole};function Gv(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Xv=Gv(),Kh=function(){function n(t){this.rules=null,this._messages=Xv,this.define(t)}var e=n.prototype;return e.define=function(i){var a=this;if(!i)throw new Error("Cannot configure a schema with no rules");if(typeof i!="object"||Array.isArray(i))throw new Error("Rules must be an object");this.rules={},Object.keys(i).forEach(function(l){var o=i[l];a.rules[l]=Array.isArray(o)?o:[o]})},e.messages=function(i){return i&&(this._messages=Cw(Gv(),i)),this._messages},e.validate=function(i,a,l){var o=this;a===void 0&&(a={}),l===void 0&&(l=function(){});var r=i,f=a,v=l;if(typeof f=="function"&&(v=f,f={}),!this.rules||Object.keys(this.rules).length===0)return v&&v(null,r),Promise.resolve(r);function b(m){var N=[],G={};function d(s){if(Array.isArray(s)){var h;N=(h=N).concat.apply(h,s)}else N.push(s)}for(var u=0;u3&&arguments[3]!==void 0?arguments[3]:!1;return e.length&&i&&t===void 0&&!R9(n,e.slice(0,-1))?n:T9(n,e,t,i)}function Nv(n){return Zs(n)}function Ule(n,e){var t=R9(n,e);return t}function Ele(n,e,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=jle(n,e,t,i);return a}function Kle(n,e){return n&&n.some(function(t){return Ple(t,e)})}function zw(n){return Yt(n)==="object"&&n!==null&&Object.getPrototypeOf(n)===Object.prototype}function x9(n,e){var t=Array.isArray(n)?yt(n):P({},n);return e&&Object.keys(e).forEach(function(i){var a=t[i],l=e[i],o=zw(a)&&zw(l);t[i]=o?x9(a,l||{}):l}),t}function Hle(n){for(var e=arguments.length,t=new Array(e>1?e-1:0),i=1;i-1?a[l?e[o]:o]:void 0}}var uae=Math.max;function dae(n,e,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:e1(t);return a<0&&(a=uae(i+a,0)),Kx(n,J1(e),a)}var hae=cae(dae);const fae=hae;var k9=Symbol("formContextKey"),F9=function(e){hn(k9,e)},D1=function(){return un(k9,{name:de(function(){}),labelAlign:de(function(){return"right"}),vertical:de(function(){return!1}),addField:function(t,i){},removeField:function(t){},model:de(function(){}),rules:de(function(){}),colon:de(function(){}),labelWrap:de(function(){}),labelCol:de(function(){}),requiredMark:de(function(){return!1}),validateTrigger:de(function(){}),onValidate:function(){},validateMessages:de(function(){return dp})})},J9=Symbol("formItemPrefixContextKey"),bae=function(e){hn(J9,e)},mae=function(){return un(J9,{prefixCls:de(function(){return""})})},O1=function(e,t){var i,a,l,o,r=t.slots,f=t.emit,v=t.attrs,b=P(P({},e),v),Z=b.prefixCls,p=b.htmlFor,y=b.labelCol,X=b.labelAlign,m=b.colon,N=b.required,G=b.requiredMark,d=Qr("Form"),u=ft(d,1),s=u[0],h=(i=e.label)!==null&&i!==void 0?i:(a=r.label)===null||a===void 0?void 0:a.call(r);if(!h)return null;var c=D1(),W=c.vertical,M=c.labelAlign,I=c.labelCol,w=c.labelWrap,C=c.colon,x=y||(I==null?void 0:I.value)||{},R=X||(M==null?void 0:M.value),g="".concat(Z,"-item-label"),S=_e(g,R==="left"&&"".concat(g,"-left"),x.class,ce({},"".concat(g,"-wrap"),!!w.value)),L=h,V=m===!0||(C==null?void 0:C.value)!==!1&&m!==!1,Y=V&&!W.value;if(Y&&typeof h=="string"&&h.trim()!==""&&(L=h.replace(/[:|:]\s*$/,"")),L=D(ln,null,[L,(l=r.tooltip)===null||l===void 0?void 0:l.call(r,{class:"".concat(Z,"-item-tooltip")})]),G==="optional"&&!N){var T,J;L=D(ln,null,[L,D("span",{class:"".concat(Z,"-item-optional")},[((T=s.value)===null||T===void 0?void 0:T.optional)||((J=Mr.Form)===null||J===void 0?void 0:J.optional)])])}var U=_e((o={},ce(o,"".concat(Z,"-item-required"),N),ce(o,"".concat(Z,"-item-required-mark-optional"),G==="optional"),ce(o,"".concat(Z,"-item-no-colon"),!V),o));return D(ip,P(P({},x),{},{class:S}),{default:function(){return[D("label",{for:p,class:U,title:typeof h=="string"?h:"",onClick:function(k){return f("click",k)}},[L])]}})};O1.displayName="FormItemLabel";O1.inheritAttrs=!1;const pae=O1,yae=He({compatConfig:{MODE:3},name:"ErrorList",props:["errors","help","onDomErrorVisibleChange","helpStatus","warnings"],setup:function(e){var t=Nt("",e),i=t.prefixCls,a=mae(),l=a.prefixCls,o=a.status,r=de(function(){return"".concat(l.value,"-item-explain")}),f=de(function(){return!!(e.errors&&e.errors.length)}),v=Ne(o.value);return rt([f,o],function(){f.value&&(v.value=o.value)}),function(){var b,Z,p=Jh("".concat(i.value,"-show-help-item")),y=jW("".concat(i.value,"-show-help-item"),p);return y.class=r.value,(b=e.errors)!==null&&b!==void 0&&b.length?D(TW,P(P({},y),{},{tag:"div"}),{default:function(){return[(Z=e.errors)===null||Z===void 0?void 0:Z.map(function(m,N){return D("div",{key:N,role:"alert",class:v.value?"".concat(r.value,"-").concat(v.value):""},[m])})]}}):null}}});var Zae={success:Ch,warning:xh,error:Co,validating:Yr},vae=He({compatConfig:{MODE:3},slots:["help","extra","errors"],inheritAttrs:!1,props:["prefixCls","errors","hasFeedback","onDomErrorVisibleChange","wrapperCol","help","extra","status"],setup:function(e,t){var i=t.slots,a=D1(),l=a.wrapperCol,o=P({},a);return delete o.labelCol,delete o.wrapperCol,F9(o),bae({prefixCls:de(function(){return e.prefixCls}),status:de(function(){return e.status})}),function(){var r,f,v,b=e.prefixCls,Z=e.wrapperCol,p=e.help,y=p===void 0?(r=i.help)===null||r===void 0?void 0:r.call(i):p,X=e.errors,m=X===void 0?(f=i.errors)===null||f===void 0?void 0:f.call(i):X,N=e.hasFeedback,G=e.status,d=e.extra,u=d===void 0?(v=i.extra)===null||v===void 0?void 0:v.call(i):d,s="".concat(b,"-item"),h=Z||(l==null?void 0:l.value)||{},c=_e("".concat(s,"-control"),h.class),W=G&&Zae[G];return D(ip,P(P({},h),{},{class:c}),{default:function(){var I;return D(ln,null,[D("div",{class:"".concat(s,"-control-input")},[D("div",{class:"".concat(s,"-control-input-content")},[(I=i.default)===null||I===void 0?void 0:I.call(i)]),N&&W?D("span",{class:"".concat(s,"-children-icon")},[D(W,null,null)]):null]),D(yae,{errors:m,help:y,class:"".concat(s,"-explain-connected")},null),u?D("div",{class:"".concat(s,"-extra")},[u]):null])}})}}});const Wae=vae;function Gae(n){var e=Gn(n.value.slice()),t=null;return qt(function(){clearTimeout(t),t=setTimeout(function(){e.value=n.value},n.value.length?0:10)}),e}pi("success","warning","error","validating","");function mZ(n,e,t){var i=n,a=e,l=0;try{for(var o=a.length;l0&&arguments[0]!==void 0?arguments[0]:[];if(c.value==="validating"){var oe=Q.filter(function(se){return se&&se.errors.length});c.value=oe.length?"error":"success",Z.value=oe.map(function(se){return se.errors}),v.onValidate(b.value,!Z.value.length,Z.value.length?on(Z.value[0]):null)}}),O}},I=function(){M({triggerName:"blur"})},w=function(){if(p.value){p.value=!1;return}M({triggerName:"change"})},C=function(){c.value=e.validateStatus,p.value=!1,Z.value=[]},x=function(){c.value=e.validateStatus,p.value=!0,Z.value=[];var J=v.model.value||{},U=G.value,K=mZ(J,X.value,!0);Array.isArray(U)?K.o[K.k]=[].concat(d.value):K.o[K.k]=d.value,cn(function(){p.value=!1})},R=de(function(){return e.htmlFor===void 0?m.value:e.htmlFor}),g=function(){var J=R.value;if(!(!J||!y.value)){var U=y.value.$el.querySelector('[id="'.concat(J,'"]'));U&&U.focus&&U.focus()}};l({onFieldBlur:I,onFieldChange:w,clearValidate:C,resetField:x}),i6({id:m,onFieldBlur:function(){e.autoLink&&I()},onFieldChange:function(){e.autoLink&&w()},clearValidate:C},de(function(){return!!(e.autoLink&&v.model.value&&b.value)}));var S=!1;rt(b,function(T){T?S||(S=!0,v.addField(o,{fieldValue:G,fieldId:m,fieldName:b,resetField:x,clearValidate:C,namePath:X,validateRules:M,rules:s})):(S=!1,v.removeField(o))},{immediate:!0}),fn(function(){v.removeField(o)});var L=Gae(Z),V=de(function(){return e.validateStatus!==void 0?e.validateStatus:L.value.length?"error":c.value}),Y=de(function(){var T;return T={},ce(T,"".concat(f.value,"-item"),!0),ce(T,"".concat(f.value,"-item-has-feedback"),V.value&&e.hasFeedback),ce(T,"".concat(f.value,"-item-has-success"),V.value==="success"),ce(T,"".concat(f.value,"-item-has-warning"),V.value==="warning"),ce(T,"".concat(f.value,"-item-has-error"),V.value==="error"),ce(T,"".concat(f.value,"-item-is-validating"),V.value==="validating"),ce(T,"".concat(f.value,"-item-hidden"),e.hidden),T});return function(){var T,J;if(e.noStyle)return(T=i.default)===null||T===void 0?void 0:T.call(i);var U=(J=e.help)!==null&&J!==void 0?J:i.help?Ri(i.help()):null;return D(V1,P(P({},a),{},{class:[Y.value,U!=null||L.value.length?"".concat(f.value,"-item-with-help"):"",a.class],key:"row"}),{default:function(){var H,k,F,O;return D(ln,null,[D(pae,P(P({},e),{},{htmlFor:R.value,required:h.value,requiredMark:v.requiredMark.value,prefixCls:f.value,onClick:g,label:(H=e.label)!==null&&H!==void 0?H:(k=i.label)===null||k===void 0?void 0:k.call(i)}),null),D(Wae,P(P({},e),{},{errors:U!=null?Zs(U):L.value,prefixCls:f.value,status:V.value,ref:y,help:U,extra:(F=e.extra)!==null&&F!==void 0?F:(O=i.extra)===null||O===void 0?void 0:O.call(i)}),{default:i.default})])}})}}});function O9(n){var e=!1,t=n.length,i=[];return n.length?new Promise(function(a,l){n.forEach(function(o,r){o.catch(function(f){return e=!0,f}).then(function(f){t-=1,i[r]=f,!(t>0)&&(e&&l(i),a(i))})})}):Promise.resolve([])}function Fw(n){return typeof n=="object"&&n!=null&&n.nodeType===1}function Jw(n,e){return(!e||n!=="hidden")&&n!=="visible"&&n!=="clip"}function pZ(n,e){if(n.clientHeighte||l>n&&o=e&&r>=t?l-n-i:o>e&&rt?o-e+a:0}var Dw=function(n,e){var t=window,i=e.scrollMode,a=e.block,l=e.inline,o=e.boundary,r=e.skipOverflowHiddenElements,f=typeof o=="function"?o:function(E){return E!==o};if(!Fw(n))throw new TypeError("Invalid target");for(var v,b,Z=document.scrollingElement||document.documentElement,p=[],y=n;Fw(y)&&f(y);){if((y=(b=(v=y).parentElement)==null?v.getRootNode().host||null:b)===Z){p.push(y);break}y!=null&&y===document.body&&pZ(y)&&!pZ(document.documentElement)||y!=null&&pZ(y,r)&&p.push(y)}for(var X=t.visualViewport?t.visualViewport.width:innerWidth,m=t.visualViewport?t.visualViewport.height:innerHeight,N=window.scrollX||pageXOffset,G=window.scrollY||pageYOffset,d=n.getBoundingClientRect(),u=d.height,s=d.width,h=d.top,c=d.right,W=d.bottom,M=d.left,I=a==="start"||a==="nearest"?h:a==="end"?W:h+u/2,w=l==="center"?M+s/2:l==="end"?c:M,C=[],x=0;x=0&&M>=0&&W<=m&&c<=X&&h>=V&&W<=T&&M>=J&&c<=Y)return C;var U=getComputedStyle(R),K=parseInt(U.borderLeftWidth,10),H=parseInt(U.borderTopWidth,10),k=parseInt(U.borderRightWidth,10),F=parseInt(U.borderBottomWidth,10),O=0,Q=0,oe="offsetWidth"in R?R.offsetWidth-R.clientWidth-K-k:0,se="offsetHeight"in R?R.offsetHeight-R.clientHeight-H-F:0,he="offsetWidth"in R?R.offsetWidth===0?0:L/R.offsetWidth:0,pe="offsetHeight"in R?R.offsetHeight===0?0:S/R.offsetHeight:0;if(Z===R)O=a==="start"?I:a==="end"?I-m:a==="nearest"?bb(G,G+m,m,H,F,G+I,G+I+u,u):I-m/2,Q=l==="start"?w:l==="center"?w-X/2:l==="end"?w-X:bb(N,N+X,X,K,k,N+w,N+w+s,s),O=Math.max(0,O+G),Q=Math.max(0,Q+N);else{O=a==="start"?I-V-H:a==="end"?I-T+F+se:a==="nearest"?bb(V,T,S,H,F+se,I,I+u,u):I-(V+S/2)+se/2,Q=l==="start"?w-J-K:l==="center"?w-(J+L/2)+oe/2:l==="end"?w-Y+k+oe:bb(J,Y,L,K,k+oe,w,w+s,s);var re=R.scrollLeft,_=R.scrollTop;I+=_-(O=Math.max(0,Math.min(_+O/pe,R.scrollHeight-S/pe+se))),w+=re-(Q=Math.max(0,Math.min(re+Q/he,R.scrollWidth-L/he+oe)))}C.push({el:R,top:O,left:Q})}return C};function j9(n){return n===Object(n)&&Object.keys(n).length!==0}function Iae(n,e){e===void 0&&(e="auto");var t="scrollBehavior"in document.body.style;n.forEach(function(i){var a=i.el,l=i.top,o=i.left;a.scroll&&t?a.scroll({top:l,left:o,behavior:e}):(a.scrollTop=l,a.scrollLeft=o)})}function Yae(n){return n===!1?{block:"end",inline:"nearest"}:j9(n)?n:{block:"start",inline:"nearest"}}function wae(n,e){var t=n.isConnected||n.ownerDocument.documentElement.contains(n);if(j9(e)&&typeof e.behavior=="function")return e.behavior(t?Dw(n,e):[]);if(t){var i=Yae(e);return Iae(Dw(n,i),i.behavior)}}var gae=Math.min;function Vae(n,e,t){for(var i=t?Px:Hx,a=n[0].length,l=n.length,o=l,r=Array(l),f=1/0,v=[];o--;){var b=n[o];o&&e&&(b=A0(b,F0(e))),f=gae(b.length,f),r[o]=!t&&(e||a>=120&&b.length>=120)?new Vu(o&&b):void 0}b=n[0];var Z=-1,p=r[0];e:for(;++Z1),l}),Eh(n,Y9(n),t),i&&(t=$d(t,Jae|Dae|Oae,Fae));for(var a=e.length;a--;)kae(t,e[a]);return t});const Uae=jae;function Ow(n){var e=!1;return n&&n.length&&n.every(function(t){return t.required?(e=!0,!1):!0}),e}function jw(n){return n==null?[]:Array.isArray(n)?n:[n]}function yZ(n,e,t){var i=n;e=e.replace(/\[(\w+)\]/g,".$1"),e=e.replace(/^\./,"");for(var a=e.split("."),l=0,o=a.length;l1&&arguments[1]!==void 0?arguments[1]:Ne({}),t=arguments.length>2?arguments[2]:void 0,i=Ub(mi(n)),a=zn({}),l=Gn([]),o=function(s){Xn(mi(n),P(P({},Ub(i)),s)),cn(function(){Object.keys(a).forEach(function(h){a[h]={autoLink:!1,required:Ow(mi(e)[h])}})})},r=function(){var s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],h=arguments.length>1?arguments[1]:void 0;return h.length?s.filter(function(c){var W=jw(c.trigger||"change");return Cae(W,h).length}):s},f=null,v=function(s){for(var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=arguments.length>2?arguments[2]:void 0,W=[],M={},I=function(S){var L=s[S],V=yZ(mi(n),L,c);if(!V.isValid)return"continue";M[L]=V.v;var Y=r(mi(e)[L],jw(h&&h.trigger));Y.length&&W.push(b(L,V.v,Y,h||{}).then(function(){return{name:L,errors:[],warnings:[]}}).catch(function(T){var J=[],U=[];return T.forEach(function(K){var H=K.rule.warningOnly,k=K.errors;H?U.push.apply(U,yt(k)):J.push.apply(J,yt(k))}),J.length?Promise.reject({name:L,errors:J,warnings:U}):{name:L,errors:J,warnings:U}}))},w=0;w3&&arguments[3]!==void 0?arguments[3]:{},M=C9([s],h,c,P({validateMessages:dp},W),!!W.validateFirst);return a[s]?(a[s].validateStatus="validating",M.catch(function(I){return I}).then(function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];if(a[s].validateStatus==="validating"){var w,C=I.filter(function(x){return x&&x.errors.length});a[s].validateStatus=C.length?"error":"success",a[s].help=C.length?C.map(function(x){return x.errors}):null,t==null||(w=t.onValidate)===null||w===void 0||w.call(t,s,!C.length,C.length?on(a[s].help[0]):null)}}),M):M.catch(function(I){return I})},Z=function(s,h){var c=[],W=!0;s?Array.isArray(s)?c=s:c=[s]:(W=!1,c=l.value);var M=v(c,h||{},W);return M.catch(function(I){return I}),M},p=function(s){var h=[];s?Array.isArray(s)?h=s:h=[s]:h=l.value,h.forEach(function(c){a[c]&&Xn(a[c],{validateStatus:"",help:null})})},y=function(s){for(var h={autoLink:!1},c=[],W=Array.isArray(s)?s:[s],M=0;M-1}):Object.values(s)},M=function(Y){if(!e.model){Ci(!1,"Form","model is required for resetFields to work.");return}W(Y).forEach(function(T){T.resetField()})},I=function(Y){W(Y).forEach(function(T){T.clearValidate()})},w=function(Y){var T=e.scrollToFirstError;if(i("finishFailed",Y),T&&Y.errorFields.length){var J={};Yt(T)==="object"&&(J=T),x(Y.errorFields[0].name,J)}},C=function(){return S.apply(void 0,arguments)},x=function(Y){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},J=W(Y?[Y]:void 0);if(J.length){var U=J[0].fieldId.value,K=U?document.getElementById(U):null;K&&wae(K,P({scrollMode:"if-needed",block:"nearest"},T))}},R=function(){var Y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(Y===!0){var T=[];return Object.values(s).forEach(function(J){var U=J.namePath;T.push(U.value)}),kw(e.model,T)}else return kw(e.model,Y)},g=function(Y,T){if(Ci(!(Y instanceof Function),"Form","validateFields/validateField/validate not support callback, please use promise instead"),!e.model)return Ci(!1,"Form","model is required for validateFields to work."),Promise.reject("Form `model` is required for validateFields to work.");var J=!!Y,U=J?Zs(Y).map(Nv):[],K=[];Object.values(s).forEach(function(F){var O;if(J||U.push(F.namePath.value),!!((O=F.rules)!==null&&O!==void 0&&O.value.length)){var Q=F.namePath.value;if(!J||Kle(U,Q)){var oe=F.validateRules(P({validateMessages:G.value},T));K.push(oe.then(function(){return{name:Q,errors:[],warnings:[]}}).catch(function(se){var he=[],pe=[];return se.forEach(function(re){var _=re.rule.warningOnly,E=re.errors;_?pe.push.apply(pe,yt(E)):he.push.apply(he,yt(E))}),he.length?Promise.reject({name:Q,errors:he,warnings:pe}):{name:Q,errors:he,warnings:pe}}))}}});var H=O9(K);u.value=H;var k=H.then(function(){return u.value===H?Promise.resolve(R(U)):Promise.reject([])}).catch(function(F){var O=F.filter(function(Q){return Q&&Q.errors.length});return Promise.reject({values:R(U),errorFields:O,outOfDate:u.value!==H})});return k.catch(function(F){return F}),k},S=function(){return g.apply(void 0,arguments)},L=function(Y){if(Y.preventDefault(),Y.stopPropagation(),i("submit",Y),e.model){var T=g();T.then(function(J){i("finish",J)}).catch(function(J){w(J)})}};return l({resetFields:M,clearValidate:I,validateFields:g,getFieldsValue:R,validate:C,scrollToField:x}),F9({model:de(function(){return e.model}),name:de(function(){return e.name}),labelAlign:de(function(){return e.labelAlign}),labelCol:de(function(){return e.labelCol}),labelWrap:de(function(){return e.labelWrap}),wrapperCol:de(function(){return e.wrapperCol}),vertical:de(function(){return e.layout==="vertical"}),colon:X,requiredMark:y,validateTrigger:de(function(){return e.validateTrigger}),rules:de(function(){return e.rules}),addField:h,removeField:c,onValidate:function(Y,T,J){i("validate",Y,T,J)},validateMessages:G}),rt(function(){return e.rules},function(){e.validateOnRuleChange&&g()}),function(){var V;return D("form",P(P({},o),{},{onSubmit:L,class:[d.value,o.class]}),[(V=a.default)===null||V===void 0?void 0:V.call(a)])}}});const cs=Pae;cs.useInjectFormItemContext=Hi;cs.ItemRest=Sm;cs.install=function(n){return n.component(cs.name,cs),n.component(cs.Item.name,cs.Item),n.component(Sm.name,Sm),n};var Qae=["notFoundContent","expandIcon","multiple","bordered","allowClear","choiceTransitionName","transitionName","id"];function Bae(n,e,t){var i=n.toLowerCase().split(e).reduce(function(o,r,f){return f===0?[r]:[].concat(yt(o),[e,r])},[]),a=[],l=0;return i.forEach(function(o,r){var f=l+o.length,v=n.slice(l,f);l=f,r%2===1&&(v=D("span",{class:"".concat(t,"-menu-item-keyword"),key:"seperator"},[v])),a.push(v)}),a}var Aae=function(e){var t=e.inputValue,i=e.path,a=e.prefixCls,l=e.fieldNames,o=[],r=t.toLowerCase();return i.forEach(function(f,v){v!==0&&o.push(" / ");var b=f[l.label],Z=Yt(b);(Z==="string"||Z==="number")&&(b=Bae(String(b),r,a)),o.push(b)}),o};function _ae(){return P(P({},dn(N9(),["customSlots","checkable","options"])),{},{multiple:{type:Boolean,default:void 0},size:String,bordered:{type:Boolean,default:void 0},placement:{type:String},suffixIcon:We.any,options:Array,"onUpdate:value":Function})}var $ae=He({compatConfig:{MODE:3},name:"ACascader",inheritAttrs:!1,props:pn(_ae(),{bordered:!0,choiceTransitionName:"",allowClear:!0}),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.slots,o=t.emit,r=Hi(),f=Nt("cascader",e),v=f.prefixCls,b=f.rootPrefixCls,Z=f.getPrefixCls,p=f.direction,y=f.getPopupContainer,X=f.renderEmpty,m=f.size,N=de(function(){return Z("select",e.prefixCls)}),G=de(function(){return p.value==="rtl"}),d=de(function(){if(!e.showSearch)return e.showSearch;var I={render:Aae};return Yt(e.showSearch)==="object"&&(I=P(P({},I),e.showSearch)),I}),u=de(function(){return _e(e.dropdownClassName||e.popupClassName,"".concat(v.value,"-dropdown"),ce({},"".concat(v.value,"-dropdown-rtl"),G.value))}),s=Ne();a({focus:function(){var w;(w=s.value)===null||w===void 0||w.focus()},blur:function(){var w;(w=s.value)===null||w===void 0||w.blur()}});var h=function(){for(var w=arguments.length,C=new Array(w),x=0;x=n.length?{done:!0}:{done:!1,value:n[i++]}},e:function(v){throw v},f:a}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var l=!0,o=!1,r;return{s:function(){t=t.call(n)},n:function(){var v=t.next();return l=v.done,v},e:function(v){o=!0,r=v},f:function(){try{!l&&t.return!=null&&t.return()}finally{if(o)throw r}}}}const qm=He({compatConfig:{MODE:3},name:"ACheckboxGroup",props:tre(),setup:function(e,t){var i=t.slots,a=t.emit,l=t.expose,o=Hi(),r=Nt("checkbox",e),f=r.prefixCls,v=r.direction,b=Ne((e.value===void 0?e.defaultValue:e.value)||[]);rt(function(){return e.value},function(){b.value=e.value||[]});var Z=de(function(){return e.options.map(function(d){return typeof d=="string"||typeof d=="number"?{label:d,value:d}:d})}),p=Ne(Symbol()),y=Ne(new Map),X=function(u){y.value.delete(u),p.value=Symbol()},m=function(u,s){y.value.set(u,s),p.value=Symbol()},N=Ne(new Map);rt(p,function(){var d=new Map,u=rre(y.value.values()),s;try{for(u.s();!(s=u.n()).done;){var h=s.value;d.set(h,!0)}}catch(c){u.e(c)}finally{u.f()}N.value=d});var G=function(u){var s=b.value.indexOf(u.value),h=yt(b.value);s===-1?h.push(u.value):h.splice(s,1),e.value===void 0&&(b.value=h);var c=h.filter(function(W){return N.value.has(W)}).sort(function(W,M){var I=Z.value.findIndex(function(C){return C.value===W}),w=Z.value.findIndex(function(C){return C.value===M});return I-w});a("update:value",c),a("change",c),o.onFieldChange()};return hn(U9,{cancelValue:X,registerValue:m,toggleOption:G,mergedValue:b,name:de(function(){return e.name}),disabled:de(function(){return e.disabled})}),l({mergedValue:b}),function(){var d,u=e.id,s=u===void 0?o.id.value:u,h=null,c="".concat(f.value,"-group");return Z.value&&Z.value.length>0&&(h=Z.value.map(function(W){var M;return D(lr,{prefixCls:f.value,key:W.value.toString(),disabled:"disabled"in W?W.disabled:e.disabled,indeterminate:W.indeterminate,value:W.value,checked:b.value.indexOf(W.value)!==-1,onChange:W.onChange,class:"".concat(c,"-item")},{default:function(){return[W.label===void 0?(M=i.label)===null||M===void 0?void 0:M.call(i,W):W.label]}})})),D("div",{class:[c,ce({},"".concat(c,"-rtl"),v.value==="rtl")],id:s},[h||((d=i.default)===null||d===void 0?void 0:d.call(i))])}}});lr.Group=qm;lr.install=function(n){return n.component(lr.name,lr),n.component(qm.name,qm),n};var ore=function(){return{actions:Array,author:We.any,avatar:We.any,content:We.any,prefixCls:String,datetime:We.any}},sre=He({compatConfig:{MODE:3},name:"AComment",props:ore(),slots:["actions","author","avatar","content","datetime"],setup:function(e,t){var i=t.slots,a=Nt("comment",e),l=a.prefixCls,o=a.direction,r=function(b,Z){return D("div",{class:"".concat(b,"-nested")},[Z])},f=function(b){if(!b||!b.length)return null;var Z=b.map(function(p,y){return D("li",{key:"action-".concat(y)},[p])});return Z};return function(){var v,b,Z,p,y,X,m,N,G,d,u,s=l.value,h=(v=e.actions)!==null&&v!==void 0?v:(b=i.actions)===null||b===void 0?void 0:b.call(i),c=(Z=e.author)!==null&&Z!==void 0?Z:(p=i.author)===null||p===void 0?void 0:p.call(i),W=(y=e.avatar)!==null&&y!==void 0?y:(X=i.avatar)===null||X===void 0?void 0:X.call(i),M=(m=e.content)!==null&&m!==void 0?m:(N=i.content)===null||N===void 0?void 0:N.call(i),I=(G=e.datetime)!==null&&G!==void 0?G:(d=i.datetime)===null||d===void 0?void 0:d.call(i),w=D("div",{class:"".concat(s,"-avatar")},[typeof W=="string"?D("img",{src:W,alt:"comment-avatar"},null):W]),C=h?D("ul",{class:"".concat(s,"-actions")},[f(Array.isArray(h)?h:[h])]):null,x=D("div",{class:"".concat(s,"-content-author")},[c&&D("span",{class:"".concat(s,"-content-author-name")},[c]),I&&D("span",{class:"".concat(s,"-content-author-time")},[I])]),R=D("div",{class:"".concat(s,"-content")},[x,D("div",{class:"".concat(s,"-content-detail")},[M]),C]),g=D("div",{class:"".concat(s,"-inner")},[w,R]),S=ti((u=i.default)===null||u===void 0?void 0:u.call(i));return D("div",{class:[s,ce({},"".concat(s,"-rtl"),o.value==="rtl")]},[g,S&&S.length?r(s,S):null])}}});const cre=wi(sre);var ure=function(e,t){var i=t.attrs,a=t.slots;return D(qi,P(P({size:"small",type:"primary"},e),i),a)};const dre=ure;var hre=function(){return{prefixCls:String,checked:{type:Boolean,default:void 0},onChange:{type:Function},onClick:{type:Function},"onUpdate:checked":Function}},fre=He({compatConfig:{MODE:3},name:"ACheckableTag",props:hre(),setup:function(e,t){var i=t.slots,a=t.emit,l=Nt("tag",e),o=l.prefixCls,r=function(b){var Z=e.checked;a("update:checked",!Z),a("change",!Z),a("click",b)},f=de(function(){var v;return _e(o.value,(v={},ce(v,"".concat(o.value,"-checkable"),!0),ce(v,"".concat(o.value,"-checkable-checked"),e.checked),v))});return function(){var v;return D("span",{class:f.value,onClick:r},[(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});const e0=fre;var bre=new RegExp("^(".concat(OG.join("|"),")(-inverse)?$")),mre=new RegExp("^(".concat(Y6.join("|"),")$")),pre=function(){return{prefixCls:String,color:{type:String},closable:{type:Boolean,default:!1},closeIcon:We.any,visible:{type:Boolean,default:void 0},onClose:{type:Function},"onUpdate:visible":Function,icon:We.any}},eh=He({compatConfig:{MODE:3},name:"ATag",props:pre(),slots:["closeIcon","icon"],setup:function(e,t){var i=t.slots,a=t.emit,l=t.attrs,o=Nt("tag",e),r=o.prefixCls,f=o.direction,v=Ne(!0);qt(function(){e.visible!==void 0&&(v.value=e.visible)});var b=function(X){X.stopPropagation(),a("update:visible",!1),a("close",X),!X.defaultPrevented&&e.visible===void 0&&(v.value=!1)},Z=de(function(){var y=e.color;return y?bre.test(y)||mre.test(y):!1}),p=de(function(){var y;return _e(r.value,(y={},ce(y,"".concat(r.value,"-").concat(e.color),Z.value),ce(y,"".concat(r.value,"-has-color"),e.color&&!Z.value),ce(y,"".concat(r.value,"-hidden"),!v.value),ce(y,"".concat(r.value,"-rtl"),f.value==="rtl"),y))});return function(){var y,X,m,N=e.icon,G=N===void 0?(y=i.icon)===null||y===void 0?void 0:y.call(i):N,d=e.color,u=e.closeIcon,s=u===void 0?(X=i.closeIcon)===null||X===void 0?void 0:X.call(i):u,h=e.closable,c=h===void 0?!1:h,W=function(){return c?s?D("span",{class:"".concat(r.value,"-close-icon"),onClick:b},[s]):D(Br,{class:"".concat(r.value,"-close-icon"),onClick:b},null):null},M={backgroundColor:d&&!Z.value?d:void 0},I=G||null,w=(m=i.default)===null||m===void 0?void 0:m.call(i),C=I?D(ln,null,[I,D("span",null,[w])]):w,x="onClick"in l,R=D("span",{class:p.value,style:M},[C,W()]);return x?D(EG,null,{default:function(){return[R]}}):R}}});eh.CheckableTag=e0;eh.install=function(n){return n.component(eh.name,eh),n.component(e0.name,e0),n};const E9=eh;function yre(n,e){var t=e.slots,i=e.attrs;return D(E9,P(P({color:"blue"},n),i),t)}var Zre={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z"}}]},name:"calendar",theme:"outlined"};const vre=Zre;function Uw(n){for(var e=1;et)&&(i=wn(n,{span:t}),Ci(e===void 0,"Descriptions","Sum of column `span` in a line not match `column` of Descriptions.")),i}function Ure(n,e){var t=ti(n),i=[],a=[],l=e;return t.forEach(function(o,r){var f,v=(f=o.props)===null||f===void 0?void 0:f.span,b=v||1;if(r===t.length-1){a.push(Hw(o,v,l)),i.push(a);return}b0?"-"+e.orientation:e.orientation});return function(){var p,y=ti((p=i.default)===null||p===void 0?void 0:p.call(i));return D("div",{class:[v.value,y.length?"".concat(l.value,"-with-text ").concat(l.value,"-with-text").concat(Z.value):""],role:"separator"},[y.length?D("span",{class:"".concat(l.value,"-inner-text"),style:b.value},[y]):null])}}});const Qre=wi(Pre);Hr.Button=Xh;Hr.install=function(n){return n.component(Hr.name,Hr),n.component(Xh.name,Xh),n};var WZ;function xu(n){if(typeof document>"u")return 0;if(n||WZ===void 0){var e=document.createElement("div");e.style.width="100%",e.style.height="200px";var t=document.createElement("div"),i=t.style;i.position="absolute",i.top="0",i.left="0",i.pointerEvents="none",i.visibility="hidden",i.width="200px",i.height="150px",i.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var a=e.offsetWidth;t.style.overflow="scroll";var l=e.offsetWidth;a===l&&(l=t.clientWidth),document.body.removeChild(t),WZ=a-l}return WZ}function Pw(n){var e=n.match(/^(.*)px$/),t=Number(e==null?void 0:e[1]);return Number.isNaN(t)?xu():t}function Bre(n){if(typeof document>"u"||!n||!(n instanceof Element))return{width:0,height:0};var e=getComputedStyle(n,"::-webkit-scrollbar"),t=e.width,i=e.height;return{width:Pw(t),height:Pw(i)}}var eC=function(){return{prefixCls:String,width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),style:{type:Object,default:void 0},class:String,placement:{type:String},wrapperClassName:String,level:{type:[String,Array]},levelMove:{type:[Number,Function,Array]},duration:String,ease:String,showMask:{type:Boolean,default:void 0},maskClosable:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},afterVisibleChange:Function,keyboard:{type:Boolean,default:void 0},contentWrapperStyle:{type:Object,default:void 0},autofocus:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0}}},Are=function(){return P(P({},eC()),{},{forceRender:{type:Boolean,default:void 0},getContainer:We.oneOfType([We.string,We.func,We.object,We.looseBool])})},_re=function(){return P(P({},eC()),{},{getContainer:Function,getOpenCount:Function,scrollLocker:We.any,switchScrollingEffect:Function})};function $re(n){return Array.isArray(n)?n:[n]}var tC={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},qre=Object.keys(tC).filter(function(n){if(typeof document>"u")return!1;var e=document.getElementsByTagName("html")[0];return n in(e?e.style:{})})[0],Qw=tC[qre];function Bw(n,e,t,i){n.addEventListener?n.addEventListener(e,t,i):n.attachEvent&&n.attachEvent("on".concat(e),t)}function Aw(n,e,t,i){n.removeEventListener?n.removeEventListener(e,t,i):n.attachEvent&&n.detachEvent("on".concat(e),t)}function eoe(n,e){var t=typeof n=="function"?n(e):n;return Array.isArray(t)?t.length===2?t:[t[0],t[1]]:[t]}var _w=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},GZ=!(typeof window<"u"&&window.document&&window.document.createElement),toe=function n(e,t,i,a){if(!t||t===document||t instanceof Document)return!1;if(t===e.parentNode)return!0;var l=Math.max(Math.abs(i),Math.abs(a))===Math.abs(a),o=Math.max(Math.abs(i),Math.abs(a))===Math.abs(i),r=t.scrollHeight-t.clientHeight,f=t.scrollWidth-t.clientWidth,v=document.defaultView.getComputedStyle(t),b=v.overflowY==="auto"||v.overflowY==="scroll",Z=v.overflowX==="auto"||v.overflowX==="scroll",p=r&&b,y=f&&Z;return l&&(!p||p&&(t.scrollTop>=r&&a<0||t.scrollTop<=0&&a>0))||o&&(!y||y&&(t.scrollLeft>=f&&i<0||t.scrollLeft<=0&&i>0))?n(e,t.parentNode,i,a):!1},noe=["width","height","open","prefixCls","placement","level","levelMove","ease","duration","getContainer","onChange","afterVisibleChange","showMask","maskClosable","maskStyle","keyboard","getOpenCount","scrollLocker","contentWrapperStyle","style","class"],Nd={},ioe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:_re(),emits:["close","handleClick","change"],setup:function(e,t){var i=t.emit,a=t.slots,l=zn({startPos:{x:null,y:null}}),o,r=Ne(),f=Ne(),v=Ne(),b=Ne(),Z=Ne(),p=[],y="drawer_id_".concat(Number((Date.now()+Math.random()).toString().replace(".",Math.round(Math.random()*9).toString())).toString(16)),X=!GZ&&Ui?{passive:!1}:!1;Kt(function(){cn(function(){var V=e.open,Y=e.getContainer,T=e.showMask,J=e.autofocus,U=Y==null?void 0:Y();if(g(e),V&&(U&&U.parentNode===document.body&&(Nd[y]=V),W(),cn(function(){J&&m()}),T)){var K;(K=e.scrollLocker)===null||K===void 0||K.lock()}})}),rt(function(){return e.level},function(){g(e)},{flush:"post"}),rt(function(){return e.open},function(){var V=e.open,Y=e.getContainer,T=e.scrollLocker,J=e.showMask,U=e.autofocus,K=Y==null?void 0:Y();K&&K.parentNode===document.body&&(Nd[y]=!!V),W(),V?(U&&m(),J&&(T==null||T.lock())):T==null||T.unLock()},{flush:"post"}),la(function(){var V,Y=e.open;delete Nd[y],Y&&(M(!1),document.body.style.touchAction=""),(V=e.scrollLocker)===null||V===void 0||V.unLock()}),rt(function(){return e.placement},function(V){V&&(Z.value=null)});var m=function(){var Y,T;(Y=f.value)===null||Y===void 0||(T=Y.focus)===null||T===void 0||T.call(Y)},N=function(Y){Y.touches.length>1||(l.startPos={x:Y.touches[0].clientX,y:Y.touches[0].clientY})},G=function(Y){if(!(Y.changedTouches.length>1)){var T=Y.currentTarget,J=Y.changedTouches[0].clientX-l.startPos.x,U=Y.changedTouches[0].clientY-l.startPos.y;(T===v.value||T===b.value||T===Z.value&&toe(T,Y.target,J,U))&&Y.cancelable&&Y.preventDefault()}},d=function V(Y){var T=Y.target;Aw(T,Qw,V),T.style.transition=""},u=function(Y){i("close",Y)},s=function(Y){Y.keyCode===bt.ESC&&(Y.stopPropagation(),u(Y))},h=function(Y){var T=e.open,J=e.afterVisibleChange;Y.target===r.value&&Y.propertyName.match(/transform$/)&&(f.value.style.transition="",!T&&R()&&(document.body.style.overflowX="",v.value&&(v.value.style.left="",v.value.style.width="")),J&&J(!!T))},c=de(function(){var V=e.placement,Y=V==="left"||V==="right",T="translate".concat(Y?"X":"Y");return{isHorizontal:Y,placementName:T}}),W=function(){var Y=e.open,T=e.width,J=e.height,U=c.value,K=U.isHorizontal,H=U.placementName,k=Z.value?Z.value.getBoundingClientRect()[K?"width":"height"]:0,F=(K?T:J)||k;I(Y,H,F)},M=function(Y,T,J,U){var K=e.placement,H=e.levelMove,k=e.duration,F=e.ease,O=e.showMask;p.forEach(function(Q){Q.style.transition="transform ".concat(k," ").concat(F),Bw(Q,Qw,d);var oe=Y?J:0;if(H){var se=eoe(H,{target:Q,open:Y});oe=Y?se[0]:se[1]||0}var he=typeof oe=="number"?"".concat(oe,"px"):oe,pe=K==="left"||K==="top"?he:"-".concat(he);pe=O&&K==="right"&&U?"calc(".concat(pe," + ").concat(U,"px)"):pe,Q.style.transform=oe?"".concat(T,"(").concat(pe,")"):""})},I=function(Y,T,J){if(!GZ){var U=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?xu(!0):0;M(Y,T,J,U),w(U)}i("change",Y)},w=function(Y){var T=e.getContainer,J=e.showMask,U=e.open,K=T==null?void 0:T();if(K&&K.parentNode===document.body&&J){var H=["touchstart"],k=[document.body,v.value,b.value,Z.value];U&&document.body.style.overflow!=="hidden"?(Y&&C(Y),document.body.style.touchAction="none",k.forEach(function(F,O){F&&Bw(F,H[O]||"touchmove",O?G:N,X)})):R()&&(document.body.style.touchAction="",Y&&x(Y),k.forEach(function(F,O){F&&Aw(F,H[O]||"touchmove",O?G:N,X)}))}},C=function(Y){var T=e.placement,J=e.duration,U=e.ease,K="width ".concat(J," ").concat(U),H="transform ".concat(J," ").concat(U);switch(f.value.style.transition="none",T){case"right":f.value.style.transform="translateX(-".concat(Y,"px)");break;case"top":case"bottom":f.value.style.width="calc(100% - ".concat(Y,"px)"),f.value.style.transform="translateZ(0)";break}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(H,",").concat(K),f.value.style.width="",f.value.style.transform="")})},x=function(Y){var T=e.placement,J=e.duration,U=e.ease;f.value.style.transition="none";var K,H="width ".concat(J," ").concat(U),k="transform ".concat(J," ").concat(U);switch(T){case"left":{f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J);break}case"right":{f.value.style.transform="translateX(".concat(Y,"px)"),f.value.style.width="100%",H="width 0s ".concat(U," ").concat(J),v.value&&(v.value.style.left="-".concat(Y,"px"),v.value.style.width="calc(100% + ".concat(Y,"px)"));break}case"top":case"bottom":{f.value.style.width="calc(100% + ".concat(Y,"px)"),f.value.style.height="100%",f.value.style.transform="translateZ(0)",K="height 0s ".concat(U," ").concat(J);break}}clearTimeout(o),o=setTimeout(function(){f.value&&(f.value.style.transition="".concat(k,",").concat(K?"".concat(K,","):"").concat(H),f.value.style.transform="",f.value.style.width="",f.value.style.height="")})},R=function(){return!Object.keys(Nd).some(function(Y){return Nd[Y]})},g=function(Y){var T=Y.level,J=Y.getContainer;if(!GZ){var U=J==null?void 0:J(),K=U?U.parentNode:null;if(p=[],T==="all"){var H=K?Array.prototype.slice.call(K.children):[];H.forEach(function(k){k.nodeName!=="SCRIPT"&&k.nodeName!=="STYLE"&&k.nodeName!=="LINK"&&k!==U&&p.push(k)})}else T&&$re(T).forEach(function(k){document.querySelectorAll(k).forEach(function(F){p.push(F)})})}},S=function(Y){i("handleClick",Y)},L=Ne(!1);return rt(f,function(){cn(function(){L.value=!0})}),function(){var V,Y,T,J=e.width,U=e.height,K=e.open,H=e.prefixCls,k=e.placement;e.level,e.levelMove,e.ease,e.duration,e.getContainer,e.onChange,e.afterVisibleChange;var F=e.showMask,O=e.maskClosable,Q=e.maskStyle,oe=e.keyboard;e.getOpenCount,e.scrollLocker;var se=e.contentWrapperStyle,he=e.style,pe=e.class,re=jt(e,noe),_=K&&L.value,E=_e(H,(V={},ce(V,"".concat(H,"-").concat(k),!0),ce(V,"".concat(H,"-open"),_),ce(V,pe,!!pe),ce(V,"no-mask",!F),V)),$=c.value.placementName,ae=k==="left"||k==="top"?"-100%":"100%",le=_?"":"".concat($,"(").concat(ae,")");return D("div",P(P({},dn(re,["switchScrollingEffect","autofocus"])),{},{tabindex:-1,class:E,style:he,ref:f,onKeydown:_&&oe?s:void 0,onTransitionend:h}),[F&&D("div",{class:"".concat(H,"-mask"),onClick:O?u:void 0,style:Q,ref:v},null),D("div",{class:"".concat(H,"-content-wrapper"),style:P({transform:le,msTransform:le,width:_w(J)?"".concat(J,"px"):J,height:_w(U)?"".concat(U,"px"):U},se),ref:r},[D("div",{class:"".concat(H,"-content"),ref:Z},[(Y=a.default)===null||Y===void 0?void 0:Y.call(a)]),a.handler?D("div",{onClick:S,ref:b},[(T=a.handler)===null||T===void 0?void 0:T.call(a)]):null])])}}});const $w=ioe;function Cu(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.element,i=t===void 0?document.body:t,a={},l=Object.keys(n);return l.forEach(function(o){a[o]=i.style[o]}),l.forEach(function(o){i.style[o]=n[o]}),a}function loe(){return document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth}var XZ={};const qw=function(n){if(!(!loe()&&!n)){var e="ant-scrolling-effect",t=new RegExp("".concat(e),"g"),i=document.body.className;if(n){if(!t.test(i))return;Cu(XZ),XZ={},document.body.className=i.replace(t,"").trim();return}var a=xu();if(a&&(XZ=Cu({position:"relative",width:"calc(100% - ".concat(a,"px)")}),!t.test(i))){var l="".concat(i," ").concat(e);document.body.className=l.trim()}}};var qa=[],nC="ant-scrolling-effect",NZ=new RegExp("".concat(nC),"g"),aoe=0,MZ=new Map,roe=Q0(function n(e){var t=this;B0(this,n),ce(this,"getContainer",function(){var i;return(i=t.options)===null||i===void 0?void 0:i.container}),ce(this,"reLock",function(i){var a=qa.find(function(l){var o=l.target;return o===t.lockTarget});a&&t.unLock(),t.options=i,a&&(a.options=i,t.lock())}),ce(this,"lock",function(){var i;if(!qa.some(function(f){var v=f.target;return v===t.lockTarget})){if(qa.some(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)})){qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}]);return}var a=0,l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body;(l===document.body&&window.innerWidth-document.documentElement.clientWidth>0||l.scrollHeight>l.clientHeight)&&(a=xu());var o=l.className;if(qa.filter(function(f){var v,b=f.options;return(b==null?void 0:b.container)===((v=t.options)===null||v===void 0?void 0:v.container)}).length===0&&MZ.set(l,Cu({width:a!==0?"calc(100% - ".concat(a,"px)"):void 0,overflow:"hidden",overflowX:"hidden",overflowY:"hidden"},{element:l})),!NZ.test(o)){var r="".concat(o," ").concat(nC);l.className=r.trim()}qa=[].concat(yt(qa),[{target:t.lockTarget,options:t.options}])}}),ce(this,"unLock",function(){var i,a=qa.find(function(r){var f=r.target;return f===t.lockTarget});if(qa=qa.filter(function(r){var f=r.target;return f!==t.lockTarget}),!(!a||qa.some(function(r){var f,v=r.options;return(v==null?void 0:v.container)===((f=a.options)===null||f===void 0?void 0:f.container)}))){var l=((i=t.options)===null||i===void 0?void 0:i.container)||document.body,o=l.className;NZ.test(o)&&(Cu(MZ.get(l),{element:l}),MZ.delete(l),l.className=l.className.replace(NZ,"").trim())}}),this.lockTarget=aoe++,this.options=e}),bo=0,Cd=Yc(),pb={},Bc=function(e){if(!Cd)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(Yt(e)==="object"&&e instanceof window.HTMLElement)return e}return document.body};const iC=He({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:We.any,visible:{type:Boolean,default:void 0}},setup:function(e,t){var i=t.slots,a=Ne(),l=Ne(),o=Ne(),r=new roe({container:Bc(e.getContainer)}),f=function(){var m,N;(m=a.value)===null||m===void 0||(N=m.parentNode)===null||N===void 0||N.removeChild(a.value)},v=function(){var m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(m||a.value&&!a.value.parentNode){var N=Bc(e.getContainer);return N?(N.appendChild(a.value),!0):!1}return!0},b=function(){return Cd?(a.value||(a.value=document.createElement("div"),v(!0)),Z(),a.value):null},Z=function(){var m=e.wrapperClassName;a.value&&m&&m!==a.value.className&&(a.value.className=m)};Dl(function(){Z(),v()});var p=function(){bo===1&&!Object.keys(pb).length?(qw(),pb=Cu({overflow:"hidden",overflowX:"hidden",overflowY:"hidden"})):bo||(Cu(pb),pb={},qw(!0))},y=Wl();return Kt(function(){var X=!1;rt([function(){return e.visible},function(){return e.getContainer}],function(m,N){var G=ft(m,2),d=G[0],u=G[1],s=ft(N,2),h=s[0],c=s[1];if(Cd&&Bc(e.getContainer)===document.body&&(d&&!h?bo+=1:X&&(bo-=1)),X){var W=typeof u=="function"&&typeof c=="function";(W?u.toString()!==c.toString():u!==c)&&f(),d&&d!==h&&Cd&&Bc(u)!==r.getContainer()&&r.reLock({container:Bc(u)})}X=!0},{immediate:!0,flush:"post"}),cn(function(){v()||(o.value=At(function(){y.update()}))})}),fn(function(){var X=e.visible,m=e.getContainer;Cd&&Bc(m)===document.body&&(bo=X&&bo?bo-1:bo),f(),At.cancel(o.value)}),function(){var X=e.forceRender,m=e.visible,N=null,G={getOpenCount:function(){return bo},getContainer:b,switchScrollingEffect:p,scrollLocker:r};return(X||m||l.value)&&(N=D(O2,{getContainer:b,ref:l},{default:function(){var u;return(u=i.default)===null||u===void 0?void 0:u.call(i,G)}})),N}}});var ooe=["afterVisibleChange","getContainer","wrapperClassName","forceRender"],soe=["visible","afterClose"],coe=He({compatConfig:{MODE:3},inheritAttrs:!1,props:pn(Are(),{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",afterVisibleChange:function(){},showMask:!0,maskClosable:!0,maskStyle:{},wrapperClassName:"",keyboard:!0,forceRender:!1,autofocus:!0}),emits:["handleClick","close"],slots:["handler"],setup:function(e,t){var i=t.emit,a=t.slots,l=Ne(null),o=function(v){i("handleClick",v)},r=function(v){i("close",v)};return function(){e.afterVisibleChange;var f=e.getContainer,v=e.wrapperClassName,b=e.forceRender,Z=jt(e,ooe),p=null;if(!f)return D("div",{class:v,ref:l},[D($w,P(P({},Z),{},{open:e.open,getContainer:function(){return l.value},onClose:r,onHandleClick:o}),a)]);var y=!!a.handler||b;return(y||e.open||l.value)&&(p=D(iC,{visible:e.open,forceRender:y,getContainer:f,wrapperClassName:v},{default:function(m){var N=m.visible,G=m.afterClose,d=jt(m,soe);return D($w,P(P(P({ref:l},Z),d),{},{open:N!==void 0?N:e.open,afterVisibleChange:G!==void 0?G:e.afterVisibleChange,onClose:r,onHandleClick:o}),a)}})),p}}});const uoe=coe;var doe=["width","height","visible","placement","mask","wrapClassName","class"],hoe=pi("top","right","bottom","left");pi("default","large");var eg={distance:180},foe=function(){return{autofocus:{type:Boolean,default:void 0},closable:{type:Boolean,default:void 0},closeIcon:We.any,destroyOnClose:{type:Boolean,default:void 0},forceRender:{type:Boolean,default:void 0},getContainer:We.any,maskClosable:{type:Boolean,default:void 0},mask:{type:Boolean,default:void 0},maskStyle:{type:Object,default:void 0},wrapStyle:{type:Object,default:void 0},style:{type:Object,default:void 0},class:We.any,wrapClassName:String,size:{type:String},drawerStyle:{type:Object,default:void 0},headerStyle:{type:Object,default:void 0},bodyStyle:{type:Object,default:void 0},contentWrapperStyle:{type:Object,default:void 0},title:We.any,visible:{type:Boolean,default:void 0},width:We.oneOfType([We.string,We.number]),height:We.oneOfType([We.string,We.number]),zIndex:Number,prefixCls:String,push:We.oneOfType([We.looseBool,{type:Object}]),placement:We.oneOf(hoe),keyboard:{type:Boolean,default:void 0},extra:We.any,footer:We.any,footerStyle:{type:Object,default:void 0},level:We.any,levelMove:{type:[Number,Array,Function]},handle:We.any,afterVisibleChange:Function,onAfterVisibleChange:Function,"onUpdate:visible":Function,onClose:Function}},boe=He({compatConfig:{MODE:3},name:"ADrawer",inheritAttrs:!1,props:pn(foe(),{closable:!0,placement:"right",maskClosable:!0,mask:!0,level:null,keyboard:!0,push:eg}),slots:["closeIcon","title","extra","footer","handle"],setup:function(e,t){var i=t.emit,a=t.slots,l=t.attrs,o=Ne(!1),r=Ne(!1),f=Ne(null),v=un("parentDrawerOpts",null),b=Nt("drawer",e),Z=b.prefixCls;jn(!e.afterVisibleChange,"Drawer","`afterVisibleChange` prop is deprecated, please use `@afterVisibleChange` event instead"),jn(e.wrapStyle===void 0,"Drawer","`wrapStyle` prop is deprecated, please use `style` instead"),jn(e.wrapClassName===void 0,"Drawer","`wrapClassName` prop is deprecated, please use `class` instead");var p=function(){o.value=!0},y=function(){o.value=!1,cn(function(){X()})};hn("parentDrawerOpts",{setPush:p,setPull:y}),Kt(function(){var w=e.visible;w&&v&&v.setPush()}),la(function(){v&&v.setPull()}),rt(function(){return e.visible},function(w){v&&(w?v.setPush():v.setPull())},{flush:"post"});var X=function(){var C,x;(C=f.value)===null||C===void 0||(x=C.domFocus)===null||x===void 0||x.call(C)},m=function(C){i("update:visible",!1),i("close",C)},N=function(C){var x;(x=e.afterVisibleChange)===null||x===void 0||x.call(e,C),i("afterVisibleChange",C)},G=de(function(){return e.destroyOnClose&&!e.visible}),d=function(){var C=G.value;C&&(e.visible||(r.value=!0))},u=de(function(){var w=e.push,C=e.placement,x;return typeof w=="boolean"?x=w?eg.distance:0:x=w.distance,x=parseFloat(String(x||0)),C==="left"||C==="right"?"translateX(".concat(C==="left"?x:-x,"px)"):C==="top"||C==="bottom"?"translateY(".concat(C==="top"?x:-x,"px)"):null}),s=de(function(){var w=e.visible,C=e.mask,x=e.placement,R=e.size,g=R===void 0?"default":R,S=e.width,L=e.height;if(!w&&!C)return{};var V={};if(x==="left"||x==="right"){var Y=g==="large"?736:378;V.width=typeof S>"u"?Y:S,V.width=typeof V.width=="string"?V.width:"".concat(V.width,"px")}else{var T=g==="large"?736:378;V.height=typeof L>"u"?T:L,V.height=typeof V.height=="string"?V.height:"".concat(V.height,"px")}return V}),h=de(function(){var w=e.zIndex,C=e.wrapStyle,x=e.mask,R=e.style,g=x?{}:s.value;return P(P(P({zIndex:w,transform:o.value?u.value:void 0},g),C),R)}),c=function(C){var x=e.closable,R=e.headerStyle,g=ui(a,e,"extra"),S=ui(a,e,"title");return!S&&!x?null:D("div",{class:_e("".concat(C,"-header"),ce({},"".concat(C,"-header-close-only"),x&&!S&&!g)),style:R},[D("div",{class:"".concat(C,"-header-title")},[W(C),S&&D("div",{class:"".concat(C,"-title")},[S])]),g&&D("div",{class:"".concat(C,"-extra")},[g])])},W=function(C){var x,R=e.closable,g=a.closeIcon?(x=a.closeIcon)===null||x===void 0?void 0:x.call(a):e.closeIcon;return R&&D("button",{key:"closer",onClick:m,"aria-label":"Close",class:"".concat(C,"-close")},[g===void 0?D(Br,null,null):g])},M=function(C){var x;if(r.value&&!e.visible)return null;r.value=!1;var R=e.bodyStyle,g=e.drawerStyle,S={},L=G.value;return L&&(S.opacity=0,S.transition="opacity .3s"),D("div",{class:"".concat(C,"-wrapper-body"),style:P(P({},S),g),onTransitionend:d},[c(C),D("div",{key:"body",class:"".concat(C,"-body"),style:R},[(x=a.default)===null||x===void 0?void 0:x.call(a)]),I(C)])},I=function(C){var x=ui(a,e,"footer");if(!x)return null;var R="".concat(C,"-footer");return D("div",{class:R,style:e.footerStyle},[x])};return function(){var w;e.width,e.height;var C=e.visible,x=e.placement,R=e.mask,g=e.wrapClassName,S=e.class,L=jt(e,doe),V=R?s.value:{},Y=R?"":"no-mask",T=P(P(P(P({},l),dn(L,["size","closeIcon","closable","destroyOnClose","drawerStyle","headerStyle","bodyStyle","title","push","wrapStyle","onAfterVisibleChange","onClose","onUpdate:visible"])),V),{},{onClose:m,afterVisibleChange:N,handler:!1,prefixCls:Z.value,open:C,showMask:R,placement:x,class:_e((w={},ce(w,S,S),ce(w,g,!!g),ce(w,Y,!!Y),w)),style:h.value,ref:f});return D(uoe,T,{handler:e.handle?function(){return e.handle}:a.handle,default:function(){return M(Z.value)}})}}});const moe=wi(boe);var lC=function(){return{id:String,prefixCls:String,inputPrefixCls:String,defaultValue:We.oneOfType([We.string,We.number]),value:{type:[String,Number,Symbol],default:void 0},placeholder:{type:[String,Number]},autocomplete:String,type:{type:String,default:"text"},name:String,size:{type:String},disabled:{type:Boolean,default:void 0},readonly:{type:Boolean,default:void 0},addonBefore:We.any,addonAfter:We.any,prefix:We.any,suffix:We.any,autofocus:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,valueModifiers:Object,hidden:Boolean}};const K1=lC;var aC=function(){return P(P({},dn(lC(),["prefix","addonBefore","addonAfter","suffix"])),{},{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object})};function rC(n,e,t,i,a){var l;return _e(n,(l={},ce(l,"".concat(n,"-sm"),t==="small"),ce(l,"".concat(n,"-lg"),t==="large"),ce(l,"".concat(n,"-disabled"),i),ce(l,"".concat(n,"-rtl"),a==="rtl"),ce(l,"".concat(n,"-borderless"),!e),l))}var th=function(e){return e!=null&&(Array.isArray(e)?Ri(e).length:!0)};function poe(n){return th(n.prefix)||th(n.suffix)||th(n.allowClear)}function IZ(n){return th(n.addonBefore)||th(n.addonAfter)}var yoe=["text","input"];const oC=He({compatConfig:{MODE:3},name:"ClearableLabeledInput",inheritAttrs:!1,props:{prefixCls:String,inputType:We.oneOf(pi("text","input")),value:We.any,defaultValue:We.any,allowClear:{type:Boolean,default:void 0},element:We.any,handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:We.any,prefix:We.any,addonBefore:We.any,addonAfter:We.any,readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean},setup:function(e,t){var i=t.slots,a=t.attrs,l=Ne(),o=function(y){var X;if((X=l.value)!==null&&X!==void 0&&X.contains(y.target)){var m=e.triggerFocus;m==null||m()}},r=function(y){var X,m=e.allowClear,N=e.value,G=e.disabled,d=e.readonly,u=e.handleReset,s=e.suffix,h=s===void 0?i.suffix:s;if(!m)return null;var c=!G&&!d&&N,W="".concat(y,"-clear-icon");return D(Co,{onClick:u,onMousedown:function(I){return I.preventDefault()},class:_e((X={},ce(X,"".concat(W,"-hidden"),!c),ce(X,"".concat(W,"-has-suffix"),!!h),X),W),role:"button"},null)},f=function(y){var X,m=e.suffix,N=m===void 0?(X=i.suffix)===null||X===void 0?void 0:X.call(i):m,G=e.allowClear;return N||G?D("span",{class:"".concat(y,"-suffix")},[r(y),N]):null},v=function(y,X){var m,N,G,d=e.focused,u=e.value,s=e.prefix,h=s===void 0?(m=i.prefix)===null||m===void 0?void 0:m.call(i):s,c=e.size,W=e.suffix,M=W===void 0?(N=i.suffix)===null||N===void 0?void 0:N.call(i):W,I=e.disabled,w=e.allowClear,C=e.direction,x=e.readonly,R=e.bordered,g=e.hidden,S=e.addonAfter,L=S===void 0?i.addonAfter:S,V=e.addonBefore,Y=V===void 0?i.addonBefore:V,T=f(y);if(!poe({prefix:h,suffix:M,allowClear:w}))return wn(X,{value:u});var J=h?D("span",{class:"".concat(y,"-prefix")},[h]):null,U=_e("".concat(y,"-affix-wrapper"),(G={},ce(G,"".concat(y,"-affix-wrapper-focused"),d),ce(G,"".concat(y,"-affix-wrapper-disabled"),I),ce(G,"".concat(y,"-affix-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-affix-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-affix-wrapper-input-with-clear-btn"),M&&w&&u),ce(G,"".concat(y,"-affix-wrapper-rtl"),C==="rtl"),ce(G,"".concat(y,"-affix-wrapper-readonly"),x),ce(G,"".concat(y,"-affix-wrapper-borderless"),!R),ce(G,"".concat(a.class),!IZ({addonAfter:L,addonBefore:Y})&&a.class),G));return D("span",{ref:l,class:U,style:a.style,onMouseup:o,hidden:g},[J,wn(X,{style:null,value:u,class:rC(y,R,c,I)}),T])},b=function(y,X){var m,N,G,d=e.addonBefore,u=d===void 0?(m=i.addonBefore)===null||m===void 0?void 0:m.call(i):d,s=e.addonAfter,h=s===void 0?(N=i.addonAfter)===null||N===void 0?void 0:N.call(i):s,c=e.size,W=e.direction,M=e.hidden;if(!IZ({addonBefore:u,addonAfter:h}))return X;var I="".concat(y,"-group"),w="".concat(I,"-addon"),C=u?D("span",{class:w},[u]):null,x=h?D("span",{class:w},[h]):null,R=_e("".concat(y,"-wrapper"),I,ce({},"".concat(I,"-rtl"),W==="rtl")),g=_e("".concat(y,"-group-wrapper"),(G={},ce(G,"".concat(y,"-group-wrapper-sm"),c==="small"),ce(G,"".concat(y,"-group-wrapper-lg"),c==="large"),ce(G,"".concat(y,"-group-wrapper-rtl"),W==="rtl"),G),a.class);return D("span",{class:g,style:a.style,hidden:M},[D("span",{class:R},[C,wn(X,{style:null}),x])])},Z=function(y,X){var m,N=e.value,G=e.allowClear,d=e.direction,u=e.bordered,s=e.hidden,h=e.addonAfter,c=h===void 0?i.addonAfter:h,W=e.addonBefore,M=W===void 0?i.addonBefore:W;if(!G)return wn(X,{value:N});var I=_e("".concat(y,"-affix-wrapper"),"".concat(y,"-affix-wrapper-textarea-with-clear-btn"),(m={},ce(m,"".concat(y,"-affix-wrapper-rtl"),d==="rtl"),ce(m,"".concat(y,"-affix-wrapper-borderless"),!u),ce(m,"".concat(a.class),!IZ({addonAfter:c,addonBefore:M})&&a.class),m));return D("span",{class:I,style:a.style,hidden:s},[wn(X,{style:null,value:N}),r(y)])};return function(){var p,y=e.prefixCls,X=e.inputType,m=e.element,N=m===void 0?(p=i.element)===null||p===void 0?void 0:p.call(i):m;return X===yoe[0]?Z(y,N):b(y,v(y,N))}}});function gv(n){return typeof n>"u"||n===null?"":String(n)}function nh(n,e,t,i){if(t){var a=e;if(e.type==="click"){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0});var l=n.cloneNode(!0);a.target=l,a.currentTarget=l,l.value="",t(a);return}if(i!==void 0){Object.defineProperty(a,"target",{writable:!0}),Object.defineProperty(a,"currentTarget",{writable:!0}),a.target=n,a.currentTarget=n,n.value=i,t(a);return}t(a)}}function sC(n,e){if(n){n.focus(e);var t=e||{},i=t.cursor;if(i){var a=n.value.length;switch(i){case"start":n.setSelectionRange(0,0);break;case"end":n.setSelectionRange(a,a);break;default:n.setSelectionRange(0,a)}}}}const Ai=He({compatConfig:{MODE:3},name:"AInput",inheritAttrs:!1,props:K1(),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=Ne(),v,b=Hi(),Z=Nt("input",e),p=Z.direction,y=Z.prefixCls,X=Z.size,m=Z.autocomplete,N=Ne(e.value===void 0?e.defaultValue:e.value),G=Ne(!1);rt(function(){return e.value},function(){N.value=e.value}),rt(function(){return e.disabled},function(){e.value!==void 0&&(N.value=e.value),e.disabled&&(G.value=!1)});var d=function(){v=setTimeout(function(){var Y;((Y=r.value)===null||Y===void 0?void 0:Y.getAttribute("type"))==="password"&&r.value.hasAttribute("value")&&r.value.removeAttribute("value")})},u=function(Y){sC(r.value,Y)},s=function(){var Y;(Y=r.value)===null||Y===void 0||Y.blur()},h=function(Y,T,J){var U;(U=r.value)===null||U===void 0||U.setSelectionRange(Y,T,J)},c=function(){var Y;(Y=r.value)===null||Y===void 0||Y.select()};l({focus:u,blur:s,input:r,stateValue:N,setSelectionRange:h,select:c});var W=function(Y){var T=e.onFocus;G.value=!0,T==null||T(Y),cn(function(){d()})},M=function(Y){var T=e.onBlur;G.value=!1,T==null||T(Y),b.onFieldBlur(),cn(function(){d()})},I=function(Y){o("update:value",Y.target.value),o("change",Y),o("input",Y),b.onFieldChange()},w=Wl(),C=function(Y,T){N.value!==Y&&(e.value===void 0?N.value=Y:cn(function(){r.value.value!==N.value&&w.update()}),cn(function(){T&&T()}))},x=function(Y){nh(r.value,Y,I),C("",function(){u()})},R=function(Y){var T=Y.target,J=T.value,U=T.composing;if(!((Y.isComposing||U)&&e.lazy||N.value===J)){var K=Y.target.value;nh(r.value,Y,I),C(K,function(){d()})}},g=function(Y){Y.keyCode===13&&o("pressEnter",Y),o("keydown",Y)};Kt(function(){d()}),fn(function(){clearTimeout(v)});var S=function(){var Y,T=e.addonBefore,J=T===void 0?i.addonBefore:T,U=e.addonAfter,K=U===void 0?i.addonAfter:U,H=e.disabled,k=e.bordered,F=k===void 0?!0:k,O=e.valueModifiers,Q=O===void 0?{}:O,oe=e.htmlSize,se=dn(e,["prefixCls","onPressEnter","addonBefore","addonAfter","prefix","suffix","allowClear","defaultValue","size","bordered","htmlSize","lazy","showCount","valueModifiers"]),he=P(P(P({},se),a),{},{autocomplete:m.value,onChange:R,onInput:R,onFocus:W,onBlur:M,onKeydown:g,class:_e(rC(y.value,F,X.value,H,p.value),ce({},a.class,a.class&&!J&&!K)),ref:r,key:"ant-input",size:oe,id:(Y=se.id)!==null&&Y!==void 0?Y:b.id.value});Q.lazy&&delete he.onInput,he.autofocus||delete he.autofocus;var pe=D("input",dn(he,["size"]),null);return vl(pe,[[Pu]])},L=function(){var Y,T=N.value,J=e.maxlength,U=e.suffix,K=U===void 0?(Y=i.suffix)===null||Y===void 0?void 0:Y.call(i):U,H=e.showCount,k=Number(J)>0;if(K||H){var F=yt(gv(T)).length,O=null;return Yt(H)==="object"?O=H.formatter({count:F,maxlength:J}):O="".concat(F).concat(k?" / ".concat(J):""),D(ln,null,[!!H&&D("span",{class:_e("".concat(y.value,"-show-count-suffix"),ce({},"".concat(y.value,"-show-count-has-suffix"),!!K))},[O]),K])}return null};return function(){var V=P(P(P({},a),e),{},{prefixCls:y.value,inputType:"input",value:gv(N.value),handleReset:x,focused:G.value&&!e.disabled});return D(oC,P(P({},dn(V,["element","valueModifiers","suffix","showCount"])),{},{ref:f}),P(P({},i),{},{element:S,suffix:L}))}}}),cC=He({compatConfig:{MODE:3},name:"AInputGroup",props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0},onMouseenter:{type:Function},onMouseleave:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},setup:function(e,t){var i=t.slots,a=Nt("input-group",e),l=a.prefixCls,o=a.direction,r=de(function(){var f,v=l.value;return f={},ce(f,"".concat(v),!0),ce(f,"".concat(v,"-lg"),e.size==="large"),ce(f,"".concat(v,"-sm"),e.size==="small"),ce(f,"".concat(v,"-compact"),e.compact),ce(f,"".concat(v,"-rtl"),o.value==="rtl"),f});return function(){var f;return D("span",{class:r.value,onMouseenter:e.onMouseenter,onMouseleave:e.onMouseleave,onFocus:e.onFocus,onBlur:e.onBlur},[(f=i.default)===null||f===void 0?void 0:f.call(i)])}}});var YZ=/iPhone/i,tg=/iPod/i,ng=/iPad/i,wZ=/\bAndroid(?:.+)Mobile\b/i,ig=/Android/i,Ac=/\bAndroid(?:.+)SD4930UR\b/i,yb=/\bAndroid(?:.+)(?:KF[A-Z]{2,4})\b/i,mo=/Windows Phone/i,lg=/\bWindows(?:.+)ARM\b/i,ag=/BlackBerry/i,rg=/BB10/i,og=/Opera Mini/i,sg=/\b(CriOS|Chrome)(?:.+)Mobile/i,cg=/Mobile(?:.+)Firefox\b/i;function In(n,e){return n.test(e)}function ug(n){var e=n||(typeof navigator<"u"?navigator.userAgent:""),t=e.split("[FBAN");if(typeof t[1]<"u"){var i=t,a=ft(i,1);e=a[0]}if(t=e.split("Twitter"),typeof t[1]<"u"){var l=t,o=ft(l,1);e=o[0]}var r={apple:{phone:In(YZ,e)&&!In(mo,e),ipod:In(tg,e),tablet:!In(YZ,e)&&In(ng,e)&&!In(mo,e),device:(In(YZ,e)||In(tg,e)||In(ng,e))&&!In(mo,e)},amazon:{phone:In(Ac,e),tablet:!In(Ac,e)&&In(yb,e),device:In(Ac,e)||In(yb,e)},android:{phone:!In(mo,e)&&In(Ac,e)||!In(mo,e)&&In(wZ,e),tablet:!In(mo,e)&&!In(Ac,e)&&!In(wZ,e)&&(In(yb,e)||In(ig,e)),device:!In(mo,e)&&(In(Ac,e)||In(yb,e)||In(wZ,e)||In(ig,e))||In(/\bokhttp\b/i,e)},windows:{phone:In(mo,e),tablet:In(lg,e),device:In(mo,e)||In(lg,e)},other:{blackberry:In(ag,e),blackberry10:In(rg,e),opera:In(og,e),firefox:In(cg,e),chrome:In(sg,e),device:In(ag,e)||In(rg,e)||In(og,e)||In(cg,e)||In(sg,e)},any:null,phone:null,tablet:null};return r.any=r.apple.device||r.android.device||r.windows.device||r.other.device,r.phone=r.apple.phone||r.android.phone||r.windows.phone,r.tablet=r.apple.tablet||r.android.tablet||r.windows.tablet,r}var Zoe=P(P({},ug()),{},{isMobile:ug});const voe=Zoe;var Woe=["disabled","loading","addonAfter","suffix"];const uC=He({compatConfig:{MODE:3},name:"AInputSearch",inheritAttrs:!1,props:P(P({},K1()),{},{inputPrefixCls:String,enterButton:We.any,onSearch:{type:Function}}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=t.emit,r=Ne(),f=function(){var s;(s=r.value)===null||s===void 0||s.focus()},v=function(){var s;(s=r.value)===null||s===void 0||s.blur()};l({focus:f,blur:v});var b=function(s){o("update:value",s.target.value),s&&s.target&&s.type==="click"&&o("search",s.target.value,s),o("change",s)},Z=function(s){var h;document.activeElement===((h=r.value)===null||h===void 0?void 0:h.input)&&s.preventDefault()},p=function(s){var h;o("search",(h=r.value)===null||h===void 0?void 0:h.stateValue,s),voe.tablet||r.value.focus()},y=Nt("input-search",e),X=y.prefixCls,m=y.getPrefixCls,N=y.direction,G=y.size,d=de(function(){return m("input",e.inputPrefixCls)});return function(){var u,s,h,c,W,M=e.disabled,I=e.loading,w=e.addonAfter,C=w===void 0?(u=i.addonAfter)===null||u===void 0?void 0:u.call(i):w,x=e.suffix,R=x===void 0?(s=i.suffix)===null||s===void 0?void 0:s.call(i):x,g=jt(e,Woe),S=e.enterButton,L=S===void 0?(h=(c=i.enterButton)===null||c===void 0?void 0:c.call(i))!==null&&h!==void 0?h:!1:S;L=L||L==="";var V=typeof L=="boolean"?D(P0,null,null):null,Y="".concat(X.value,"-button"),T=Array.isArray(L)?L[0]:L,J,U=T.type&&zW(T.type)&&T.type.__ANT_BUTTON;if(U||T.tagName==="button")J=wn(T,P({onMousedown:Z,onClick:p,key:"enterButton"},U?{class:Y,size:G.value}:{}),!1);else{var K=V&&!L;J=D(qi,{class:Y,type:L?"primary":void 0,size:G.value,disabled:M,key:"enterButton",onMousedown:Z,onClick:p,loading:I,icon:K?V:null},{default:function(){return[K?null:V||L]}})}C&&(J=[J,C]);var H=_e(X.value,(W={},ce(W,"".concat(X.value,"-rtl"),N.value==="rtl"),ce(W,"".concat(X.value,"-").concat(G.value),!!G.value),ce(W,"".concat(X.value,"-with-button"),!!L),W),a.class);return D(Ai,P(P(P({ref:r},dn(g,["onUpdate:value","onSearch","enterButton"])),a),{},{onPressEnter:p,size:G.value,prefixCls:d.value,addonAfter:J,suffix:R,onChange:b,class:H,disabled:M}),i)}}});var Goe=` min-height:0 !important; max-height:none !important; height:0 !important; @@ -112,9 +112,9 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho z-index:-1000 !important; top:0 !important; right:0 !important -`,Zoe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],gZ={},er;function voe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=n.getAttribute("id")||n.getAttribute("data-reactid")||n.getAttribute("name");if(e&&gZ[t])return gZ[t];var i=window.getComputedStyle(n),l=i.getPropertyValue("box-sizing")||i.getPropertyValue("-moz-box-sizing")||i.getPropertyValue("-webkit-box-sizing"),a=parseFloat(i.getPropertyValue("padding-bottom"))+parseFloat(i.getPropertyValue("padding-top")),o=parseFloat(i.getPropertyValue("border-bottom-width"))+parseFloat(i.getPropertyValue("border-top-width")),r=Zoe.map(function(v){return"".concat(v,":").concat(i.getPropertyValue(v))}).join(";"),f={sizingStyle:r,paddingSize:a,borderSize:o,boxSizing:l};return e&&t&&(gZ[t]=f),f}function Woe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;er||(er=document.createElement("textarea"),er.setAttribute("tab-index","-1"),er.setAttribute("aria-hidden","true"),document.body.appendChild(er)),n.getAttribute("wrap")?er.setAttribute("wrap",n.getAttribute("wrap")):er.removeAttribute("wrap");var l=voe(n,e),a=l.paddingSize,o=l.borderSize,r=l.boxSizing,f=l.sizingStyle;er.setAttribute("style","".concat(f,";").concat(yoe)),er.value=n.value||n.placeholder||"";var v=Number.MIN_SAFE_INTEGER,b=Number.MAX_SAFE_INTEGER,Z=er.scrollHeight,p;if(r==="border-box"?Z+=o:r==="content-box"&&(Z-=a),t!==null||i!==null){er.value=" ";var y=er.scrollHeight-a;t!==null&&(v=y*t,r==="border-box"&&(v=v+a+o),Z=Math.max(v,Z)),i!==null&&(b=y*i,r==="border-box"&&(b=b+a+o),p=Z>b?"":"hidden",Z=Math.min(b,Z))}return{height:"".concat(Z,"px"),minHeight:"".concat(v,"px"),maxHeight:"".concat(b,"px"),overflowY:p,resize:"none"}}var VZ=0,cg=1,Goe=2,Xoe=He({compatConfig:{MODE:3},name:"ResizableTextArea",inheritAttrs:!1,props:iC(),setup:function(e,t){var i=t.attrs,l=t.emit,a=t.expose,o,r,f=Ne(),v=Ne({}),b=Ne(VZ);fn(function(){At.cancel(o),At.cancel(r)});var Z=function(){try{if(document.activeElement===f.value){var d=f.value.selectionStart,u=f.value.selectionEnd;f.value.setSelectionRange(d,u)}}catch{}},p=function(){var d=e.autoSize||e.autosize;if(!(!d||!f.value)){var u=d.minRows,s=d.maxRows;v.value=Woe(f.value,!1,u,s),b.value=cg,At.cancel(r),r=At(function(){b.value=Goe,r=At(function(){b.value=VZ,Z()})})}},y=function(){At.cancel(o),o=At(p)},X=function(d){if(b.value===VZ){l("resize",d);var u=e.autoSize||e.autosize;u&&y()}};Ci(e.autosize===void 0,"Input.TextArea","autosize is deprecated, please use autoSize instead.");var m=function(){var d=e.prefixCls,u=e.autoSize,s=e.autosize,h=e.disabled,c=dn(e,["prefixCls","onPressEnter","autoSize","autosize","defaultValue","allowClear","type","lazy","maxlength","valueModifiers"]),W=_e(d,i.class,ce({},"".concat(d,"-disabled"),h)),M=[i.style,v.value,b.value===cg?{overflowX:"hidden",overflowY:"hidden"}:null],I=P(P(P({},c),i),{},{style:M,class:W});return I.autofocus||delete I.autofocus,I.rows===0&&delete I.rows,D(rr,{onResize:X,disabled:!(u||s)},{default:function(){return[vl(D("textarea",P(P({},I),{},{ref:f}),null),[[Pu]])]}})};rt(function(){return e.value},function(){cn(function(){p()})}),Kt(function(){cn(function(){p()})});var N=Wl();return a({resizeTextarea:p,textArea:f,instance:N}),function(){return m()}}});const Noe=Xoe;function cC(n,e){return yt(n||"").slice(0,e).join("")}function ug(n,e,t,i){var l=t;return n?l=cC(t,i):yt(e||"").lengthi&&(l=e),l}const E1=He({compatConfig:{MODE:3},name:"ATextarea",inheritAttrs:!1,props:iC(),setup:function(e,t){var i=t.attrs,l=t.expose,a=t.emit,o=Hi(),r=Ne(e.value===void 0?e.defaultValue:e.value),f=Ne(),v=Ne(""),b=Nt("input",e),Z=b.prefixCls,p=b.size,y=b.direction,X=de(function(){return e.showCount===""||e.showCount||!1}),m=de(function(){return Number(e.maxlength)>0}),N=Ne(!1),G=Ne(),d=Ne(0),u=function(L){N.value=!0,G.value=v.value,d.value=L.currentTarget.selectionStart,a("compositionstart",L)},s=function(L){N.value=!1;var V=L.currentTarget.value;if(m.value){var Y,T=d.value>=e.maxlength+1||d.value===((Y=G.value)===null||Y===void 0?void 0:Y.length);V=ug(T,G.value,V,e.maxlength)}V!==v.value&&(M(V),nh(L.currentTarget,L,C,V)),a("compositionend",L)},h=Wl();rt(function(){return e.value},function(){"value"in h.vnode.props;var S;r.value=(S=e.value)!==null&&S!==void 0?S:""});var c=function(L){var V;rC((V=f.value)===null||V===void 0?void 0:V.textArea,L)},W=function(){var L,V;(L=f.value)===null||L===void 0||(V=L.textArea)===null||V===void 0||V.blur()},M=function(L,V){r.value!==L&&(e.value===void 0?r.value=L:cn(function(){if(f.value.textArea.value!==v.value){var Y,T,J;(Y=f.value)===null||Y===void 0||(T=(J=Y.instance).update)===null||T===void 0||T.call(J)}}),cn(function(){V&&V()}))},I=function(L){L.keyCode===13&&a("pressEnter",L),a("keydown",L)},w=function(L){var V=e.onBlur;V==null||V(L),o.onFieldBlur()},C=function(L){a("update:value",L.target.value),a("change",L),a("input",L),o.onFieldChange()},x=function(L){nh(f.value.textArea,L,C),M("",function(){c()})},R=function(L){var V=L.target.composing,Y=L.target.value;if(N.value=!!(L.isComposing||V),!(N.value&&e.lazy||r.value===Y)){if(m.value){var T=L.target,J=T.selectionStart>=e.maxlength+1||T.selectionStart===Y.length||!T.selectionStart;Y=ug(J,v.value,Y,e.maxlength)}nh(L.currentTarget,L,C,Y),M(Y)}},g=function(){var L,V,Y,T=i.style,J=i.class,U=e.bordered,K=U===void 0?!0:U,H=P(P(P({},dn(e,["allowClear"])),i),{},{style:X.value?{}:T,class:(L={},ce(L,"".concat(Z.value,"-borderless"),!K),ce(L,"".concat(J),J&&!X.value),ce(L,"".concat(Z.value,"-sm"),p.value==="small"),ce(L,"".concat(Z.value,"-lg"),p.value==="large"),L),showCount:null,prefixCls:Z.value,onInput:R,onChange:R,onBlur:w,onKeydown:I,onCompositionstart:u,onCompositionend:s});return(V=e.valueModifiers)!==null&&V!==void 0&&V.lazy&&delete H.onInput,D(Noe,P(P({},H),{},{id:(Y=H.id)!==null&&Y!==void 0?Y:o.id.value,ref:f,maxlength:e.maxlength}),null)};return l({focus:c,blur:W,resizableTextArea:f}),qt(function(){var S=Yv(r.value);!N.value&&m.value&&(e.value===null||e.value===void 0)&&(S=cC(S,e.maxlength)),v.value=S}),function(){var S=e.maxlength,L=e.bordered,V=L===void 0?!0:L,Y=e.hidden,T=i.style,J=i.class,U=P(P(P({},e),i),{},{prefixCls:Z.value,inputType:"text",handleReset:x,direction:y.value,bordered:V,style:X.value?void 0:T}),K=D(aC,P(P({},U),{},{value:v.value}),{element:g});if(X.value){var H=yt(v.value).length,k="";Yt(X.value)==="object"?k=X.value.formatter({count:H,maxlength:S}):k="".concat(H).concat(m.value?" / ".concat(S):""),K=D("div",{hidden:Y,class:_e("".concat(Z.value,"-textarea"),ce({},"".concat(Z.value,"-textarea-rtl"),y.value==="rtl"),"".concat(Z.value,"-textarea-show-count"),J),style:T,"data-count":Yt(k)!=="object"?k:void 0},[K])}return K}}});var Moe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"};const Ioe=Moe;function dg(n){for(var e=1;ei){if(e>0)return ce({},n,a);if(e<0&&li)return ce({},n,e<0?a:-a);return{}}function Eoe(n,e,t,i){var l=zoe(),a=l.width,o=l.height,r=null;return n<=a&&e<=o?r={x:0,y:0}:(n>a||e>o)&&(r=P(P({},Zg("x",t,n,a)),Zg("y",i,e,o))),r}var vg=Symbol("previewGroupContext"),Q1={provide:function(e){hn(vg,e)},inject:function(){return un(vg,{isPreviewGroup:Ne(!1),previewUrls:de(function(){return new Map}),setPreviewUrls:function(){},current:Ne(null),setCurrent:function(){},setShowPreview:function(){},setMousePosition:function(){},registerImage:null,rootClassName:""})}},Koe=He({compatConfig:{MODE:3},name:"PreviewGroup",inheritAttrs:!1,props:{previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:function(){return{}}}},setup:function(e,t){var i=t.slots,l=de(function(){var M={visible:void 0,onVisibleChange:function(){},getContainer:void 0,current:0};return Yt(e.preview)==="object"?mC(e.preview,M):M}),a=zn(new Map),o=Ne(),r=de(function(){return l.value.visible}),f=de(function(){return l.value.getContainer}),v=function(I,w){var C,x;(C=(x=l.value).onVisibleChange)===null||C===void 0||C.call(x,I,w)},b=Wi(!!r.value,{value:r,onChange:v}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne(null),m=de(function(){return r.value!==void 0}),N=de(function(){return Array.from(a.keys())}),G=de(function(){return N.value[l.value.current]}),d=de(function(){return new Map(Array.from(a).filter(function(M){var I=ft(M,2),w=I[1].canPreview;return!!w}).map(function(M){var I=ft(M,2),w=I[0],C=I[1].url;return[w,C]}))}),u=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;a.set(I,{url:w,canPreview:C})},s=function(I){o.value=I},h=function(I){X.value=I},c=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,x=function(){a.delete(I)};return a.set(I,{url:w,canPreview:C}),x},W=function(I){I==null||I.stopPropagation(),y(!1),h(null)};return rt(G,function(M){s(M)},{immediate:!0,flush:"post"}),qt(function(){p.value&&m.value&&s(G.value)},{flush:"post"}),Q1.provide({isPreviewGroup:Ne(!0),previewUrls:d,setPreviewUrls:u,current:o,setCurrent:s,setShowPreview:y,setMousePosition:h,registerImage:c}),function(){var M=Xn({},(fp(l.value),l.value));return D(ln,null,[i.default&&i.default(),D(fC,P(P({},M),{},{"ria-hidden":!p.value,visible:p.value,prefixCls:e.previewPrefixCls,onClose:W,mousePosition:X.value,src:d.value.get(o.value),icons:e.icons,getContainer:f.value}),null)])}}});const hC=Koe;var Es={x:0,y:0},Hoe=P(P({},hp()),{},{src:String,alt:String,rootClassName:String,icons:{type:Object,default:function(){return{}}}}),Poe=He({compatConfig:{MODE:3},name:"Preview",inheritAttrs:!1,props:Hoe,emits:["close","afterClose"],setup:function(e,t){var i=t.emit,l=t.attrs,a=zn(e.icons),o=a.rotateLeft,r=a.rotateRight,f=a.zoomIn,v=a.zoomOut,b=a.close,Z=a.left,p=a.right,y=Ne(1),X=Ne(0),m=Uoe(Es),N=ft(m,2),G=N[0],d=N[1],u=function(){return i("close")},s=Ne(),h=zn({originX:0,originY:0,deltaX:0,deltaY:0}),c=Ne(!1),W=Q1.inject(),M=W.previewUrls,I=W.current,w=W.isPreviewGroup,C=W.setCurrent,x=de(function(){return M.value.size}),R=de(function(){return Array.from(M.value.keys())}),g=de(function(){return R.value.indexOf(I.value)}),S=de(function(){return w.value?M.value.get(I.value):e.src}),L=de(function(){return w.value&&x.value>1}),V=Ne({wheelDirection:0}),Y=function(){y.value=1,X.value=0,d(Es),i("afterClose")},T=function(){y.value++,d(Es)},J=function(){y.value>1&&y.value--,d(Es)},U=function(){X.value+=90},K=function(){X.value-=90},H=function(le){le.preventDefault(),le.stopPropagation(),g.value>0&&C(R.value[g.value-1])},k=function(le){le.preventDefault(),le.stopPropagation(),g.value0&&C(R.value[g.value-1]):le.keyCode===bt.RIGHT&&g.value0?J():ae<0&&T()})}),la(function(){$()}),function(){var ae=e.visible,le=e.prefixCls,ee=e.rootClassName;return D(dC,P(P({},l),{},{transitionName:"zoom",maskTransitionName:"fade",closable:!1,keyboard:!0,prefixCls:le,onClose:u,afterClose:Y,visible:ae,wrapClassName:F,rootClassName:ee,getContainer:e.getContainer}),{default:function(){return[D("ul",{class:"".concat(e.prefixCls,"-operations")},[oe.map(function(be){var ne=be.icon,B=be.onClick,q=be.type,ue=be.disabled;return D("li",{class:_e(O,ce({},"".concat(e.prefixCls,"-operations-operation-disabled"),ue&&(ue==null?void 0:ue.value))),onClick:B,key:q},[Vl(ne,{class:Q})])})]),D("div",{class:"".concat(e.prefixCls,"-img-wrapper"),style:{transform:"translate3d(".concat(G.x,"px, ").concat(G.y,"px, 0)")}},[D("img",{onMousedown:he,onDblclick:E,ref:s,class:"".concat(e.prefixCls,"-img"),src:S.value,alt:e.alt,style:{transform:"scale3d(".concat(y.value,", ").concat(y.value,", 1) rotate(").concat(X.value,"deg)")}},null)]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-left"),ce({},"".concat(e.prefixCls,"-switch-left-disabled"),g.value<=0)),onClick:H},[Z]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-right"),ce({},"".concat(e.prefixCls,"-switch-right-disabled"),g.value>=x.value-1)),onClick:k},[p])]}})}}});const fC=Poe;var Qoe=["icons","maskClassName","src"],bC=function(){return{src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,previewMask:{type:[Boolean,Function],default:void 0},placeholder:We.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}},mC=function(e,t){var i=P({},e);return Object.keys(t).forEach(function(l){e[l]===void 0&&(i[l]=t[l])}),i},Boe=0,pC=He({compatConfig:{MODE:3},name:"Image",inheritAttrs:!1,props:bC(),emits:["click","error"],setup:function(e,t){var i=t.attrs,l=t.slots,a=t.emit,o=de(function(){return e.prefixCls}),r=de(function(){return"".concat(o.value,"-preview")}),f=de(function(){var J={visible:void 0,onVisibleChange:function(){},getContainer:void 0};return Yt(e.preview)==="object"?mC(e.preview,J):J}),v=de(function(){return e.placeholder&&e.placeholder!==!0||l.placeholder}),b=de(function(){return f.value.visible}),Z=de(function(){return f.value.getContainer}),p=de(function(){return b.value!==void 0}),y=function(U,K){var H,k;(H=(k=f.value).onVisibleChange)===null||H===void 0||H.call(k,U,K)},X=Wi(!!b.value,{value:b,onChange:y}),m=ft(X,2),N=m[0],G=m[1];rt(N,function(J,U){y(J,U)});var d=Ne(v.value?"loading":"normal");rt(function(){return e.src},function(){d.value=v.value?"loading":"normal"});var u=Ne(null),s=de(function(){return d.value==="error"}),h=Q1.inject(),c=h.isPreviewGroup,W=h.setCurrent,M=h.setShowPreview,I=h.setMousePosition,w=h.registerImage,C=Ne(Boe++),x=de(function(){return e.preview&&!s.value}),R=function(){d.value="normal"},g=function(U){d.value="error",a("error",U)},S=function(U){if(!p.value){var K=n0(U.target),H=K.left,k=K.top;c.value?(W(C.value),I({x:H,y:k})):u.value={x:H,y:k}}c.value?M(!0):G(!0),a("click",U)},L=function(){G(!1),p.value||(u.value=null)},V=Ne(null);rt(function(){return V},function(){d.value==="loading"&&V.value.complete&&(V.value.naturalWidth||V.value.naturalHeight)&&R()});var Y=function(){};Kt(function(){rt([function(){return e.src},x],function(){if(Y(),!c.value)return function(){};Y=w(C.value,e.src,x.value),x.value||Y()},{flush:"post",immediate:!0})}),la(function(){Y()});var T=function(U){return Soe(U)?U+"px":U};return function(){var J=e.prefixCls,U=e.wrapperClassName,K=e.fallback,H=e.src,k=e.placeholder,F=e.wrapperStyle,O=e.rootClassName,Q=i.width,oe=i.height,se=i.crossorigin,he=i.decoding,pe=i.alt,re=i.sizes,_=i.srcset,E=i.usemap,$=i.class,ae=i.style,le=f.value,ee=le.icons,te=le.maskClassName,be=le.src,ne=jt(le,Qoe),B=_e(J,U,O,ce({},"".concat(J,"-error"),s.value)),q=s.value&&K?K:be??H,ue={crossorigin:se,decoding:he,alt:pe,sizes:re,srcset:_,usemap:E,class:_e("".concat(J,"-img"),ce({},"".concat(J,"-img-placeholder"),k===!0),$),style:P({height:oe},ae)};return D(ln,null,[D("div",{class:B,onClick:x.value?S:function(ve){a("click",ve)},style:P({width:T(Q),height:T(oe)},F)},[D("img",P(P(P({},ue),s.value&&K?{src:K}:{onLoad:R,onError:g,src:H}),{},{ref:V}),null),d.value==="loading"&&D("div",{"aria-hidden":"true",class:"".concat(J,"-placeholder")},[k||l.placeholder&&l.placeholder()]),l.previewMask&&x.value&&D("div",{class:["".concat(J,"-mask"),te]},[l.previewMask()])]),!c.value&&x.value&&D(fC,P(P({},ne),{},{"aria-hidden":!N.value,visible:N.value,prefixCls:r.value,onClose:L,mousePosition:u.value,src:q,alt:pe,getContainer:Z.value,icons:ee,rootClassName:O}),null)])}}});pC.PreviewGroup=hC;const Aoe=pC;var _oe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const $oe=_oe;function Wg(n){for(var e=1;eNumber.MAX_SAFE_INTEGER)return String(wv()?BigInt(n).toString():Number.MAX_SAFE_INTEGER);if(nNumber.MAX_SAFE_INTEGER)return new n(Number.MAX_SAFE_INTEGER);if(l0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":tX(this.number):this.origin}}]),n}(),Wse=function(){function n(e){if(B0(this,n),ce(this,"origin",""),!e&&e!==0||!String(e).trim()){this.empty=!0;return}if(this.origin=String(e),e==="-"){this.nan=!0;return}var t=e;if(eX(t)&&(t=Number(t)),t=typeof t=="string"?t:tX(t),nX(t)){var i=ih(t);this.negative=i.negative;var l=i.trimStr.split(".");this.integer=BigInt(l[0]);var a=l[1]||"0";this.decimal=BigInt(a),this.decimalLen=a.length}else this.nan=!0}return Q0(n,[{key:"getMark",value:function(){return this.negative?"-":""}},{key:"getIntegerStr",value:function(){return this.integer.toString()}},{key:"getDecimalStr",value:function(){return this.decimal.toString().padStart(this.decimalLen,"0")}},{key:"alignDecimal",value:function(t){var i="".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(t,"0"));return BigInt(i)}},{key:"negate",value:function(){var t=new n(this.toString());return t.negative=!t.negative,t}},{key:"add",value:function(t){if(this.isInvalidate())return new n(t);var i=new n(t);if(i.isInvalidate())return this;var l=Math.max(this.getDecimalStr().length,i.getDecimalStr().length),a=this.alignDecimal(l),o=i.alignDecimal(l),r=(a+o).toString(),f=ih(r),v=f.negativeStr,b=f.trimStr,Z="".concat(v).concat(b.padStart(l+1,"0"));return new n("".concat(Z.slice(0,-l),".").concat(Z.slice(-l)))}},{key:"isEmpty",value:function(){return this.empty}},{key:"isNaN",value:function(){return this.nan}},{key:"isInvalidate",value:function(){return this.isEmpty()||this.isNaN()}},{key:"equals",value:function(t){return this.toString()===(t==null?void 0:t.toString())}},{key:"lessEquals",value:function(t){return this.add(t.negate().toString()).toNumber()<=0}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":ih("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),n}();function Dr(n){return wv()?new Wse(n):new vse(n)}function gv(n,e,t){if(n==="")return"";var i=ih(n),l=i.negativeStr,a=i.integerStr,o=i.decimalStr,r="".concat(e).concat(o),f="".concat(l).concat(a);if(t>=0){var v=Number(o[t]);if(v>=5){var b=Dr(n).add("".concat(l,"0.").concat("0".repeat(t)).concat(10-v));return gv(b.toString(),e,t)}return t===0?f:"".concat(f).concat(e).concat(o.padEnd(t,"0").slice(0,t))}return r===".0"?f:"".concat(f).concat(r)}var Gse=200,Xse=600;const Nse=He({compatConfig:{MODE:3},name:"StepHandler",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:{type:Function}},slots:["upNode","downNode"],setup:function(e,t){var i=t.slots,l=t.emit,a=Ne(),o=function(v,b){v.preventDefault(),l("step",b);function Z(){l("step",b),a.value=setTimeout(Z,Gse)}a.value=setTimeout(Z,Xse)},r=function(){clearTimeout(a.value)};return fn(function(){r()}),function(){if(YG())return null;var f=e.prefixCls,v=e.upDisabled,b=e.downDisabled,Z="".concat(f,"-handler"),p=_e(Z,"".concat(Z,"-up"),ce({},"".concat(Z,"-up-disabled"),v)),y=_e(Z,"".concat(Z,"-down"),ce({},"".concat(Z,"-down-disabled"),b)),X={unselectable:"on",role:"button",onMouseup:r,onMouseleave:r},m=i.upNode,N=i.downNode;return D("div",{class:"".concat(Z,"-wrap")},[D("span",P(P({},X),{},{onMousedown:function(d){o(d,!0)},"aria-label":"Increase Value","aria-disabled":v,class:p}),[(m==null?void 0:m())||D("span",{unselectable:"on",class:"".concat(f,"-handler-up-inner")},null)]),D("span",P(P({},X),{},{onMousedown:function(d){o(d,!1)},"aria-label":"Decrease Value","aria-disabled":b,class:y}),[(N==null?void 0:N())||D("span",{unselectable:"on",class:"".concat(f,"-handler-down-inner")},null)])])}}});function Mse(n,e){var t=Ne(null);function i(){try{var a=n.value,o=a.selectionStart,r=a.selectionEnd,f=a.value,v=f.substring(0,o),b=f.substring(r);t.value={start:o,end:r,value:f,beforeTxt:v,afterTxt:b}}catch{}}function l(){if(n.value&&t.value&&e.value)try{var a=n.value.value,o=t.value,r=o.beforeTxt,f=o.afterTxt,v=o.start,b=a.length;if(a.endsWith(f))b=a.length-t.value.afterTxt.length;else if(a.startsWith(r))b=r.length;else{var Z=r[v-1],p=a.indexOf(Z,v-1);p!==-1&&(b=p+1)}n.value.setSelectionRange(b,b)}catch(y){"Something warning of cursor restore. Please fire issue about this: ".concat(y.message)}}return[i,l]}const Ise=function(){var n=Ne(0),e=function(){At.cancel(n.value)};return fn(function(){e()}),function(t){e(),n.value=At(function(){t()})}};var Yse=["prefixCls","min","max","step","defaultValue","value","disabled","readonly","keyboard","controls","autofocus","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","lazy","class","style"],Ig=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},Yg=function(e){var t=Dr(e);return t.isInvalidate()?null:t},vC=function(){return{stringMode:{type:Boolean},defaultValue:{type:[String,Number]},value:{type:[String,Number]},prefixCls:{type:String},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number],default:1},tabindex:{type:Number},controls:{type:Boolean,default:!0},readonly:{type:Boolean},disabled:{type:Boolean},autofocus:{type:Boolean},keyboard:{type:Boolean,default:!0},parser:{type:Function},formatter:{type:Function},precision:{type:Number},decimalSeparator:{type:String},onInput:{type:Function},onChange:{type:Function},onPressEnter:{type:Function},onStep:{type:Function},onBlur:{type:Function},onFocus:{type:Function}}};const wse=He({compatConfig:{MODE:3},name:"InnerInputNumber",inheritAttrs:!1,props:P(P({},vC()),{},{lazy:Boolean}),slots:["upHandler","downHandler"],setup:function(e,t){var i=t.attrs,l=t.slots,a=t.emit,o=t.expose,r=Ne(),f=Ne(!1),v=Ne(!1),b=Ne(!1),Z=Ne(Dr(e.value));function p(k){e.value===void 0&&(Z.value=k)}var y=function(F,O){if(!O)return e.precision>=0?e.precision:Math.max(gh(F),gh(e.step))},X=function(F){var O=String(F);if(e.parser)return e.parser(O);var Q=O;return e.decimalSeparator&&(Q=Q.replace(e.decimalSeparator,".")),Q.replace(/[^\w.-]+/g,"")},m=Ne(""),N=function(F,O){if(e.formatter)return e.formatter(F,{userTyping:O,input:String(m.value)});var Q=typeof F=="number"?tX(F):F;if(!O){var oe=y(Q,O);if(nX(Q)&&(e.decimalSeparator||oe>=0)){var se=e.decimalSeparator||".";Q=gv(Q,se,oe)}}return Q},G=function(){var k=e.value;return Z.value.isInvalidate()&&["string","number"].includes(Yt(k))?Number.isNaN(k)?"":k:N(Z.value.toString(),!1)}();m.value=G;function d(k,F){m.value=N(k.isInvalidate()?k.toString(!1):k.toString(!F),F)}var u=de(function(){return Yg(e.max)}),s=de(function(){return Yg(e.min)}),h=de(function(){return!u.value||!Z.value||Z.value.isInvalidate()?!1:u.value.lessEquals(Z.value)}),c=de(function(){return!s.value||!Z.value||Z.value.isInvalidate()?!1:Z.value.lessEquals(s.value)}),W=Mse(r,f),M=ft(W,2),I=M[0],w=M[1],C=function(F){return u.value&&!F.lessEquals(u.value)?u.value:s.value&&!s.value.lessEquals(F)?s.value:null},x=function(F){return!C(F)},R=function(F,O){var Q=F,oe=x(Q)||Q.isEmpty();if(!Q.isEmpty()&&!O&&(Q=C(Q)||Q,oe=!0),!e.readonly&&!e.disabled&&oe){var se=Q.toString(),he=y(se,O);if(he>=0&&(Q=Dr(gv(se,".",he))),!Q.equals(Z.value)){var pe;p(Q),(pe=e.onChange)===null||pe===void 0||pe.call(e,Q.isEmpty()?null:Ig(e.stringMode,Q)),e.value===void 0&&d(Q,O)}return Q}return Z.value},g=Ise(),S=function k(F){var O;if(I(),m.value=F,!b.value){var Q=X(F),oe=Dr(Q);oe.isNaN()||R(oe,!0)}(O=e.onInput)===null||O===void 0||O.call(e,F),g(function(){var se=F;e.parser||(se=F.replace(/。/g,".")),se!==F&&k(se)})},L=function(){b.value=!0},V=function(){b.value=!1,S(r.value.value)},Y=function(F){S(F.target.value)},T=function(F){var O,Q;if(!(F&&h.value||!F&&c.value)){v.value=!1;var oe=Dr(e.step);F||(oe=oe.negate());var se=(Z.value||Dr(0)).add(oe.toString()),he=R(se,!1);(O=e.onStep)===null||O===void 0||O.call(e,Ig(e.stringMode,he),{offset:e.step,type:F?"up":"down"}),(Q=r.value)===null||Q===void 0||Q.focus()}},J=function(F){var O=Dr(X(m.value)),Q=O;O.isNaN()?Q=Z.value:Q=R(O,F),e.value!==void 0?d(Z.value,!1):Q.isNaN()||d(Q,!1)},U=function(F){var O=F.which;if(v.value=!0,O===bt.ENTER){var Q;b.value||(v.value=!1),J(!1),(Q=e.onPressEnter)===null||Q===void 0||Q.call(e,F)}e.keyboard!==!1&&!b.value&&[bt.UP,bt.DOWN].includes(O)&&(T(bt.UP===O),F.preventDefault())},K=function(){v.value=!1},H=function(F){J(!1),f.value=!1,v.value=!1,a("blur",F)};return rt(function(){return e.precision},function(){Z.value.isInvalidate()||d(Z.value,!1)},{flush:"post"}),rt(function(){return e.value},function(){var k=Dr(e.value);Z.value=k;var F=Dr(X(m.value));(!k.equals(F)||!v.value||e.formatter)&&d(k,v.value)},{flush:"post"}),rt(m,function(){e.formatter&&w()},{flush:"post"}),rt(function(){return e.disabled},function(k){k&&(f.value=!1)}),o({focus:function(){var F;(F=r.value)===null||F===void 0||F.focus()},blur:function(){var F;(F=r.value)===null||F===void 0||F.blur()}}),function(){var k,F=P(P({},i),e),O=F.prefixCls,Q=O===void 0?"rc-input-number":O,oe=F.min,se=F.max,he=F.step,pe=he===void 0?1:he;F.defaultValue,F.value;var re=F.disabled,_=F.readonly;F.keyboard;var E=F.controls,$=E===void 0?!0:E,ae=F.autofocus;F.stringMode,F.parser,F.formatter,F.precision,F.decimalSeparator,F.onChange,F.onInput,F.onPressEnter,F.onStep;var le=F.lazy,ee=F.class,te=F.style,be=jt(F,Yse),ne=l.upHandler,B=l.downHandler,q="".concat(Q,"-input"),ue={};return le?ue.onChange=Y:ue.onInput=Y,D("div",{class:_e(Q,ee,(k={},ce(k,"".concat(Q,"-focused"),f.value),ce(k,"".concat(Q,"-disabled"),re),ce(k,"".concat(Q,"-readonly"),_),ce(k,"".concat(Q,"-not-a-number"),Z.value.isNaN()),ce(k,"".concat(Q,"-out-of-range"),!Z.value.isInvalidate()&&!x(Z.value)),k)),style:te,onKeydown:U,onKeyup:K},[$&&D(Nse,{prefixCls:Q,upDisabled:h.value,downDisabled:c.value,onStep:T},{upNode:ne,downNode:B}),D("div",{class:"".concat(q,"-wrap")},[D("input",P(P(P({autofocus:ae,autocomplete:"off",role:"spinbutton","aria-valuemin":oe,"aria-valuemax":se,"aria-valuenow":Z.value.isInvalidate()?null:Z.value.toString(),step:pe},be),{},{ref:r,class:q,value:m.value,disabled:re,readonly:_,onFocus:function(Ge){f.value=!0,a("focus",Ge)}},ue),{},{onBlur:H,onCompositionstart:L,onCompositionend:V}),null)])])}}});function LZ(n){return n!=null}var gse=["class","bordered","readonly","style","addonBefore","addonAfter","prefix","valueModifiers"],wg=vC(),Vse=function(){return P(P({},wg),{},{size:{type:String},bordered:{type:Boolean,default:!0},placeholder:String,name:String,id:String,type:String,addonBefore:We.any,addonAfter:We.any,prefix:We.any,"onUpdate:value":wg.onChange,valueModifiers:Object})},RZ=He({compatConfig:{MODE:3},name:"AInputNumber",inheritAttrs:!1,props:Vse(),slots:["addonBefore","addonAfter","prefix"],setup:function(e,t){var i=t.emit,l=t.expose,a=t.attrs,o=t.slots,r=Hi(),f=Nt("input-number",e),v=f.prefixCls,b=f.size,Z=f.direction,p=Ne(e.value===void 0?e.defaultValue:e.value),y=Ne(!1);rt(function(){return e.value},function(){p.value=e.value});var X=Ne(null),m=function(){var h;(h=X.value)===null||h===void 0||h.focus()},N=function(){var h;(h=X.value)===null||h===void 0||h.blur()};l({focus:m,blur:N});var G=function(h){e.value===void 0&&(p.value=h),i("update:value",h),i("change",h),r.onFieldChange()},d=function(h){y.value=!1,i("blur",h),r.onFieldBlur()},u=function(h){y.value=!0,i("focus",h)};return function(){var s,h,c,W,M=P(P({},a),e),I=M.class,w=M.bordered,C=M.readonly,x=M.style,R=M.addonBefore,g=R===void 0?(s=o.addonBefore)===null||s===void 0?void 0:s.call(o):R,S=M.addonAfter,L=S===void 0?(h=o.addonAfter)===null||h===void 0?void 0:h.call(o):S,V=M.prefix,Y=V===void 0?(c=o.prefix)===null||c===void 0?void 0:c.call(o):V,T=M.valueModifiers,J=T===void 0?{}:T,U=jt(M,gse),K=v.value,H=b.value,k=_e((W={},ce(W,"".concat(K,"-lg"),H==="large"),ce(W,"".concat(K,"-sm"),H==="small"),ce(W,"".concat(K,"-rtl"),Z.value==="rtl"),ce(W,"".concat(K,"-readonly"),C),ce(W,"".concat(K,"-borderless"),!w),W),I),F=D(wse,P(P({},dn(U,["size","defaultValue"])),{},{ref:X,lazy:!!J.lazy,value:p.value,class:k,prefixCls:K,readonly:C,onChange:G,onBlur:d,onFocus:u}),{upHandler:function(){return D(Zse,{class:"".concat(K,"-handler-up-inner")},null)},downHandler:function(){return D(kh,{class:"".concat(K,"-handler-down-inner")},null)}}),O=LZ(g)||LZ(L);if(LZ(Y)){var Q,oe=_e("".concat(K,"-affix-wrapper"),(Q={},ce(Q,"".concat(K,"-affix-wrapper-focused"),y.value),ce(Q,"".concat(K,"-affix-wrapper-disabled"),e.disabled),ce(Q,"".concat(K,"-affix-wrapper-rtl"),Z.value==="rtl"),ce(Q,"".concat(K,"-affix-wrapper-readonly"),C),ce(Q,"".concat(K,"-affix-wrapper-borderless"),!w),ce(Q,"".concat(I),!O&&I),Q));F=D("div",{class:oe,style:x,onMouseup:function(){return X.value.focus()}},[D("span",{class:"".concat(K,"-prefix")},[Y]),F])}if(O){var se,he="".concat(K,"-group"),pe="".concat(he,"-addon"),re=g?D("div",{class:pe},[g]):null,_=L?D("div",{class:pe},[L]):null,E=_e("".concat(K,"-wrapper"),he,ce({},"".concat(he,"-rtl"),Z.value==="rtl")),$=_e("".concat(K,"-group-wrapper"),(se={},ce(se,"".concat(K,"-group-wrapper-sm"),H==="small"),ce(se,"".concat(K,"-group-wrapper-lg"),H==="large"),ce(se,"".concat(K,"-group-wrapper-rtl"),Z.value==="rtl"),se),I);F=D("div",{class:$,style:x},[D("div",{class:E},[re,F,_])])}return wn(F,{style:x})}}});const Lse=Xn(RZ,{install:function(e){return e.component(RZ.name,RZ),e}});var iX=function(){return{prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String}};function bp(n){var e=n.suffixCls,t=n.tagName,i=n.name;return function(l){var a=He({compatConfig:{MODE:3},name:i,props:iX(),setup:function(r,f){var v=f.slots,b=Nt(e,r),Z=b.prefixCls;return function(){var p=P(P({},r),{},{prefixCls:Z.value,tagName:t});return D(l,p,v)}}});return a}}var lX=He({compatConfig:{MODE:3},props:iX(),setup:function(e,t){var i=t.slots;return function(){return D(e.tagName,{class:e.prefixCls},i)}}}),Rse=He({compatConfig:{MODE:3},props:iX(),setup:function(e,t){var i=t.slots,l=Nt("",e),a=l.direction,o=Ne([]),r={addSider:function(b){o.value=[].concat(yt(o.value),[b])},removeSider:function(b){o.value=o.value.filter(function(Z){return Z!==b})}};hn(Px,r);var f=de(function(){var v,b=e.prefixCls,Z=e.hasSider;return v={},ce(v,"".concat(b),!0),ce(v,"".concat(b,"-has-sider"),typeof Z=="boolean"?Z:o.value.length>0),ce(v,"".concat(b,"-rtl"),a.value==="rtl"),v});return function(){var v=e.tagName;return D(v,{class:f.value},i)}}}),Tse=bp({suffixCls:"layout",tagName:"section",name:"ALayout"})(Rse),Qb=bp({suffixCls:"layout-header",tagName:"header",name:"ALayoutHeader"})(lX),Bb=bp({suffixCls:"layout-footer",tagName:"footer",name:"ALayoutFooter"})(lX),Ab=bp({suffixCls:"layout-content",tagName:"main",name:"ALayoutContent"})(lX);const TZ=Tse;var xse={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"bars",theme:"outlined"};const Cse=xse;function gg(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:"";return n+=1,"".concat(e).concat(n)}}();const _b=He({compatConfig:{MODE:3},name:"ALayoutSider",inheritAttrs:!1,props:pn(kse(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:["breakpoint","update:collapsed","collapse"],setup:function(e,t){var i=t.emit,l=t.attrs,a=t.slots,o=Nt("layout-sider",e),r=o.prefixCls,f=un(Px,void 0),v=Ne(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),b=Ne(!1);rt(function(){return e.collapsed},function(){v.value=!!e.collapsed}),hn(Hx,v);var Z=function(d,u){e.collapsed===void 0&&(v.value=d),i("update:collapsed",d),i("collapse",d,u)},p=Ne(function(G){b.value=G.matches,i("breakpoint",G.matches),v.value!==G.matches&&Z(G.matches,"responsive")}),y;function X(G){return p.value(G)}var m=Fse("ant-sider-");f&&f.addSider(m),Kt(function(){rt(function(){return e.breakpoint},function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}if(typeof window<"u"){var u=window,s=u.matchMedia;if(s&&e.breakpoint&&e.breakpoint in Vg){y=s("(max-width: ".concat(Vg[e.breakpoint],")"));try{y.addEventListener("change",X)}catch{y.addListener(X)}X(y)}}},{immediate:!0})}),fn(function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}f&&f.removeSider(m)});var N=function(){Z(!v.value,"clickTrigger")};return function(){var G,d,u,s=r.value,h=e.collapsedWidth,c=e.width,W=e.reverseArrow,M=e.zeroWidthTriggerStyle,I=e.trigger,w=I===void 0?(G=a.trigger)===null||G===void 0?void 0:G.call(a):I,C=e.collapsible,x=e.theme,R=v.value?h:c,g=Tx(R)?"".concat(R,"px"):String(R),S=parseFloat(String(h||0))===0?D("span",{onClick:N,class:_e("".concat(s,"-zero-width-trigger"),"".concat(s,"-zero-width-trigger-").concat(W?"right":"left")),style:M},[w||D(zse,null,null)]):null,L={expanded:D(W?To:Xc,null,null),collapsed:D(W?Xc:To,null,null)},V=v.value?"collapsed":"expanded",Y=L[V],T=w!==null?S||D("div",{class:"".concat(s,"-trigger"),onClick:N,style:{width:g}},[w||Y]):null,J=[l.style,{flex:"0 0 ".concat(g),maxWidth:g,minWidth:g,width:g}],U=_e(s,"".concat(s,"-").concat(x),(d={},ce(d,"".concat(s,"-collapsed"),!!v.value),ce(d,"".concat(s,"-has-trigger"),C&&w!==null&&!S),ce(d,"".concat(s,"-below"),!!b.value),ce(d,"".concat(s,"-zero-width"),parseFloat(g)===0),d),l.class);return D("aside",P(P({},l),{},{class:U,style:J}),[D("div",{class:"".concat(s,"-children")},[(u=a.default)===null||u===void 0?void 0:u.call(a)]),C||b.value&&S?T:null])}}});var Jse=Qb,Dse=Bb,Ose=_b,jse=Ab;const Use=Xn(TZ,{Header:Qb,Footer:Bb,Content:Ab,Sider:_b,install:function(e){return e.component(TZ.name,TZ),e.component(Qb.name,Qb),e.component(Bb.name,Bb),e.component(_b.name,_b),e.component(Ab.name,Ab),e}});var Ese=["class","style"],Kse=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:We.any,delay:Number,indicator:We.any}},$b=null;function Hse(n,e){return!!n&&!!e&&!isNaN(Number(e))}function Pse(n){var e=n.indicator;$b=typeof e=="function"?e:function(){return D(e,null,null)}}const vs=He({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:pn(Kse(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:un("configProvider",lG)}},data:function(){var e=this.spinning,t=this.delay,i=Hse(e,t);return{sSpinning:e&&!i}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var e=this;cn(function(){e.debouncifyUpdateSpinning(),e.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(e){var t=e||this.$props,i=t.delay;i&&(this.cancelExistingSpin(),this.updateSpinning=lp(this.originalUpdateSpinning,i))},updateSpinning:function(){var e=this.spinning,t=this.sSpinning;t!==e&&(this.sSpinning=e)},cancelExistingSpin:function(){var e=this.updateSpinning;e&&e.cancel&&e.cancel()},renderIndicator:function(e){var t="".concat(e,"-dot"),i=kW(this,"indicator");return i===null?null:(Array.isArray(i)&&(i=i.length===1?i[0]:i),yl(i)?Vl(i,{class:t}):$b&&yl($b())?Vl($b(),{class:t}):D("span",{class:"".concat(t," ").concat(e,"-dot-spin")},[D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null)]))}},render:function(){var e,t,i,l=this.$props,a=l.size,o=l.prefixCls,r=l.tip,f=r===void 0?(e=(t=this.$slots).tip)===null||e===void 0?void 0:e.call(t):r,v=l.wrapperClassName,b=this.$attrs,Z=b.class,p=b.style,y=jt(b,Ese),X=this.configProvider,m=X.getPrefixCls,N=X.direction,G=m("spin",o),d=this.sSpinning,u=(i={},ce(i,G,!0),ce(i,"".concat(G,"-sm"),a==="small"),ce(i,"".concat(G,"-lg"),a==="large"),ce(i,"".concat(G,"-spinning"),d),ce(i,"".concat(G,"-show-text"),!!f),ce(i,"".concat(G,"-rtl"),N==="rtl"),ce(i,Z,!!Z),i),s=D("div",P(P({},y),{},{style:p,class:u}),[this.renderIndicator(G),f?D("div",{class:"".concat(G,"-text")},[f]):null]),h=Lh(this);if(h&&h.length){var c,W=(c={},ce(c,"".concat(G,"-container"),!0),ce(c,"".concat(G,"-blur"),d),c);return D("div",{class:["".concat(G,"-nested-loading"),v]},[d&&D("div",{key:"loading"},[s]),D("div",{class:W,key:"container"},[h])])}return s}});vs.setDefaultIndicator=Pse;vs.install=function(n){return n.component(vs.name,vs),n};var Qse={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const Bse=Qse;function Lg(n){for(var e=1;e=0||b.relatedTarget.className.indexOf("".concat(y,"-item"))>=0)){t.value="";return}else p(i.value),t.value=""},r=function(b){t.value!==""&&(b.keyCode===Bs.ENTER||b.type==="click")&&(e.quickGo(i.value),t.value="")},f=de(function(){var v=e.pageSize,b=e.pageSizeOptions;return b.some(function(Z){return Z.toString()===v.toString()})?b:b.concat([v.toString()]).sort(function(Z,p){var y=isNaN(Number(Z))?0:Number(Z),X=isNaN(Number(p))?0:Number(p);return y-X})});return function(){var v=e.rootPrefixCls,b=e.locale,Z=e.changeSize,p=e.quickGo,y=e.goButton,X=e.selectComponentClass,m=e.selectPrefixCls,N=e.pageSize,G=e.disabled,d="".concat(v,"-options"),u=null,s=null,h=null;if(!Z&&!p)return null;if(Z&&X){var c=e.buildOptionText||l,W=f.value.map(function(M,I){return D(X.Option,{key:I,value:M},{default:function(){return[c({value:M})]}})});u=D(X,{disabled:G,prefixCls:m,showSearch:!1,class:"".concat(d,"-size-changer"),optionLabelProp:"children",value:(N||f.value[0]).toString(),onChange:function(I){return Z(Number(I))},getPopupContainer:function(I){return I.parentNode}},{default:function(){return[W]}})}return p&&(y&&(h=typeof y=="boolean"?D("button",{type:"button",onClick:r,onKeyup:r,disabled:G,class:"".concat(d,"-quick-jumper-button")},[b.jump_to_confirm]):D("span",{onClick:r,onKeyup:r},[y])),s=D("div",{class:"".concat(d,"-quick-jumper")},[b.jump_to,vl(D("input",{disabled:G,type:"text",value:t.value,onInput:a,onChange:a,onKeyup:r,onBlur:o},null),[[Pu]]),b.page,h])),D("li",{class:"".concat(d)},[u,s])}}}),lce={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"};var ace=["class"];function rce(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n}function oce(n){var e=n.originalElement;return e}function po(n,e,t){var i=typeof n>"u"?e.statePageSize:n;return Math.floor((t.total-1)/i)+1}const sce=He({compatConfig:{MODE:3},name:"Pagination",mixins:[Vc],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:We.string.def("rc-pagination"),selectPrefixCls:We.string.def("rc-select"),current:Number,defaultCurrent:We.number.def(1),total:We.number.def(0),pageSize:Number,defaultPageSize:We.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:We.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:We.oneOfType([We.looseBool,We.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:We.arrayOf(We.oneOfType([We.number,We.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:We.object.def(lce),itemRender:We.func.def(oce),prevIcon:We.any,nextIcon:We.any,jumpPrevIcon:We.any,jumpNextIcon:We.any,totalBoundaryShowSizeChanger:We.number.def(50)},data:function(){var e=this.$props,t=Sm([this.current,this.defaultCurrent]),i=Sm([this.pageSize,this.defaultPageSize]);return t=Math.min(t,po(i,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:i}},watch:{current:function(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize:function(e){var t={},i=this.stateCurrent,l=po(e,this.$data,this.$props);i=i>l?l:i,No(this,"current")||(t.stateCurrent=i,t.stateCurrentInputValue=i),t.statePageSize=e,this.setState(t)},stateCurrent:function(e,t){var i=this;this.$nextTick(function(){if(i.$refs.paginationNode){var l=i.$refs.paginationNode.querySelector(".".concat(i.prefixCls,"-item-").concat(t));l&&document.activeElement===l&&l.blur()}})},total:function(){var e={},t=po(this.pageSize,this.$data,this.$props);if(No(this,"current")){var i=Math.min(this.current,t);e.stateCurrent=i,e.stateCurrentInputValue=i}else{var l=this.stateCurrent;l===0&&t>0?l=1:l=Math.min(this.stateCurrent,t),e.stateCurrent=l}this.setState(e)}},methods:{getJumpPrevPage:function(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage:function(){return Math.min(po(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon:function(e,t){var i=this.$props.prefixCls,l=kW(this,e,this.$props)||D("button",{type:"button","aria-label":t,class:"".concat(i,"-item-link")},null);return l},getValidValue:function(e){var t=e.target.value,i=po(void 0,this.$data,this.$props),l=this.$data.stateCurrentInputValue,a;return t===""?a=t:isNaN(Number(t))?a=l:t>=i?a=i:a=Number(t),a},isValid:function(e){return rce(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper:function(){var e=this.$props,t=e.showQuickJumper,i=e.pageSize,l=e.total;return l<=i?!1:t},handleKeyDown:function(e){(e.keyCode===Bs.ARROW_UP||e.keyCode===Bs.ARROW_DOWN)&&e.preventDefault()},handleKeyUp:function(e){if(!(e.isComposing||e.target.composing)){var t=this.getValidValue(e),i=this.stateCurrentInputValue;t!==i&&this.setState({stateCurrentInputValue:t}),e.keyCode===Bs.ENTER?this.handleChange(t):e.keyCode===Bs.ARROW_UP?this.handleChange(t-1):e.keyCode===Bs.ARROW_DOWN&&this.handleChange(t+1)}},changePageSize:function(e){var t=this.stateCurrent,i=t,l=po(e,this.$data,this.$props);t=t>l?l:t,l===0&&(t=this.stateCurrent),typeof e=="number"&&(No(this,"pageSize")||this.setState({statePageSize:e}),No(this,"current")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit("update:pageSize",e),t!==i&&this.__emit("update:current",t),this.__emit("showSizeChange",t,e),this.__emit("change",t,e)},handleChange:function(e){var t=this.$props.disabled,i=e;if(this.isValid(i)&&!t){var l=po(void 0,this.$data,this.$props);return i>l?i=l:i<1&&(i=1),No(this,"current")||this.setState({stateCurrent:i,stateCurrentInputValue:i}),this.__emit("update:current",i),this.__emit("change",i,this.statePageSize),i}return this.stateCurrent},prev:function(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next:function(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev:function(){this.handleChange(this.getJumpPrevPage())},jumpNext:function(){this.handleChange(this.getJumpNextPage())},hasPrev:function(){return this.stateCurrent>1},hasNext:function(){return this.stateCurrentl},runIfEnter:function(e,t){if(e.key==="Enter"||e.charCode===13){for(var i=arguments.length,l=new Array(i>2?i-2:0),a=2;a0?s-1:0,T=s+1=V*2&&s!==1+2&&(w[0]=D(Ks,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Q,page:Q,class:"".concat(i,"-item-after-jump-prev"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.unshift(C)),I-s>=V*2&&s!==I-2&&(w[w.length-1]=D(Ks,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:oe,page:oe,class:"".concat(i,"-item-before-jump-next"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.push(x)),Q!==1&&w.unshift(R),oe!==I&&w.push(g)}var pe=null;Z&&(pe=D("li",{class:"".concat(i,"-total-text")},[Z(o,[o===0?0:(s-1)*h+1,s*h>o?o:s*h])]));var re=!J||!I,_=!U||!I,E=this.buildOptionText||this.$slots.buildOptionText;return D("ul",P(P({unselectable:"on",ref:"paginationNode"},M),{},{class:_e((e={},ce(e,"".concat(i),!0),ce(e,"".concat(i,"-disabled"),l),e),W)}),[pe,D("li",{title:b?r.prev_page:null,onClick:this.prev,tabindex:re?null:0,onKeypress:this.runIfEnterPrev,class:_e("".concat(i,"-prev"),ce({},"".concat(i,"-disabled"),re)),"aria-disabled":re},[this.renderPrev(Y)]),w,D("li",{title:b?r.next_page:null,onClick:this.next,tabindex:_?null:0,onKeypress:this.runIfEnterNext,class:_e("".concat(i,"-next"),ce({},"".concat(i,"-disabled"),_)),"aria-disabled":_},[this.renderNext(T)]),D(ice,{disabled:l,locale:r,rootPrefixCls:i,selectComponentClass:G,selectPrefixCls:d,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:s,pageSize:h,pageSizeOptions:u,buildOptionText:E||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:L},null)])}});var cce=["size","itemRender","buildOptionText","selectComponentClass","responsive"],uce=function(){return{total:Number,defaultCurrent:Number,disabled:{type:Boolean,default:void 0},current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:{type:Boolean,default:void 0},showSizeChanger:{type:Boolean,default:void 0},pageSizeOptions:Array,buildOptionText:Function,showQuickJumper:{type:[Boolean,Object],default:void 0},showTotal:Function,size:String,simple:{type:Boolean,default:void 0},locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:Function,role:String,responsive:Boolean,showLessItems:{type:Boolean,default:void 0},onChange:Function,onShowSizeChange:Function,"onUpdate:current":Function,"onUpdate:pageSize":Function}};const dce=He({compatConfig:{MODE:3},name:"APagination",inheritAttrs:!1,props:uce(),setup:function(e,t){var i=t.slots,l=t.attrs,a=Nt("pagination",e),o=a.prefixCls,r=a.configProvider,f=a.direction,v=de(function(){return r.getPrefixCls("select",e.selectPrefixCls)}),b=Qu(),Z=Qr("Pagination",KR,Ot(e,"locale")),p=ft(Z,1),y=p[0],X=function(N){var G=D("span",{class:"".concat(N,"-item-ellipsis")},[Fl("•••")]),d=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(Xc,null,null)]),u=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(To,null,null)]),s=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(_se,{class:"".concat(N,"-item-link-icon")},null),G])]),h=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(tce,{class:"".concat(N,"-item-link-icon")},null),G])]);if(f.value==="rtl"){var c=[u,d];d=c[0],u=c[1];var W=[h,s];s=W[0],h=W[1]}return{prevIcon:d,nextIcon:u,jumpPrevIcon:s,jumpNextIcon:h}};return function(){var m,N=e.size,G=e.itemRender,d=G===void 0?i.itemRender:G,u=e.buildOptionText,s=u===void 0?i.buildOptionText:u,h=e.selectComponentClass,c=e.responsive,W=jt(e,cce),M=N==="small"||!!((m=b.value)!==null&&m!==void 0&&m.xs&&!N&&c),I=P(P(P(P({},W),X(o.value)),{},{prefixCls:o.value,selectPrefixCls:v.value,selectComponentClass:h||(M?nce:Xs),locale:y.value,buildOptionText:s},l),{},{class:_e(ce({mini:M},"".concat(o.value,"-rtl"),f.value==="rtl"),l.class),itemRender:d});return D(sce,I,null)}}}),mp=wi(dce);var hce=function(){return{avatar:We.any,description:We.any,prefixCls:String,title:We.any}};const WC=He({compatConfig:{MODE:3},name:"AListItemMeta",props:hce(),displayName:"AListItemMeta",__ANT_LIST_ITEM_META:!0,slots:["avatar","description","title"],setup:function(e,t){var i=t.slots,l=Nt("list",e),a=l.prefixCls;return function(){var o,r,f,v,b,Z,p="".concat(a.value,"-item-meta"),y=(o=e.title)!==null&&o!==void 0?o:(r=i.title)===null||r===void 0?void 0:r.call(i),X=(f=e.description)!==null&&f!==void 0?f:(v=i.description)===null||v===void 0?void 0:v.call(i),m=(b=e.avatar)!==null&&b!==void 0?b:(Z=i.avatar)===null||Z===void 0?void 0:Z.call(i),N=D("div",{class:"".concat(a.value,"-item-meta-content")},[y&&D("h4",{class:"".concat(a.value,"-item-meta-title")},[y]),X&&D("div",{class:"".concat(a.value,"-item-meta-description")},[X])]);return D("div",{class:p},[m&&D("div",{class:"".concat(a.value,"-item-meta-avatar")},[m]),(y||X)&&N])}}});var GC=Symbol("ListContextKey"),fce=["class"],bce=function(){return{prefixCls:String,extra:We.any,actions:We.array,grid:Object,colStyle:{type:Object,default:void 0}}};const XC=He({compatConfig:{MODE:3},name:"AListItem",inheritAttrs:!1,Meta:WC,props:bce(),slots:["actions","extra"],setup:function(e,t){var i=t.slots,l=t.attrs,a=un(GC,{grid:Ne(),itemLayout:Ne()}),o=a.itemLayout,r=a.grid,f=Nt("list",e),v=f.prefixCls,b=function(){var y,X=((y=i.default)===null||y===void 0?void 0:y.call(i))||[],m;return X.forEach(function(N){sK(N)&&!Rh(N)&&(m=!0)}),m&&X.length>1},Z=function(){var y,X,m=(y=e.extra)!==null&&y!==void 0?y:(X=i.extra)===null||X===void 0?void 0:X.call(i);return o.value==="vertical"?!!m:!b()};return function(){var p,y,X,m,N,G=l.class,d=jt(l,fce),u=v.value,s=(p=e.extra)!==null&&p!==void 0?p:(y=i.extra)===null||y===void 0?void 0:y.call(i),h=(X=i.default)===null||X===void 0?void 0:X.call(i),c=(m=e.actions)!==null&&m!==void 0?m:ti((N=i.actions)===null||N===void 0?void 0:N.call(i));c=c&&!Array.isArray(c)?[c]:c;var W=c&&c.length>0&&D("ul",{class:"".concat(u,"-item-action"),key:"actions"},[c.map(function(w,C){return D("li",{key:"".concat(u,"-item-action-").concat(C)},[w,C!==c.length-1&&D("em",{class:"".concat(u,"-item-action-split")},null)])})]),M=r.value?"div":"li",I=D(M,P(P({},d),{},{class:_e("".concat(u,"-item"),ce({},"".concat(u,"-item-no-flex"),!Z()),G)}),{default:function(){return[o.value==="vertical"&&s?[D("div",{class:"".concat(u,"-item-main"),key:"content"},[h,W]),D("div",{class:"".concat(u,"-item-extra"),key:"extra"},[s])]:[h,W,wn(s,{key:"extra"})]]}});return r.value?D(ip,{flex:1,style:e.colStyle},{default:function(){return[I]}}):I}}});var mce=function(){return{bordered:{type:Boolean,default:void 0},dataSource:We.array,extra:We.any,grid:{type:Object,default:void 0},itemLayout:String,loading:{type:[Boolean,Object],default:void 0},loadMore:We.any,pagination:{type:[Boolean,Object],default:void 0},prefixCls:String,rowKey:[String,Number,Function],renderItem:Function,size:String,split:{type:Boolean,default:void 0},header:We.any,footer:We.any,locale:{type:Object}}},is=He({compatConfig:{MODE:3},name:"AList",Item:XC,props:pn(mce(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:["extra","loadMore","renderItem","header","footer"],setup:function(e,t){var i,l,a=t.slots;hn(GC,{grid:Ot(e,"grid"),itemLayout:Ot(e,"itemLayout")});var o={current:1,total:0},r=Nt("list",e),f=r.prefixCls,v=r.direction,b=r.renderEmpty,Z=de(function(){return e.pagination&&Yt(e.pagination)==="object"?e.pagination:{}}),p=Ne((i=Z.value.defaultCurrent)!==null&&i!==void 0?i:1),y=Ne((l=Z.value.defaultPageSize)!==null&&l!==void 0?l:10);rt(Z,function(){"current"in Z.value&&(p.value=Z.value.current),"pageSize"in Z.value&&(y.value=Z.value.pageSize)});var X=[],m=function(g){return function(S,L){p.value=S,y.value=L,Z.value[g]&&Z.value[g](S,L)}},N=m("onChange"),G=m("onShowSizeChange"),d=function(g){var S;return D("div",{class:"".concat(f.value,"-empty-text")},[((S=e.locale)===null||S===void 0?void 0:S.emptyText)||g("List")])},u=de(function(){return typeof e.loading=="boolean"?{spinning:e.loading}:e.loading}),s=de(function(){return u.value&&u.value.spinning}),h=de(function(){var R="";switch(e.size){case"large":R="lg";break;case"small":R="sm";break}return R}),c=de(function(){var R;return R={},ce(R,"".concat(f.value),!0),ce(R,"".concat(f.value,"-vertical"),e.itemLayout==="vertical"),ce(R,"".concat(f.value,"-").concat(h.value),h.value),ce(R,"".concat(f.value,"-split"),e.split),ce(R,"".concat(f.value,"-bordered"),e.bordered),ce(R,"".concat(f.value,"-loading"),s.value),ce(R,"".concat(f.value,"-grid"),!!e.grid),ce(R,"".concat(f.value,"-rtl"),v.value==="rtl"),R}),W=de(function(){var R=P(P({},o),{},{total:e.dataSource.length,current:p.value,pageSize:y.value},e.pagination||{}),g=Math.ceil(R.total/R.pageSize);return R.current>g&&(R.current=g),R}),M=de(function(){var R=yt(e.dataSource);return e.pagination&&e.dataSource.length>(W.value.current-1)*W.value.pageSize&&(R=yt(e.dataSource).splice((W.value.current-1)*W.value.pageSize,W.value.pageSize)),R}),I=Qu(),w=Sa(function(){for(var R=0;R0){X.length=0;var oe=M.value.map(function(pe,re){return x(pe,re)}),se=oe.map(function(pe,re){return D("div",{key:X[re],style:C.value},[pe])});Q=e.grid?D(w1,{gutter:e.grid.gutter},{default:function(){return[se]}}):D("ul",{class:"".concat(f.value,"-items")},[oe])}else!H.length&&!s.value&&(Q=d(b.value));var he=W.value.position||"bottom";return D("div",{class:F},[(he==="top"||he==="both")&&O,K&&D("div",{class:"".concat(f.value,"-header")},[K]),D(vs,u.value,{default:function(){return[Q,H]}}),U&&D("div",{class:"".concat(f.value,"-footer")},[U]),J||(he==="bottom"||he==="both")&&O])}}});is.install=function(n){return n.component(is.name,is),n.component(is.Item.name,is.Item),n.component(is.Item.Meta.name,is.Item.Meta),n};const pce=is;function yce(n){var e=n.selectionStart;return n.value.slice(0,e)}function Zce(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",t=Array.isArray(e)?e:[e];return t.reduce(function(i,l){var a=n.lastIndexOf(l);return a>i.location?{location:a,prefix:l}:i},{location:-1,prefix:""})}function Tg(n){return(n||"").toLowerCase()}function vce(n,e,t){var i=n[0];if(!i||i===t)return n;for(var l=n,a=e.length,o=0;o0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.prefix,l=i===void 0?"@":i,a=t.split,o=a===void 0?" ":a,r=Array.isArray(l)?l:[l];return e.split(o).map(function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",v=null;return r.some(function(b){var Z=f.slice(0,b.length);return Z===b?(v=b,!0):!1}),v!==null?{prefix:v,value:f.slice(v.length)}:null}).filter(function(f){return!!f&&!!f.value})},kce=function(){return P(P({},MC),{},{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},"onUpdate:value":{type:Function},notFoundContent:We.any,defaultValue:String,id:String})},xZ=He({compatConfig:{MODE:3},name:"AMentions",inheritAttrs:!1,props:kce(),slots:["notFoundContent","option"],setup:function(e,t){var i,l,a=t.slots,o=t.emit,r=t.attrs,f=t.expose,v=Nt("mentions",e),b=v.prefixCls,Z=v.renderEmpty,p=v.direction,y=Ne(!1),X=Ne(null),m=Ne((i=(l=e.value)!==null&&l!==void 0?l:e.defaultValue)!==null&&i!==void 0?i:""),N=Hi();rt(function(){return e.value},function(I){m.value=I});var G=function(w){y.value=!0,o("focus",w)},d=function(w){y.value=!1,o("blur",w),N.onFieldBlur()},u=function(){for(var w=arguments.length,C=new Array(w),x=0;x=Date.now()?f():v()},f=function(){if(!a.value){var y=SZ(e.value);a.value=setInterval(function(){o.value.$forceUpdate(),y>Date.now()&&i("change",y-Date.now()),r()},hue)}},v=function(){var y=e.value;if(a.value){clearInterval(a.value),a.value=void 0;var X=SZ(y);X100?100:n}function l0(n){var e=n.success,t=n.successPercent,i=t;return e&&"progress"in e&&(jn(!1,"Progress","`success.progress` is deprecated. Please use `success.percent` instead."),i=e.progress),e&&"percent"in e&&(i=e.percent),i}var zue=["from","to","direction"],kue=function(){return P(P({},vp()),{},{prefixCls:String,direction:{type:String}})},Fue=function(e){var t=[];return Object.keys(e).forEach(function(i){var l=parseFloat(i.replace(/%/g,""));isNaN(l)||t.push({key:l,value:e[i]})}),t=t.sort(function(i,l){return i.key-l.key}),t.map(function(i){var l=i.key,a=i.value;return"".concat(a," ").concat(l,"%")}).join(", ")},Jue=function(e,t){var i=e.from,l=i===void 0?bu.blue:i,a=e.to,o=a===void 0?bu.blue:a,r=e.direction,f=r===void 0?t==="rtl"?"to left":"to right":r,v=jt(e,zue);if(Object.keys(v).length!==0){var b=Fue(v);return{backgroundImage:"linear-gradient(".concat(f,", ").concat(b,")")}}return{backgroundImage:"linear-gradient(".concat(f,", ").concat(l,", ").concat(o,")")}};const Due=He({compatConfig:{MODE:3},name:"Line",props:kue(),setup:function(e,t){var i=t.slots,l=de(function(){var v=e.strokeColor,b=e.direction;return v&&typeof v!="string"?Jue(v,b):{background:v}}),a=de(function(){return e.trailColor?{backgroundColor:e.trailColor}:void 0}),o=de(function(){var v=e.percent,b=e.strokeWidth,Z=e.strokeLinecap,p=e.size;return P({width:"".concat(mc(v),"%"),height:"".concat(b||(p==="small"?6:8),"px"),borderRadius:Z==="square"?0:""},l.value)}),r=de(function(){return l0(e)}),f=de(function(){var v=e.strokeWidth,b=e.size,Z=e.strokeLinecap,p=e.success;return{width:"".concat(mc(r.value),"%"),height:"".concat(v||(b==="small"?6:8),"px"),borderRadius:Z==="square"?0:"",backgroundColor:p==null?void 0:p.strokeColor}});return function(){var v;return D(ln,null,[D("div",{class:"".concat(e.prefixCls,"-outer")},[D("div",{class:"".concat(e.prefixCls,"-inner"),style:a.value},[D("div",{class:"".concat(e.prefixCls,"-bg"),style:o.value},null),r.value!==void 0?D("div",{class:"".concat(e.prefixCls,"-success-bg"),style:f.value},null):null])]),(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});var Oue={percent:0,prefixCls:"vc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1},jue=function(e){var t=Ne(null);return Dl(function(){var i=Date.now(),l=!1;e.value.forEach(function(a){var o=(a==null?void 0:a.$el)||a;if(o){l=!0;var r=o.style;r.transitionDuration=".3s, .3s, .3s, .06s",t.value&&i-t.value<100&&(r.transitionDuration="0s, 0s")}}),l&&(t.value=Date.now())}),e},Uue={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String},Eue=["prefixCls","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","strokeColor"],kg=0;function Fg(n){return+n.replace("%","")}function Jg(n){return Array.isArray(n)?n:[n]}function Dg(n,e,t,i){var l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5?arguments[5]:void 0,o=50-i/2,r=0,f=-o,v=0,b=-2*o;switch(a){case"left":r=-o,f=0,v=2*o,b=0;break;case"right":r=o,f=0,v=-2*o,b=0;break;case"bottom":f=o,b=2*o;break}var Z="M 50,50 m ".concat(r,",").concat(f,` +`,Xoe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],gZ={},er;function Noe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=n.getAttribute("id")||n.getAttribute("data-reactid")||n.getAttribute("name");if(e&&gZ[t])return gZ[t];var i=window.getComputedStyle(n),a=i.getPropertyValue("box-sizing")||i.getPropertyValue("-moz-box-sizing")||i.getPropertyValue("-webkit-box-sizing"),l=parseFloat(i.getPropertyValue("padding-bottom"))+parseFloat(i.getPropertyValue("padding-top")),o=parseFloat(i.getPropertyValue("border-bottom-width"))+parseFloat(i.getPropertyValue("border-top-width")),r=Xoe.map(function(v){return"".concat(v,":").concat(i.getPropertyValue(v))}).join(";"),f={sizingStyle:r,paddingSize:l,borderSize:o,boxSizing:a};return e&&t&&(gZ[t]=f),f}function Moe(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;er||(er=document.createElement("textarea"),er.setAttribute("tab-index","-1"),er.setAttribute("aria-hidden","true"),document.body.appendChild(er)),n.getAttribute("wrap")?er.setAttribute("wrap",n.getAttribute("wrap")):er.removeAttribute("wrap");var a=Noe(n,e),l=a.paddingSize,o=a.borderSize,r=a.boxSizing,f=a.sizingStyle;er.setAttribute("style","".concat(f,";").concat(Goe)),er.value=n.value||n.placeholder||"";var v=Number.MIN_SAFE_INTEGER,b=Number.MAX_SAFE_INTEGER,Z=er.scrollHeight,p;if(r==="border-box"?Z+=o:r==="content-box"&&(Z-=l),t!==null||i!==null){er.value=" ";var y=er.scrollHeight-l;t!==null&&(v=y*t,r==="border-box"&&(v=v+l+o),Z=Math.max(v,Z)),i!==null&&(b=y*i,r==="border-box"&&(b=b+l+o),p=Z>b?"":"hidden",Z=Math.min(b,Z))}return{height:"".concat(Z,"px"),minHeight:"".concat(v,"px"),maxHeight:"".concat(b,"px"),overflowY:p,resize:"none"}}var VZ=0,dg=1,Ioe=2,Yoe=He({compatConfig:{MODE:3},name:"ResizableTextArea",inheritAttrs:!1,props:aC(),setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o,r,f=Ne(),v=Ne({}),b=Ne(VZ);fn(function(){At.cancel(o),At.cancel(r)});var Z=function(){try{if(document.activeElement===f.value){var d=f.value.selectionStart,u=f.value.selectionEnd;f.value.setSelectionRange(d,u)}}catch{}},p=function(){var d=e.autoSize||e.autosize;if(!(!d||!f.value)){var u=d.minRows,s=d.maxRows;v.value=Moe(f.value,!1,u,s),b.value=dg,At.cancel(r),r=At(function(){b.value=Ioe,r=At(function(){b.value=VZ,Z()})})}},y=function(){At.cancel(o),o=At(p)},X=function(d){if(b.value===VZ){a("resize",d);var u=e.autoSize||e.autosize;u&&y()}};Ci(e.autosize===void 0,"Input.TextArea","autosize is deprecated, please use autoSize instead.");var m=function(){var d=e.prefixCls,u=e.autoSize,s=e.autosize,h=e.disabled,c=dn(e,["prefixCls","onPressEnter","autoSize","autosize","defaultValue","allowClear","type","lazy","maxlength","valueModifiers"]),W=_e(d,i.class,ce({},"".concat(d,"-disabled"),h)),M=[i.style,v.value,b.value===dg?{overflowX:"hidden",overflowY:"hidden"}:null],I=P(P(P({},c),i),{},{style:M,class:W});return I.autofocus||delete I.autofocus,I.rows===0&&delete I.rows,D(rr,{onResize:X,disabled:!(u||s)},{default:function(){return[vl(D("textarea",P(P({},I),{},{ref:f}),null),[[Pu]])]}})};rt(function(){return e.value},function(){cn(function(){p()})}),Kt(function(){cn(function(){p()})});var N=Wl();return l({resizeTextarea:p,textArea:f,instance:N}),function(){return m()}}});const woe=Yoe;function dC(n,e){return yt(n||"").slice(0,e).join("")}function hg(n,e,t,i){var a=t;return n?a=dC(t,i):yt(e||"").lengthi&&(a=e),a}const H1=He({compatConfig:{MODE:3},name:"ATextarea",inheritAttrs:!1,props:aC(),setup:function(e,t){var i=t.attrs,a=t.expose,l=t.emit,o=Hi(),r=Ne(e.value===void 0?e.defaultValue:e.value),f=Ne(),v=Ne(""),b=Nt("input",e),Z=b.prefixCls,p=b.size,y=b.direction,X=de(function(){return e.showCount===""||e.showCount||!1}),m=de(function(){return Number(e.maxlength)>0}),N=Ne(!1),G=Ne(),d=Ne(0),u=function(L){N.value=!0,G.value=v.value,d.value=L.currentTarget.selectionStart,l("compositionstart",L)},s=function(L){N.value=!1;var V=L.currentTarget.value;if(m.value){var Y,T=d.value>=e.maxlength+1||d.value===((Y=G.value)===null||Y===void 0?void 0:Y.length);V=hg(T,G.value,V,e.maxlength)}V!==v.value&&(M(V),nh(L.currentTarget,L,C,V)),l("compositionend",L)},h=Wl();rt(function(){return e.value},function(){"value"in h.vnode.props;var S;r.value=(S=e.value)!==null&&S!==void 0?S:""});var c=function(L){var V;sC((V=f.value)===null||V===void 0?void 0:V.textArea,L)},W=function(){var L,V;(L=f.value)===null||L===void 0||(V=L.textArea)===null||V===void 0||V.blur()},M=function(L,V){r.value!==L&&(e.value===void 0?r.value=L:cn(function(){if(f.value.textArea.value!==v.value){var Y,T,J;(Y=f.value)===null||Y===void 0||(T=(J=Y.instance).update)===null||T===void 0||T.call(J)}}),cn(function(){V&&V()}))},I=function(L){L.keyCode===13&&l("pressEnter",L),l("keydown",L)},w=function(L){var V=e.onBlur;V==null||V(L),o.onFieldBlur()},C=function(L){l("update:value",L.target.value),l("change",L),l("input",L),o.onFieldChange()},x=function(L){nh(f.value.textArea,L,C),M("",function(){c()})},R=function(L){var V=L.target.composing,Y=L.target.value;if(N.value=!!(L.isComposing||V),!(N.value&&e.lazy||r.value===Y)){if(m.value){var T=L.target,J=T.selectionStart>=e.maxlength+1||T.selectionStart===Y.length||!T.selectionStart;Y=hg(J,v.value,Y,e.maxlength)}nh(L.currentTarget,L,C,Y),M(Y)}},g=function(){var L,V,Y,T=i.style,J=i.class,U=e.bordered,K=U===void 0?!0:U,H=P(P(P({},dn(e,["allowClear"])),i),{},{style:X.value?{}:T,class:(L={},ce(L,"".concat(Z.value,"-borderless"),!K),ce(L,"".concat(J),J&&!X.value),ce(L,"".concat(Z.value,"-sm"),p.value==="small"),ce(L,"".concat(Z.value,"-lg"),p.value==="large"),L),showCount:null,prefixCls:Z.value,onInput:R,onChange:R,onBlur:w,onKeydown:I,onCompositionstart:u,onCompositionend:s});return(V=e.valueModifiers)!==null&&V!==void 0&&V.lazy&&delete H.onInput,D(woe,P(P({},H),{},{id:(Y=H.id)!==null&&Y!==void 0?Y:o.id.value,ref:f,maxlength:e.maxlength}),null)};return a({focus:c,blur:W,resizableTextArea:f}),qt(function(){var S=gv(r.value);!N.value&&m.value&&(e.value===null||e.value===void 0)&&(S=dC(S,e.maxlength)),v.value=S}),function(){var S=e.maxlength,L=e.bordered,V=L===void 0?!0:L,Y=e.hidden,T=i.style,J=i.class,U=P(P(P({},e),i),{},{prefixCls:Z.value,inputType:"text",handleReset:x,direction:y.value,bordered:V,style:X.value?void 0:T}),K=D(oC,P(P({},U),{},{value:v.value}),{element:g});if(X.value){var H=yt(v.value).length,k="";Yt(X.value)==="object"?k=X.value.formatter({count:H,maxlength:S}):k="".concat(H).concat(m.value?" / ".concat(S):""),K=D("div",{hidden:Y,class:_e("".concat(Z.value,"-textarea"),ce({},"".concat(Z.value,"-textarea-rtl"),y.value==="rtl"),"".concat(Z.value,"-textarea-show-count"),J),style:T,"data-count":Yt(k)!=="object"?k:void 0},[K])}return K}}});var goe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"}}]},name:"eye",theme:"outlined"};const Voe=goe;function fg(n){for(var e=1;ei){if(e>0)return ce({},n,l);if(e<0&&ai)return ce({},n,e<0?l:-l);return{}}function Qoe(n,e,t,i){var a=Doe(),l=a.width,o=a.height,r=null;return n<=l&&e<=o?r={x:0,y:0}:(n>l||e>o)&&(r=P(P({},Wg("x",t,n,l)),Wg("y",i,e,o))),r}var Gg=Symbol("previewGroupContext"),A1={provide:function(e){hn(Gg,e)},inject:function(){return un(Gg,{isPreviewGroup:Ne(!1),previewUrls:de(function(){return new Map}),setPreviewUrls:function(){},current:Ne(null),setCurrent:function(){},setShowPreview:function(){},setMousePosition:function(){},registerImage:null,rootClassName:""})}},Boe=He({compatConfig:{MODE:3},name:"PreviewGroup",inheritAttrs:!1,props:{previewPrefixCls:String,preview:{type:[Boolean,Object],default:!0},icons:{type:Object,default:function(){return{}}}},setup:function(e,t){var i=t.slots,a=de(function(){var M={visible:void 0,onVisibleChange:function(){},getContainer:void 0,current:0};return Yt(e.preview)==="object"?yC(e.preview,M):M}),l=zn(new Map),o=Ne(),r=de(function(){return a.value.visible}),f=de(function(){return a.value.getContainer}),v=function(I,w){var C,x;(C=(x=a.value).onVisibleChange)===null||C===void 0||C.call(x,I,w)},b=Wi(!!r.value,{value:r,onChange:v}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne(null),m=de(function(){return r.value!==void 0}),N=de(function(){return Array.from(l.keys())}),G=de(function(){return N.value[a.value.current]}),d=de(function(){return new Map(Array.from(l).filter(function(M){var I=ft(M,2),w=I[1].canPreview;return!!w}).map(function(M){var I=ft(M,2),w=I[0],C=I[1].url;return[w,C]}))}),u=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;l.set(I,{url:w,canPreview:C})},s=function(I){o.value=I},h=function(I){X.value=I},c=function(I,w){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,x=function(){l.delete(I)};return l.set(I,{url:w,canPreview:C}),x},W=function(I){I==null||I.stopPropagation(),y(!1),h(null)};return rt(G,function(M){s(M)},{immediate:!0,flush:"post"}),qt(function(){p.value&&m.value&&s(G.value)},{flush:"post"}),A1.provide({isPreviewGroup:Ne(!0),previewUrls:d,setPreviewUrls:u,current:o,setCurrent:s,setShowPreview:y,setMousePosition:h,registerImage:c}),function(){var M=Xn({},(fp(a.value),a.value));return D(ln,null,[i.default&&i.default(),D(mC,P(P({},M),{},{"ria-hidden":!p.value,visible:p.value,prefixCls:e.previewPrefixCls,onClose:W,mousePosition:X.value,src:d.value.get(o.value),icons:e.icons,getContainer:f.value}),null)])}}});const bC=Boe;var Es={x:0,y:0},Aoe=P(P({},hp()),{},{src:String,alt:String,rootClassName:String,icons:{type:Object,default:function(){return{}}}}),_oe=He({compatConfig:{MODE:3},name:"Preview",inheritAttrs:!1,props:Aoe,emits:["close","afterClose"],setup:function(e,t){var i=t.emit,a=t.attrs,l=zn(e.icons),o=l.rotateLeft,r=l.rotateRight,f=l.zoomIn,v=l.zoomOut,b=l.close,Z=l.left,p=l.right,y=Ne(1),X=Ne(0),m=Poe(Es),N=ft(m,2),G=N[0],d=N[1],u=function(){return i("close")},s=Ne(),h=zn({originX:0,originY:0,deltaX:0,deltaY:0}),c=Ne(!1),W=A1.inject(),M=W.previewUrls,I=W.current,w=W.isPreviewGroup,C=W.setCurrent,x=de(function(){return M.value.size}),R=de(function(){return Array.from(M.value.keys())}),g=de(function(){return R.value.indexOf(I.value)}),S=de(function(){return w.value?M.value.get(I.value):e.src}),L=de(function(){return w.value&&x.value>1}),V=Ne({wheelDirection:0}),Y=function(){y.value=1,X.value=0,d(Es),i("afterClose")},T=function(){y.value++,d(Es)},J=function(){y.value>1&&y.value--,d(Es)},U=function(){X.value+=90},K=function(){X.value-=90},H=function(le){le.preventDefault(),le.stopPropagation(),g.value>0&&C(R.value[g.value-1])},k=function(le){le.preventDefault(),le.stopPropagation(),g.value0&&C(R.value[g.value-1]):le.keyCode===bt.RIGHT&&g.value0?J():ae<0&&T()})}),la(function(){$()}),function(){var ae=e.visible,le=e.prefixCls,ee=e.rootClassName;return D(fC,P(P({},a),{},{transitionName:"zoom",maskTransitionName:"fade",closable:!1,keyboard:!0,prefixCls:le,onClose:u,afterClose:Y,visible:ae,wrapClassName:F,rootClassName:ee,getContainer:e.getContainer}),{default:function(){return[D("ul",{class:"".concat(e.prefixCls,"-operations")},[oe.map(function(be){var ne=be.icon,B=be.onClick,q=be.type,ue=be.disabled;return D("li",{class:_e(O,ce({},"".concat(e.prefixCls,"-operations-operation-disabled"),ue&&(ue==null?void 0:ue.value))),onClick:B,key:q},[Vl(ne,{class:Q})])})]),D("div",{class:"".concat(e.prefixCls,"-img-wrapper"),style:{transform:"translate3d(".concat(G.x,"px, ").concat(G.y,"px, 0)")}},[D("img",{onMousedown:he,onDblclick:E,ref:s,class:"".concat(e.prefixCls,"-img"),src:S.value,alt:e.alt,style:{transform:"scale3d(".concat(y.value,", ").concat(y.value,", 1) rotate(").concat(X.value,"deg)")}},null)]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-left"),ce({},"".concat(e.prefixCls,"-switch-left-disabled"),g.value<=0)),onClick:H},[Z]),L.value&&D("div",{class:_e("".concat(e.prefixCls,"-switch-right"),ce({},"".concat(e.prefixCls,"-switch-right-disabled"),g.value>=x.value-1)),onClick:k},[p])]}})}}});const mC=_oe;var $oe=["icons","maskClassName","src"],pC=function(){return{src:String,wrapperClassName:String,wrapperStyle:{type:Object,default:void 0},rootClassName:String,prefixCls:String,previewPrefixCls:String,previewMask:{type:[Boolean,Function],default:void 0},placeholder:We.any,fallback:String,preview:{type:[Boolean,Object],default:!0},onClick:{type:Function},onError:{type:Function}}},yC=function(e,t){var i=P({},e);return Object.keys(t).forEach(function(a){e[a]===void 0&&(i[a]=t[a])}),i},qoe=0,ZC=He({compatConfig:{MODE:3},name:"Image",inheritAttrs:!1,props:pC(),emits:["click","error"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=de(function(){return e.prefixCls}),r=de(function(){return"".concat(o.value,"-preview")}),f=de(function(){var J={visible:void 0,onVisibleChange:function(){},getContainer:void 0};return Yt(e.preview)==="object"?yC(e.preview,J):J}),v=de(function(){return e.placeholder&&e.placeholder!==!0||a.placeholder}),b=de(function(){return f.value.visible}),Z=de(function(){return f.value.getContainer}),p=de(function(){return b.value!==void 0}),y=function(U,K){var H,k;(H=(k=f.value).onVisibleChange)===null||H===void 0||H.call(k,U,K)},X=Wi(!!b.value,{value:b,onChange:y}),m=ft(X,2),N=m[0],G=m[1];rt(N,function(J,U){y(J,U)});var d=Ne(v.value?"loading":"normal");rt(function(){return e.src},function(){d.value=v.value?"loading":"normal"});var u=Ne(null),s=de(function(){return d.value==="error"}),h=A1.inject(),c=h.isPreviewGroup,W=h.setCurrent,M=h.setShowPreview,I=h.setMousePosition,w=h.registerImage,C=Ne(qoe++),x=de(function(){return e.preview&&!s.value}),R=function(){d.value="normal"},g=function(U){d.value="error",l("error",U)},S=function(U){if(!p.value){var K=i0(U.target),H=K.left,k=K.top;c.value?(W(C.value),I({x:H,y:k})):u.value={x:H,y:k}}c.value?M(!0):G(!0),l("click",U)},L=function(){G(!1),p.value||(u.value=null)},V=Ne(null);rt(function(){return V},function(){d.value==="loading"&&V.value.complete&&(V.value.naturalWidth||V.value.naturalHeight)&&R()});var Y=function(){};Kt(function(){rt([function(){return e.src},x],function(){if(Y(),!c.value)return function(){};Y=w(C.value,e.src,x.value),x.value||Y()},{flush:"post",immediate:!0})}),la(function(){Y()});var T=function(U){return Joe(U)?U+"px":U};return function(){var J=e.prefixCls,U=e.wrapperClassName,K=e.fallback,H=e.src,k=e.placeholder,F=e.wrapperStyle,O=e.rootClassName,Q=i.width,oe=i.height,se=i.crossorigin,he=i.decoding,pe=i.alt,re=i.sizes,_=i.srcset,E=i.usemap,$=i.class,ae=i.style,le=f.value,ee=le.icons,te=le.maskClassName,be=le.src,ne=jt(le,$oe),B=_e(J,U,O,ce({},"".concat(J,"-error"),s.value)),q=s.value&&K?K:be??H,ue={crossorigin:se,decoding:he,alt:pe,sizes:re,srcset:_,usemap:E,class:_e("".concat(J,"-img"),ce({},"".concat(J,"-img-placeholder"),k===!0),$),style:P({height:oe},ae)};return D(ln,null,[D("div",{class:B,onClick:x.value?S:function(ve){l("click",ve)},style:P({width:T(Q),height:T(oe)},F)},[D("img",P(P(P({},ue),s.value&&K?{src:K}:{onLoad:R,onError:g,src:H}),{},{ref:V}),null),d.value==="loading"&&D("div",{"aria-hidden":"true",class:"".concat(J,"-placeholder")},[k||a.placeholder&&a.placeholder()]),a.previewMask&&x.value&&D("div",{class:["".concat(J,"-mask"),te]},[a.previewMask()])]),!c.value&&x.value&&D(mC,P(P({},ne),{},{"aria-hidden":!N.value,visible:N.value,prefixCls:r.value,onClose:L,mousePosition:u.value,src:q,alt:pe,getContainer:Z.value,icons:ee,rootClassName:O}),null)])}}});ZC.PreviewGroup=bC;const ese=ZC;var tse={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M672 418H144c-17.7 0-32 14.3-32 32v414c0 17.7 14.3 32 32 32h528c17.7 0 32-14.3 32-32V450c0-17.7-14.3-32-32-32zm-44 402H188V494h440v326z"}},{tag:"path",attrs:{d:"M819.3 328.5c-78.8-100.7-196-153.6-314.6-154.2l-.2-64c0-6.5-7.6-10.1-12.6-6.1l-128 101c-4 3.1-3.9 9.1 0 12.3L492 318.6c5.1 4 12.7.4 12.6-6.1v-63.9c12.9.1 25.9.9 38.8 2.5 42.1 5.2 82.1 18.2 119 38.7 38.1 21.2 71.2 49.7 98.4 84.3 27.1 34.7 46.7 73.7 58.1 115.8a325.95 325.95 0 016.5 140.9h74.9c14.8-103.6-11.3-213-81-302.3z"}}]},name:"rotate-left",theme:"outlined"};const nse=tse;function Xg(n){for(var e=1;eNumber.MAX_SAFE_INTEGER)return String(Vv()?BigInt(n).toString():Number.MAX_SAFE_INTEGER);if(nNumber.MAX_SAFE_INTEGER)return new n(Number.MAX_SAFE_INTEGER);if(a0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":iX(this.number):this.origin}}]),n}(),Mse=function(){function n(e){if(B0(this,n),ce(this,"origin",""),!e&&e!==0||!String(e).trim()){this.empty=!0;return}if(this.origin=String(e),e==="-"){this.nan=!0;return}var t=e;if(nX(t)&&(t=Number(t)),t=typeof t=="string"?t:iX(t),lX(t)){var i=ih(t);this.negative=i.negative;var a=i.trimStr.split(".");this.integer=BigInt(a[0]);var l=a[1]||"0";this.decimal=BigInt(l),this.decimalLen=l.length}else this.nan=!0}return Q0(n,[{key:"getMark",value:function(){return this.negative?"-":""}},{key:"getIntegerStr",value:function(){return this.integer.toString()}},{key:"getDecimalStr",value:function(){return this.decimal.toString().padStart(this.decimalLen,"0")}},{key:"alignDecimal",value:function(t){var i="".concat(this.getMark()).concat(this.getIntegerStr()).concat(this.getDecimalStr().padEnd(t,"0"));return BigInt(i)}},{key:"negate",value:function(){var t=new n(this.toString());return t.negative=!t.negative,t}},{key:"add",value:function(t){if(this.isInvalidate())return new n(t);var i=new n(t);if(i.isInvalidate())return this;var a=Math.max(this.getDecimalStr().length,i.getDecimalStr().length),l=this.alignDecimal(a),o=i.alignDecimal(a),r=(l+o).toString(),f=ih(r),v=f.negativeStr,b=f.trimStr,Z="".concat(v).concat(b.padStart(a+1,"0"));return new n("".concat(Z.slice(0,-a),".").concat(Z.slice(-a)))}},{key:"isEmpty",value:function(){return this.empty}},{key:"isNaN",value:function(){return this.nan}},{key:"isInvalidate",value:function(){return this.isEmpty()||this.isNaN()}},{key:"equals",value:function(t){return this.toString()===(t==null?void 0:t.toString())}},{key:"lessEquals",value:function(t){return this.add(t.negate().toString()).toNumber()<=0}},{key:"toNumber",value:function(){return this.isNaN()?NaN:Number(this.toString())}},{key:"toString",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t?this.isInvalidate()?"":ih("".concat(this.getMark()).concat(this.getIntegerStr(),".").concat(this.getDecimalStr())).fullStr:this.origin}}]),n}();function Dr(n){return Vv()?new Mse(n):new Nse(n)}function Lv(n,e,t){if(n==="")return"";var i=ih(n),a=i.negativeStr,l=i.integerStr,o=i.decimalStr,r="".concat(e).concat(o),f="".concat(a).concat(l);if(t>=0){var v=Number(o[t]);if(v>=5){var b=Dr(n).add("".concat(a,"0.").concat("0".repeat(t)).concat(10-v));return Lv(b.toString(),e,t)}return t===0?f:"".concat(f).concat(e).concat(o.padEnd(t,"0").slice(0,t))}return r===".0"?f:"".concat(f).concat(r)}var Ise=200,Yse=600;const wse=He({compatConfig:{MODE:3},name:"StepHandler",inheritAttrs:!1,props:{prefixCls:String,upDisabled:Boolean,downDisabled:Boolean,onStep:{type:Function}},slots:["upNode","downNode"],setup:function(e,t){var i=t.slots,a=t.emit,l=Ne(),o=function(v,b){v.preventDefault(),a("step",b);function Z(){a("step",b),l.value=setTimeout(Z,Ise)}l.value=setTimeout(Z,Yse)},r=function(){clearTimeout(l.value)};return fn(function(){r()}),function(){if(gG())return null;var f=e.prefixCls,v=e.upDisabled,b=e.downDisabled,Z="".concat(f,"-handler"),p=_e(Z,"".concat(Z,"-up"),ce({},"".concat(Z,"-up-disabled"),v)),y=_e(Z,"".concat(Z,"-down"),ce({},"".concat(Z,"-down-disabled"),b)),X={unselectable:"on",role:"button",onMouseup:r,onMouseleave:r},m=i.upNode,N=i.downNode;return D("div",{class:"".concat(Z,"-wrap")},[D("span",P(P({},X),{},{onMousedown:function(d){o(d,!0)},"aria-label":"Increase Value","aria-disabled":v,class:p}),[(m==null?void 0:m())||D("span",{unselectable:"on",class:"".concat(f,"-handler-up-inner")},null)]),D("span",P(P({},X),{},{onMousedown:function(d){o(d,!1)},"aria-label":"Decrease Value","aria-disabled":b,class:y}),[(N==null?void 0:N())||D("span",{unselectable:"on",class:"".concat(f,"-handler-down-inner")},null)])])}}});function gse(n,e){var t=Ne(null);function i(){try{var l=n.value,o=l.selectionStart,r=l.selectionEnd,f=l.value,v=f.substring(0,o),b=f.substring(r);t.value={start:o,end:r,value:f,beforeTxt:v,afterTxt:b}}catch{}}function a(){if(n.value&&t.value&&e.value)try{var l=n.value.value,o=t.value,r=o.beforeTxt,f=o.afterTxt,v=o.start,b=l.length;if(l.endsWith(f))b=l.length-t.value.afterTxt.length;else if(l.startsWith(r))b=r.length;else{var Z=r[v-1],p=l.indexOf(Z,v-1);p!==-1&&(b=p+1)}n.value.setSelectionRange(b,b)}catch(y){"Something warning of cursor restore. Please fire issue about this: ".concat(y.message)}}return[i,a]}const Vse=function(){var n=Ne(0),e=function(){At.cancel(n.value)};return fn(function(){e()}),function(t){e(),n.value=At(function(){t()})}};var Lse=["prefixCls","min","max","step","defaultValue","value","disabled","readonly","keyboard","controls","autofocus","stringMode","parser","formatter","precision","decimalSeparator","onChange","onInput","onPressEnter","onStep","lazy","class","style"],wg=function(e,t){return e||t.isEmpty()?t.toString():t.toNumber()},gg=function(e){var t=Dr(e);return t.isInvalidate()?null:t},GC=function(){return{stringMode:{type:Boolean},defaultValue:{type:[String,Number]},value:{type:[String,Number]},prefixCls:{type:String},min:{type:[String,Number]},max:{type:[String,Number]},step:{type:[String,Number],default:1},tabindex:{type:Number},controls:{type:Boolean,default:!0},readonly:{type:Boolean},disabled:{type:Boolean},autofocus:{type:Boolean},keyboard:{type:Boolean,default:!0},parser:{type:Function},formatter:{type:Function},precision:{type:Number},decimalSeparator:{type:String},onInput:{type:Function},onChange:{type:Function},onPressEnter:{type:Function},onStep:{type:Function},onBlur:{type:Function},onFocus:{type:Function}}};const Rse=He({compatConfig:{MODE:3},name:"InnerInputNumber",inheritAttrs:!1,props:P(P({},GC()),{},{lazy:Boolean}),slots:["upHandler","downHandler"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Ne(),f=Ne(!1),v=Ne(!1),b=Ne(!1),Z=Ne(Dr(e.value));function p(k){e.value===void 0&&(Z.value=k)}var y=function(F,O){if(!O)return e.precision>=0?e.precision:Math.max(gh(F),gh(e.step))},X=function(F){var O=String(F);if(e.parser)return e.parser(O);var Q=O;return e.decimalSeparator&&(Q=Q.replace(e.decimalSeparator,".")),Q.replace(/[^\w.-]+/g,"")},m=Ne(""),N=function(F,O){if(e.formatter)return e.formatter(F,{userTyping:O,input:String(m.value)});var Q=typeof F=="number"?iX(F):F;if(!O){var oe=y(Q,O);if(lX(Q)&&(e.decimalSeparator||oe>=0)){var se=e.decimalSeparator||".";Q=Lv(Q,se,oe)}}return Q},G=function(){var k=e.value;return Z.value.isInvalidate()&&["string","number"].includes(Yt(k))?Number.isNaN(k)?"":k:N(Z.value.toString(),!1)}();m.value=G;function d(k,F){m.value=N(k.isInvalidate()?k.toString(!1):k.toString(!F),F)}var u=de(function(){return gg(e.max)}),s=de(function(){return gg(e.min)}),h=de(function(){return!u.value||!Z.value||Z.value.isInvalidate()?!1:u.value.lessEquals(Z.value)}),c=de(function(){return!s.value||!Z.value||Z.value.isInvalidate()?!1:Z.value.lessEquals(s.value)}),W=gse(r,f),M=ft(W,2),I=M[0],w=M[1],C=function(F){return u.value&&!F.lessEquals(u.value)?u.value:s.value&&!s.value.lessEquals(F)?s.value:null},x=function(F){return!C(F)},R=function(F,O){var Q=F,oe=x(Q)||Q.isEmpty();if(!Q.isEmpty()&&!O&&(Q=C(Q)||Q,oe=!0),!e.readonly&&!e.disabled&&oe){var se=Q.toString(),he=y(se,O);if(he>=0&&(Q=Dr(Lv(se,".",he))),!Q.equals(Z.value)){var pe;p(Q),(pe=e.onChange)===null||pe===void 0||pe.call(e,Q.isEmpty()?null:wg(e.stringMode,Q)),e.value===void 0&&d(Q,O)}return Q}return Z.value},g=Vse(),S=function k(F){var O;if(I(),m.value=F,!b.value){var Q=X(F),oe=Dr(Q);oe.isNaN()||R(oe,!0)}(O=e.onInput)===null||O===void 0||O.call(e,F),g(function(){var se=F;e.parser||(se=F.replace(/。/g,".")),se!==F&&k(se)})},L=function(){b.value=!0},V=function(){b.value=!1,S(r.value.value)},Y=function(F){S(F.target.value)},T=function(F){var O,Q;if(!(F&&h.value||!F&&c.value)){v.value=!1;var oe=Dr(e.step);F||(oe=oe.negate());var se=(Z.value||Dr(0)).add(oe.toString()),he=R(se,!1);(O=e.onStep)===null||O===void 0||O.call(e,wg(e.stringMode,he),{offset:e.step,type:F?"up":"down"}),(Q=r.value)===null||Q===void 0||Q.focus()}},J=function(F){var O=Dr(X(m.value)),Q=O;O.isNaN()?Q=Z.value:Q=R(O,F),e.value!==void 0?d(Z.value,!1):Q.isNaN()||d(Q,!1)},U=function(F){var O=F.which;if(v.value=!0,O===bt.ENTER){var Q;b.value||(v.value=!1),J(!1),(Q=e.onPressEnter)===null||Q===void 0||Q.call(e,F)}e.keyboard!==!1&&!b.value&&[bt.UP,bt.DOWN].includes(O)&&(T(bt.UP===O),F.preventDefault())},K=function(){v.value=!1},H=function(F){J(!1),f.value=!1,v.value=!1,l("blur",F)};return rt(function(){return e.precision},function(){Z.value.isInvalidate()||d(Z.value,!1)},{flush:"post"}),rt(function(){return e.value},function(){var k=Dr(e.value);Z.value=k;var F=Dr(X(m.value));(!k.equals(F)||!v.value||e.formatter)&&d(k,v.value)},{flush:"post"}),rt(m,function(){e.formatter&&w()},{flush:"post"}),rt(function(){return e.disabled},function(k){k&&(f.value=!1)}),o({focus:function(){var F;(F=r.value)===null||F===void 0||F.focus()},blur:function(){var F;(F=r.value)===null||F===void 0||F.blur()}}),function(){var k,F=P(P({},i),e),O=F.prefixCls,Q=O===void 0?"rc-input-number":O,oe=F.min,se=F.max,he=F.step,pe=he===void 0?1:he;F.defaultValue,F.value;var re=F.disabled,_=F.readonly;F.keyboard;var E=F.controls,$=E===void 0?!0:E,ae=F.autofocus;F.stringMode,F.parser,F.formatter,F.precision,F.decimalSeparator,F.onChange,F.onInput,F.onPressEnter,F.onStep;var le=F.lazy,ee=F.class,te=F.style,be=jt(F,Lse),ne=a.upHandler,B=a.downHandler,q="".concat(Q,"-input"),ue={};return le?ue.onChange=Y:ue.onInput=Y,D("div",{class:_e(Q,ee,(k={},ce(k,"".concat(Q,"-focused"),f.value),ce(k,"".concat(Q,"-disabled"),re),ce(k,"".concat(Q,"-readonly"),_),ce(k,"".concat(Q,"-not-a-number"),Z.value.isNaN()),ce(k,"".concat(Q,"-out-of-range"),!Z.value.isInvalidate()&&!x(Z.value)),k)),style:te,onKeydown:U,onKeyup:K},[$&&D(wse,{prefixCls:Q,upDisabled:h.value,downDisabled:c.value,onStep:T},{upNode:ne,downNode:B}),D("div",{class:"".concat(q,"-wrap")},[D("input",P(P(P({autofocus:ae,autocomplete:"off",role:"spinbutton","aria-valuemin":oe,"aria-valuemax":se,"aria-valuenow":Z.value.isInvalidate()?null:Z.value.toString(),step:pe},be),{},{ref:r,class:q,value:m.value,disabled:re,readonly:_,onFocus:function(Ge){f.value=!0,l("focus",Ge)}},ue),{},{onBlur:H,onCompositionstart:L,onCompositionend:V}),null)])])}}});function LZ(n){return n!=null}var Tse=["class","bordered","readonly","style","addonBefore","addonAfter","prefix","valueModifiers"],Vg=GC(),xse=function(){return P(P({},Vg),{},{size:{type:String},bordered:{type:Boolean,default:!0},placeholder:String,name:String,id:String,type:String,addonBefore:We.any,addonAfter:We.any,prefix:We.any,"onUpdate:value":Vg.onChange,valueModifiers:Object})},RZ=He({compatConfig:{MODE:3},name:"AInputNumber",inheritAttrs:!1,props:xse(),slots:["addonBefore","addonAfter","prefix"],setup:function(e,t){var i=t.emit,a=t.expose,l=t.attrs,o=t.slots,r=Hi(),f=Nt("input-number",e),v=f.prefixCls,b=f.size,Z=f.direction,p=Ne(e.value===void 0?e.defaultValue:e.value),y=Ne(!1);rt(function(){return e.value},function(){p.value=e.value});var X=Ne(null),m=function(){var h;(h=X.value)===null||h===void 0||h.focus()},N=function(){var h;(h=X.value)===null||h===void 0||h.blur()};a({focus:m,blur:N});var G=function(h){e.value===void 0&&(p.value=h),i("update:value",h),i("change",h),r.onFieldChange()},d=function(h){y.value=!1,i("blur",h),r.onFieldBlur()},u=function(h){y.value=!0,i("focus",h)};return function(){var s,h,c,W,M=P(P({},l),e),I=M.class,w=M.bordered,C=M.readonly,x=M.style,R=M.addonBefore,g=R===void 0?(s=o.addonBefore)===null||s===void 0?void 0:s.call(o):R,S=M.addonAfter,L=S===void 0?(h=o.addonAfter)===null||h===void 0?void 0:h.call(o):S,V=M.prefix,Y=V===void 0?(c=o.prefix)===null||c===void 0?void 0:c.call(o):V,T=M.valueModifiers,J=T===void 0?{}:T,U=jt(M,Tse),K=v.value,H=b.value,k=_e((W={},ce(W,"".concat(K,"-lg"),H==="large"),ce(W,"".concat(K,"-sm"),H==="small"),ce(W,"".concat(K,"-rtl"),Z.value==="rtl"),ce(W,"".concat(K,"-readonly"),C),ce(W,"".concat(K,"-borderless"),!w),W),I),F=D(Rse,P(P({},dn(U,["size","defaultValue"])),{},{ref:X,lazy:!!J.lazy,value:p.value,class:k,prefixCls:K,readonly:C,onChange:G,onBlur:d,onFocus:u}),{upHandler:function(){return D(Xse,{class:"".concat(K,"-handler-up-inner")},null)},downHandler:function(){return D(Fh,{class:"".concat(K,"-handler-down-inner")},null)}}),O=LZ(g)||LZ(L);if(LZ(Y)){var Q,oe=_e("".concat(K,"-affix-wrapper"),(Q={},ce(Q,"".concat(K,"-affix-wrapper-focused"),y.value),ce(Q,"".concat(K,"-affix-wrapper-disabled"),e.disabled),ce(Q,"".concat(K,"-affix-wrapper-rtl"),Z.value==="rtl"),ce(Q,"".concat(K,"-affix-wrapper-readonly"),C),ce(Q,"".concat(K,"-affix-wrapper-borderless"),!w),ce(Q,"".concat(I),!O&&I),Q));F=D("div",{class:oe,style:x,onMouseup:function(){return X.value.focus()}},[D("span",{class:"".concat(K,"-prefix")},[Y]),F])}if(O){var se,he="".concat(K,"-group"),pe="".concat(he,"-addon"),re=g?D("div",{class:pe},[g]):null,_=L?D("div",{class:pe},[L]):null,E=_e("".concat(K,"-wrapper"),he,ce({},"".concat(he,"-rtl"),Z.value==="rtl")),$=_e("".concat(K,"-group-wrapper"),(se={},ce(se,"".concat(K,"-group-wrapper-sm"),H==="small"),ce(se,"".concat(K,"-group-wrapper-lg"),H==="large"),ce(se,"".concat(K,"-group-wrapper-rtl"),Z.value==="rtl"),se),I);F=D("div",{class:$,style:x},[D("div",{class:E},[re,F,_])])}return wn(F,{style:x})}}});const Cse=Xn(RZ,{install:function(e){return e.component(RZ.name,RZ),e}});var aX=function(){return{prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String}};function bp(n){var e=n.suffixCls,t=n.tagName,i=n.name;return function(a){var l=He({compatConfig:{MODE:3},name:i,props:aX(),setup:function(r,f){var v=f.slots,b=Nt(e,r),Z=b.prefixCls;return function(){var p=P(P({},r),{},{prefixCls:Z.value,tagName:t});return D(a,p,v)}}});return l}}var rX=He({compatConfig:{MODE:3},props:aX(),setup:function(e,t){var i=t.slots;return function(){return D(e.tagName,{class:e.prefixCls},i)}}}),Sse=He({compatConfig:{MODE:3},props:aX(),setup:function(e,t){var i=t.slots,a=Nt("",e),l=a.direction,o=Ne([]),r={addSider:function(b){o.value=[].concat(yt(o.value),[b])},removeSider:function(b){o.value=o.value.filter(function(Z){return Z!==b})}};hn(Bx,r);var f=de(function(){var v,b=e.prefixCls,Z=e.hasSider;return v={},ce(v,"".concat(b),!0),ce(v,"".concat(b,"-has-sider"),typeof Z=="boolean"?Z:o.value.length>0),ce(v,"".concat(b,"-rtl"),l.value==="rtl"),v});return function(){var v=e.tagName;return D(v,{class:f.value},i)}}}),zse=bp({suffixCls:"layout",tagName:"section",name:"ALayout"})(Sse),Bb=bp({suffixCls:"layout-header",tagName:"header",name:"ALayoutHeader"})(rX),Ab=bp({suffixCls:"layout-footer",tagName:"footer",name:"ALayoutFooter"})(rX),_b=bp({suffixCls:"layout-content",tagName:"main",name:"ALayoutContent"})(rX);const TZ=zse;var kse={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z"}}]},name:"bars",theme:"outlined"};const Fse=kse;function Lg(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:"";return n+=1,"".concat(e).concat(n)}}();const $b=He({compatConfig:{MODE:3},name:"ALayoutSider",inheritAttrs:!1,props:pn(Ose(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:["breakpoint","update:collapsed","collapse"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=Nt("layout-sider",e),r=o.prefixCls,f=un(Bx,void 0),v=Ne(!!(e.collapsed!==void 0?e.collapsed:e.defaultCollapsed)),b=Ne(!1);rt(function(){return e.collapsed},function(){v.value=!!e.collapsed}),hn(Qx,v);var Z=function(d,u){e.collapsed===void 0&&(v.value=d),i("update:collapsed",d),i("collapse",d,u)},p=Ne(function(G){b.value=G.matches,i("breakpoint",G.matches),v.value!==G.matches&&Z(G.matches,"responsive")}),y;function X(G){return p.value(G)}var m=jse("ant-sider-");f&&f.addSider(m),Kt(function(){rt(function(){return e.breakpoint},function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}if(typeof window<"u"){var u=window,s=u.matchMedia;if(s&&e.breakpoint&&e.breakpoint in Rg){y=s("(max-width: ".concat(Rg[e.breakpoint],")"));try{y.addEventListener("change",X)}catch{y.addListener(X)}X(y)}}},{immediate:!0})}),fn(function(){try{var G;(G=y)===null||G===void 0||G.removeEventListener("change",X)}catch{var d;(d=y)===null||d===void 0||d.removeListener(X)}f&&f.removeSider(m)});var N=function(){Z(!v.value,"clickTrigger")};return function(){var G,d,u,s=r.value,h=e.collapsedWidth,c=e.width,W=e.reverseArrow,M=e.zeroWidthTriggerStyle,I=e.trigger,w=I===void 0?(G=l.trigger)===null||G===void 0?void 0:G.call(l):I,C=e.collapsible,x=e.theme,R=v.value?h:c,g=Cx(R)?"".concat(R,"px"):String(R),S=parseFloat(String(h||0))===0?D("span",{onClick:N,class:_e("".concat(s,"-zero-width-trigger"),"".concat(s,"-zero-width-trigger-").concat(W?"right":"left")),style:M},[w||D(Dse,null,null)]):null,L={expanded:D(W?To:Xc,null,null),collapsed:D(W?Xc:To,null,null)},V=v.value?"collapsed":"expanded",Y=L[V],T=w!==null?S||D("div",{class:"".concat(s,"-trigger"),onClick:N,style:{width:g}},[w||Y]):null,J=[a.style,{flex:"0 0 ".concat(g),maxWidth:g,minWidth:g,width:g}],U=_e(s,"".concat(s,"-").concat(x),(d={},ce(d,"".concat(s,"-collapsed"),!!v.value),ce(d,"".concat(s,"-has-trigger"),C&&w!==null&&!S),ce(d,"".concat(s,"-below"),!!b.value),ce(d,"".concat(s,"-zero-width"),parseFloat(g)===0),d),a.class);return D("aside",P(P({},a),{},{class:U,style:J}),[D("div",{class:"".concat(s,"-children")},[(u=l.default)===null||u===void 0?void 0:u.call(l)]),C||b.value&&S?T:null])}}});var Use=Bb,Ese=Ab,Kse=$b,Hse=_b;const Pse=Xn(TZ,{Header:Bb,Footer:Ab,Content:_b,Sider:$b,install:function(e){return e.component(TZ.name,TZ),e.component(Bb.name,Bb),e.component(Ab.name,Ab),e.component($b.name,$b),e.component(_b.name,_b),e}});var Qse=["class","style"],Bse=function(){return{prefixCls:String,spinning:{type:Boolean,default:void 0},size:String,wrapperClassName:String,tip:We.any,delay:Number,indicator:We.any}},qb=null;function Ase(n,e){return!!n&&!!e&&!isNaN(Number(e))}function _se(n){var e=n.indicator;qb=typeof e=="function"?e:function(){return D(e,null,null)}}const vs=He({compatConfig:{MODE:3},name:"ASpin",inheritAttrs:!1,props:pn(Bse(),{size:"default",spinning:!0,wrapperClassName:""}),setup:function(){return{originalUpdateSpinning:null,configProvider:un("configProvider",rG)}},data:function(){var e=this.spinning,t=this.delay,i=Ase(e,t);return{sSpinning:e&&!i}},created:function(){this.originalUpdateSpinning=this.updateSpinning,this.debouncifyUpdateSpinning(this.$props)},mounted:function(){this.updateSpinning()},updated:function(){var e=this;cn(function(){e.debouncifyUpdateSpinning(),e.updateSpinning()})},beforeUnmount:function(){this.cancelExistingSpin()},methods:{debouncifyUpdateSpinning:function(e){var t=e||this.$props,i=t.delay;i&&(this.cancelExistingSpin(),this.updateSpinning=lp(this.originalUpdateSpinning,i))},updateSpinning:function(){var e=this.spinning,t=this.sSpinning;t!==e&&(this.sSpinning=e)},cancelExistingSpin:function(){var e=this.updateSpinning;e&&e.cancel&&e.cancel()},renderIndicator:function(e){var t="".concat(e,"-dot"),i=JW(this,"indicator");return i===null?null:(Array.isArray(i)&&(i=i.length===1?i[0]:i),yl(i)?Vl(i,{class:t}):qb&&yl(qb())?Vl(qb(),{class:t}):D("span",{class:"".concat(t," ").concat(e,"-dot-spin")},[D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null),D("i",{class:"".concat(e,"-dot-item")},null)]))}},render:function(){var e,t,i,a=this.$props,l=a.size,o=a.prefixCls,r=a.tip,f=r===void 0?(e=(t=this.$slots).tip)===null||e===void 0?void 0:e.call(t):r,v=a.wrapperClassName,b=this.$attrs,Z=b.class,p=b.style,y=jt(b,Qse),X=this.configProvider,m=X.getPrefixCls,N=X.direction,G=m("spin",o),d=this.sSpinning,u=(i={},ce(i,G,!0),ce(i,"".concat(G,"-sm"),l==="small"),ce(i,"".concat(G,"-lg"),l==="large"),ce(i,"".concat(G,"-spinning"),d),ce(i,"".concat(G,"-show-text"),!!f),ce(i,"".concat(G,"-rtl"),N==="rtl"),ce(i,Z,!!Z),i),s=D("div",P(P({},y),{},{style:p,class:u}),[this.renderIndicator(G),f?D("div",{class:"".concat(G,"-text")},[f]):null]),h=Rh(this);if(h&&h.length){var c,W=(c={},ce(c,"".concat(G,"-container"),!0),ce(c,"".concat(G,"-blur"),d),c);return D("div",{class:["".concat(G,"-nested-loading"),v]},[d&&D("div",{key:"loading"},[s]),D("div",{class:W,key:"container"},[h])])}return s}});vs.setDefaultIndicator=_se;vs.install=function(n){return n.component(vs.name,vs),n};var $se={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M272.9 512l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L186.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H532c6.7 0 10.4-7.7 6.3-12.9L272.9 512zm304 0l265.4-339.1c4.1-5.2.4-12.9-6.3-12.9h-77.3c-4.9 0-9.6 2.3-12.6 6.1L490.8 492.3a31.99 31.99 0 000 39.5l255.3 326.1c3 3.9 7.7 6.1 12.6 6.1H836c6.7 0 10.4-7.7 6.3-12.9L576.9 512z"}}]},name:"double-left",theme:"outlined"};const qse=$se;function Tg(n){for(var e=1;e=0||b.relatedTarget.className.indexOf("".concat(y,"-item"))>=0)){t.value="";return}else p(i.value),t.value=""},r=function(b){t.value!==""&&(b.keyCode===Bs.ENTER||b.type==="click")&&(e.quickGo(i.value),t.value="")},f=de(function(){var v=e.pageSize,b=e.pageSizeOptions;return b.some(function(Z){return Z.toString()===v.toString()})?b:b.concat([v.toString()]).sort(function(Z,p){var y=isNaN(Number(Z))?0:Number(Z),X=isNaN(Number(p))?0:Number(p);return y-X})});return function(){var v=e.rootPrefixCls,b=e.locale,Z=e.changeSize,p=e.quickGo,y=e.goButton,X=e.selectComponentClass,m=e.selectPrefixCls,N=e.pageSize,G=e.disabled,d="".concat(v,"-options"),u=null,s=null,h=null;if(!Z&&!p)return null;if(Z&&X){var c=e.buildOptionText||a,W=f.value.map(function(M,I){return D(X.Option,{key:I,value:M},{default:function(){return[c({value:M})]}})});u=D(X,{disabled:G,prefixCls:m,showSearch:!1,class:"".concat(d,"-size-changer"),optionLabelProp:"children",value:(N||f.value[0]).toString(),onChange:function(I){return Z(Number(I))},getPopupContainer:function(I){return I.parentNode}},{default:function(){return[W]}})}return p&&(y&&(h=typeof y=="boolean"?D("button",{type:"button",onClick:r,onKeyup:r,disabled:G,class:"".concat(d,"-quick-jumper-button")},[b.jump_to_confirm]):D("span",{onClick:r,onKeyup:r},[y])),s=D("div",{class:"".concat(d,"-quick-jumper")},[b.jump_to,vl(D("input",{disabled:G,type:"text",value:t.value,onInput:l,onChange:l,onKeyup:r,onBlur:o},null),[[Pu]]),b.page,h])),D("li",{class:"".concat(d)},[u,s])}}}),sce={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页"};var cce=["class"];function uce(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n)===n}function dce(n){var e=n.originalElement;return e}function po(n,e,t){var i=typeof n>"u"?e.statePageSize:n;return Math.floor((t.total-1)/i)+1}const hce=He({compatConfig:{MODE:3},name:"Pagination",mixins:[Vc],inheritAttrs:!1,props:{disabled:{type:Boolean,default:void 0},prefixCls:We.string.def("rc-pagination"),selectPrefixCls:We.string.def("rc-select"),current:Number,defaultCurrent:We.number.def(1),total:We.number.def(0),pageSize:Number,defaultPageSize:We.number.def(10),hideOnSinglePage:{type:Boolean,default:!1},showSizeChanger:{type:Boolean,default:void 0},showLessItems:{type:Boolean,default:!1},selectComponentClass:We.any,showPrevNextJumpers:{type:Boolean,default:!0},showQuickJumper:We.oneOfType([We.looseBool,We.object]).def(!1),showTitle:{type:Boolean,default:!0},pageSizeOptions:We.arrayOf(We.oneOfType([We.number,We.string])),buildOptionText:Function,showTotal:Function,simple:{type:Boolean,default:void 0},locale:We.object.def(sce),itemRender:We.func.def(dce),prevIcon:We.any,nextIcon:We.any,jumpPrevIcon:We.any,jumpNextIcon:We.any,totalBoundaryShowSizeChanger:We.number.def(50)},data:function(){var e=this.$props,t=zm([this.current,this.defaultCurrent]),i=zm([this.pageSize,this.defaultPageSize]);return t=Math.min(t,po(i,void 0,e)),{stateCurrent:t,stateCurrentInputValue:t,statePageSize:i}},watch:{current:function(e){this.setState({stateCurrent:e,stateCurrentInputValue:e})},pageSize:function(e){var t={},i=this.stateCurrent,a=po(e,this.$data,this.$props);i=i>a?a:i,No(this,"current")||(t.stateCurrent=i,t.stateCurrentInputValue=i),t.statePageSize=e,this.setState(t)},stateCurrent:function(e,t){var i=this;this.$nextTick(function(){if(i.$refs.paginationNode){var a=i.$refs.paginationNode.querySelector(".".concat(i.prefixCls,"-item-").concat(t));a&&document.activeElement===a&&a.blur()}})},total:function(){var e={},t=po(this.pageSize,this.$data,this.$props);if(No(this,"current")){var i=Math.min(this.current,t);e.stateCurrent=i,e.stateCurrentInputValue=i}else{var a=this.stateCurrent;a===0&&t>0?a=1:a=Math.min(this.stateCurrent,t),e.stateCurrent=a}this.setState(e)}},methods:{getJumpPrevPage:function(){return Math.max(1,this.stateCurrent-(this.showLessItems?3:5))},getJumpNextPage:function(){return Math.min(po(void 0,this.$data,this.$props),this.stateCurrent+(this.showLessItems?3:5))},getItemIcon:function(e,t){var i=this.$props.prefixCls,a=JW(this,e,this.$props)||D("button",{type:"button","aria-label":t,class:"".concat(i,"-item-link")},null);return a},getValidValue:function(e){var t=e.target.value,i=po(void 0,this.$data,this.$props),a=this.$data.stateCurrentInputValue,l;return t===""?l=t:isNaN(Number(t))?l=a:t>=i?l=i:l=Number(t),l},isValid:function(e){return uce(e)&&e!==this.stateCurrent},shouldDisplayQuickJumper:function(){var e=this.$props,t=e.showQuickJumper,i=e.pageSize,a=e.total;return a<=i?!1:t},handleKeyDown:function(e){(e.keyCode===Bs.ARROW_UP||e.keyCode===Bs.ARROW_DOWN)&&e.preventDefault()},handleKeyUp:function(e){if(!(e.isComposing||e.target.composing)){var t=this.getValidValue(e),i=this.stateCurrentInputValue;t!==i&&this.setState({stateCurrentInputValue:t}),e.keyCode===Bs.ENTER?this.handleChange(t):e.keyCode===Bs.ARROW_UP?this.handleChange(t-1):e.keyCode===Bs.ARROW_DOWN&&this.handleChange(t+1)}},changePageSize:function(e){var t=this.stateCurrent,i=t,a=po(e,this.$data,this.$props);t=t>a?a:t,a===0&&(t=this.stateCurrent),typeof e=="number"&&(No(this,"pageSize")||this.setState({statePageSize:e}),No(this,"current")||this.setState({stateCurrent:t,stateCurrentInputValue:t})),this.__emit("update:pageSize",e),t!==i&&this.__emit("update:current",t),this.__emit("showSizeChange",t,e),this.__emit("change",t,e)},handleChange:function(e){var t=this.$props.disabled,i=e;if(this.isValid(i)&&!t){var a=po(void 0,this.$data,this.$props);return i>a?i=a:i<1&&(i=1),No(this,"current")||this.setState({stateCurrent:i,stateCurrentInputValue:i}),this.__emit("update:current",i),this.__emit("change",i,this.statePageSize),i}return this.stateCurrent},prev:function(){this.hasPrev()&&this.handleChange(this.stateCurrent-1)},next:function(){this.hasNext()&&this.handleChange(this.stateCurrent+1)},jumpPrev:function(){this.handleChange(this.getJumpPrevPage())},jumpNext:function(){this.handleChange(this.getJumpNextPage())},hasPrev:function(){return this.stateCurrent>1},hasNext:function(){return this.stateCurrenta},runIfEnter:function(e,t){if(e.key==="Enter"||e.charCode===13){for(var i=arguments.length,a=new Array(i>2?i-2:0),l=2;l0?s-1:0,T=s+1=V*2&&s!==1+2&&(w[0]=D(Ks,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:Q,page:Q,class:"".concat(i,"-item-after-jump-prev"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.unshift(C)),I-s>=V*2&&s!==I-2&&(w[w.length-1]=D(Ks,{locale:r,rootPrefixCls:i,onClick:this.handleChange,onKeypress:this.runIfEnter,key:oe,page:oe,class:"".concat(i,"-item-before-jump-next"),active:!1,showTitle:this.showTitle,itemRender:y},null),w.push(x)),Q!==1&&w.unshift(R),oe!==I&&w.push(g)}var pe=null;Z&&(pe=D("li",{class:"".concat(i,"-total-text")},[Z(o,[o===0?0:(s-1)*h+1,s*h>o?o:s*h])]));var re=!J||!I,_=!U||!I,E=this.buildOptionText||this.$slots.buildOptionText;return D("ul",P(P({unselectable:"on",ref:"paginationNode"},M),{},{class:_e((e={},ce(e,"".concat(i),!0),ce(e,"".concat(i,"-disabled"),a),e),W)}),[pe,D("li",{title:b?r.prev_page:null,onClick:this.prev,tabindex:re?null:0,onKeypress:this.runIfEnterPrev,class:_e("".concat(i,"-prev"),ce({},"".concat(i,"-disabled"),re)),"aria-disabled":re},[this.renderPrev(Y)]),w,D("li",{title:b?r.next_page:null,onClick:this.next,tabindex:_?null:0,onKeypress:this.runIfEnterNext,class:_e("".concat(i,"-next"),ce({},"".concat(i,"-disabled"),_)),"aria-disabled":_},[this.renderNext(T)]),D(oce,{disabled:a,locale:r,rootPrefixCls:i,selectComponentClass:G,selectPrefixCls:d,changeSize:this.getShowSizeChanger()?this.changePageSize:null,current:s,pageSize:h,pageSizeOptions:u,buildOptionText:E||null,quickGo:this.shouldDisplayQuickJumper()?this.handleChange:null,goButton:L},null)])}});var fce=["size","itemRender","buildOptionText","selectComponentClass","responsive"],bce=function(){return{total:Number,defaultCurrent:Number,disabled:{type:Boolean,default:void 0},current:Number,defaultPageSize:Number,pageSize:Number,hideOnSinglePage:{type:Boolean,default:void 0},showSizeChanger:{type:Boolean,default:void 0},pageSizeOptions:Array,buildOptionText:Function,showQuickJumper:{type:[Boolean,Object],default:void 0},showTotal:Function,size:String,simple:{type:Boolean,default:void 0},locale:Object,prefixCls:String,selectPrefixCls:String,totalBoundaryShowSizeChanger:Number,selectComponentClass:String,itemRender:Function,role:String,responsive:Boolean,showLessItems:{type:Boolean,default:void 0},onChange:Function,onShowSizeChange:Function,"onUpdate:current":Function,"onUpdate:pageSize":Function}};const mce=He({compatConfig:{MODE:3},name:"APagination",inheritAttrs:!1,props:bce(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("pagination",e),o=l.prefixCls,r=l.configProvider,f=l.direction,v=de(function(){return r.getPrefixCls("select",e.selectPrefixCls)}),b=Qu(),Z=Qr("Pagination",PR,Ot(e,"locale")),p=ft(Z,1),y=p[0],X=function(N){var G=D("span",{class:"".concat(N,"-item-ellipsis")},[Fl("•••")]),d=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(Xc,null,null)]),u=D("button",{class:"".concat(N,"-item-link"),type:"button",tabindex:-1},[D(To,null,null)]),s=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(tce,{class:"".concat(N,"-item-link-icon")},null),G])]),h=D("a",{rel:"nofollow",class:"".concat(N,"-item-link")},[D("div",{class:"".concat(N,"-item-container")},[D(ace,{class:"".concat(N,"-item-link-icon")},null),G])]);if(f.value==="rtl"){var c=[u,d];d=c[0],u=c[1];var W=[h,s];s=W[0],h=W[1]}return{prevIcon:d,nextIcon:u,jumpPrevIcon:s,jumpNextIcon:h}};return function(){var m,N=e.size,G=e.itemRender,d=G===void 0?i.itemRender:G,u=e.buildOptionText,s=u===void 0?i.buildOptionText:u,h=e.selectComponentClass,c=e.responsive,W=jt(e,fce),M=N==="small"||!!((m=b.value)!==null&&m!==void 0&&m.xs&&!N&&c),I=P(P(P(P({},W),X(o.value)),{},{prefixCls:o.value,selectPrefixCls:v.value,selectComponentClass:h||(M?rce:Xs),locale:y.value,buildOptionText:s},a),{},{class:_e(ce({mini:M},"".concat(o.value,"-rtl"),f.value==="rtl"),a.class),itemRender:d});return D(hce,I,null)}}}),mp=wi(mce);var pce=function(){return{avatar:We.any,description:We.any,prefixCls:String,title:We.any}};const XC=He({compatConfig:{MODE:3},name:"AListItemMeta",props:pce(),displayName:"AListItemMeta",__ANT_LIST_ITEM_META:!0,slots:["avatar","description","title"],setup:function(e,t){var i=t.slots,a=Nt("list",e),l=a.prefixCls;return function(){var o,r,f,v,b,Z,p="".concat(l.value,"-item-meta"),y=(o=e.title)!==null&&o!==void 0?o:(r=i.title)===null||r===void 0?void 0:r.call(i),X=(f=e.description)!==null&&f!==void 0?f:(v=i.description)===null||v===void 0?void 0:v.call(i),m=(b=e.avatar)!==null&&b!==void 0?b:(Z=i.avatar)===null||Z===void 0?void 0:Z.call(i),N=D("div",{class:"".concat(l.value,"-item-meta-content")},[y&&D("h4",{class:"".concat(l.value,"-item-meta-title")},[y]),X&&D("div",{class:"".concat(l.value,"-item-meta-description")},[X])]);return D("div",{class:p},[m&&D("div",{class:"".concat(l.value,"-item-meta-avatar")},[m]),(y||X)&&N])}}});var NC=Symbol("ListContextKey"),yce=["class"],Zce=function(){return{prefixCls:String,extra:We.any,actions:We.array,grid:Object,colStyle:{type:Object,default:void 0}}};const MC=He({compatConfig:{MODE:3},name:"AListItem",inheritAttrs:!1,Meta:XC,props:Zce(),slots:["actions","extra"],setup:function(e,t){var i=t.slots,a=t.attrs,l=un(NC,{grid:Ne(),itemLayout:Ne()}),o=l.itemLayout,r=l.grid,f=Nt("list",e),v=f.prefixCls,b=function(){var y,X=((y=i.default)===null||y===void 0?void 0:y.call(i))||[],m;return X.forEach(function(N){hK(N)&&!Th(N)&&(m=!0)}),m&&X.length>1},Z=function(){var y,X,m=(y=e.extra)!==null&&y!==void 0?y:(X=i.extra)===null||X===void 0?void 0:X.call(i);return o.value==="vertical"?!!m:!b()};return function(){var p,y,X,m,N,G=a.class,d=jt(a,yce),u=v.value,s=(p=e.extra)!==null&&p!==void 0?p:(y=i.extra)===null||y===void 0?void 0:y.call(i),h=(X=i.default)===null||X===void 0?void 0:X.call(i),c=(m=e.actions)!==null&&m!==void 0?m:ti((N=i.actions)===null||N===void 0?void 0:N.call(i));c=c&&!Array.isArray(c)?[c]:c;var W=c&&c.length>0&&D("ul",{class:"".concat(u,"-item-action"),key:"actions"},[c.map(function(w,C){return D("li",{key:"".concat(u,"-item-action-").concat(C)},[w,C!==c.length-1&&D("em",{class:"".concat(u,"-item-action-split")},null)])})]),M=r.value?"div":"li",I=D(M,P(P({},d),{},{class:_e("".concat(u,"-item"),ce({},"".concat(u,"-item-no-flex"),!Z()),G)}),{default:function(){return[o.value==="vertical"&&s?[D("div",{class:"".concat(u,"-item-main"),key:"content"},[h,W]),D("div",{class:"".concat(u,"-item-extra"),key:"extra"},[s])]:[h,W,wn(s,{key:"extra"})]]}});return r.value?D(ip,{flex:1,style:e.colStyle},{default:function(){return[I]}}):I}}});var vce=function(){return{bordered:{type:Boolean,default:void 0},dataSource:We.array,extra:We.any,grid:{type:Object,default:void 0},itemLayout:String,loading:{type:[Boolean,Object],default:void 0},loadMore:We.any,pagination:{type:[Boolean,Object],default:void 0},prefixCls:String,rowKey:[String,Number,Function],renderItem:Function,size:String,split:{type:Boolean,default:void 0},header:We.any,footer:We.any,locale:{type:Object}}},is=He({compatConfig:{MODE:3},name:"AList",Item:MC,props:pn(vce(),{dataSource:[],bordered:!1,split:!0,loading:!1,pagination:!1}),slots:["extra","loadMore","renderItem","header","footer"],setup:function(e,t){var i,a,l=t.slots;hn(NC,{grid:Ot(e,"grid"),itemLayout:Ot(e,"itemLayout")});var o={current:1,total:0},r=Nt("list",e),f=r.prefixCls,v=r.direction,b=r.renderEmpty,Z=de(function(){return e.pagination&&Yt(e.pagination)==="object"?e.pagination:{}}),p=Ne((i=Z.value.defaultCurrent)!==null&&i!==void 0?i:1),y=Ne((a=Z.value.defaultPageSize)!==null&&a!==void 0?a:10);rt(Z,function(){"current"in Z.value&&(p.value=Z.value.current),"pageSize"in Z.value&&(y.value=Z.value.pageSize)});var X=[],m=function(g){return function(S,L){p.value=S,y.value=L,Z.value[g]&&Z.value[g](S,L)}},N=m("onChange"),G=m("onShowSizeChange"),d=function(g){var S;return D("div",{class:"".concat(f.value,"-empty-text")},[((S=e.locale)===null||S===void 0?void 0:S.emptyText)||g("List")])},u=de(function(){return typeof e.loading=="boolean"?{spinning:e.loading}:e.loading}),s=de(function(){return u.value&&u.value.spinning}),h=de(function(){var R="";switch(e.size){case"large":R="lg";break;case"small":R="sm";break}return R}),c=de(function(){var R;return R={},ce(R,"".concat(f.value),!0),ce(R,"".concat(f.value,"-vertical"),e.itemLayout==="vertical"),ce(R,"".concat(f.value,"-").concat(h.value),h.value),ce(R,"".concat(f.value,"-split"),e.split),ce(R,"".concat(f.value,"-bordered"),e.bordered),ce(R,"".concat(f.value,"-loading"),s.value),ce(R,"".concat(f.value,"-grid"),!!e.grid),ce(R,"".concat(f.value,"-rtl"),v.value==="rtl"),R}),W=de(function(){var R=P(P({},o),{},{total:e.dataSource.length,current:p.value,pageSize:y.value},e.pagination||{}),g=Math.ceil(R.total/R.pageSize);return R.current>g&&(R.current=g),R}),M=de(function(){var R=yt(e.dataSource);return e.pagination&&e.dataSource.length>(W.value.current-1)*W.value.pageSize&&(R=yt(e.dataSource).splice((W.value.current-1)*W.value.pageSize,W.value.pageSize)),R}),I=Qu(),w=Sa(function(){for(var R=0;R0){X.length=0;var oe=M.value.map(function(pe,re){return x(pe,re)}),se=oe.map(function(pe,re){return D("div",{key:X[re],style:C.value},[pe])});Q=e.grid?D(V1,{gutter:e.grid.gutter},{default:function(){return[se]}}):D("ul",{class:"".concat(f.value,"-items")},[oe])}else!H.length&&!s.value&&(Q=d(b.value));var he=W.value.position||"bottom";return D("div",{class:F},[(he==="top"||he==="both")&&O,K&&D("div",{class:"".concat(f.value,"-header")},[K]),D(vs,u.value,{default:function(){return[Q,H]}}),U&&D("div",{class:"".concat(f.value,"-footer")},[U]),J||(he==="bottom"||he==="both")&&O])}}});is.install=function(n){return n.component(is.name,is),n.component(is.Item.name,is.Item),n.component(is.Item.Meta.name,is.Item.Meta),n};const Wce=is;function Gce(n){var e=n.selectionStart;return n.value.slice(0,e)}function Xce(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",t=Array.isArray(e)?e:[e];return t.reduce(function(i,a){var l=n.lastIndexOf(a);return l>i.location?{location:l,prefix:a}:i},{location:-1,prefix:""})}function Cg(n){return(n||"").toLowerCase()}function Nce(n,e,t){var i=n[0];if(!i||i===t)return n;for(var a=n,l=e.length,o=0;o0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.prefix,a=i===void 0?"@":i,l=t.split,o=l===void 0?" ":l,r=Array.isArray(a)?a:[a];return e.split(o).map(function(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",v=null;return r.some(function(b){var Z=f.slice(0,b.length);return Z===b?(v=b,!0):!1}),v!==null?{prefix:v,value:f.slice(v.length)}:null}).filter(function(f){return!!f&&!!f.value})},Oce=function(){return P(P({},YC),{},{loading:{type:Boolean,default:void 0},onFocus:{type:Function},onBlur:{type:Function},onSelect:{type:Function},onChange:{type:Function},onPressenter:{type:Function},"onUpdate:value":{type:Function},notFoundContent:We.any,defaultValue:String,id:String})},xZ=He({compatConfig:{MODE:3},name:"AMentions",inheritAttrs:!1,props:Oce(),slots:["notFoundContent","option"],setup:function(e,t){var i,a,l=t.slots,o=t.emit,r=t.attrs,f=t.expose,v=Nt("mentions",e),b=v.prefixCls,Z=v.renderEmpty,p=v.direction,y=Ne(!1),X=Ne(null),m=Ne((i=(a=e.value)!==null&&a!==void 0?a:e.defaultValue)!==null&&i!==void 0?i:""),N=Hi();rt(function(){return e.value},function(I){m.value=I});var G=function(w){y.value=!0,o("focus",w)},d=function(w){y.value=!1,o("blur",w),N.onFieldBlur()},u=function(){for(var w=arguments.length,C=new Array(w),x=0;x=Date.now()?f():v()},f=function(){if(!l.value){var y=SZ(e.value);l.value=setInterval(function(){o.value.$forceUpdate(),y>Date.now()&&i("change",y-Date.now()),r()},pue)}},v=function(){var y=e.value;if(l.value){clearInterval(l.value),l.value=void 0;var X=SZ(y);X100?100:n}function a0(n){var e=n.success,t=n.successPercent,i=t;return e&&"progress"in e&&(jn(!1,"Progress","`success.progress` is deprecated. Please use `success.percent` instead."),i=e.progress),e&&"percent"in e&&(i=e.percent),i}var Due=["from","to","direction"],Oue=function(){return P(P({},vp()),{},{prefixCls:String,direction:{type:String}})},jue=function(e){var t=[];return Object.keys(e).forEach(function(i){var a=parseFloat(i.replace(/%/g,""));isNaN(a)||t.push({key:a,value:e[i]})}),t=t.sort(function(i,a){return i.key-a.key}),t.map(function(i){var a=i.key,l=i.value;return"".concat(l," ").concat(a,"%")}).join(", ")},Uue=function(e,t){var i=e.from,a=i===void 0?bu.blue:i,l=e.to,o=l===void 0?bu.blue:l,r=e.direction,f=r===void 0?t==="rtl"?"to left":"to right":r,v=jt(e,Due);if(Object.keys(v).length!==0){var b=jue(v);return{backgroundImage:"linear-gradient(".concat(f,", ").concat(b,")")}}return{backgroundImage:"linear-gradient(".concat(f,", ").concat(a,", ").concat(o,")")}};const Eue=He({compatConfig:{MODE:3},name:"Line",props:Oue(),setup:function(e,t){var i=t.slots,a=de(function(){var v=e.strokeColor,b=e.direction;return v&&typeof v!="string"?Uue(v,b):{background:v}}),l=de(function(){return e.trailColor?{backgroundColor:e.trailColor}:void 0}),o=de(function(){var v=e.percent,b=e.strokeWidth,Z=e.strokeLinecap,p=e.size;return P({width:"".concat(mc(v),"%"),height:"".concat(b||(p==="small"?6:8),"px"),borderRadius:Z==="square"?0:""},a.value)}),r=de(function(){return a0(e)}),f=de(function(){var v=e.strokeWidth,b=e.size,Z=e.strokeLinecap,p=e.success;return{width:"".concat(mc(r.value),"%"),height:"".concat(v||(b==="small"?6:8),"px"),borderRadius:Z==="square"?0:"",backgroundColor:p==null?void 0:p.strokeColor}});return function(){var v;return D(ln,null,[D("div",{class:"".concat(e.prefixCls,"-outer")},[D("div",{class:"".concat(e.prefixCls,"-inner"),style:l.value},[D("div",{class:"".concat(e.prefixCls,"-bg"),style:o.value},null),r.value!==void 0?D("div",{class:"".concat(e.prefixCls,"-success-bg"),style:f.value},null):null])]),(v=i.default)===null||v===void 0?void 0:v.call(i)])}}});var Kue={percent:0,prefixCls:"vc-progress",strokeColor:"#2db7f5",strokeLinecap:"round",strokeWidth:1,trailColor:"#D9D9D9",trailWidth:1},Hue=function(e){var t=Ne(null);return Dl(function(){var i=Date.now(),a=!1;e.value.forEach(function(l){var o=(l==null?void 0:l.$el)||l;if(o){a=!0;var r=o.style;r.transitionDuration=".3s, .3s, .3s, .06s",t.value&&i-t.value<100&&(r.transitionDuration="0s, 0s")}}),a&&(t.value=Date.now())}),e},Pue={gapDegree:Number,gapPosition:{type:String},percent:{type:[Array,Number]},prefixCls:String,strokeColor:{type:[Object,String,Array]},strokeLinecap:{type:String},strokeWidth:Number,trailColor:String,trailWidth:Number,transition:String},Que=["prefixCls","strokeWidth","trailWidth","gapDegree","gapPosition","trailColor","strokeLinecap","strokeColor"],Jg=0;function Dg(n){return+n.replace("%","")}function Og(n){return Array.isArray(n)?n:[n]}function jg(n,e,t,i){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,l=arguments.length>5?arguments[5]:void 0,o=50-i/2,r=0,f=-o,v=0,b=-2*o;switch(l){case"left":r=-o,f=0,v=2*o,b=0;break;case"right":r=o,f=0,v=-2*o,b=0;break;case"bottom":f=o,b=2*o;break}var Z="M 50,50 m ".concat(r,",").concat(f,` a `).concat(o,",").concat(o," 0 1 1 ").concat(v,",").concat(-b,` - a `).concat(o,",").concat(o," 0 1 1 ").concat(-v,",").concat(b),p=Math.PI*2*o,y={stroke:t,strokeDasharray:"".concat(e/100*(p-l),"px ").concat(p,"px"),strokeDashoffset:"-".concat(l/2+n/100*(p-l),"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s"};return{pathString:Z,pathStyle:y}}const Kue=He({compatConfig:{MODE:3},name:"VCCircle",props:pn(Uue,Oue),setup:function(e){kg+=1;var t=Ne(kg),i=de(function(){return Jg(e.percent)}),l=de(function(){return Jg(e.strokeColor)}),a=W1(),o=ft(a,2),r=o[0],f=o[1];jue(f);var v=function(){var Z=e.prefixCls,p=e.strokeWidth,y=e.strokeLinecap,X=e.gapDegree,m=e.gapPosition,N=0;return i.value.map(function(G,d){var u=l.value[d]||l.value[l.value.length-1],s=Object.prototype.toString.call(u)==="[object Object]"?"url(#".concat(Z,"-gradient-").concat(t.value,")"):"",h=Dg(N,G,u,p,X,m),c=h.pathString,W=h.pathStyle;N+=G;var M={key:d,d:c,stroke:s,"stroke-linecap":y,"stroke-width":p,opacity:G===0?0:1,"fill-opacity":"0",class:"".concat(Z,"-circle-path"),style:W};return D("path",P({ref:r(d)},M),null)})};return function(){var b=e.prefixCls,Z=e.strokeWidth,p=e.trailWidth,y=e.gapDegree,X=e.gapPosition,m=e.trailColor,N=e.strokeLinecap;e.strokeColor;var G=jt(e,Eue),d=Dg(0,100,m,Z,y,X),u=d.pathString,s=d.pathStyle;delete G.percent;var h=l.value.find(function(W){return Object.prototype.toString.call(W)==="[object Object]"}),c={d:u,stroke:m,"stroke-linecap":N,"stroke-width":p||Z,"fill-opacity":"0",class:"".concat(b,"-circle-trail"),style:s};return D("svg",P({class:"".concat(b,"-circle"),viewBox:"0 0 100 100"},G),[h&&D("defs",null,[D("linearGradient",{id:"".concat(b,"-gradient-").concat(t.value),x1:"100%",y1:"0%",x2:"0%",y2:"0%"},[Object.keys(h).sort(function(W,M){return Fg(W)-Fg(M)}).map(function(W,M){return D("stop",{key:M,offset:W,"stop-color":h[W]},null)})])]),D("path",c,null),v().reverse()])}}});function Hue(n){var e=n.percent,t=n.success,i=n.successPercent,l=mc(l0({success:t,successPercent:i}));return[l,mc(mc(e)-l)]}function Pue(n){var e=n.success,t=e===void 0?{}:e,i=n.strokeColor,l=t.strokeColor;return[l||bu.green,i||null]}const Que=He({compatConfig:{MODE:3},name:"Circle",inheritAttrs:!1,props:vp(),setup:function(e,t){var i=t.slots,l=de(function(){if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type==="dashboard")return 75}),a=de(function(){var p=e.width||120;return{width:typeof p=="number"?"".concat(p,"px"):p,height:typeof p=="number"?"".concat(p,"px"):p,fontSize:"".concat(p*.15+6,"px")}}),o=de(function(){return e.strokeWidth||6}),r=de(function(){return e.gapPosition||e.type==="dashboard"&&"bottom"||"top"}),f=de(function(){return Hue(e)}),v=de(function(){return Object.prototype.toString.call(e.strokeColor)==="[object Object]"}),b=de(function(){return Pue({success:e.success,strokeColor:e.strokeColor})}),Z=de(function(){var p;return p={},ce(p,"".concat(e.prefixCls,"-inner"),!0),ce(p,"".concat(e.prefixCls,"-circle-gradient"),v.value),p});return function(){var p;return D("div",{class:Z.value,style:a.value},[D(Kue,{percent:f.value,strokeWidth:o.value,trailWidth:o.value,strokeColor:b.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:l.value,gapPosition:r.value},null),(p=i.default)===null||p===void 0?void 0:p.call(i)])}}});var Bue=function(){return P(P({},vp()),{},{steps:Number,size:{type:String},strokeColor:String,trailColor:String})};const Aue=He({compatConfig:{MODE:3},name:"Steps",props:Bue(),setup:function(e,t){var i=t.slots,l=de(function(){return Math.round(e.steps*((e.percent||0)/100))}),a=de(function(){return e.size==="small"?2:14}),o=de(function(){for(var r=e.steps,f=e.strokeWidth,v=f===void 0?8:f,b=e.strokeColor,Z=e.trailColor,p=e.prefixCls,y=[],X=0;X=100?"success":Z||"normal"}),b=function(){var p=e.showInfo,y=e.format,X=e.type,m=e.percent,N=e.title,G=l0(e);if(!p)return null;var d,u=y||(i==null?void 0:i.format)||function(h){return"".concat(h,"%")},s=X==="line";return y||i!=null&&i.format||v.value!=="exception"&&v.value!=="success"?d=u(mc(m),mc(G)):v.value==="exception"?d=D(s?Co:Br,null,null):v.value==="success"&&(d=D(s?xh:H0,null,null)),D("span",{class:"".concat(a.value,"-text"),title:N===void 0&&typeof d=="string"?d:void 0},[d])};return function(){var Z=e.type,p=e.steps,y=e.strokeColor,X=e.title,m=b(),N;Z==="line"?N=p?D(Aue,P(P({},e),{},{strokeColor:typeof y=="string"?y:void 0,prefixCls:a.value,steps:p}),{default:function(){return[m]}}):D(Due,P(P({},e),{},{prefixCls:a.value}),{default:function(){return[m]}}):(Z==="circle"||Z==="dashboard")&&(N=D(Que,P(P({},e),{},{prefixCls:a.value}),{default:function(){return[m]}}));var G=P(P({},r.value),{},ce({},"".concat(a.value,"-status-").concat(v.value),!0));return D("div",{class:G,title:X},[N])}}}),uX=wi(_ue);function $ue(n){var e=n.pageXOffset,t="scrollLeft";if(typeof e!="number"){var i=n.document;e=i.documentElement[t],typeof e!="number"&&(e=i.body[t])}return e}function que(n){var e,t,i=n.ownerDocument,l=i.body,a=i&&i.documentElement,o=n.getBoundingClientRect();return e=o.left,t=o.top,e-=a.clientLeft||l.clientLeft||0,t-=a.clientTop||l.clientTop||0,{left:e,top:t}}function ede(n){var e=que(n),t=n.ownerDocument,i=t.defaultView||t.parentWindow;return e.left+=$ue(i),e.left}var tde={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const nde=tde;function Og(n){for(var e=1;e=X&&Zp?"true":"false","aria-posinset":p+1,"aria-setsize":y,tabindex:v?-1:0},[D("div",{class:"".concat(b,"-first")},[m]),D("div",{class:"".concat(b,"-second")},[m])])]);return Z&&(N=Z(N,e)),N}}});var ode=function(){return{prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:We.any,autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,"onUpdate:value":Function,onFocus:Function,onBlur:Function,onKeydown:Function}},sde=He({compatConfig:{MODE:3},name:"ARate",inheritAttrs:!1,props:pn(ode(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:"ltr"}),setup:function(e,t){var i=t.slots,l=t.attrs,a=t.emit,o=t.expose,r=Nt("rate",e),f=r.prefixCls,v=r.direction,b=Hi(),Z=Ne(),p=W1(),y=ft(p,2),X=y[0],m=y[1],N=zn({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});rt(function(){return e.value},function(){N.value=e.value});var G=function(S){return us(m.value.get(S))},d=function(S,L){var V=v.value==="rtl",Y=S+1;if(e.allowHalf){var T=G(S),J=ede(T),U=T.clientWidth;(V&&L-J>U/2||!V&&L-J0&&!T||L===bt.RIGHT&&N.value>0&&T?(Y?N.value-=.5:N.value-=1,u(N.value),S.preventDefault()):L===bt.LEFT&&N.value0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var r=Object.keys(t).map(parseFloat).sort(function(v,b){return v-b});if(i&&l)for(var f=a;f<=o;f+=l)r.indexOf(f)===-1&&r.push(f);return r},zC=function(e,t){var i=t.attrs,l=i.prefixCls,a=i.vertical,o=i.reverse,r=i.marks,f=i.dots,v=i.step,b=i.included,Z=i.lowerBound,p=i.upperBound,y=i.max,X=i.min,m=i.dotStyle,N=i.activeDotStyle,G=y-X,d=xde(a,r,f,v,X,y).map(function(u){var s,h="".concat(Math.abs(u-X)/G*100,"%"),c=!b&&u===p||b&&u<=p&&u>=Z,W=a?P(P({},m),{},ce({},o?"top":"bottom",h)):P(P({},m),{},ce({},o?"right":"left",h));c&&(W=P(P({},W),N));var M=_e((s={},ce(s,"".concat(l,"-dot"),!0),ce(s,"".concat(l,"-dot-active"),c),ce(s,"".concat(l,"-dot-reverse"),o),s));return D("span",{class:M,style:W,key:u},null)});return D("div",{class:"".concat(l,"-step")},[d])};zC.inheritAttrs=!1;const Cde=zC;var kC=function(e,t){var i=t.attrs,l=t.slots,a=i.class,o=i.vertical,r=i.reverse,f=i.marks,v=i.included,b=i.upperBound,Z=i.lowerBound,p=i.max,y=i.min,X=i.onClickLabel,m=Object.keys(f),N=l.mark,G=p-y,d=m.map(parseFloat).sort(function(u,s){return u-s}).map(function(u){var s,h=typeof f[u]=="function"?f[u]():f[u],c=Yt(h)==="object"&&!Si(h),W=c?h.label:h;if(!W&&W!==0)return null;N&&(W=N({point:u,label:W}));var M=!v&&u===b||v&&u<=b&&u>=Z,I=_e((s={},ce(s,"".concat(a,"-text"),!0),ce(s,"".concat(a,"-text-active"),M),s)),w=ce({marginBottom:"-50%"},r?"top":"bottom","".concat((u-y)/G*100,"%")),C=ce({transform:"translateX(".concat(r?"50%":"-50%",")"),msTransform:"translateX(".concat(r?"50%":"-50%",")")},r?"right":"left","".concat((u-y)/G*100,"%")),x=o?w:C,R=c?P(P({},x),h.style):x,g=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(S){return X(S,u)});return D("span",P({class:I,style:R,key:u,onMousedown:function(L){return X(L,u)}},g),[W])});return D("div",{class:a},[d])};kC.inheritAttrs=!1;const Sde=kC,FC=He({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var i=t.attrs,l=t.emit,a=t.expose,o=Ne(!1),r=Ne(),f=function(){document.activeElement===r.value&&(o.value=!0)},v=function(d){o.value=!1,l("blur",d)},b=function(){o.value=!1},Z=function(){var d;(d=r.value)===null||d===void 0||d.focus()},p=function(){var d;(d=r.value)===null||d===void 0||d.blur()},y=function(){o.value=!0,Z()},X=function(d){d.preventDefault(),Z(),l("mousedown",d)};a({focus:Z,blur:p,clickFocus:y,ref:r});var m=null;Kt(function(){m=hi(document,"mouseup",f)}),fn(function(){var G;(G=m)===null||G===void 0||G.remove()});var N=de(function(){var G,d,u=e.vertical,s=e.offset,h=e.reverse;return u?(G={},ce(G,h?"top":"bottom","".concat(s,"%")),ce(G,h?"bottom":"top","auto"),ce(G,"transform",h?null:"translateY(+50%)"),G):(d={},ce(d,h?"right":"left","".concat(s,"%")),ce(d,h?"left":"right","auto"),ce(d,"transform","translateX(".concat(h?"+":"-","50%)")),d)});return function(){var G=e.prefixCls,d=e.disabled,u=e.min,s=e.max,h=e.value,c=e.tabindex,W=e.ariaLabel,M=e.ariaLabelledBy,I=e.ariaValueTextFormatter,w=e.onMouseenter,C=e.onMouseleave,x=_e(i.class,ce({},"".concat(G,"-handle-click-focused"),o.value)),R={"aria-valuemin":u,"aria-valuemax":s,"aria-valuenow":h,"aria-disabled":!!d},g=[i.style,N.value],S=c||0;(d||c===null)&&(S=null);var L;I&&(L=I(h));var V=P(P(P({},i),{},{role:"slider",tabindex:S},R),{},{class:x,onBlur:v,onKeydown:b,onMousedown:X,onMouseenter:w,onMouseleave:C,ref:r,style:g});return D("div",P(P({},V),{},{"aria-label":W,"aria-labelledby":M,"aria-valuetext":L}),null)}}});function zZ(n,e){try{return Object.keys(e).some(function(t){return n.target===e[t].ref})}catch{return!1}}function JC(n,e){var t=e.min,i=e.max;return ni}function Ug(n){return n.touches.length>1||n.type.toLowerCase()==="touchend"&&n.touches.length>0}function Eg(n,e){var t=e.marks,i=e.step,l=e.min,a=e.max,o=Object.keys(t).map(parseFloat);if(i!==null){var r=Math.pow(10,DC(i)),f=Math.floor((a*r-l*r)/(i*r)),v=Math.min((n-l)/i,f),b=Math.round(v)*i+l;o.push(b)}var Z=o.map(function(p){return Math.abs(n-p)});return o[Z.indexOf(Math.min.apply(Math,yt(Z)))]}function DC(n){var e=n.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function Kg(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.clientY:e.pageX)/t}function Hg(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.touches[0].clientY:e.touches[0].pageX)/t}function Pg(n,e){var t=e.getBoundingClientRect();return n?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function yX(n,e){var t=e.max,i=e.min;return n<=i?i:n>=t?t:n}function OC(n,e){var t=e.step,i=isFinite(Eg(n,e))?Eg(n,e):0;return t===null?i:parseFloat(i.toFixed(DC(t)))}function Su(n){n.stopPropagation(),n.preventDefault()}function zde(n,e,t){var i={increase:function(r,f){return r+f},decrease:function(r,f){return r-f}},l=i[n](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),a=Object.keys(t.marks)[l];return t.step?i[n](e,t.step):Object.keys(t.marks).length&&t.marks[a]?t.marks[a]:e}function jC(n,e,t){var i="increase",l="decrease",a=i;switch(n.keyCode){case bt.UP:a=e&&t?l:i;break;case bt.RIGHT:a=!e&&t?l:i;break;case bt.DOWN:a=e&&t?i:l;break;case bt.LEFT:a=!e&&t?i:l;break;case bt.END:return function(o,r){return r.max};case bt.HOME:return function(o,r){return r.min};case bt.PAGE_UP:return function(o,r){return o+r.step*2};case bt.PAGE_DOWN:return function(o,r){return o-r.step*2};default:return}return function(o,r){return zde(a,o,r)}}var kde=["index","directives","className","style"];function Hs(){}function UC(n){var e={id:String,min:Number,max:Number,step:Number,marks:We.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:We.object,maximumTrackStyle:We.object,handleStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),trackStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),railStyle:We.object,dotStyle:We.object,activeDotStyle:We.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return He({compatConfig:{MODE:3},name:"CreateSlider",mixins:[Vc,n],inheritAttrs:!1,slots:["mark"],props:pn(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var i=this.step,l=this.max,a=this.min,o=isFinite(l-a)?(l-a)%i===0:!0;return Ci(i&&Math.floor(i)===i?o:!0,"Slider[max] - Slider[min] (".concat(l-a,") should be a multiple of Slider[step] (").concat(i,")")),this.handlesRefs={},{}},mounted:function(){var i=this;this.$nextTick(function(){i.document=i.sliderRef&&i.sliderRef.ownerDocument;var l=i.autofocus,a=i.disabled;l&&!a&&i.focus()})},beforeUnmount:function(){var i=this;this.$nextTick(function(){i.removeDocumentEvents()})},methods:{defaultHandle:function(i){var l=i.index;i.directives;var a=i.className,o=i.style,r=jt(i,kde);if(delete r.dragging,r.value===null)return null;var f=P(P({},r),{},{class:a,style:o,key:l});return D(FC,f,null)},onDown:function(i,l){var a=l,o=this.$props,r=o.draggableTrack,f=o.vertical,v=this.$data.bounds,b=r&&this.positionGetValue?this.positionGetValue(a)||[]:[],Z=zZ(i,this.handlesRefs);if(this.dragTrack=r&&v.length>=2&&!Z&&!b.map(function(y,X){var m=X?!0:y>=v[X];return X===b.length-1?y<=v[X]:m}).some(function(y){return!y}),this.dragTrack)this.dragOffset=a,this.startBounds=yt(v);else{if(!Z)this.dragOffset=0;else{var p=Pg(f,i.target);this.dragOffset=a-p,a=p}this.onStart(a)}},onMouseDown:function(i){if(i.button===0){this.removeDocumentEvents();var l=this.$props.vertical,a=Kg(l,i);this.onDown(i,a),this.addDocumentMouseEvents()}},onTouchStart:function(i){if(!Ug(i)){var l=this.vertical,a=Hg(l,i);this.onDown(i,a),this.addDocumentTouchEvents(),Su(i)}},onFocus:function(i){var l=this.vertical;if(zZ(i,this.handlesRefs)&&!this.dragTrack){var a=Pg(l,i.target);this.dragOffset=0,this.onStart(a),Su(i),this.$emit("focus",i)}},onBlur:function(i){this.dragTrack||this.onEnd(),this.$emit("blur",i)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(i){if(!this.sliderRef){this.onEnd();return}var l=Kg(this.vertical,i);this.onMove(i,l-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(i){if(Ug(i)||!this.sliderRef){this.onEnd();return}var l=Hg(this.vertical,i);this.onMove(i,l-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(i){this.sliderRef&&zZ(i,this.handlesRefs)&&this.onKeyboard(i)},onClickMarkLabel:function(i,l){var a=this;i.stopPropagation(),this.onChange({sValue:l}),this.setState({sValue:l},function(){return a.onEnd(!0)})},getSliderStart:function(){var i=this.sliderRef,l=this.vertical,a=this.reverse,o=i.getBoundingClientRect();return l?a?o.bottom:o.top:window.pageXOffset+(a?o.right:o.left)},getSliderLength:function(){var i=this.sliderRef;if(!i)return 0;var l=i.getBoundingClientRect();return this.vertical?l.height:l.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=hi(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=hi(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=hi(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=hi(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var i;this.$props.disabled||(i=this.handlesRefs[0])===null||i===void 0||i.focus()},blur:function(){var i=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(l){var a,o;(a=i.handlesRefs[l])===null||a===void 0||(o=a.blur)===null||o===void 0||o.call(a)})},calcValue:function(i){var l=this.vertical,a=this.min,o=this.max,r=Math.abs(Math.max(i,0)/this.getSliderLength()),f=l?(1-r)*(o-a)+a:r*(o-a)+a;return f},calcValueByPos:function(i){var l=this.reverse?-1:1,a=l*(i-this.getSliderStart()),o=this.trimAlignValue(this.calcValue(a));return o},calcOffset:function(i){var l=this.min,a=this.max,o=(i-l)/(a-l);return Math.max(0,o*100)},saveSlider:function(i){this.sliderRef=i},saveHandle:function(i,l){this.handlesRefs[i]=l}},render:function(){var i,l=this.prefixCls,a=this.marks,o=this.dots,r=this.step,f=this.included,v=this.disabled,b=this.vertical,Z=this.reverse,p=this.min,y=this.max,X=this.maximumTrackStyle,m=this.railStyle,N=this.dotStyle,G=this.activeDotStyle,d=this.id,u=this.$attrs,s=u.class,h=u.style,c=this.renderSlider(),W=c.tracks,M=c.handles,I=_e(l,s,(i={},ce(i,"".concat(l,"-with-marks"),Object.keys(a).length),ce(i,"".concat(l,"-disabled"),v),ce(i,"".concat(l,"-vertical"),b),i)),w={vertical:b,marks:a,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,reverse:Z,class:"".concat(l,"-mark"),onClickLabel:v?Hs:this.onClickMarkLabel},C=ce({},Ui?"onTouchstartPassive":"onTouchstart",v?Hs:this.onTouchStart);return D("div",P(P({id:d,ref:this.saveSlider,tabindex:"-1",class:I},C),{},{onMousedown:v?Hs:this.onMouseDown,onMouseup:v?Hs:this.onMouseUp,onKeydown:v?Hs:this.onKeyDown,onFocus:v?Hs:this.onFocus,onBlur:v?Hs:this.onBlur,style:h}),[D("div",{class:"".concat(l,"-rail"),style:P(P({},X),m)},null),W,D(Cde,{prefixCls:l,vertical:b,reverse:Z,marks:a,dots:o,step:r,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,dotStyle:N,activeDotStyle:G},null),M,D(Sde,w,{mark:this.$slots.mark}),Lh(this)])}})}var Fde=He({compatConfig:{MODE:3},name:"Slider",mixins:[Vc],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,i=this.trimAlignValue(t,this.$props);i!==this.sValue&&(this.setState({sValue:i}),JC(t,this.$props)&&this.$emit("change",i))},onChange:function(e){var t=!No(this,"value"),i=e.sValue>this.max?P(P({},e),{},{sValue:this.max}):e;t&&this.setState(i);var l=i.sValue;this.$emit("change",l)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e,i!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:i}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){Su(e);var i=this.sValue,l=this.calcValueByPos(t);l!==i&&this.onChange({sValue:l})},onKeyboard:function(e){var t=this.$props,i=t.reverse,l=t.vertical,a=jC(e,l,i);if(a){Su(e);var o=this.sValue,r=a(o,this.$props),f=this.trimAlignValue(r);if(f===o)return;this.onChange({sValue:f}),this.$emit("afterChange",f),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var i=P(P({},this.$props),t),l=yX(e,i);return OC(l,i)},getTrack:function(e){var t=e.prefixCls,i=e.reverse,l=e.vertical,a=e.included,o=e.minimumTrackStyle,r=e.mergedTrackStyle,f=e.length,v=e.offset;return D(SC,{class:"".concat(t,"-track"),vertical:l,included:a,offset:v,reverse:i,length:f,style:P(P({},o),r)},null)},renderSlider:function(){var e=this,t=this.prefixCls,i=this.vertical,l=this.included,a=this.disabled,o=this.minimumTrackStyle,r=this.trackStyle,f=this.handleStyle,v=this.tabindex,b=this.ariaLabelForHandle,Z=this.ariaLabelledByForHandle,p=this.ariaValueTextFormatterForHandle,y=this.min,X=this.max,m=this.startPoint,N=this.reverse,G=this.handle,d=this.defaultHandle,u=G||d,s=this.sValue,h=this.dragging,c=this.calcOffset(s),W=u({class:"".concat(t,"-handle"),prefixCls:t,vertical:i,offset:c,value:s,dragging:h,disabled:a,min:y,max:X,reverse:N,index:0,tabindex:v,ariaLabel:b,ariaLabelledBy:Z,ariaValueTextFormatter:p,style:f[0]||f,ref:function(C){return e.saveHandle(0,C)},onFocus:this.onFocus,onBlur:this.onBlur}),M=m!==void 0?this.calcOffset(m):0,I=r[0]||r;return{tracks:this.getTrack({prefixCls:t,reverse:N,vertical:i,included:l,offset:M,minimumTrackStyle:o,mergedTrackStyle:I,length:c-M}),handles:W}}}});const Jde=UC(Fde);var Id=function(e){var t=e.value,i=e.handle,l=e.bounds,a=e.props,o=a.allowCross,r=a.pushable,f=Number(r),v=yX(t,a),b=v;return!o&&i!=null&&l!==void 0&&(i>0&&v<=l[i-1]+f&&(b=l[i-1]+f),i=l[i+1]-f&&(b=l[i+1]-f)),OC(b,a)},Dde={defaultValue:We.arrayOf(We.number),value:We.arrayOf(We.number),count:Number,pushable:lT(We.oneOfType([We.looseBool,We.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:We.arrayOf(We.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},Ode=He({compatConfig:{MODE:3},name:"Range",mixins:[Vc],inheritAttrs:!1,props:pn(Dde,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,i=this.min,l=this.max,a=Array.apply(void 0,yt(Array(t+1))).map(function(){return i}),o=No(this,"defaultValue")?this.defaultValue:a,r=this.value;r===void 0&&(r=o);var f=r.map(function(b,Z){return Id({value:b,handle:Z,props:e.$props})}),v=f[0]===l?0:f.length-1;return{sHandle:null,recent:v,bounds:f}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,i=this.bounds,l=e.map(function(o,r){return Id({value:o,handle:r,bounds:i,props:t.$props})});if(i.length===l.length){if(l.every(function(o,r){return o===i[r]}))return null}else l=e.map(function(o,r){return Id({value:o,handle:r,props:t.$props})});if(this.setState({bounds:l}),e.some(function(o){return JC(o,t.$props)})){var a=e.map(function(o){return yX(o,t.$props)});this.$emit("change",a)}},onChange:function(e){var t=!No(this,"value");if(t)this.setState(e);else{var i={};["sHandle","recent"].forEach(function(o){e[o]!==void 0&&(i[o]=e[o])}),Object.keys(i).length&&this.setState(i)}var l=P(P({},this.$data),e),a=l.bounds;this.$emit("change",a)},positionGetValue:function(e){var t=this.getValue(),i=this.calcValueByPos(e),l=this.getClosestBound(i),a=this.getBoundNeedMoving(i,l),o=t[a];if(i===o)return null;var r=yt(t);return r[a]=i,r},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e;var l=this.getClosestBound(i);this.prevMovedHandleIndex=this.getBoundNeedMoving(i,l),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var a=t[this.prevMovedHandleIndex];if(i!==a){var o=yt(t);o[this.prevMovedHandleIndex]=i,this.onChange({bounds:o})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,i,l){Su(e);var a=this.$data,o=this.$props,r=o.max||100,f=o.min||0;if(i){var v=o.vertical?-t:t;v=o.reverse?-v:v;var b=r-Math.max.apply(Math,yt(l)),Z=f-Math.min.apply(Math,yt(l)),p=Math.min(Math.max(v/(this.getSliderLength()/100),Z),b),y=l.map(function(d){return Math.floor(Math.max(Math.min(d+p,r),f))});a.bounds.map(function(d,u){return d===y[u]}).some(function(d){return!d})&&this.onChange({bounds:y});return}var X=this.bounds,m=this.sHandle,N=this.calcValueByPos(t),G=X[m];N!==G&&this.moveTo(N)},onKeyboard:function(e){var t=this.$props,i=t.reverse,l=t.vertical,a=jC(e,l,i);if(a){Su(e);var o=this.bounds,r=this.sHandle,f=o[r===null?this.recent:r],v=a(f,this.$props),b=Id({value:v,handle:r,bounds:o,props:this.$props});if(b===f)return;var Z=!0;this.moveTo(b,Z)}},getClosestBound:function(e){for(var t=this.bounds,i=0,l=1;l=t[l]&&(i=l);return Math.abs(t[i+1]-e)=l.length||o<0)return!1;var r=t+i,f=l[o],v=this.pushable,b=Number(v),Z=i*(e[r]-f);return this.pushHandle(e,r,i,b-Z)?(e[t]=f,!0):!1},trimAlignValue:function(e){var t=this.sHandle,i=this.bounds;return Id({value:e,handle:t,bounds:i,props:this.$props})},ensureValueNotConflict:function(e,t,i){var l=i.allowCross,a=i.pushable,o=this.$data||{},r=o.bounds;if(e=e===void 0?o.sHandle:e,a=Number(a),!l&&e!=null&&r!==void 0){if(e>0&&t<=r[e-1]+a)return r[e-1]+a;if(e=r[e+1]-a)return r[e+1]-a}return t},getTrack:function(e){var t=e.bounds,i=e.prefixCls,l=e.reverse,a=e.vertical,o=e.included,r=e.offsets,f=e.trackStyle;return t.slice(0,-1).map(function(v,b){var Z,p=b+1,y=_e((Z={},ce(Z,"".concat(i,"-track"),!0),ce(Z,"".concat(i,"-track-").concat(p),!0),Z));return D(SC,{class:y,vertical:a,reverse:l,included:o,offset:r[p-1],length:r[p]-r[p-1],style:f[b],key:p},null)})},renderSlider:function(){var e=this,t=this.sHandle,i=this.bounds,l=this.prefixCls,a=this.vertical,o=this.included,r=this.disabled,f=this.min,v=this.max,b=this.reverse,Z=this.handle,p=this.defaultHandle,y=this.trackStyle,X=this.handleStyle,m=this.tabindex,N=this.ariaLabelGroupForHandles,G=this.ariaLabelledByGroupForHandles,d=this.ariaValueTextFormatterGroupForHandles,u=Z||p,s=i.map(function(W){return e.calcOffset(W)}),h="".concat(l,"-handle"),c=i.map(function(W,M){var I,w=m[M]||0;(r||m[M]===null)&&(w=null);var C=t===M;return u({class:_e((I={},ce(I,h,!0),ce(I,"".concat(h,"-").concat(M+1),!0),ce(I,"".concat(h,"-dragging"),C),I)),prefixCls:l,vertical:a,dragging:C,offset:s[M],value:W,index:M,tabindex:w,min:f,max:v,reverse:b,disabled:r,style:X[M],ref:function(R){return e.saveHandle(M,R)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:N[M],ariaLabelledBy:G[M],ariaValueTextFormatter:d[M]})});return{tracks:this.getTrack({bounds:i,prefixCls:l,reverse:b,vertical:a,included:o,offsets:s,trackStyle:y}),handles:c}}}});const jde=UC(Ode),Ude=He({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:Vx(),setup:function(e,t){var i=t.attrs,l=t.slots,a=Ne(null),o=Ne(null);function r(){At.cancel(o.value),o.value=null}function f(){o.value=At(function(){var b;(b=a.value)===null||b===void 0||b.forcePopupAlign(),o.value=null})}var v=function(){r(),e.visible&&f()};return rt([function(){return e.visible},function(){return e.title}],function(){v()},{flush:"post",immediate:!0}),I0(function(){v()}),fn(function(){r()}),function(){return D(Xr,P(P({ref:a},e),i),l)}}});var Ede=["value","dragging","index"],Kde=["tooltipPrefixCls","range","id"],Hde=function(e){return typeof e=="number"?e.toString():""},Pde=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return Hde}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},Qde=He({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:Pde(),slots:["mark"],setup:function(e,t){var i=t.attrs,l=t.slots,a=t.emit,o=t.expose,r=Nt("slider",e),f=r.prefixCls,v=r.rootPrefixCls,b=r.direction,Z=r.getPopupContainer,p=r.configProvider,y=Hi(),X=Ne(),m=Ne({}),N=function(M,I){m.value[M]=I},G=de(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?b.value==="rtl"?"left":"right":"top"}),d=function(){var M;(M=X.value)===null||M===void 0||M.focus()},u=function(){var M;(M=X.value)===null||M===void 0||M.blur()},s=function(M){a("update:value",M),a("change",M),y.onFieldChange()},h=function(M){a("blur",M)};o({focus:d,blur:u});var c=function(M){var I=M.tooltipPrefixCls,w=M.info,C=w.value,x=w.dragging,R=w.index,g=jt(w,Ede),S=e.tipFormatter,L=e.tooltipVisible,V=e.getTooltipPopupContainer,Y=S?m.value[R]||x:!1,T=L||L===void 0&&Y;return D(Ude,{prefixCls:I,title:S?S(C):"",visible:T,placement:G.value,transitionName:"".concat(v.value,"-zoom-down"),key:R,overlayClassName:"".concat(f.value,"-tooltip"),getPopupContainer:V||Z.value},{default:function(){return[D(FC,P(P({},g),{},{value:C,onMouseenter:function(){return N(R,!0)},onMouseleave:function(){return N(R,!1)}}),null)]}})};return function(){var W=e.tooltipPrefixCls,M=e.range,I=e.id,w=I===void 0?y.id.value:I,C=jt(e,Kde),x=p.getPrefixCls("tooltip",W),R=_e(i.class,ce({},"".concat(f.value,"-rtl"),b.value==="rtl"));b.value==="rtl"&&!C.vertical&&(C.reverse=!C.reverse);var g;return Yt(M)==="object"&&(g=M.draggableTrack),M?D(jde,P(P({},C),{},{step:C.step,draggableTrack:g,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:l.mark}):D(Jde,P(P({},C),{},{id:w,step:C.step,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:l.mark})}}});const Bde=wi(Qde);var Ade={small:8,middle:16,large:24},_de=function(){return{prefixCls:String,size:{type:[String,Number,Array]},direction:We.oneOf(pi("horizontal","vertical")).def("horizontal"),align:We.oneOf(pi("start","end","center","baseline")),wrap:{type:Boolean,default:void 0}}};function $de(n){return typeof n=="string"?Ade[n]:n||0}var qde=He({compatConfig:{MODE:3},name:"ASpace",props:_de(),slots:["split"],setup:function(e,t){var i=t.slots,l=Nt("space",e),a=l.prefixCls,o=l.space,r=l.direction,f=q3(),v=de(function(){var N,G,d;return(N=(G=e.size)!==null&&G!==void 0?G:(d=o.value)===null||d===void 0?void 0:d.size)!==null&&N!==void 0?N:"small"}),b=Ne(),Z=Ne();rt(v,function(){var N=(Array.isArray(v.value)?v.value:[v.value,v.value]).map(function(d){return $de(d)}),G=ft(N,2);b.value=G[0],Z.value=G[1]},{immediate:!0});var p=de(function(){return e.align===void 0&&e.direction==="horizontal"?"center":e.align}),y=de(function(){var N;return _e(a.value,"".concat(a.value,"-").concat(e.direction),(N={},ce(N,"".concat(a.value,"-rtl"),r.value==="rtl"),ce(N,"".concat(a.value,"-align-").concat(p.value),p.value),N))}),X=de(function(){return r.value==="rtl"?"marginLeft":"marginRight"}),m=de(function(){var N={};return f.value&&(N.columnGap="".concat(b.value,"px"),N.rowGap="".concat(Z.value,"px")),P(P({},N),e.wrap&&{flexWrap:"wrap",marginBottom:"".concat(-Z.value,"px")})});return function(){var N,G,d=e.wrap,u=e.direction,s=u===void 0?"horizontal":u,h=Ri((N=i.default)===null||N===void 0?void 0:N.call(i)),c=h.length;if(c===0)return null;var W=(G=i.split)===null||G===void 0?void 0:G.call(i),M="".concat(a.value,"-item"),I=b.value,w=c-1;return D("div",{class:y.value,style:m.value},[h.map(function(C,x){var R={};return f.value||(s==="vertical"?x=t}function Nhe(n){return n&&Yt(n)==="object"&&!Array.isArray(n)&&!yl(n)}const Gp=He({name:"Cell",props:["prefixCls","record","index","renderIndex","dataIndex","customRender","component","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","additionalProps","ellipsis","align","rowType","isSticky","column","cellType","transformCellText"],slots:["appendNode"],setup:function(e,t){var i=t.slots,l=BC(),a=Zhe(),o=a.onHover,r=a.startRow,f=a.endRow,v=de(function(){var N,G,d,u;return(N=(G=e.colSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.colSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.colspan}),b=de(function(){var N,G,d,u;return(N=(G=e.rowSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.rowSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.rowspan}),Z=Sa(function(){var N=e.index;return Xhe(N,b.value||1,r.value,f.value)}),p=Whe(),y=function(G,d){var u,s=e.record,h=e.index,c=e.additionalProps;s&&o(h,h+d-1),c==null||(u=c.onMouseenter)===null||u===void 0||u.call(c,G)},X=function(G){var d,u=e.record,s=e.additionalProps;u&&o(-1,-1),s==null||(d=s.onMouseleave)===null||d===void 0||d.call(s,G)},m=function N(G){var d=Ri(G)[0];return yl(d)?d.type===Ns?d.children:Array.isArray(d.children)?N(d.children):void 0:d};return function(){var N,G,d,u,s,h,c=e.prefixCls,W=e.record,M=e.index,I=e.renderIndex,w=e.dataIndex,C=e.customRender,x=e.component,R=x===void 0?"td":x,g=e.fixLeft,S=e.fixRight,L=e.firstFixLeft,V=e.lastFixLeft,Y=e.firstFixRight,T=e.lastFixRight,J=e.appendNode,U=J===void 0?(N=i.appendNode)===null||N===void 0?void 0:N.call(i):J,K=e.additionalProps,H=K===void 0?{}:K,k=e.ellipsis,F=e.align,O=e.rowType,Q=e.isSticky,oe=e.column,se=oe===void 0?{}:oe,he=e.cellType,pe="".concat(c,"-cell"),re,_,E=(G=i.default)===null||G===void 0?void 0:G.call(i);if(Rv(E)||he==="header")_=E;else{var $,ae=PC(W,w);if(_=ae,C){var le=C({text:ae,value:ae,record:W,index:M,renderIndex:I,column:se.__originColumn__});Nhe(le)?(_=le.children,re=le.props):_=le}if(!(Nu in se)&&he==="body"&&l.value.bodyCell&&!(($=se.slots)!==null&&$!==void 0&&$.customRender)){var ee=g0(l.value,"bodyCell",{text:ae,value:ae,record:W,index:M,column:se.__originColumn__},function(){var Se=_===void 0?ae:_;return[Yt(Se)==="object"&&Si(Se)||Yt(Se)!=="object"?Se:null]});_=ti(ee)}e.transformCellText&&(_=e.transformCellText({text:_,record:W,index:M,column:se.__originColumn__}))}Yt(_)==="object"&&!Array.isArray(_)&&!yl(_)&&(_=null),k&&(V||Y)&&(_=D("span",{class:"".concat(pe,"-content")},[_])),Array.isArray(_)&&_.length===1&&(_=_[0]);var te=re||{},be=te.colSpan,ne=te.rowSpan,B=te.style,q=te.class,ue=jt(te,Ghe),ve=(d=be!==void 0?be:v.value)!==null&&d!==void 0?d:1,Ge=(u=ne!==void 0?ne:b.value)!==null&&u!==void 0?u:1;if(ve===0||Ge===0)return null;var Je={},xe=typeof g=="number"&&p.value,ke=typeof S=="number"&&p.value;xe&&(Je.position="sticky",Je.left="".concat(g,"px")),ke&&(Je.position="sticky",Je.right="".concat(S,"px"));var Pe={};F&&(Pe.textAlign=F);var Be,Te=k===!0?{showTitle:!0}:k;Te&&(Te.showTitle||O==="header")&&(typeof _=="string"||typeof _=="number"?Be=_.toString():yl(_)&&(Be=m([_])));var we=P(P(P({title:Be},ue),H),{},{colSpan:ve!==1?ve:null,rowSpan:Ge!==1?Ge:null,class:_e(pe,(s={},ce(s,"".concat(pe,"-fix-left"),xe&&p.value),ce(s,"".concat(pe,"-fix-left-first"),L&&p.value),ce(s,"".concat(pe,"-fix-left-last"),V&&p.value),ce(s,"".concat(pe,"-fix-right"),ke&&p.value),ce(s,"".concat(pe,"-fix-right-first"),Y&&p.value),ce(s,"".concat(pe,"-fix-right-last"),T&&p.value),ce(s,"".concat(pe,"-ellipsis"),k),ce(s,"".concat(pe,"-with-append"),U),ce(s,"".concat(pe,"-fix-sticky"),(xe||ke)&&Q&&p.value),ce(s,"".concat(pe,"-row-hover"),!re&&Z.value),s),H.class,q),onMouseenter:function(De){y(De,Ge)},onMouseleave:X,style:P(P(P(P({},zW(H.style)),Pe),Je),B)});return D(R,we,{default:function(){return[U,_,(h=i.dragHandle)===null||h===void 0?void 0:h.call(i)]}})}}});function ZX(n,e,t,i,l){var a=t[n]||{},o=t[e]||{},r,f;a.fixed==="left"?r=i.left[n]:o.fixed==="right"&&(f=i.right[e]);var v=!1,b=!1,Z=!1,p=!1,y=t[e+1],X=t[n-1];if(l==="rtl"){if(r!==void 0){var m=X&&X.fixed==="left";p=!m}else if(f!==void 0){var N=y&&y.fixed==="right";Z=!N}}else if(r!==void 0){var G=y&&y.fixed==="left";v=!G}else if(f!==void 0){var d=X&&X.fixed==="right";b=!d}return{fixLeft:r,fixRight:f,lastFixLeft:v,firstFixRight:b,lastFixRight:Z,firstFixLeft:p,isSticky:i.isSticky}}var Bg={mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"},touch:{start:"touchstart",move:"touchmove",stop:"touchend"}},Ag=50;const Mhe=He({compatConfig:{MODE:3},name:"DragHandle",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:Ag},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup:function(e){var t=0,i={remove:function(){}},l={remove:function(){}},a=function(){i.remove(),l.remove()};la(function(){a()}),qt(function(){jn(!isNaN(e.width),"Table","width must be a number when use resizable")});var o=phe(),r=o.onResizeColumn,f=de(function(){return typeof e.minWidth=="number"&&!isNaN(e.minWidth)?e.minWidth:Ag}),v=de(function(){return typeof e.maxWidth=="number"&&!isNaN(e.maxWidth)?e.maxWidth:1/0}),b=Wl(),Z=0,p=Ne(!1),y,X=function(c){var W=0;c.touches?c.touches.length?W=c.touches[0].pageX:W=c.changedTouches[0].pageX:W=c.pageX;var M=t-W,I=Math.max(Z-M,f.value);I=Math.min(I,v.value),At.cancel(y),y=At(function(){r(I,e.column.__originColumn__)})},m=function(c){X(c)},N=function(c){p.value=!1,X(c),a()},G=function(c,W){p.value=!0,a(),Z=b.vnode.el.parentNode.getBoundingClientRect().width,!(c instanceof MouseEvent&&c.which!==1)&&(c.stopPropagation&&c.stopPropagation(),t=c.touches?c.touches[0].pageX:c.pageX,i=hi(document.documentElement,W.move,m),l=hi(document.documentElement,W.stop,N))},d=function(c){c.stopPropagation(),c.preventDefault(),G(c,Bg.mouse)},u=function(c){c.stopPropagation(),c.preventDefault(),G(c,Bg.touch)},s=function(c){c.stopPropagation(),c.preventDefault()};return function(){var h=e.prefixCls,c=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(W){return u(W)});return D("div",P(P({class:"".concat(h,"-resize-handle ").concat(p.value?"dragging":""),onMousedown:d},c),{},{onClick:s}),[D("div",{class:"".concat(h,"-resize-handle-line")},null)])}}}),Ihe=He({name:"HeaderRow",props:["cells","stickyOffsets","flattenColumns","rowComponent","cellComponent","index","customHeaderRow"],setup:function(e){var t=_r();return function(){var i=t.prefixCls,l=t.direction,a=e.cells,o=e.stickyOffsets,r=e.flattenColumns,f=e.rowComponent,v=e.cellComponent,b=e.customHeaderRow,Z=e.index,p;b&&(p=b(a.map(function(X){return X.column}),Z));var y=Wp(a.map(function(X){return X.column}));return D(f,p,{default:function(){return[a.map(function(m,N){var G=m.column,d=ZX(m.colStart,m.colEnd,r,o,l),u;G&&G.customHeaderCell&&(u=m.column.customHeaderCell(G));var s=G;return D(Gp,P(P(P({},m),{},{cellType:"header",ellipsis:G.ellipsis,align:G.align,component:v,prefixCls:i,key:y[N]},d),{},{additionalProps:u,rowType:"header",column:G}),{default:function(){return G.title},dragHandle:function(){return s.resizable?D(Mhe,{prefixCls:i,width:s.width,minWidth:s.minWidth,maxWidth:s.maxWidth,column:s},null):null}})})]}})}}});function Yhe(n){var e=[];function t(o,r){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;e[f]=e[f]||[];var v=r,b=o.filter(Boolean).map(function(Z){var p={key:Z.key,class:_e(Z.className,Z.class),column:Z,colStart:v},y=1,X=Z.children;return X&&X.length>0&&(y=t(X,v,f+1).reduce(function(m,N){return m+N},0),p.hasSubColumns=!0),"colSpan"in Z&&(y=Z.colSpan),"rowSpan"in Z&&(p.rowSpan=Z.rowSpan),p.colSpan=y,p.colEnd=p.colStart+y-1,e[f].push(p),v+=y,y});return b}t(n,0);for(var i=e.length,l=function(r){e[r].forEach(function(f){!("rowSpan"in f)&&!f.hasSubColumns&&(f.rowSpan=i-r)})},a=0;a1?h-1:0),W=1;W0?[].concat(yt(e),yt(xv(a).map(function(o){return P({fixed:l},o)}))):[].concat(yt(e),[P(P({},t),{},{fixed:l})])},[])}function khe(n){return n.map(function(e){var t=e.fixed,i=jt(e,zhe),l=t;return t==="left"?l="right":t==="right"&&(l="left"),P({fixed:l},i)})}function Fhe(n,e){var t=n.prefixCls,i=n.columns,l=n.expandable,a=n.expandedKeys,o=n.getRowKey,r=n.onTriggerExpand,f=n.expandIcon,v=n.rowExpandable,b=n.expandIconColumnIndex,Z=n.direction,p=n.expandRowByClick,y=n.expandColumnWidth,X=n.expandFixed,m=de(function(){if(l.value){var d,u=i.value.slice();if(!u.includes(rs)){var s=b.value||0;s>=0&&u.splice(s,0,rs)}var h=u.indexOf(rs);u=u.filter(function(g,S){return g!==rs||S===h});var c=i.value[h],W;(X.value==="left"||X.value)&&!b.value?W="left":(X.value==="right"||X.value)&&b.value===i.value.length?W="right":W=c?c.fixed:null;var M=a.value,I=v.value,w=f.value,C=t.value,x=p.value,R=(d={},ce(d,Nu,{class:"".concat(t.value,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),ce(d,"title",""),ce(d,"fixed",W),ce(d,"class","".concat(t.value,"-row-expand-icon-cell")),ce(d,"width",y.value),ce(d,"customRender",function(S){var L=S.record,V=S.index,Y=o.value(L,V),T=M.has(Y),J=I?I(L):!0,U=w({prefixCls:C,expanded:T,expandable:J,record:L,onExpand:r});return x?D("span",{onClick:function(H){return H.stopPropagation()}},[U]):U}),d);return u.map(function(g){return g===rs?R:g})}return i.value.filter(function(g){return g!==rs})}),N=de(function(){var d=m.value;return e.value&&(d=e.value(d)),d.length||(d=[{customRender:function(){return null}}]),d}),G=de(function(){return Z.value==="rtl"?khe(xv(N.value)):xv(N.value)});return[N,G]}function lS(n){var e=Gn(n),t,i=Gn([]);function l(a){i.value.push(a),At.cancel(t),t=At(function(){var o=i.value;i.value=[],o.forEach(function(r){e.value=r(e.value)})})}return fn(function(){At.cancel(t)}),[e,l]}function Jhe(n){var e=Ne(n||null),t=Ne();function i(){clearTimeout(t.value)}function l(o){e.value=o,i(),t.value=setTimeout(function(){e.value=null,t.value=void 0},100)}function a(){return e.value}return fn(function(){i()}),[l,a]}function Dhe(n,e,t){var i=de(function(){for(var l=[],a=[],o=0,r=0,f=n.value,v=e.value,b=t.value,Z=0;Z=0;r-=1){var f=e[r],v=t&&t[r],b=v&&v[Nu];if(f||b||o){var Z=b||{};Z.columnType;var p=jt(Z,Ohe);l.unshift(D("col",P({key:r,style:{width:typeof f=="number"?"".concat(f,"px"):f}},p),null)),o=!0}}return D("colgroup",null,[l])}function Cv(n,e){var t,i=e.slots;return D("div",null,[(t=i.default)===null||t===void 0?void 0:t.call(i)])}Cv.displayName="Panel";var jhe=0,Uhe=He({name:"Summary",props:["fixed"],setup:function(e,t){var i=t.slots,l=_r(),a="table-summary-uni-key-".concat(++jhe),o=de(function(){return e.fixed===""||e.fixed});return qt(function(){l.summaryCollect(a,o.value)}),fn(function(){l.summaryCollect(a,!1)}),function(){var r;return(r=i.default)===null||r===void 0?void 0:r.call(i)}}});const Ehe=Uhe,Khe=He({compatConfig:{MODE:3},name:"FooterRow",setup:function(e,t){var i=t.slots;return function(){var l;return D("tr",null,[(l=i.default)===null||l===void 0?void 0:l.call(i)])}}});var rS=Symbol("SummaryContextProps"),Hhe=function(e){hn(rS,e)},Phe=function(){return un(rS,{})};const Qhe=He({name:"SummaryCell",props:["index","colSpan","rowSpan","align"],setup:function(e,t){var i=t.attrs,l=t.slots,a=_r(),o=Phe();return function(){var r=e.index,f=e.colSpan,v=f===void 0?1:f,b=e.rowSpan,Z=e.align,p=a.prefixCls,y=a.direction,X=o.scrollColumnIndex,m=o.stickyOffsets,N=o.flattenColumns,G=r+v-1,d=G+1===X?v+1:v,u=ZX(r,r+d-1,N,m,y);return D(Gp,P({class:i.class,index:r,component:"td",prefixCls:p,record:null,dataIndex:null,align:Z,colSpan:d,rowSpan:b,customRender:function(){var h;return(h=l.default)===null||h===void 0?void 0:h.call(l)}},u),null)}}}),yb=He({name:"Footer",inheritAttrs:!1,props:["stickyOffsets","flattenColumns"],setup:function(e,t){var i=t.slots,l=_r();return Hhe(zn({stickyOffsets:Ot(e,"stickyOffsets"),flattenColumns:Ot(e,"flattenColumns"),scrollColumnIndex:de(function(){var a=e.flattenColumns.length-1,o=e.flattenColumns[a];return o!=null&&o.scrollbar?a:null})})),function(){var a,o=l.prefixCls;return D("tfoot",{class:"".concat(o,"-summary")},[(a=i.default)===null||a===void 0?void 0:a.call(i)])}}});var Bhe=Ehe;function Ahe(n){var e,t=n.prefixCls,i=n.record,l=n.onExpand,a=n.expanded,o=n.expandable,r="".concat(t,"-row-expand-icon");if(!o)return D("span",{class:[r,"".concat(t,"-row-spaced")]},null);var f=function(b){l(i,b),b.stopPropagation()};return D("span",{class:(e={},ce(e,r,!0),ce(e,"".concat(t,"-row-expanded"),a),ce(e,"".concat(t,"-row-collapsed"),!a),e),onClick:f},null)}function _he(n,e,t){var i=[];function l(a){(a||[]).forEach(function(o,r){i.push(e(o,r)),l(o[t])})}return l(n),i}const $he=He({name:"StickyScrollBar",inheritAttrs:!1,props:["offsetScroll","container","scrollBodyRef","scrollBodySizeInfo"],emits:["scroll"],setup:function(e,t){var i=t.emit,l=t.expose,a=_r(),o=Ne(0),r=Ne(0),f=Ne(0);qt(function(){o.value=e.scrollBodySizeInfo.scrollWidth||0,r.value=e.scrollBodySizeInfo.clientWidth||0,f.value=o.value&&r.value*(r.value/o.value)},{flush:"post"});var v=Ne(),b=lS({scrollLeft:0,isHiddenScrollBar:!0}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne({delta:0,x:0}),m=Ne(!1),N=function(){m.value=!1},G=function(C){X.value={delta:C.pageX-p.value.scrollLeft,x:0},m.value=!0,C.preventDefault()},d=function(C){var x,R=C||((x=window)===null||x===void 0?void 0:x.event),g=R.buttons;if(!m.value||g===0){m.value&&(m.value=!1);return}var S=X.value.x+C.pageX-X.value.x-X.value.delta;S<=0&&(S=0),S+f.value>=r.value&&(S=r.value-f.value),i("scroll",{scrollLeft:S/r.value*(o.value+2)}),X.value.x=C.pageX},u=function(){if(e.scrollBodyRef.value){var C=n0(e.scrollBodyRef.value).top,x=C+e.scrollBodyRef.value.offsetHeight,R=e.container===window?document.documentElement.scrollTop+window.innerHeight:n0(e.container).top+e.container.clientHeight;x-xu()<=R||C>=R-e.offsetScroll?y(function(g){return P(P({},g),{},{isHiddenScrollBar:!0})}):y(function(g){return P(P({},g),{},{isHiddenScrollBar:!1})})}},s=function(C){y(function(x){return P(P({},x),{},{scrollLeft:C/o.value*r.value||0})})};l({setScrollLeft:s});var h=null,c=null,W=null,M=null;Kt(function(){h=hi(document.body,"mouseup",N,!1),c=hi(document.body,"mousemove",d,!1),W=hi(window,"resize",u,!1)}),I0(function(){cn(function(){u()})}),Kt(function(){setTimeout(function(){rt([f,m],function(){u()},{immediate:!0,flush:"post"})})}),rt(function(){return e.container},function(){var w;(w=M)===null||w===void 0||w.remove(),M=hi(e.container,"scroll",u,!1)},{immediate:!0,flush:"post"}),fn(function(){var w,C,x,R;(w=h)===null||w===void 0||w.remove(),(C=c)===null||C===void 0||C.remove(),(x=M)===null||x===void 0||x.remove(),(R=W)===null||R===void 0||R.remove()}),rt(function(){return P({},p.value)},function(w,C){w.isHiddenScrollBar!==(C==null?void 0:C.isHiddenScrollBar)&&!w.isHiddenScrollBar&&y(function(x){var R=e.scrollBodyRef.value;return R?P(P({},x),{},{scrollLeft:R.scrollLeft/R.scrollWidth*R.clientWidth}):x})},{immediate:!0});var I=xu();return function(){if(o.value<=r.value||!f.value||p.value.isHiddenScrollBar)return null;var w=a.prefixCls;return D("div",{style:{height:"".concat(I,"px"),width:"".concat(r.value,"px"),bottom:"".concat(e.offsetScroll,"px")},class:"".concat(w,"-sticky-scroll")},[D("div",{onMousedown:G,ref:v,class:_e("".concat(w,"-sticky-scroll-bar"),ce({},"".concat(w,"-sticky-scroll-bar-active"),m)),style:{width:"".concat(f.value,"px"),transform:"translate3d(".concat(p.value.scrollLeft,"px, 0, 0)")}},null)])}}});var $g=Yc()?window:null;function qhe(n,e){return de(function(){var t=Yt(n.value)==="object"?n.value:{},i=t.offsetHeader,l=i===void 0?0:i,a=t.offsetSummary,o=a===void 0?0:a,r=t.offsetScroll,f=r===void 0?0:r,v=t.getContainer,b=v===void 0?function(){return $g}:v,Z=b()||$g,p=!!n.value;return{isSticky:p,stickyClassName:p?"".concat(e.value,"-sticky-holder"):"",offsetHeader:l,offsetSummary:o,offsetScroll:f,container:Z}})}function efe(n,e){return de(function(){for(var t=[],i=n.value,l=e.value,a=0;a1?e-1:0),i=1;i0)):(L(qe>0),J(qe0?l.value:n.value}),y=Math.ceil((l.value||n.value)/p.pageSize);return p.current>y&&(p.current=y||1),p}),b=function(y,X){i.value!==!1&&f({current:y??1,pageSize:X||v.value.pageSize})},Z=function(y,X){if(i.value){var m,N;(m=(N=i.value).onChange)===null||m===void 0||m.call(N,y,X)}b(y,X),t(y,X||v.value.pageSize)};return[de(function(){return i.value===!1?{}:P(P({},v.value),{},{onChange:Z})}),b]}function sfe(n,e,t){var i=Gn({});rt([n,e,t],function(){var a=new Map,o=t.value,r=e.value;function f(v){v.forEach(function(b,Z){var p=o(b,Z);a.set(p,b),b&&Yt(b)==="object"&&r in b&&f(b[r]||[])})}f(n.value),i.value={kvMap:a}},{deep:!0,immediate:!0});function l(a){return i.value.kvMap.get(a)}return[l]}var Go={},kv="SELECT_ALL",Fv="SELECT_INVERT",Jv="SELECT_NONE",cfe=[];function oS(n,e){var t=[];return(n||[]).forEach(function(i){t.push(i),i&&Yt(i)==="object"&&e in i&&(t=[].concat(yt(t),yt(oS(i[e],e))))}),t}function ufe(n,e){var t=de(function(){var g=n.value||{},S=g.checkStrictly,L=S===void 0?!0:S;return P(P({},g),{},{checkStrictly:L})}),i=Wi(t.value.selectedRowKeys||t.value.defaultSelectedRowKeys||cfe,{value:de(function(){return t.value.selectedRowKeys})}),l=ft(i,2),a=l[0],o=l[1],r=Gn(new Map),f=function(S){if(t.value.preserveSelectedRowKeys){var L=new Map;S.forEach(function(V){var Y=e.getRecordByKey(V);!Y&&r.value.has(V)&&(Y=r.value.get(V)),L.set(V,Y)}),r.value=L}};qt(function(){f(a.value)});var v=de(function(){return t.value.checkStrictly?null:jh(e.data.value,{externalGetKey:e.getRowKey.value,childrenPropName:e.childrenColumnName.value}).keyEntities}),b=de(function(){return oS(e.pageData.value,e.childrenColumnName.value)}),Z=de(function(){var g=new Map,S=e.getRowKey.value,L=t.value.getCheckboxProps;return b.value.forEach(function(V,Y){var T=S(V,Y),J=(L?L(V):null)||{};g.set(T,J)}),g}),p=up(v),y=p.maxLevel,X=p.levelEntities,m=function(S){var L;return!!((L=Z.value.get(e.getRowKey.value(S)))!==null&&L!==void 0&&L.disabled)},N=de(function(){if(t.value.checkStrictly)return[a.value||[],[]];var g=ir(a.value,!0,v.value,y.value,X.value,m),S=g.checkedKeys,L=g.halfCheckedKeys;return[S||[],L]}),G=de(function(){return N.value[0]}),d=de(function(){return N.value[1]}),u=de(function(){var g=t.value.type==="radio"?G.value.slice(0,1):G.value;return new Set(g)}),s=de(function(){return t.value.type==="radio"?new Set:new Set(d.value)}),h=di(null),c=ft(h,2),W=c[0],M=c[1],I=function(S){var L,V;f(S);var Y=t.value,T=Y.preserveSelectedRowKeys,J=Y.onChange,U=e.getRecordByKey;T?(L=S,V=S.map(function(K){return r.value.get(K)})):(L=[],V=[],S.forEach(function(K){var H=U(K);H!==void 0&&(L.push(K),V.push(H))})),o(L),J==null||J(L,V)},w=function(S,L,V,Y){var T=t.value.onSelect,J=e||{},U=J.getRecordByKey;if(T){var K=V.map(function(H){return U(H)});T(U(S),L,K,Y)}I(V)},C=de(function(){var g=t.value,S=g.onSelectInvert,L=g.onSelectNone,V=g.selections,Y=g.hideSelectAll,T=e.data,J=e.pageData,U=e.getRowKey,K=e.locale;if(!V||Y)return null;var H=V===!0?[kv,Fv,Jv]:V;return H.map(function(k){return k===kv?{key:"all",text:K.value.selectionAll,onSelect:function(){I(T.value.map(function(O,Q){return U.value(O,Q)}).filter(function(O){var Q=Z.value.get(O);return!(Q!=null&&Q.disabled)||u.value.has(O)}))}}:k===Fv?{key:"invert",text:K.value.selectInvert,onSelect:function(){var O=new Set(u.value);J.value.forEach(function(oe,se){var he=U.value(oe,se),pe=Z.value.get(he);pe!=null&&pe.disabled||(O.has(he)?O.delete(he):O.add(he))});var Q=Array.from(O);S&&(jn(!1,"Table","`onSelectInvert` will be removed in future. Please use `onChange` instead."),S(Q)),I(Q)}}:k===Jv?{key:"none",text:K.value.selectNone,onSelect:function(){L==null||L(),I(Array.from(u.value).filter(function(O){var Q=Z.value.get(O);return Q==null?void 0:Q.disabled}))}}:k})}),x=de(function(){return b.value.length}),R=function(S){var L,V=t.value,Y=V.onSelectAll,T=V.onSelectMultiple,J=V.columnWidth,U=V.type,K=V.fixed,H=V.renderCell,k=V.hideSelectAll,F=V.checkStrictly,O=e.prefixCls,Q=e.getRecordByKey,oe=e.getRowKey,se=e.expandType,he=e.getPopupContainer;if(!n.value)return S.filter(function(De){return De!==Go});var pe=S.slice(),re=new Set(u.value),_=b.value.map(oe.value).filter(function(De){return!Z.value.get(De).disabled}),E=_.every(function(De){return re.has(De)}),$=_.some(function(De){return re.has(De)}),ae=function(){var me=[];E?_.forEach(function(Me){re.delete(Me),me.push(Me)}):_.forEach(function(Me){re.has(Me)||(re.add(Me),me.push(Me))});var Ve=Array.from(re);Y==null||Y(!E,Ve.map(function(Me){return Q(Me)}),me.map(function(Me){return Q(Me)})),I(Ve)},le;if(U!=="radio"){var ee;if(C.value){var te=D(Yi,{getPopupContainer:he.value},{default:function(){return[C.value.map(function(me,Ve){var Me=me.key,Ie=me.text,Ze=me.onSelect;return D(Yi.Item,{key:Me||Ve,onClick:function(){Ze==null||Ze(_)}},{default:function(){return[Ie]}})})]}});ee=D("div",{class:"".concat(O.value,"-selection-extra")},[D(Hr,{overlay:te,getPopupContainer:he.value},{default:function(){return[D("span",null,[D(kh,null,null)])]}})])}var be=b.value.map(function(De,me){var Ve=oe.value(De,me),Me=Z.value.get(Ve)||{};return P({checked:re.has(Ve)},Me)}).filter(function(De){var me=De.disabled;return me}),ne=!!be.length&&be.length===x.value,B=ne&&be.every(function(De){var me=De.checked;return me}),q=ne&&be.some(function(De){var me=De.checked;return me});le=!k&&D("div",{class:"".concat(O.value,"-selection")},[D(lr,{checked:ne?B:!!x.value&&E,indeterminate:ne?!B&&q:!E&&$,onChange:ae,disabled:x.value===0||ne,skipGroup:!0},null),ee])}var ue;U==="radio"?ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie);return{node:D(ta,P(P({},Z.value.get(Ie)),{},{checked:Ze,onClick:function(ye){return ye.stopPropagation()},onChange:function(ye){re.has(Ie)||w(Ie,!0,[Ie],ye.nativeEvent)}}),null),checked:Ze}}:ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie),Ce=s.value.has(Ie),ye=Z.value.get(Ie),Ue;if(se.value==="nest")Ue=Ce,jn(typeof(ye==null?void 0:ye.indeterminate)!="boolean","Table","set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.");else{var qe;Ue=(qe=ye==null?void 0:ye.indeterminate)!==null&&qe!==void 0?qe:Ce}return{node:D(lr,P(P({},ye),{},{indeterminate:Ue,checked:Ze,skipGroup:!0,onClick:function(Oe){return Oe.stopPropagation()},onChange:function(Oe){var Ke=Oe.nativeEvent,Xe=Ke.shiftKey,Re=-1,Ae=-1;if(Xe&&F){var ct=new Set([W.value,Ie]);_.some(function(Pt,Ut){if(ct.has(Pt))if(Re===-1)Re=Ut;else return Ae=Ut,!0;return!1})}if(Ae!==-1&&Re!==Ae&&F){var lt=_.slice(Re,Ae+1),ot=[];Ze?lt.forEach(function(Pt){re.has(Pt)&&(ot.push(Pt),re.delete(Pt))}):lt.forEach(function(Pt){re.has(Pt)||(ot.push(Pt),re.add(Pt))});var wt=Array.from(re);T==null||T(!Ze,wt.map(function(Pt){return Q(Pt)}),ot.map(function(Pt){return Q(Pt)})),I(wt)}else{var Mt=G.value;if(F){var xt=Ze?vo(Mt,Ie):ns(Mt,Ie);w(Ie,!Ze,xt,Ke)}else{var Gt=ir([].concat(yt(Mt),[Ie]),!0,v.value,y.value,X.value,m),Zt=Gt.checkedKeys,Tt=Gt.halfCheckedKeys,Ct=Zt;if(Ze){var St=new Set(Zt);St.delete(Ie),Ct=ir(Array.from(St),{checked:!1,halfCheckedKeys:Tt},v.value,y.value,X.value,m).checkedKeys}w(Ie,!Ze,Ct,Ke)}}M(Ie)}}),null),checked:Ze}};var ve=function(me){var Ve=me.record,Me=me.index,Ie=ue({record:Ve,index:Me}),Ze=Ie.node,Ce=Ie.checked;return H?H(Ce,Ve,Me,Ze):Ze};if(!pe.includes(Go))if(pe.findIndex(function(De){var me;return((me=De[Nu])===null||me===void 0?void 0:me.columnType)==="EXPAND_COLUMN"})===0){var Ge=pe,Je=sG(Ge),xe=Je[0],ke=Je.slice(1);pe=[xe,Go].concat(yt(ke))}else pe=[Go].concat(yt(pe));var Pe=pe.indexOf(Go);pe=pe.filter(function(De,me){return De!==Go||me===Pe});var Be=pe[Pe-1],Te=pe[Pe+1],we=K;we===void 0&&((Te==null?void 0:Te.fixed)!==void 0?we=Te.fixed:(Be==null?void 0:Be.fixed)!==void 0&&(we=Be.fixed)),we&&Be&&((L=Be[Nu])===null||L===void 0?void 0:L.columnType)==="EXPAND_COLUMN"&&Be.fixed===void 0&&(Be.fixed=we);var Se=ce({fixed:we,width:J,className:"".concat(O.value,"-selection-column"),title:t.value.columnTitle||le,customRender:ve},Nu,{class:"".concat(O.value,"-selection-col")});return pe.map(function(De){return De===Go?Se:De})};return[R,u]}var dfe={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const hfe=dfe;function tV(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:[],e=ti(n),t=[];return e.forEach(function(i){var l,a,o;if(i){for(var r=i.key,f=((l=i.props)===null||l===void 0?void 0:l.style)||{},v=((a=i.props)===null||a===void 0?void 0:a.class)||"",b=i.props||{},Z=0,p=Object.entries(b);Z0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=n.length,i=e.length;if(Math.abs(t-i)!==1)return{add:!1,key:null};function l(a,o){var r=new Map;a.forEach(function(v){r.set(v,!0)});var f=o.filter(function(v){return!r.has(v)});return f.length===1?f[0]:null}return t ").concat(e);return e}const Cfe=He({compatConfig:{MODE:3},name:"NodeList",inheritAttrs:!1,props:ine,setup:function(e,t){var i=t.expose,l=t.attrs,a=Ne(),o=Ne(),r=m9(),f=r.expandedKeys,v=r.flattenNodes;i({scrollTo:function(d){a.value.scrollTo(d)},getIndentWidth:function(){return o.value.offsetWidth}});var b=Gn(v.value),Z=Gn([]),p=Ne(null);function y(){b.value=v.value,Z.value=[],p.value=null,e.onListChangeEnd()}var X=R1();rt([function(){return f.value.slice()},v],function(G,d){var u=ft(G,2),s=u[0],h=u[1],c=ft(d,2),W=c[0],M=c[1],I=Lfe(W,s);if(I.key!==null){var w=e.virtual,C=e.height,x=e.itemHeight;if(I.add){var R=M.findIndex(function(T){var J=T.key;return J===I.key}),g=dV(sV(M,h,I.key),w,C,x),S=M.slice();S.splice(R+1,0,uV),b.value=S,Z.value=g,p.value="show"}else{var L=h.findIndex(function(T){var J=T.key;return J===I.key}),V=dV(sV(h,M,I.key),w,C,x),Y=h.slice();Y.splice(L+1,0,uV),b.value=Y,Z.value=V,p.value="hide"}}else M!==h&&(b.value=h)}),rt(function(){return X.value.dragging},function(G){G||y()});var m=de(function(){return e.motion===void 0?b.value:v.value}),N=function(){e.onActiveChange(null)};return function(){var G=P(P({},e),l),d=G.prefixCls;G.selectable,G.checkable;var u=G.disabled,s=G.motion,h=G.height,c=G.itemHeight,W=G.virtual,M=G.focusable,I=G.activeItem,w=G.focused,C=G.tabindex,x=G.onKeydown,R=G.onFocus,g=G.onBlur,S=G.onListChangeStart;G.onListChangeEnd;var L=jt(G,Rfe);return D(ln,null,[w&&I&&D("span",{style:cV,"aria-live":"assertive"},[xfe(I)]),D("div",null,[D("input",{style:cV,disabled:M===!1||u,tabindex:M!==!1?C:null,onKeydown:x,onFocus:R,onBlur:g,value:"",onChange:Tfe,"aria-label":"for screen reader"},null)]),D("div",{class:"".concat(d,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden"}},[D("div",{class:"".concat(d,"-indent")},[D("div",{ref:o,class:"".concat(d,"-indent-unit")},null)])]),D(Wx,P(P({},dn(L,["onActiveChange"])),{},{data:m.value,itemKey:hV,height:h,fullHeight:!1,virtual:W,itemHeight:c,prefixCls:"".concat(d,"-list"),ref:a,onVisibleChange:function(Y,T){var J=new Set(Y),U=T.filter(function(K){return!J.has(K)});U.some(function(K){return hV(K)===Nc})&&y()}}),{default:function(Y){var T=Y.pos,J=Xn({},(fp(Y.data),Y.data)),U=Y.title,K=Y.key,H=Y.isStart,k=Y.isEnd,F=Oh(K,T);return delete J.key,delete J.children,D(Vfe,P(P({},J),{},{eventKey:F,title:U,active:!!I&&K===I.key,data:Y.data,isStart:H,isEnd:k,motion:s,motionNodes:K===Nc?Z.value:null,motionType:p.value,onMotionStart:S,onMotionEnd:y,onMousemove:N}),null)}})])}}});function Sfe(n){var e=n.dropPosition,t=n.dropLevelOffset,i=n.indent,l={pointerEvents:"none",position:"absolute",right:0,backgroundColor:"red",height:"".concat(2,"px")};switch(e){case-1:l.top=0,l.left="".concat(-t*i,"px");break;case 1:l.bottom=0,l.left="".concat(-t*i,"px");break;case 0:l.bottom=0,l.left="".concat(i);break}return D("div",{style:l},null)}var zfe=10;const dS=He({compatConfig:{MODE:3},name:"Tree",inheritAttrs:!1,slots:["checkable","title","icon","titleRender"],props:pn(p9(),{prefixCls:"vc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:Sfe,allowDrop:function(){return!0}}),setup:function(e,t){var i=t.attrs,l=t.slots,a=t.expose,o=Ne(!1),r={},f=Ne(),v=Gn([]),b=Gn([]),Z=Gn([]),p=Gn([]),y=Gn([]),X=Gn([]),m={},N=zn({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),G=Gn([]);rt([function(){return e.treeData},function(){return e.children}],function(){G.value=e.treeData!==void 0?on(e.treeData).slice():fv(on(e.children))},{immediate:!0,deep:!0});var d=Gn({}),u=Ne(!1),s=Ne(null),h=Ne(!1),c=de(function(){return rp(e.fieldNames)}),W=Ne(),M=null,I=null,w=null,C=de(function(){return{expandedKeysSet:x.value,selectedKeysSet:R.value,loadedKeysSet:g.value,loadingKeysSet:S.value,checkedKeysSet:L.value,halfCheckedKeysSet:V.value,dragOverNodeKey:N.dragOverNodeKey,dropPosition:N.dropPosition,keyEntities:d.value}}),x=de(function(){return new Set(X.value)}),R=de(function(){return new Set(v.value)}),g=de(function(){return new Set(p.value)}),S=de(function(){return new Set(y.value)}),L=de(function(){return new Set(b.value)}),V=de(function(){return new Set(Z.value)});qt(function(){if(G.value){var Te=jh(G.value,{fieldNames:c.value});d.value=P(ce({},Nc,uS),Te.keyEntities)}});var Y=!1;rt([function(){return e.expandedKeys},function(){return e.autoExpandParent},d],function(Te,we){var Se=ft(Te,2);Se[0];var De=Se[1],me=ft(we,2);me[0];var Ve=me[1],Me=X.value;if(e.expandedKeys!==void 0||Y&&De!==Ve)Me=e.autoExpandParent||!Y&&e.defaultExpandParent?hv(e.expandedKeys,d.value):e.expandedKeys;else if(!Y&&e.defaultExpandAll){var Ie=P({},d.value);delete Ie[Nc],Me=Object.keys(Ie).map(function(Ze){return Ie[Ze].key})}else!Y&&e.defaultExpandedKeys&&(Me=e.autoExpandParent||e.defaultExpandParent?hv(e.defaultExpandedKeys,d.value):e.defaultExpandedKeys);Me&&(X.value=Me),Y=!0},{immediate:!0});var T=Gn([]);qt(function(){T.value=dne(G.value,X.value,c.value)}),qt(function(){e.selectable&&(e.selectedKeys!==void 0?v.value=yw(e.selectedKeys,e):!Y&&e.defaultSelectedKeys&&(v.value=yw(e.defaultSelectedKeys,e)))});var J=up(d),U=J.maxLevel,K=J.levelEntities;qt(function(){if(e.checkable){var Te;if(e.checkedKeys!==void 0?Te=fZ(e.checkedKeys)||{}:!Y&&e.defaultCheckedKeys?Te=fZ(e.defaultCheckedKeys)||{}:G.value&&(Te=fZ(e.checkedKeys)||{checkedKeys:b.value,halfCheckedKeys:Z.value}),Te){var we=Te,Se=we.checkedKeys,De=Se===void 0?[]:Se,me=we.halfCheckedKeys,Ve=me===void 0?[]:me;if(!e.checkStrictly){var Me=ir(De,!0,d.value,U.value,K.value);De=Me.checkedKeys,Ve=Me.halfCheckedKeys}b.value=De,Z.value=Ve}}}),qt(function(){e.loadedKeys&&(p.value=e.loadedKeys)});var H=function(){Xn(N,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},k=function(we){W.value.scrollTo(we)};rt(function(){return e.activeKey},function(){e.activeKey!==void 0&&(s.value=e.activeKey)},{immediate:!0}),rt(s,function(Te){cn(function(){Te!==null&&k({key:Te})})},{immediate:!0,flush:"post"});var F=function(we){e.expandedKeys===void 0&&(X.value=we)},O=function(){N.draggingNodeKey!==null&&Xn(N,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),M=null,w=null},Q=function(we,Se){var De=e.onDragend;N.dragOverNodeKey=null,O(),De==null||De({event:we,node:Se.eventData}),I=null},oe=function Te(we){Q(we,null),window.removeEventListener("dragend",Te)},se=function(we,Se){var De=e.onDragstart,me=Se.eventKey,Ve=Se.eventData;I=Se,M={x:we.clientX,y:we.clientY};var Me=vo(X.value,me);N.draggingNodeKey=me,N.dragChildrenKeys=one(me,d.value),f.value=W.value.getIndentWidth(),F(Me),window.addEventListener("dragend",oe),De&&De({event:we,node:Ve})},he=function(we,Se){var De=e.onDragenter,me=e.onExpand,Ve=e.allowDrop,Me=e.direction,Ie=Se.pos,Ze=Se.eventKey;if(w!==Ze&&(w=Ze),!I){H();return}var Ce=pw(we,I,Se,f.value,M,Ve,T.value,d.value,x.value,Me),ye=Ce.dropPosition,Ue=Ce.dropLevelOffset,qe=Ce.dropTargetKey,ie=Ce.dropContainerKey,Oe=Ce.dropTargetPos,Ke=Ce.dropAllowed,Xe=Ce.dragOverNodeKey;if(N.dragChildrenKeys.indexOf(qe)!==-1||!Ke){H();return}if(r||(r={}),Object.keys(r).forEach(function(Re){clearTimeout(r[Re])}),I.eventKey!==Se.eventKey&&(r[Ie]=window.setTimeout(function(){if(N.draggingNodeKey!==null){var Re=X.value.slice(),Ae=d.value[Se.eventKey];Ae&&(Ae.children||[]).length&&(Re=ns(X.value,Se.eventKey)),F(Re),me&&me(Re,{node:Se.eventData,expanded:!0,nativeEvent:we})}},800)),I.eventKey===qe&&Ue===0){H();return}Xn(N,{dragOverNodeKey:Xe,dropPosition:ye,dropLevelOffset:Ue,dropTargetKey:qe,dropContainerKey:ie,dropTargetPos:Oe,dropAllowed:Ke}),De&&De({event:we,node:Se.eventData,expandedKeys:X.value})},pe=function(we,Se){var De=e.onDragover,me=e.allowDrop,Ve=e.direction;if(I){var Me=pw(we,I,Se,f.value,M,me,T.value,d.value,x.value,Ve),Ie=Me.dropPosition,Ze=Me.dropLevelOffset,Ce=Me.dropTargetKey,ye=Me.dropContainerKey,Ue=Me.dropAllowed,qe=Me.dropTargetPos,ie=Me.dragOverNodeKey;N.dragChildrenKeys.indexOf(Ce)!==-1||!Ue||(I.eventKey===Ce&&Ze===0?N.dropPosition===null&&N.dropLevelOffset===null&&N.dropTargetKey===null&&N.dropContainerKey===null&&N.dropTargetPos===null&&N.dropAllowed===!1&&N.dragOverNodeKey===null||H():Ie===N.dropPosition&&Ze===N.dropLevelOffset&&Ce===N.dropTargetKey&&ye===N.dropContainerKey&&qe===N.dropTargetPos&&Ue===N.dropAllowed&&ie===N.dragOverNodeKey||Xn(N,{dropPosition:Ie,dropLevelOffset:Ze,dropTargetKey:Ce,dropContainerKey:ye,dropTargetPos:qe,dropAllowed:Ue,dragOverNodeKey:ie}),De&&De({event:we,node:Se.eventData}))}},re=function(we,Se){w===Se.eventKey&&!we.currentTarget.contains(we.relatedTarget)&&(H(),w=null);var De=e.onDragleave;De&&De({event:we,node:Se.eventData})},_=function(we,Se){var De,me=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Ve=N.dragChildrenKeys,Me=N.dropPosition,Ie=N.dropTargetKey,Ze=N.dropTargetPos,Ce=N.dropAllowed;if(Ce){var ye=e.onDrop;if(N.dragOverNodeKey=null,O(),Ie!==null){var Ue=P(P({},bv(Ie,on(C.value))),{},{active:((De=xe.value)===null||De===void 0?void 0:De.key)===Ie,data:d.value[Ie].node});Ve.indexOf(Ie);var qe=x1(Ze),ie={event:we,node:mv(Ue),dragNode:I?I.eventData:null,dragNodesKeys:[I.eventKey].concat(Ve),dropToGap:Me!==0,dropPosition:Me+Number(qe[qe.length-1])};me||ye==null||ye(ie),I=null}}},E=function(we,Se){var De=e.onClick;De&&De(we,Se)},$=function(we,Se){var De=e.onDblclick;De&&De(we,Se)},ae=function(we,Se){var De=v.value,me=e.onSelect,Ve=e.multiple,Me=Se.selected,Ie=Se[c.value.key],Ze=!Me;Ze?Ve?De=ns(De,Ie):De=[Ie]:De=vo(De,Ie);var Ce=d.value,ye=De.map(function(Ue){var qe=Ce[Ue];return qe?qe.node:null}).filter(function(Ue){return Ue});e.selectedKeys===void 0&&(v.value=De),me&&me(De,{event:"select",selected:Ze,node:Se,selectedNodes:ye,nativeEvent:we})},le=function(we,Se,De){var me=e.checkStrictly,Ve=e.onCheck,Me=Se[c.value.key],Ie,Ze={event:"check",node:Se,checked:De,nativeEvent:we},Ce=d.value;if(me){var ye=De?ns(b.value,Me):vo(b.value,Me),Ue=vo(Z.value,Me);Ie={checked:ye,halfChecked:Ue},Ze.checkedNodes=ye.map(function(Re){return Ce[Re]}).filter(function(Re){return Re}).map(function(Re){return Re.node}),e.checkedKeys===void 0&&(b.value=ye)}else{var qe=ir([].concat(yt(b.value),[Me]),!0,Ce,U.value,K.value),ie=qe.checkedKeys,Oe=qe.halfCheckedKeys;if(!De){var Ke=new Set(ie);Ke.delete(Me);var Xe=ir(Array.from(Ke),{checked:!1,halfCheckedKeys:Oe},Ce,U.value,K.value);ie=Xe.checkedKeys,Oe=Xe.halfCheckedKeys}Ie=ie,Ze.checkedNodes=[],Ze.checkedNodesPositions=[],Ze.halfCheckedKeys=Oe,ie.forEach(function(Re){var Ae=Ce[Re];if(Ae){var ct=Ae.node,lt=Ae.pos;Ze.checkedNodes.push(ct),Ze.checkedNodesPositions.push({node:ct,pos:lt})}}),e.checkedKeys===void 0&&(b.value=ie,Z.value=Oe)}Ve&&Ve(Ie,Ze)},ee=function(we){var Se=we[c.value.key],De=new Promise(function(me,Ve){var Me=e.loadData,Ie=e.onLoad;if(!Me||g.value.has(Se)||S.value.has(Se))return null;var Ze=Me(we);Ze.then(function(){var Ce=ns(p.value,Se),ye=vo(y.value,Se);Ie&&Ie(Ce,{event:"load",node:we}),e.loadedKeys===void 0&&(p.value=Ce),y.value=ye,me()}).catch(function(Ce){var ye=vo(y.value,Se);if(y.value=ye,m[Se]=(m[Se]||0)+1,m[Se]>=zfe){var Ue=ns(p.value,Se);e.loadedKeys===void 0&&(p.value=Ue),me()}Ve(Ce)}),y.value=ns(y.value,Se)});return De.catch(function(){}),De},te=function(we,Se){var De=e.onMouseenter;De&&De({event:we,node:Se})},be=function(we,Se){var De=e.onMouseleave;De&&De({event:we,node:Se})},ne=function(we,Se){var De=e.onRightClick;De&&(we.preventDefault(),De({event:we,node:Se}))},B=function(we){var Se=e.onFocus;u.value=!0,Se&&Se(we)},q=function(we){var Se=e.onBlur;u.value=!1,Je(null),Se&&Se(we)},ue=function(we,Se){var De=X.value,me=e.onExpand,Ve=e.loadData,Me=Se.expanded,Ie=Se[c.value.key];if(!h.value){De.indexOf(Ie);var Ze=!Me;if(Ze?De=ns(De,Ie):De=vo(De,Ie),F(De),me&&me(De,{node:Se,expanded:Ze,nativeEvent:we}),Ze&&Ve){var Ce=ee(Se);Ce&&Ce.then(function(){}).catch(function(ye){var Ue=vo(X.value,Ie);F(Ue),Promise.reject(ye)})}}},ve=function(){h.value=!0},Ge=function(){setTimeout(function(){h.value=!1})},Je=function(we){var Se=e.onActiveChange;s.value!==we&&(e.activeKey!==void 0&&(s.value=we),we!==null&&k({key:we}),Se&&Se(we))},xe=de(function(){return s.value===null?null:T.value.find(function(Te){var we=Te.key;return we===s.value})||null}),ke=function(we){var Se=T.value.findIndex(function(Ve){var Me=Ve.key;return Me===s.value});Se===-1&&we<0&&(Se=T.value.length),Se=(Se+we+T.value.length)%T.value.length;var De=T.value[Se];if(De){var me=De.key;Je(me)}else Je(null)},Pe=de(function(){return mv(P(P({},bv(s.value,C.value)),{},{data:xe.value.data,active:!0}))}),Be=function(we){var Se=e.onKeydown,De=e.checkable,me=e.selectable;switch(we.which){case bt.UP:{ke(-1),we.preventDefault();break}case bt.DOWN:{ke(1),we.preventDefault();break}}var Ve=xe.value;if(Ve&&Ve.data){var Me=Ve.data.isLeaf===!1||!!(Ve.data.children||[]).length,Ie=Pe.value;switch(we.which){case bt.LEFT:{Me&&x.value.has(s.value)?ue({},Ie):Ve.parent&&Je(Ve.parent.key),we.preventDefault();break}case bt.RIGHT:{Me&&!x.value.has(s.value)?ue({},Ie):Ve.children&&Ve.children.length&&Je(Ve.children[0].key),we.preventDefault();break}case bt.ENTER:case bt.SPACE:{De&&!Ie.disabled&&Ie.checkable!==!1&&!Ie.disableCheckbox?le({},Ie,!L.value.has(s.value)):!De&&me&&!Ie.disabled&&Ie.selectable!==!1&&ae({},Ie);break}}}Se&&Se(we)};return a({onNodeExpand:ue,scrollTo:k,onKeydown:Be,selectedKeys:de(function(){return v.value}),checkedKeys:de(function(){return b.value}),halfCheckedKeys:de(function(){return Z.value}),loadedKeys:de(function(){return p.value}),loadingKeys:de(function(){return y.value}),expandedKeys:de(function(){return X.value})}),la(function(){window.removeEventListener("dragend",oe),o.value=!0}),ene({expandedKeys:X,selectedKeys:v,loadedKeys:p,loadingKeys:y,checkedKeys:b,halfCheckedKeys:Z,expandedKeysSet:x,selectedKeysSet:R,loadedKeysSet:g,loadingKeysSet:S,checkedKeysSet:L,halfCheckedKeysSet:V,flattenNodes:T}),function(){var Te,we=N.draggingNodeKey,Se=N.dropLevelOffset,De=N.dropContainerKey,me=N.dropTargetKey,Ve=N.dropPosition,Me=N.dragOverNodeKey,Ie=e.prefixCls,Ze=e.showLine,Ce=e.focusable,ye=e.tabindex,Ue=ye===void 0?0:ye,qe=e.selectable,ie=e.showIcon,Oe=e.icon,Ke=Oe===void 0?l.icon:Oe,Xe=e.switcherIcon,Re=e.draggable,Ae=e.checkable,ct=e.checkStrictly,lt=e.disabled,ot=e.motion,wt=e.loadData,Mt=e.filterTreeNode,xt=e.height,Gt=e.itemHeight,Zt=e.virtual,Tt=e.dropIndicatorRender,Ct=e.onContextmenu,St=e.onScroll,Pt=e.direction,Ut=i.class,kt=i.style,en=Ys(P(P({},e),i),{aria:!0,data:!0}),nn;return Re&&(Yt(Re)==="object"?nn=Re:typeof Re=="function"?nn={nodeDraggable:Re}:nn={}),D(qte,{value:{prefixCls:Ie,selectable:qe,showIcon:ie,icon:Ke,switcherIcon:Xe,draggable:nn,draggingNodeKey:we,checkable:Ae,customCheckable:l.checkable,checkStrictly:ct,disabled:lt,keyEntities:d.value,dropLevelOffset:Se,dropContainerKey:De,dropTargetKey:me,dropPosition:Ve,dragOverNodeKey:Me,dragging:we!==null,indent:f.value,direction:Pt,dropIndicatorRender:Tt,loadData:wt,filterTreeNode:Mt,onNodeClick:E,onNodeDoubleClick:$,onNodeExpand:ue,onNodeSelect:ae,onNodeCheck:le,onNodeLoad:ee,onNodeMouseEnter:te,onNodeMouseLeave:be,onNodeContextMenu:ne,onNodeDragStart:se,onNodeDragEnter:he,onNodeDragOver:pe,onNodeDragLeave:re,onNodeDragEnd:Q,onNodeDrop:_,slots:l}},{default:function(){return[D("div",{role:"tree",class:_e(Ie,Ut,(Te={},ce(Te,"".concat(Ie,"-show-line"),Ze),ce(Te,"".concat(Ie,"-focused"),u.value),ce(Te,"".concat(Ie,"-active-focused"),s.value!==null),Te))},[D(Cfe,P({ref:W,prefixCls:Ie,style:kt,disabled:lt,selectable:qe,checkable:!!Ae,motion:ot,height:xt,itemHeight:Gt,virtual:Zt,focusable:Ce,focused:u.value,tabindex:Ue,activeItem:xe.value,onFocus:B,onBlur:q,onKeydown:Be,onActiveChange:Je,onListChangeStart:ve,onListChangeEnd:Ge,onContextmenu:Ct,onScroll:St},en),null)])]}})}}});var kfe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const Ffe=kfe;function fV(n){for(var e=1;e0})}function pS(n,e){return typeof e=="string"||typeof e=="number"?e==null?void 0:e.toString().toLowerCase().includes(n.trim().toLowerCase()):!1}function yS(n){var e=n.filters,t=n.prefixCls,i=n.filteredKeys,l=n.filterMultiple,a=n.searchValue,o=n.filterSearch;return e.map(function(r,f){var v=String(r.value);if(r.children)return D(dbe,{key:v||f,title:r.text,popupClassName:"".concat(t,"-dropdown-submenu")},{default:function(){return[yS({filters:r.children,prefixCls:t,filteredKeys:i,filterMultiple:l,searchValue:a,filterSearch:o})]}});var b=l?lr:ta,Z=D(hbe,{key:r.value!==void 0?v:f},{default:function(){return[D(b,{checked:i.includes(v)},null),D("span",null,[r.text])]}});return a.trim()?typeof o=="function"?o(a,r)?Z:void 0:pS(a,r.text)?Z:void 0:Z})}const bbe=He({name:"FilterDropdown",props:["tablePrefixCls","prefixCls","dropdownPrefixCls","column","filterState","filterMultiple","filterMode","filterSearch","columnKey","triggerFilter","locale","getPopupContainer"],setup:function(e,t){var i=t.slots,l=BC(),a=de(function(){var U;return(U=e.filterMode)!==null&&U!==void 0?U:"menu"}),o=de(function(){var U;return(U=e.filterSearch)!==null&&U!==void 0?U:!1}),r=de(function(){return e.column.filterDropdownVisible}),f=Ne(!1),v=de(function(){var U;return!!(e.filterState&&((U=e.filterState.filteredKeys)!==null&&U!==void 0&&U.length||e.filterState.forceFiltered))}),b=de(function(){var U;return Np((U=e.column)===null||U===void 0?void 0:U.filters)}),Z=de(function(){var U=e.column,K=U.filterDropdown,H=U.slots,k=H===void 0?{}:H,F=U.customFilterDropdown;return K||k.filterDropdown&&l.value[k.filterDropdown]||F&&l.value.customFilterDropdown}),p=de(function(){var U=e.column,K=U.filterIcon,H=U.slots,k=H===void 0?{}:H;return K||k.filterIcon&&l.value[k.filterIcon]||l.value.customFilterIcon}),y=function(K){var H,k;f.value=K,(H=(k=e.column).onFilterDropdownVisibleChange)===null||H===void 0||H.call(k,K)},X=de(function(){return typeof r.value=="boolean"?r.value:f.value}),m=de(function(){var U;return(U=e.filterState)===null||U===void 0?void 0:U.filteredKeys}),N=Gn([]),G=function(K){var H=K.selectedKeys;N.value=H},d=function(K,H){var k=H.node,F=H.checked;e.filterMultiple?G({selectedKeys:K}):G({selectedKeys:F&&k.key?[k.key]:[]})};rt(m,function(){f.value&&G({selectedKeys:m.value||[]})},{immediate:!0});var u=Gn([]),s=Ne(),h=function(K){s.value=setTimeout(function(){u.value=K})},c=function(){clearTimeout(s.value)};fn(function(){clearTimeout(s.value)});var W=Ne(""),M=function(K){var H=K.target.value;W.value=H};rt(f,function(){f.value||(W.value="")});var I=function(K){var H=e.column,k=e.columnKey,F=e.filterState,O=K&&K.length?K:null;if(O===null&&(!F||!F.filteredKeys)||D0(O,F==null?void 0:F.filteredKeys))return null;e.triggerFilter({column:H,key:k,filteredKeys:O})},w=function(){y(!1),I(N.value)},C=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},H=K.confirm,k=K.closeDropdown;H&&I([]),k&&y(!1),W.value="",N.value=[]},x=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},H=K.closeDropdown;H&&y(!1),I(N.value)},R=function(K){K&&m.value!==void 0&&(N.value=m.value||[]),y(K),!K&&!Z.value&&w()},g=Nt("",e),S=g.direction,L=function(K){if(K.target.checked){var H=b.value;N.value=H}else N.value=[]},V=function U(K){var H=K.filters;return(H||[]).map(function(k,F){var O=String(k.value),Q={title:k.text,key:k.value!==void 0?O:F};return k.children&&(Q.children=U({filters:k.children})),Q})},Y=de(function(){return V({filters:e.column.filters})}),T=de(function(){return _e(ce({},"".concat(e.dropdownPrefixCls,"-menu-without-submenu"),!fbe(e.column.filters||[])))}),J=function(){var K=N.value,H=e.column,k=e.locale,F=e.tablePrefixCls,O=e.filterMultiple,Q=e.dropdownPrefixCls,oe=e.getPopupContainer,se=e.prefixCls;return(H.filters||[]).length===0?D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE,description:k.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}},null):a.value==="tree"?D(ln,null,[D(oV,{filterSearch:o.value,value:W.value,onChange:M,tablePrefixCls:F,locale:k},null),D("div",{class:"".concat(F,"-filter-dropdown-tree")},[O?D(lr,{class:"".concat(F,"-filter-dropdown-checkall"),onChange:L,checked:K.length===b.value.length,indeterminate:K.length>0&&K.length1),"Table","`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected."),bhe(de(function(){return e.contextSlots})),mhe({onResizeColumn:function(we,Se){o("resizeColumn",we,Se)}});var r=Qu(),f=de(function(){var Te=new Set(Object.keys(r.value).filter(function(we){return r.value[we]}));return e.columns.filter(function(we){return!we.responsive||we.responsive.some(function(Se){return Te.has(Se)})})}),v=Nt("table",e),b=v.size,Z=v.renderEmpty,p=v.direction,y=v.prefixCls,X=v.configProvider,m=de(function(){return e.transformCellText||X.transformCellText}),N=Qr("Table",Mr.Table,Ot(e,"locale")),G=ft(N,1),d=G[0],u=de(function(){return e.dataSource||vbe}),s=de(function(){return X.getPrefixCls("dropdown",e.dropdownPrefixCls)}),h=de(function(){return e.childrenColumnName||"children"}),c=de(function(){return u.value.some(function(Te){return Te==null?void 0:Te[h.value]})?"nest":e.expandedRowRender?"row":null}),W=zn({body:null}),M=function(we){Xn(W,we)},I=de(function(){return typeof e.rowKey=="function"?e.rowKey:function(Te){return Te==null?void 0:Te[e.rowKey]}}),w=sfe(u,h,I),C=ft(w,1),x=C[0],R={},g=function(we,Se){var De=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,me=e.pagination,Ve=e.scroll,Me=e.onChange,Ie=P(P({},R),we);De&&(R.resetPagination(),Ie.pagination.current&&(Ie.pagination.current=1),me&&me.onChange&&me.onChange(1,Ie.pagination.pageSize)),Ve&&Ve.scrollToFirstRowOnChange!==!1&&W.body&&oG(0,{getContainer:function(){return W.body}}),Me==null||Me(Ie.pagination,Ie.filters,Ie.sorter,{currentDataSource:GV(jv(u.value,Ie.sorterStates,h.value),Ie.filterStates),action:Se})},S=function(we,Se){g({sorter:we,sorterStates:Se},"sort",!1)},L=Gfe({prefixCls:y,mergedColumns:f,onSorterChange:S,sortDirections:de(function(){return e.sortDirections||["ascend","descend"]}),tableLocale:d,showSorterTooltip:Ot(e,"showSorterTooltip")}),V=ft(L,4),Y=V[0],T=V[1],J=V[2],U=V[3],K=de(function(){return jv(u.value,T.value,h.value)}),H=function(we,Se){g({filters:we,filterStates:Se},"filter",!0)},k=mbe({prefixCls:y,locale:d,dropdownPrefixCls:s,mergedColumns:f,onFilterChange:H,getPopupContainer:Ot(e,"getPopupContainer")}),F=ft(k,3),O=F[0],Q=F[1],oe=F[2],se=de(function(){return GV(K.value,Q.value)}),he=Zbe(Ot(e,"contextSlots")),pe=ft(he,1),re=pe[0],_=de(function(){return P({},J.value)}),E=pbe(_),$=ft(E,1),ae=$[0],le=function(we,Se){g({pagination:P(P({},R.pagination),{},{current:we,pageSize:Se})},"paginate")},ee=ofe(de(function(){return se.value.length}),Ot(e,"pagination"),le),te=ft(ee,2),be=te[0],ne=te[1];qt(function(){R.sorter=U.value,R.sorterStates=T.value,R.filters=oe.value,R.filterStates=Q.value,R.pagination=e.pagination===!1?{}:afe(e.pagination,be.value),R.resetPagination=ne});var B=de(function(){if(e.pagination===!1||!be.value.pageSize)return se.value;var Te=be.value,we=Te.current,Se=we===void 0?1:we,De=Te.total,me=Te.pageSize,Ve=me===void 0?zv:me;return jn(Se>0,"Table","`current` should be positive number."),se.value.lengthVe?se.value.slice((Se-1)*Ve,Se*Ve):se.value:se.value.slice((Se-1)*Ve,Se*Ve)});qt(function(){cn(function(){var Te=be.value,we=Te.total,Se=Te.pageSize,De=Se===void 0?zv:Se;se.value.lengthDe&&jn(!1,"Table","`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.")})},{flush:"post"});var q=de(function(){return e.showExpandColumn===!1?-1:c.value==="nest"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex}),ue=Ne();rt(function(){return e.rowSelection},function(){ue.value=e.rowSelection?P({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});var ve=ufe(ue,{prefixCls:y,data:se,pageData:B,getRowKey:I,getRecordByKey:x,expandType:c,childrenColumnName:h,locale:d,getPopupContainer:de(function(){return e.getPopupContainer})}),Ge=ft(ve,2),Je=Ge[0],xe=Ge[1],ke=function(we,Se,De){var me,Ve=e.rowClassName;return typeof Ve=="function"?me=_e(Ve(we,Se,De)):me=_e(Ve),_e(ce({},"".concat(y.value,"-row-selected"),xe.value.has(I.value(we,Se))),me)};a({selectedKeySet:xe});var Pe=de(function(){return typeof e.indentSize=="number"?e.indentSize:15}),Be=function(we){var Se=ae(Je(O(Y(re(we)))));return Se};return function(){var Te,we,Se=e.expandIcon,De=Se===void 0?l.expandIcon||ybe(d.value):Se,me=e.pagination,Ve=e.loading,Me=e.bordered,Ie,Ze;if(me!==!1&&(Te=be.value)!==null&&Te!==void 0&&Te.total){var Ce;be.value.size?Ce=be.value.size:Ce=b.value==="small"||b.value==="middle"?"small":void 0;var ye=function(lt){return D(mp,P(P({},be.value),{},{class:["".concat(y.value,"-pagination ").concat(y.value,"-pagination-").concat(lt),be.value.class],size:Ce}),null)},Ue=p.value==="rtl"?"left":"right",qe=be.value.position;if(qe!==null&&Array.isArray(qe)){var ie=qe.find(function(ct){return ct.indexOf("top")!==-1}),Oe=qe.find(function(ct){return ct.indexOf("bottom")!==-1}),Ke=qe.every(function(ct){return"".concat(ct)==="none"});!ie&&!Oe&&!Ke&&(Ze=ye(Ue)),ie&&(Ie=ye(ie.toLowerCase().replace("top",""))),Oe&&(Ze=ye(Oe.toLowerCase().replace("bottom","")))}else Ze=ye(Ue)}var Xe;typeof Ve=="boolean"?Xe={spinning:Ve}:Yt(Ve)==="object"&&(Xe=P({spinning:!0},Ve));var Re=_e("".concat(y.value,"-wrapper"),ce({},"".concat(y.value,"-wrapper-rtl"),p.value==="rtl"),i.class),Ae=dn(e,["columns"]);return D("div",{class:Re,style:i.style},[D(vs,P({spinning:!1},Xe),{default:function(){return[Ie,D(lfe,P(P(P({},i),Ae),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:q.value,indentSize:Pe.value,expandIcon:De,columns:f.value,direction:p.value,prefixCls:y.value,class:_e((we={},ce(we,"".concat(y.value,"-middle"),b.value==="middle"),ce(we,"".concat(y.value,"-small"),b.value==="small"),ce(we,"".concat(y.value,"-bordered"),Me),ce(we,"".concat(y.value,"-empty"),u.value.length===0),we)),data:B.value,rowKey:I.value,rowClassName:ke,internalHooks:Sv,internalRefs:W,onUpdateInternalRefs:M,transformColumns:Be,transformCellText:m.value}),P(P({},l),{},{emptyText:function(){var ot,wt;return((ot=l.emptyText)===null||ot===void 0?void 0:ot.call(l))||((wt=e.locale)===null||wt===void 0?void 0:wt.emptyText)||Z.value("Table")}})),Ze]}})])}}}),Xbe=He({name:"ATable",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,l=t.slots,a=t.expose,o=Ne();return a({table:o}),function(){var r,f=i,v=f.columns||sS((r=l.default)===null||r===void 0?void 0:r.call(l));return D(Gbe,P(P({ref:o},i),{},{columns:v||[],expandedRowRender:l.expandedRowRender,contextSlots:P({},l)}),l)}}});const DZ=Xbe,am=He({name:"ATableColumn",slots:["title","filterIcon"],render:function(){return null}}),rm=He({name:"ATableColumnGroup",slots:["title"],__ANT_TABLE_COLUMN_GROUP:!0,render:function(){return null}});var a0=He(P(P({},Khe),{},{name:"ATableSummaryRow"})),r0=He(P(P({},Qhe),{},{name:"ATableSummaryCell"})),om=Xn(Bhe,{Cell:r0,Row:a0,name:"ATableSummary"});const Nbe=Xn(DZ,{SELECTION_ALL:kv,SELECTION_INVERT:Fv,SELECTION_NONE:Jv,SELECTION_COLUMN:Go,EXPAND_COLUMN:rs,Column:am,ColumnGroup:rm,Summary:om,install:function(e){return e.component(om.name,om),e.component(r0.name,r0),e.component(a0.name,a0),e.component(DZ.name,DZ),e.component(am.name,am),e.component(rm.name,rm),e}});var Mbe={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function};const Ibe=He({compatConfig:{MODE:3},name:"Search",inheritAttrs:!1,props:pn(Mbe,{placeholder:""}),emits:["change"],setup:function(e,t){var i=t.emit,l=function(o){if(i("change",o),o.target.value===""){var r;(r=e.handleClear)===null||r===void 0||r.call(e)}};return function(){var a=e.placeholder,o=e.value,r=e.prefixCls,f=e.disabled;return D(Ai,{placeholder:a,class:r,value:o,onChange:l,disabled:f,allowClear:!0},{prefix:function(){return D(P0,null,null)}})}}});var Ybe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const wbe=Ybe;function XV(n){for(var e=1;e=0;i("itemSelect",y.key,!m)},r=function(y){i("itemRemove",[y.key])},f=function(y){i("scroll",y)},v=de(function(){return xbe(e.pagination)});rt([v,function(){return e.filteredRenderItems}],function(){if(v.value){var p=Math.ceil(e.filteredRenderItems.length/v.value.pageSize);a.value>p&&(a.value=p)}},{immediate:!0});var b=de(function(){var p=e.filteredRenderItems,y=p;return v.value&&(y=p.slice((a.value-1)*v.value.pageSize,a.value*v.value.pageSize)),y}),Z=function(y){a.value=y};return l({items:b}),function(){var p=e.prefixCls,y=e.filteredRenderItems,X=e.selectedKeys,m=e.disabled,N=e.showRemove,G=null;v.value&&(G=D(mp,{simple:!0,size:"small",disabled:m,class:"".concat(p,"-pagination"),total:y.length,pageSize:v.value.pageSize,current:a.value,onChange:Z},null));var d=b.value.map(function(u){var s=u.renderedEl,h=u.renderedText,c=u.item,W=c.disabled,M=X.indexOf(c.key)>=0;return D(Rbe,{disabled:m||W,key:c.key,item:c,renderedText:h,renderedEl:s,checked:M,prefixCls:p,onClick:o,onRemove:r,showRemove:N},null)});return D(ln,null,[D("ul",{class:_e("".concat(p,"-content"),ce({},"".concat(p,"-content-show-remove"),N)),onScroll:f},[d]),G])}}});const Sbe=Cbe;var zbe=function(){return null};function kbe(n){return n&&!Si(n)&&Object.prototype.toString.call(n)==="[object Object]"}function Zb(n){return n.filter(function(e){return!e.disabled}).map(function(e){return e.key})}var Fbe={prefixCls:String,dataSource:{type:Array,default:[]},filter:String,filterOption:Function,checkedKeys:We.arrayOf(We.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:{type:Boolean,default:!1},searchPlaceholder:String,notFoundContent:We.any,itemUnit:String,itemsUnit:String,renderList:We.any,disabled:{type:Boolean,default:void 0},direction:String,showSelectAll:{type:Boolean,default:void 0},remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:We.any,showRemove:{type:Boolean,default:void 0},pagination:We.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function};const NV=He({compatConfig:{MODE:3},name:"TransferList",inheritAttrs:!1,props:Fbe,slots:["footer","titleText"],setup:function(e,t){var i=t.attrs,l=t.slots,a=Ne(""),o=Ne(),r=Ne(),f=function(c,W){var M=c?c(W):null,I=!!M&&Ri(M).length>0;return I||(M=D(Sbe,P(P({},W),{},{ref:r}),null)),{customize:I,bodyContent:M}},v=function(c){var W=e.renderItem,M=W===void 0?zbe:W,I=M(c),w=kbe(I);return{renderedText:w?I.value:I,renderedEl:w?I.label:I,item:c}},b=Ne([]),Z=Ne([]);qt(function(){var h=[],c=[];e.dataSource.forEach(function(W){var M=v(W),I=M.renderedText;if(a.value&&a.value.trim()&&!d(I,W))return null;h.push(W),c.push(M)}),b.value=h,Z.value=c});var p=de(function(){var h=e.checkedKeys;return h.length===0?"none":b.value.every(function(c){return h.indexOf(c.key)>=0||!!c.disabled})?"all":"part"}),y=de(function(){return Zb(b.value)}),X=function(c,W){return Array.from(new Set([].concat(yt(c),yt(e.checkedKeys)))).filter(function(M){return W.indexOf(M)===-1})},m=function(c){var W=c.disabled,M=c.prefixCls,I=p.value==="all",w=D(lr,{disabled:W,checked:I,indeterminate:p.value==="part",class:"".concat(M,"-checkbox"),onChange:function(){var x=y.value;e.onItemSelectAll(X(I?[]:x,I?e.checkedKeys:[]))}},null);return w},N=function(c){var W,M=c.target.value;a.value=M,(W=e.handleFilter)===null||W===void 0||W.call(e,c)},G=function(c){var W;a.value="",(W=e.handleClear)===null||W===void 0||W.call(e,c)},d=function(c,W){var M=e.filterOption;return M?M(a.value,W):c.indexOf(a.value)>=0},u=function(c,W){var M=e.itemsUnit,I=e.itemUnit,w=e.selectAllLabel;if(w)return typeof w=="function"?w({selectedCount:c,totalCount:W}):w;var C=W>1?M:I;return D(ln,null,[(c>0?"".concat(c,"/"):"")+W,Fl(" "),C])},s=function(c,W,M,I,w,C){var x=w?D("div",{class:"".concat(c,"-body-search-wrapper")},[D(Ibe,{prefixCls:"".concat(c,"-search"),onChange:N,handleClear:G,placeholder:W,value:a.value,disabled:C},null)]):null,R,g=SW(i),S=g.onEvents,L=f(I,P(P({},e),{},{filteredItems:b.value,filteredRenderItems:Z.value,selectedKeys:M},S)),V=L.bodyContent,Y=L.customize;return Y?R=D("div",{class:"".concat(c,"-body-customize-wrapper")},[V]):R=b.value.length?V:D("div",{class:"".concat(c,"-body-not-found")},[e.notFoundContent]),D("div",{class:w?"".concat(c,"-body ").concat(c,"-body-with-search"):"".concat(c,"-body"),ref:o},[x,R])};return function(){var h,c,W,M=e.prefixCls,I=e.checkedKeys,w=e.disabled,C=e.showSearch,x=e.searchPlaceholder,R=e.selectAll,g=e.selectCurrent,S=e.selectInvert,L=e.removeAll,V=e.removeCurrent,Y=e.renderList,T=e.onItemSelectAll,J=e.onItemRemove,U=e.showSelectAll,K=U===void 0?!0:U,H=e.showRemove,k=e.pagination,F=(h=l.footer)===null||h===void 0?void 0:h.call(l,P({},e)),O=_e(M,(c={},ce(c,"".concat(M,"-with-pagination"),!!k),ce(c,"".concat(M,"-with-footer"),!!F),c)),Q=s(M,x,I,Y,C,w),oe=F?D("div",{class:"".concat(M,"-footer")},[F]):null,se=!H&&!k&&m({disabled:w,prefixCls:M}),he=null;H?he=D(Yi,null,{default:function(){return[k&&D(Yi.Item,{key:"removeCurrent",onClick:function(){var E=Zb((r.value.items||[]).map(function($){return $.item}));J==null||J(E)}},{default:function(){return[V]}}),D(Yi.Item,{key:"removeAll",onClick:function(){J==null||J(y.value)}},{default:function(){return[L]}})]}}):he=D(Yi,null,{default:function(){return[D(Yi.Item,{key:"selectAll",onClick:function(){var E=y.value;T(X(E,[]))}},{default:function(){return[R]}}),k&&D(Yi.Item,{onClick:function(){var E=Zb((r.value.items||[]).map(function($){return $.item}));T(X(E,[]))}},{default:function(){return[g]}}),D(Yi.Item,{key:"selectInvert",onClick:function(){var E;k?E=Zb((r.value.items||[]).map(function(ee){return ee.item})):E=y.value;var $=new Set(I),ae=[],le=[];E.forEach(function(ee){$.has(ee)?le.push(ee):ae.push(ee)}),T(X(ae,le))}},{default:function(){return[S]}})]}});var pe=D(Hr,{class:"".concat(M,"-header-dropdown"),overlay:he,disabled:w},{default:function(){return[D(kh,null,null)]}});return D("div",{class:O,style:i.style},[D("div",{class:"".concat(M,"-header")},[K?D(ln,null,[se,pe]):null,D("span",{class:"".concat(M,"-header-selected")},[D("span",null,[u(I.length,b.value.length)]),D("span",{class:"".concat(M,"-header-title")},[(W=l.titleText)===null||W===void 0?void 0:W.call(l)])])]),Q,oe])}}});function MV(){}var RX=function(e){var t=e.disabled,i=e.moveToLeft,l=i===void 0?MV:i,a=e.moveToRight,o=a===void 0?MV:a,r=e.leftArrowText,f=r===void 0?"":r,v=e.rightArrowText,b=v===void 0?"":v,Z=e.leftActive,p=e.rightActive,y=e.class,X=e.style,m=e.direction,N=e.oneWay;return D("div",{class:y,style:X},[D(qi,{type:"primary",size:"small",disabled:t||!p,onClick:o,icon:D(m!=="rtl"?To:Xc,null,null)},{default:function(){return[b]}}),!N&&D(qi,{type:"primary",size:"small",disabled:t||!Z,onClick:l,icon:D(m!=="rtl"?Xc:To,null,null)},{default:function(){return[f]}})])};RX.displayName="Operation";RX.inheritAttrs=!1;const Jbe=RX;var Dbe=function(){return{id:String,prefixCls:String,dataSource:{type:Array,default:[]},disabled:{type:Boolean,default:void 0},targetKeys:{type:Array,default:void 0},selectedKeys:{type:Array,default:void 0},render:{type:Function},listStyle:{type:[Function,Object],default:function(){return{}}},operationStyle:{type:Object,default:void 0},titles:{type:Array},operations:{type:Array},showSearch:{type:Boolean,default:!1},filterOption:{type:Function},searchPlaceholder:String,notFoundContent:We.any,locale:{type:Object,default:function(){return{}}},rowKey:{type:Function},showSelectAll:{type:Boolean,default:void 0},selectAllLabels:{type:Array},children:{type:Function},oneWay:{type:Boolean,default:void 0},pagination:{type:[Object,Boolean],default:void 0},onChange:Function,onSelectChange:Function,onSearch:Function,onScroll:Function,"onUpdate:targetKeys":Function,"onUpdate:selectedKeys":Function}},Obe=He({compatConfig:{MODE:3},name:"ATransfer",inheritAttrs:!1,props:Dbe(),slots:["leftTitle","rightTitle","children","render","notFoundContent","leftSelectAllLabel","rightSelectAllLabel","footer"],setup:function(e,t){var i=t.emit,l=t.attrs,a=t.slots,o=t.expose,r=Nt("transfer",e),f=r.configProvider,v=r.prefixCls,b=r.direction,Z=Ne([]),p=Ne([]),y=Hi();rt(function(){return e.selectedKeys},function(){var H,k;Z.value=((H=e.selectedKeys)===null||H===void 0?void 0:H.filter(function(F){return e.targetKeys.indexOf(F)===-1}))||[],p.value=((k=e.selectedKeys)===null||k===void 0?void 0:k.filter(function(F){return e.targetKeys.indexOf(F)>-1}))||[]},{immediate:!0});var X=function(k,F){var O={notFoundContent:F("Transfer")},Q=ui(a,e,"notFoundContent");return Q&&(O.notFoundContent=Q),e.searchPlaceholder!==void 0&&(O.searchPlaceholder=e.searchPlaceholder),P(P(P({},k),O),e.locale)},m=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=e.dataSource,oe=Q===void 0?[]:Q,se=k==="right"?Z.value:p.value,he=se.filter(function(_){return!oe.some(function(E){return!!(_===E.key&&E.disabled)})}),pe=k==="right"?he.concat(O):O.filter(function(_){return he.indexOf(_)===-1}),re=k==="right"?"left":"right";k==="right"?Z.value=[]:p.value=[],i("update:targetKeys",pe),h(re,[]),i("change",pe,k,he),y.onFieldChange()},N=function(){m("left")},G=function(){m("right")},d=function(k,F){h(k,F)},u=function(k){return d("left",k)},s=function(k){return d("right",k)},h=function(k,F){k==="left"?(e.selectedKeys||(Z.value=F),i("update:selectedKeys",[].concat(yt(F),yt(p.value))),i("selectChange",F,on(p.value))):(e.selectedKeys||(p.value=F),i("update:selectedKeys",[].concat(yt(F),yt(Z.value))),i("selectChange",on(Z.value),F))},c=function(k,F){var O=F.target.value;i("search",k,O)},W=function(k){c("left",k)},M=function(k){c("right",k)},I=function(k){i("search",k,"")},w=function(){I("left")},C=function(){I("right")},x=function(k,F,O){var Q=yt(k==="left"?Z.value:p.value),oe=Q.indexOf(F);oe>-1&&Q.splice(oe,1),O&&Q.push(F),h(k,Q)},R=function(k,F){return x("left",k,F)},g=function(k,F){return x("right",k,F)},S=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=O.filter(function(oe){return!k.includes(oe)});i("update:targetKeys",Q),i("change",Q,"left",yt(k))},L=function(k,F){i("scroll",k,F)},V=function(k){L("left",k)},Y=function(k){L("right",k)},T=function(k,F){return typeof k=="function"?k({direction:F}):k},J=Ne([]),U=Ne([]);qt(function(){var H=e.dataSource,k=e.rowKey,F=e.targetKeys,O=F===void 0?[]:F,Q=[],oe=new Array(O.length);H.forEach(function(se){k&&(se.key=k(se));var he=O.indexOf(se.key);he!==-1?oe[he]=se:Q.push(se)}),J.value=Q,U.value=oe}),o({handleSelectChange:h});var K=function(k){var F,O,Q,oe,se,he,pe,re=e.disabled,_=e.operations,E=_===void 0?[]:_,$=e.showSearch,ae=e.listStyle,le=e.operationStyle,ee=e.filterOption,te=e.showSelectAll,be=e.selectAllLabels,ne=be===void 0?[]:be,B=e.oneWay,q=e.pagination,ue=e.id,ve=ue===void 0?y.id.value:ue,Ge=l.class,Je=l.style,xe=a.children,ke=!xe&&q,Pe=f.renderEmpty,Be=X(k,Pe),Te=a.footer,we=e.render||a.render,Se=p.value.length>0,De=Z.value.length>0,me=_e(v.value,Ge,(F={},ce(F,"".concat(v.value,"-disabled"),re),ce(F,"".concat(v.value,"-customize-list"),!!xe),F)),Ve=e.titles,Me=(O=(Q=Ve&&Ve[0])!==null&&Q!==void 0?Q:(oe=a.leftTitle)===null||oe===void 0?void 0:oe.call(a))!==null&&O!==void 0?O:(Be.titles||["",""])[0],Ie=(se=(he=Ve&&Ve[1])!==null&&he!==void 0?he:(pe=a.rightTitle)===null||pe===void 0?void 0:pe.call(a))!==null&&se!==void 0?se:(Be.titles||["",""])[1];return D("div",{class:me,style:Je,id:ve},[D(NV,P({key:"leftList",prefixCls:"".concat(v.value,"-list"),dataSource:J.value,filterOption:ee,style:T(ae,"left"),checkedKeys:Z.value,handleFilter:W,handleClear:w,onItemSelect:R,onItemSelectAll:u,renderItem:we,showSearch:$,renderList:xe,onScroll:V,disabled:re,direction:b.value==="rtl"?"right":"left",showSelectAll:te,selectAllLabel:ne[0]||a.leftSelectAllLabel,pagination:ke},Be),{titleText:function(){return Me},footer:Te}),D(Jbe,{key:"operation",class:"".concat(v.value,"-operation"),rightActive:De,rightArrowText:E[0],moveToRight:G,leftActive:Se,leftArrowText:E[1],moveToLeft:N,style:le,disabled:re,direction:b.value,oneWay:B},null),D(NV,P({key:"rightList",prefixCls:"".concat(v.value,"-list"),dataSource:U.value,filterOption:ee,style:T(ae,"right"),checkedKeys:p.value,handleFilter:M,handleClear:C,onItemSelect:g,onItemSelectAll:s,onItemRemove:S,renderItem:we,showSearch:$,renderList:xe,onScroll:Y,disabled:re,direction:b.value==="rtl"?"left":"right",showSelectAll:te,selectAllLabel:ne[1]||a.rightSelectAllLabel,showRemove:B,pagination:ke},Be),{titleText:function(){return Ie},footer:Te})])};return function(){return D(Ou,{componentName:"Transfer",defaultLocale:Mr.Transfer,children:K},null)}}});const jbe=wi(Obe);function Ube(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function Ebe(n){var e=n||{},t=e.label,i=e.value,l=e.children,a=i||"value";return{_title:t?[t]:["title","label"],value:a,key:a,children:l||"children"}}function Kv(n){return n.disabled||n.disableCheckbox||n.checkable===!1}function Kbe(n,e){var t=[];function i(l){l.forEach(function(a){t.push(a[e.value]);var o=a[e.children];o&&i(o)})}return i(n),t}function IV(n){return n==null}var XS=Symbol("TreeSelectContextPropsKey");function Hbe(n){return hn(XS,n)}function Pbe(){return un(XS,{})}var Qbe={width:0,height:0,display:"flex",overflow:"hidden",opacity:0,border:0,padding:0,margin:0};const Bbe=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["notFoundContent","menuItemSelectedIcon"],setup:function(e,t){var i=t.slots,l=t.expose,a=zh(),o=U0(),r=Pbe(),f=Ne(),v=gG(function(){return r.treeData},[function(){return a.open},function(){return r.treeData}],function(c){return c[0]}),b=de(function(){var c=o.checkable,W=o.halfCheckedKeys,M=o.checkedKeys;return c?{checked:M,halfChecked:W}:null});rt(function(){return a.open},function(){cn(function(){if(a.open&&!a.multiple&&o.checkedKeys.length){var c;(c=f.value)===null||c===void 0||c.scrollTo({key:o.checkedKeys[0]})}})},{immediate:!0,flush:"post"});var Z=de(function(){return String(a.searchValue).toLowerCase()}),p=function(W){return Z.value?String(W[o.treeNodeFilterProp]).toLowerCase().includes(Z.value):!1},y=Gn(o.treeDefaultExpandedKeys),X=Gn(null);rt(function(){return a.searchValue},function(){a.searchValue&&(X.value=Kbe(on(r.treeData),on(r.fieldNames)))},{immediate:!0});var m=de(function(){return o.treeExpandedKeys?o.treeExpandedKeys.slice():a.searchValue?X.value:y.value}),N=function(W){var M;y.value=W,X.value=W,(M=o.onTreeExpand)===null||M===void 0||M.call(o,W)},G=function(W){W.preventDefault()},d=function(W,M){var I,w=M.node,C=o.checkable,x=o.checkedKeys;if(!(C&&Kv(w))&&((I=r.onSelect)===null||I===void 0||I.call(r,w.key,{selected:!x.includes(w.key)}),!a.multiple)){var R;(R=a.toggleOpen)===null||R===void 0||R.call(a,!1)}},u=Ne(null),s=de(function(){return o.keyEntities[u.value]}),h=function(W){u.value=W};return l({scrollTo:function(){for(var W,M,I=arguments.length,w=new Array(I),C=0;C0&&arguments[0]!==void 0?arguments[0]:[];return Ri(t).map(function(i){var l,a,o;if(!$be(i))return null;for(var r=i.children||{},f=i.key,v={},b=0,Z=Object.entries(i.props);b1&&arguments[1]!==void 0?arguments[1]:"0",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return b.map(function(y,X){var m="".concat(Z,"-").concat(X),N=y[a.value],G=t.includes(N),d=v(y[a.children]||[],m,G),u=D(xX,y,{default:function(){return[d.map(function(c){return c.node})]}});if(e===N&&(o=u),G){var s={pos:m,node:u,children:d};return p||r.push(s),s}return null}).filter(function(y){return y})}r||(r=[],v(i),r.sort(function(b,Z){var p=b.node.props.value,y=Z.node.props.value,X=t.indexOf(p),m=t.indexOf(y);return X-m}))}Object.defineProperty(n,"triggerNode",{get:function(){return f(),o}}),Object.defineProperty(n,"allCheckedNodes",{get:function(){return f(),l?r:r.map(function(b){var Z=b.node;return Z})}})}function tme(n,e){var t=e.id,i=e.pId,l=e.rootPId,a={},o=[],r=n.map(function(f){var v=P({},f),b=v[t];return a[b]=v,v.key=v.key||b,v});return r.forEach(function(f){var v=f[i],b=a[v];b&&(b.children=b.children||[],b.children.push(f)),(v===l||!b&&l===null)&&o.push(f)}),o}function nme(n,e,t){var i=Gn();return rt([t,n,e],function(){var l=t.value;n.value?i.value=t.value?tme(on(n.value),P({id:"id",pId:"pId",rootPId:null},l!==!0?l:{})):on(n.value).slice():i.value=qbe(on(e.value))},{immediate:!0,deep:!0}),i}const ime=function(n){var e=Gn({valueLabels:new Map}),t=Gn();rt(n,function(){t.value=on(n.value)},{immediate:!0});var i=de(function(){var l=e.value.valueLabels,a=new Map,o=t.value.map(function(r){var f,v=r.value,b=(f=r.label)!==null&&f!==void 0?f:l.get(v);return a.set(v,b),P(P({},r),{},{label:b})});return e.value.valueLabels=a,o});return[i]},lme=function(n,e){var t=Gn(new Map),i=Gn({});return qt(function(){var l=e.value,a=jh(n.value,{fieldNames:l,initWrapper:function(r){return P(P({},r),{},{valueEntities:new Map})},processEntity:function(r,f){var v=r.node[l.value];f.valueEntities.set(v,r)}});t.value=a.valueEntities,i.value=a.keyEntities}),{valueEntities:t,keyEntities:i}},ame=function(n,e,t,i,l,a){var o=Gn([]),r=Gn([]);return qt(function(){var f=n.value.map(function(p){var y=p.value;return y}),v=e.value.map(function(p){var y=p.value;return y}),b=f.filter(function(p){return!i.value[p]});if(t.value){var Z=ir(f,!0,i.value,l.value,a.value);f=Z.checkedKeys,v=Z.halfCheckedKeys}o.value=Array.from(new Set([].concat(yt(b),yt(f)))),r.value=v}),[o,r]},rme=function(n,e,t){var i=t.treeNodeFilterProp,l=t.filterTreeNode,a=t.fieldNames;return de(function(){var o=a.value.children,r=e.value,f=i==null?void 0:i.value;if(!r||l.value===!1)return n.value;var v;if(typeof l.value=="function")v=l.value;else{var b=r.toUpperCase();v=function(y,X){var m=X[f];return String(m).toUpperCase().includes(b)}}function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=[],m=0,N=p.length;m2&&arguments[2]!==void 0?arguments[2]:0,W=arguments.length>3&&arguments[3]!==void 0?arguments[3]:h.length,M=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,I=Math.floor((c+W)/2),w=h.slice(0,I);if(s.textContent=w,c>=W-1)for(var C=W;C>=c;C-=1){var x=h.slice(0,C);if(s.textContent=x,Z()||!x)return C===h.length?{finished:!1,vNode:h}:{finished:!0,vNode:x}}return Z()?d(s,h,I,W,I):d(s,h,c,I,M)}function u(s){var h=s.nodeType;if(h===Xme){var c=s.textContent||"",W=document.createTextNode(c);return G(W),d(W,c)}return{finished:!1,vNode:null}}return p.some(function(s){var h=u(s),c=h.finished,W=h.vNode;return W&&X.push(W),c}),{content:X,text:ha.innerHTML,ellipsis:!0}};var wme=["prefixCls","class","direction","component"],gme=function(){return{prefixCls:String,direction:String,component:String}},Vme=He({name:"ATypography",inheritAttrs:!1,props:gme(),setup:function(e,t){var i=t.slots,l=t.attrs,a=Nt("typography",e),o=a.prefixCls,r=a.direction;return function(){var f,v=P(P({},e),l);v.prefixCls,v.class,v.direction;var b=v.component,Z=b===void 0?"article":b,p=jt(v,wme);return D(Z,P({class:_e(o.value,ce({},"".concat(o.value,"-rtl"),r.value==="rtl"),l.class)},p),{default:function(){return[(f=i.default)===null||f===void 0?void 0:f.call(i)]}})}}});const ma=Vme;var Lme=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,i=[],l=0;l"u"){f&&console.warn("unable to use e.clipboardData"),f&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var Z=VV[e.format]||VV.default;window.clipboardData.setData(Z,n)}else b.clipboardData.clearData(),b.clipboardData.setData(e.format,n);e.onCopy&&(b.preventDefault(),e.onCopy(b.clipboardData))}),document.body.appendChild(o),l.selectNodeContents(o),a.addRange(l);var v=document.execCommand("copy");if(!v)throw new Error("copy command was unsuccessful");r=!0}catch(b){f&&console.error("unable to copy using execCommand: ",b),f&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",n),e.onCopy&&e.onCopy(window.clipboardData),r=!0}catch(Z){f&&console.error("unable to copy using clipboardData: ",Z),f&&console.error("falling back to prompt"),t=xme("message"in e?e.message:Tme),window.prompt(t,n)}}finally{a&&(typeof a.removeRange=="function"?a.removeRange(l):a.removeAllRanges()),o&&document.body.removeChild(o),i()}return r}var Sme={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const zme=Sme;function LV(n){for(var e=1;e1&&ne,ue=K,ve;if(_&&v.isEllipsis&&!v.expanded&&!ne){var Ge,Je=pe.title,xe=Je||"";!Je&&(typeof K=="string"||typeof K=="number")&&(xe=String(K)),xe=(Ge=xe)===null||Ge===void 0?void 0:Ge.slice(String(v.ellipsisContent||"").length),ue=D(ln,null,[on(v.ellipsisContent),D("span",{title:xe,"aria-hidden":"true"},[TV]),E])}else ue=D(ln,null,[K,E]);ue=R(e,ue);var ke=$&&_&&v.isEllipsis&&!v.expanded&&!ne,Pe=i.ellipsisTooltip?i.ellipsisTooltip():$;return D(rr,{onResize:w,disabled:!_},{default:function(){return[D(ma,P({ref:b,class:[(F={},ce(F,"".concat(r.value,"-").concat(Q),Q),ce(F,"".concat(r.value,"-disabled"),oe),ce(F,"".concat(r.value,"-ellipsis"),_),ce(F,"".concat(r.value,"-single-line"),_===1&&!v.isEllipsis),ce(F,"".concat(r.value,"-ellipsis-single-line"),B),ce(F,"".concat(r.value,"-ellipsis-multiple-line"),q),F),se],style:P(P({},he),{},{WebkitLineClamp:q?_:void 0}),"aria-label":ve,direction:f.value,onClick:U.indexOf("text")!==-1?m:function(){}},be),{default:function(){return[ke?D(Xr,{title:$===!0?K:Pe},{default:function(){return[D("span",null,[ue])]}}):ue,Y()]}})]}})}},null)}}});const Qh=Hme;var Pme=["ellipsis","rel"],Qme=function(){return dn(P(P({},Ph()),{},{ellipsis:{type:Boolean,default:void 0}}),["component"])},Ip=function(e,t){var i=t.slots,l=t.attrs,a=P(P({},e),l),o=a.ellipsis,r=a.rel,f=jt(a,Pme);Ci(Yt(o)!=="object","Typography.Link","`ellipsis` only supports boolean value.");var v=P(P({},f),{},{rel:r===void 0&&f.target==="_blank"?"noopener noreferrer":r,ellipsis:!!o,component:"a"});return delete v.navigate,D(Qh,v,i)};Ip.displayName="ATypographyLink";Ip.inheritAttrs=!1;Ip.props=Qme();const kX=Ip;var Bme=function(){return dn(Ph(),["component"])},Yp=function(e,t){var i=t.slots,l=t.attrs,a=P(P({},e),{},{component:"div"},l);return D(Qh,a,i)};Yp.displayName="ATypographyParagraph";Yp.inheritAttrs=!1;Yp.props=Bme();const FX=Yp;var Ame=function(){return P(P({},dn(Ph(),["component"])),{},{ellipsis:{type:[Boolean,Object],default:void 0}})},wp=function(e,t){var i=t.slots,l=t.attrs,a=e.ellipsis;Ci(Yt(a)!=="object"||!a||!("expandable"in a)&&!("rows"in a),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");var o=P(P({},e),{},{ellipsis:a&&Yt(a)==="object"?dn(a,["expandable","rows"]):a,component:"span"},l);return D(Qh,o,i)};wp.displayName="ATypographyText";wp.inheritAttrs=!1;wp.props=Ame();const JX=wp;var _me=["level"],$me=cK(1,2,3,4,5),qme=function(){return P(P({},dn(Ph(),["component","strong"])),{},{level:Number})},gp=function(e,t){var i=t.slots,l=t.attrs,a=e.level,o=a===void 0?1:a,r=jt(e,_me),f;$me.indexOf(o)!==-1?f="h".concat(o):(Ci(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),f="h1");var v=P(P({},r),{},{component:f},l);return D(Qh,v,i)};gp.displayName="ATypographyTitle";gp.inheritAttrs=!1;gp.props=qme();const DX=gp;ma.Text=JX;ma.Title=DX;ma.Paragraph=FX;ma.Link=kX;ma.Base=Qh;ma.install=function(n){return n.component(ma.name,ma),n.component(ma.Text.displayName,JX),n.component(ma.Title.displayName,DX),n.component(ma.Paragraph.displayName,FX),n.component(ma.Link.displayName,kX),n};function e0e(n,e){var t="cannot ".concat(n.method," ").concat(n.action," ").concat(e.status,"'"),i=new Error(t);return i.status=e.status,i.method=n.method,i.url=n.action,i}function xV(n){var e=n.responseText||n.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}function t0e(n){var e=new XMLHttpRequest;n.onProgress&&e.upload&&(e.upload.onprogress=function(a){a.total>0&&(a.percent=a.loaded/a.total*100),n.onProgress(a)});var t=new FormData;n.data&&Object.keys(n.data).forEach(function(l){var a=n.data[l];if(Array.isArray(a)){a.forEach(function(o){t.append("".concat(l,"[]"),o)});return}t.append(l,a)}),n.file instanceof Blob?t.append(n.filename,n.file,n.file.name):t.append(n.filename,n.file),e.onerror=function(a){n.onError(a)},e.onload=function(){return e.status<200||e.status>=300?n.onError(e0e(n,e),xV(e)):n.onSuccess(xV(e),e)},e.open(n.method,n.action,!0),n.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var i=n.headers||{};return i["X-Requested-With"]!==null&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(i).forEach(function(l){i[l]!==null&&e.setRequestHeader(l,i[l])}),e.send(t),{abort:function(){e.abort()}}}var n0e=+new Date,i0e=0;function EZ(){return"vc-upload-".concat(n0e,"-").concat(++i0e)}const KZ=function(n,e){if(n&&e){var t=Array.isArray(e)?e:e.split(","),i=n.name||"",l=n.type||"",a=l.replace(/\/.*$/,"");return t.some(function(o){var r=o.trim();if(/^\*(\/\*)?$/.test(o))return!0;if(r.charAt(0)==="."){var f=i.toLowerCase(),v=r.toLowerCase(),b=[v];return(v===".jpg"||v===".jpeg")&&(b=[".jpg",".jpeg"]),b.some(function(Z){return f.endsWith(Z)})}return/\/\*$/.test(r)?a===r.replace(/\/.*$/,""):!!(l===r||/^\w+$/.test(r))})}return!0};function l0e(n,e){var t=n.createReader(),i=[];function l(){t.readEntries(function(a){var o=Array.prototype.slice.apply(a);i=i.concat(o);var r=!o.length;r?e(i):l()})}l()}var a0e=function(e,t,i){var l=function a(o,r){o.path=r||"",o.isFile?o.file(function(f){i(f)&&(o.fullPath&&!f.webkitRelativePath&&(Object.defineProperties(f,{webkitRelativePath:{writable:!0}}),f.webkitRelativePath=o.fullPath.replace(/^\//,""),Object.defineProperties(f,{webkitRelativePath:{writable:!1}})),t([f]))}):o.isDirectory&&l0e(o,function(f){f.forEach(function(v){a(v,"".concat(r).concat(o.name,"/"))})})};e.forEach(function(a){l(a.webkitGetAsEntry())})};const r0e=a0e;var wS=function(){return{capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function}};function o0e(n,e,t,i){for(var l=-1,a=n==null?0:n.length;++l0&&arguments[0]!==void 0?arguments[0]:"",t=e.split("/"),i=t[t.length-1],l=i.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(l)||[""])[0]},VS=function(e){return e.indexOf("image/")===0},z0e=function(e){if(e.type&&!e.thumbUrl)return VS(e.type);var t=e.thumbUrl||e.url||"",i=S0e(t);return/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(i)?!0:!(/^data:/.test(t)||i)},qo=200;function k0e(n){return new Promise(function(e){if(!n.type||!VS(n.type)){e("");return}var t=document.createElement("canvas");t.width=qo,t.height=qo,t.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(qo,"px; height: ").concat(qo,"px; z-index: 9999; display: none;"),document.body.appendChild(t);var i=t.getContext("2d"),l=new Image;l.onload=function(){var a=l.width,o=l.height,r=qo,f=qo,v=0,b=0;a>o?(f=o*(qo/a),b=-(f-r)/2):(r=a*(qo/o),v=-(r-f)/2),i.drawImage(l,v,b,r,f);var Z=t.toDataURL();document.body.removeChild(t),e(Z)},l.src=window.URL.createObjectURL(n)})}var F0e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const J0e=F0e;function FV(n){for(var e=1;e"u"||typeof window>"u"||!window.FileReader||!window.File||!(G.originFileObj instanceof File||G.originFileObj instanceof Blob)||G.thumbUrl!==void 0||(G.thumbUrl="",e.previewFile&&e.previewFile(G.originFileObj).then(function(d){G.thumbUrl=d||"",o.update()}))})});var r=function(d,u){if(e.onPreview)return u==null||u.preventDefault(),e.onPreview(d)},f=function(d){typeof e.onDownload=="function"?e.onDownload(d):d.url&&window.open(d.url)},v=function(d){var u;(u=e.onRemove)===null||u===void 0||u.call(e,d)},b=function(d){var u=d.file,s=e.iconRender||i.iconRender;if(s)return s({file:u,listType:e.listType});var h=u.status==="uploading",c=e.isImageUrl&&e.isImageUrl(u)?D(g0e,null,null):D(T0e,null,null),W=D(h?Yr:M0e,null,null);return e.listType==="picture"?W=h?D(Yr,null,null):c:e.listType==="picture-card"&&(W=h?e.locale.uploading:c),W},Z=function(d){var u=d.customIcon,s=d.callback,h=d.prefixCls,c=d.title,W={type:"text",size:"small",title:c,onClick:function(){s()},class:"".concat(h,"-list-item-card-actions-btn")};return Si(u)?D(qi,W,{icon:function(){return u}}):D(qi,W,{default:function(){return[D("span",null,[u])]}})};l({handlePreview:r,handleDownload:f});var p=Nt("upload",e),y=p.prefixCls,X=p.direction,m=de(function(){var G;return G={},ce(G,"".concat(y.value,"-list"),!0),ce(G,"".concat(y.value,"-list-").concat(e.listType),!0),ce(G,"".concat(y.value,"-list-rtl"),X.value==="rtl"),G}),N=de(function(){return P(P(P({},Fh("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),DW("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),{},{class:m.value,appear:a.value})});return function(){var G=e.listType,d=e.locale,u=e.isImageUrl,s=e.items,h=s===void 0?[]:s,c=e.showPreviewIcon,W=e.showRemoveIcon,M=e.showDownloadIcon,I=e.removeIcon,w=e.previewIcon,C=e.downloadIcon,x=e.progress,R=e.appendAction,g=e.itemRender,S=e.appendActionVisible,L=R==null?void 0:R();return D(LW,P(P({},N.value),{},{tag:"div"}),{default:function(){return[h.map(function(Y){var T=Y.uid;return D(U0e,{key:T,locale:d,prefixCls:y.value,file:Y,items:h,progress:x,listType:G,isImgUrl:u,showPreviewIcon:c,showRemoveIcon:W,showDownloadIcon:M,onPreview:r,onDownload:f,onClose:v,removeIcon:I,previewIcon:w,downloadIcon:C,itemRender:g},P(P({},i),{},{iconRender:b,actionIconRender:Z}))}),R?vl(D(E0e,{key:"__ant_upload_appendAction"},{default:function(){return L}}),[[gr,!!S]]):null]}})}}});var H0e=["class","style"],Sd="__LIST_IGNORE_".concat(Date.now(),"__");const cm=He({compatConfig:{MODE:3},name:"AUpload",inheritAttrs:!1,props:pn(gS(),{type:"select",multiple:!1,action:"",data:{},accept:"",showUploadList:!0,listType:"text",disabled:!1,supportServerRender:!0}),setup:function(e,t){var i=t.slots,l=t.attrs,a=t.expose,o=Hi(),r=Wi(e.defaultFileList||[],{value:Ot(e,"fileList"),postState:function(R){var g=Date.now();return(R??[]).map(function(S,L){return!S.uid&&!Object.isFrozen(S)&&(S.uid="__AUTO__".concat(g,"_").concat(L,"__")),S})}}),f=ft(r,2),v=f[0],b=f[1],Z=Ne("drop"),p=Ne();Kt(function(){jn(e.fileList!==void 0||l.value===void 0,"Upload","`value` is not a valid prop, do you mean `fileList`?"),jn(e.transformFile===void 0,"Upload","`transformFile` is deprecated. Please use `beforeUpload` directly."),jn(e.remove===void 0,"Upload","`remove` props is deprecated. Please use `remove` event.")});var y=function(R,g,S){var L,V,Y=yt(g);e.maxCount===1?Y=Y.slice(-1):e.maxCount&&(Y=Y.slice(0,e.maxCount)),b(Y);var T={file:R,fileList:Y};S&&(T.event=S),(L=e["onUpdate:fileList"])===null||L===void 0||L.call(e,T.fileList),(V=e.onChange)===null||V===void 0||V.call(e,T),o.onFieldChange()},X=function(){var x=Ic(Xa.mark(function R(g,S){var L,V,Y,T;return Xa.wrap(function(U){for(;;)switch(U.prev=U.next){case 0:if(L=e.beforeUpload,V=e.transformFile,Y=g,!L){U.next=13;break}return U.next=5,L(g,S);case 5:if(T=U.sent,T!==!1){U.next=8;break}return U.abrupt("return",!1);case 8:if(delete g[Sd],T!==Sd){U.next=12;break}return Object.defineProperty(g,Sd,{value:!0,configurable:!0}),U.abrupt("return",!1);case 12:Yt(T)==="object"&&T&&(Y=T);case 13:if(!V){U.next=17;break}return U.next=16,V(Y);case 16:Y=U.sent;case 17:return U.abrupt("return",Y);case 18:case"end":return U.stop()}},R)}));return function(g,S){return x.apply(this,arguments)}}(),m=function(R){var g=R.filter(function(V){return!V.file[Sd]});if(g.length){var S=g.map(function(V){return Wb(V.file)}),L=yt(v.value);S.forEach(function(V){L=Gb(V,L)}),S.forEach(function(V,Y){var T=V;if(g[Y].parsedFile)V.status="uploading";else{var J=V.originFileObj,U;try{U=new File([J],J.name,{type:J.type})}catch{U=new Blob([J],{type:J.type}),U.name=J.name,U.lastModifiedDate=new Date,U.lastModified=new Date().getTime()}U.uid=V.uid,T=U}y(T,L)})}},N=function(R,g,S){try{typeof R=="string"&&(R=JSON.parse(R))}catch{}if(PZ(g,v.value)){var L=Wb(g);L.status="done",L.percent=100,L.response=R,L.xhr=S;var V=Gb(L,v.value);y(L,V)}},G=function(R,g){if(PZ(g,v.value)){var S=Wb(g);S.status="uploading",S.percent=R.percent;var L=Gb(S,v.value);y(S,L,R)}},d=function(R,g,S){if(PZ(S,v.value)){var L=Wb(S);L.error=R,L.response=g,L.status="error";var V=Gb(L,v.value);y(L,V)}},u=function(R){var g,S=e.onRemove||e.remove;Promise.resolve(typeof S=="function"?S(R):S).then(function(L){if(L!==!1){var V=C0e(R,v.value);if(V){var Y,T;g=P(P({},R),{},{status:"removed"}),(Y=v.value)===null||Y===void 0||Y.forEach(function(J){var U=g.uid!==void 0?"uid":"name";J[U]===g[U]&&!Object.isFrozen(J)&&(J.status="removed")}),(T=p.value)===null||T===void 0||T.abort(g),y(g,V)}}})},s=function(R){if(Z.value=R.type,R.type==="drop"){var g;(g=e.onDrop)===null||g===void 0||g.call(e,R)}};a({onBatchStart:m,onSuccess:N,onProgress:G,onError:d,fileList:v,upload:p});var h=Nt("upload",e),c=h.prefixCls,W=h.direction,M=Qr("Upload",Mr.Upload,de(function(){return e.locale})),I=ft(M,1),w=I[0],C=function(R,g){var S=e.removeIcon,L=e.previewIcon,V=e.downloadIcon,Y=e.previewFile,T=e.onPreview,J=e.onDownload,U=e.disabled,K=e.isImageUrl,H=e.progress,k=e.itemRender,F=e.iconRender,O=e.showUploadList,Q=typeof O=="boolean"?{}:O,oe=Q.showDownloadIcon,se=Q.showPreviewIcon,he=Q.showRemoveIcon;return O?D(K0e,{listType:e.listType,items:v.value,previewFile:Y,onPreview:T,onDownload:J,onRemove:u,showRemoveIcon:!U&&he,showPreviewIcon:se,showDownloadIcon:oe,removeIcon:S,previewIcon:L,downloadIcon:V,iconRender:F,locale:w.value,isImageUrl:K,progress:H,itemRender:k,appendActionVisible:g,appendAction:R},P({},i)):R==null?void 0:R()};return function(){var x,R,g,S=e.listType,L=e.disabled,V=e.type;l.class,l.style;var Y=jt(l,H0e),T=P(P(P({onBatchStart:m,onError:d,onProgress:G,onSuccess:N},Y),e),{},{id:(x=e.id)!==null&&x!==void 0?x:o.id.value,prefixCls:c.value,beforeUpload:X,onChange:void 0});if(delete T.remove,(!i.default||L)&&delete T.id,V==="drag"){var J,U,K=_e(c.value,(J={},ce(J,"".concat(c.value,"-drag"),!0),ce(J,"".concat(c.value,"-drag-uploading"),v.value.some(function(O){return O.status==="uploading"})),ce(J,"".concat(c.value,"-drag-hover"),Z.value==="dragover"),ce(J,"".concat(c.value,"-disabled"),L),ce(J,"".concat(c.value,"-rtl"),W.value==="rtl"),J),l.class);return D("span",null,[D("div",{class:K,onDrop:s,onDragover:s,onDragleave:s,style:l.style},[D(CV,P(P({},T),{},{ref:p,class:"".concat(c.value,"-btn")}),P({default:function(){return[D("div",{class:"".concat(c,"-drag-container")},[(U=i.default)===null||U===void 0?void 0:U.call(i)])]}},i))]),C()])}var H=_e(c.value,(R={},ce(R,"".concat(c.value,"-select"),!0),ce(R,"".concat(c.value,"-select-").concat(S),!0),ce(R,"".concat(c.value,"-disabled"),L),ce(R,"".concat(c.value,"-rtl"),W.value==="rtl"),R)),k=ti((g=i.default)===null||g===void 0?void 0:g.call(i)),F=function(Q){return D("div",{class:H,style:Q},[D(CV,P(P({},T),{},{ref:p}),i)])};return S==="picture-card"?D("span",{class:_e("".concat(c.value,"-picture-card-wrapper"),l.class)},[C(F,!!(k&&k.length))]):D("span",{class:l.class},[F(k&&k.length?void 0:{display:"none"}),C()])}}});var P0e=["height"],Q0e=["style"];const um=He({compatConfig:{MODE:3},name:"AUploadDragger",inheritAttrs:!1,props:gS(),setup:function(e,t){var i=t.slots,l=t.attrs;return function(){var a=e.height,o=jt(e,P0e),r=l.style,f=jt(l,Q0e),v=P(P(P({},o),f),{},{type:"drag",style:P(P({},r),{},{height:typeof a=="number"?"".concat(a,"px"):a})});return D(cm,v,i)}}});var B0e=um;const A0e=Xn(cm,{Dragger:um,LIST_IGNORE:Sd,install:function(e){return e.component(cm.name,cm),e.component(um.name,um),e}}),JV=Object.freeze(Object.defineProperty({__proto__:null,Affix:kT,Alert:h6,Anchor:tc,AnchorLink:JT,AutoComplete:r6,AutoCompleteOptGroup:a6,AutoCompleteOption:l6,Avatar:hc,AvatarGroup:zm,BackTop:k6,Badge:kb,BadgeRibbon:km,Breadcrumb:fc,BreadcrumbItem:Nh,BreadcrumbSeparator:Um,Button:qi,ButtonGroup:Jm,Calendar:nee,Card:Gu,CardGrid:Bm,CardMeta:Qm,Carousel:Pte,Cascader:Bae,CheckableTag:qm,Checkbox:lr,CheckboxGroup:$m,Col:mr,Collapse:Ad,CollapsePanel:Am,Comment:are,ConfigProvider:aG,DatePicker:xre,Descriptions:Ore,DescriptionsItem:B9,DirectoryTree:im,Divider:Ere,Drawer:doe,Dropdown:Hr,DropdownButton:Xh,Empty:ss,Form:cs,FormItem:F9,FormItemRest:Cm,Grid:ate,Image:bse,ImagePreviewGroup:ZC,Input:Ai,InputGroup:oC,InputNumber:Lse,InputPassword:uC,InputSearch:sC,Layout:Use,LayoutContent:jse,LayoutFooter:Dse,LayoutHeader:Jse,LayoutSider:Ose,List:pce,ListItem:XC,ListItemMeta:WC,LocaleProvider:uT,Mentions:Fce,MentionsOption:qb,Menu:Yi,MenuDivider:jm,MenuItem:Lo,MenuItemGroup:Om,Modal:pl,MonthPicker:Kb,PageHeader:Vue,Pagination:mp,Popconfirm:xue,Popover:Rx,Progress:uX,QuarterPicker:Hb,Radio:ta,RadioButton:Km,RadioGroup:v1,RangePicker:Pb,Rate:cde,Result:Ide,Row:au,Select:Xs,SelectOptGroup:t6,SelectOption:e6,Skeleton:ea,SkeletonAvatar:pX,SkeletonButton:fX,SkeletonImage:mX,SkeletonInput:bX,SkeletonTitle:pp,Slider:Bde,Space:ehe,Spin:vs,Statistic:Mo,StatisticCountdown:mue,Step:em,Steps:rhe,SubMenu:Tu,Switch:uhe,TabPane:Pm,Table:Nbe,TableColumn:am,TableColumnGroup:rm,TableSummary:om,TableSummaryCell:r0,TableSummaryRow:a0,Tabs:bc,Tag:j9,Textarea:E1,TimePicker:hme,TimeRangePicker:sm,Timeline:lh,TimelineItem:Vh,Tooltip:Xr,Transfer:jbe,Tree:mS,TreeNode:lm,TreeSelect:ume,TreeSelectNode:Pv,Typography:ma,TypographyLink:kX,TypographyParagraph:FX,TypographyText:JX,TypographyTitle:DX,Upload:A0e,UploadDragger:B0e,WeekPicker:Eb,message:PW,notification:nG},Symbol.toStringTag,{value:"Module"})),_0e="3.2.15";var $0e=function(e){return Object.keys(JV).forEach(function(t){var i=JV[t];i.install&&e.use(i)}),e.config.globalProperties.$message=PW,e.config.globalProperties.$notification=nG,e.config.globalProperties.$info=pl.info,e.config.globalProperties.$success=pl.success,e.config.globalProperties.$error=pl.error,e.config.globalProperties.$warning=pl.warning,e.config.globalProperties.$confirm=pl.confirm,e.config.globalProperties.$destroyAll=pl.destroyAll,e};const q0e={version:_0e,install:$0e};var Qv={},epe={get exports(){return Qv},set exports(n){Qv=n}};function bs(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var o0={},tpe={get exports(){return o0},set exports(n){o0=n}};/*! + a `).concat(o,",").concat(o," 0 1 1 ").concat(-v,",").concat(b),p=Math.PI*2*o,y={stroke:t,strokeDasharray:"".concat(e/100*(p-a),"px ").concat(p,"px"),strokeDashoffset:"-".concat(a/2+n/100*(p-a),"px"),transition:"stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s"};return{pathString:Z,pathStyle:y}}const Bue=He({compatConfig:{MODE:3},name:"VCCircle",props:pn(Pue,Kue),setup:function(e){Jg+=1;var t=Ne(Jg),i=de(function(){return Og(e.percent)}),a=de(function(){return Og(e.strokeColor)}),l=X1(),o=ft(l,2),r=o[0],f=o[1];Hue(f);var v=function(){var Z=e.prefixCls,p=e.strokeWidth,y=e.strokeLinecap,X=e.gapDegree,m=e.gapPosition,N=0;return i.value.map(function(G,d){var u=a.value[d]||a.value[a.value.length-1],s=Object.prototype.toString.call(u)==="[object Object]"?"url(#".concat(Z,"-gradient-").concat(t.value,")"):"",h=jg(N,G,u,p,X,m),c=h.pathString,W=h.pathStyle;N+=G;var M={key:d,d:c,stroke:s,"stroke-linecap":y,"stroke-width":p,opacity:G===0?0:1,"fill-opacity":"0",class:"".concat(Z,"-circle-path"),style:W};return D("path",P({ref:r(d)},M),null)})};return function(){var b=e.prefixCls,Z=e.strokeWidth,p=e.trailWidth,y=e.gapDegree,X=e.gapPosition,m=e.trailColor,N=e.strokeLinecap;e.strokeColor;var G=jt(e,Que),d=jg(0,100,m,Z,y,X),u=d.pathString,s=d.pathStyle;delete G.percent;var h=a.value.find(function(W){return Object.prototype.toString.call(W)==="[object Object]"}),c={d:u,stroke:m,"stroke-linecap":N,"stroke-width":p||Z,"fill-opacity":"0",class:"".concat(b,"-circle-trail"),style:s};return D("svg",P({class:"".concat(b,"-circle"),viewBox:"0 0 100 100"},G),[h&&D("defs",null,[D("linearGradient",{id:"".concat(b,"-gradient-").concat(t.value),x1:"100%",y1:"0%",x2:"0%",y2:"0%"},[Object.keys(h).sort(function(W,M){return Dg(W)-Dg(M)}).map(function(W,M){return D("stop",{key:M,offset:W,"stop-color":h[W]},null)})])]),D("path",c,null),v().reverse()])}}});function Aue(n){var e=n.percent,t=n.success,i=n.successPercent,a=mc(a0({success:t,successPercent:i}));return[a,mc(mc(e)-a)]}function _ue(n){var e=n.success,t=e===void 0?{}:e,i=n.strokeColor,a=t.strokeColor;return[a||bu.green,i||null]}const $ue=He({compatConfig:{MODE:3},name:"Circle",inheritAttrs:!1,props:vp(),setup:function(e,t){var i=t.slots,a=de(function(){if(e.gapDegree||e.gapDegree===0)return e.gapDegree;if(e.type==="dashboard")return 75}),l=de(function(){var p=e.width||120;return{width:typeof p=="number"?"".concat(p,"px"):p,height:typeof p=="number"?"".concat(p,"px"):p,fontSize:"".concat(p*.15+6,"px")}}),o=de(function(){return e.strokeWidth||6}),r=de(function(){return e.gapPosition||e.type==="dashboard"&&"bottom"||"top"}),f=de(function(){return Aue(e)}),v=de(function(){return Object.prototype.toString.call(e.strokeColor)==="[object Object]"}),b=de(function(){return _ue({success:e.success,strokeColor:e.strokeColor})}),Z=de(function(){var p;return p={},ce(p,"".concat(e.prefixCls,"-inner"),!0),ce(p,"".concat(e.prefixCls,"-circle-gradient"),v.value),p});return function(){var p;return D("div",{class:Z.value,style:l.value},[D(Bue,{percent:f.value,strokeWidth:o.value,trailWidth:o.value,strokeColor:b.value,strokeLinecap:e.strokeLinecap,trailColor:e.trailColor,prefixCls:e.prefixCls,gapDegree:a.value,gapPosition:r.value},null),(p=i.default)===null||p===void 0?void 0:p.call(i)])}}});var que=function(){return P(P({},vp()),{},{steps:Number,size:{type:String},strokeColor:String,trailColor:String})};const ede=He({compatConfig:{MODE:3},name:"Steps",props:que(),setup:function(e,t){var i=t.slots,a=de(function(){return Math.round(e.steps*((e.percent||0)/100))}),l=de(function(){return e.size==="small"?2:14}),o=de(function(){for(var r=e.steps,f=e.strokeWidth,v=f===void 0?8:f,b=e.strokeColor,Z=e.trailColor,p=e.prefixCls,y=[],X=0;X=100?"success":Z||"normal"}),b=function(){var p=e.showInfo,y=e.format,X=e.type,m=e.percent,N=e.title,G=a0(e);if(!p)return null;var d,u=y||(i==null?void 0:i.format)||function(h){return"".concat(h,"%")},s=X==="line";return y||i!=null&&i.format||v.value!=="exception"&&v.value!=="success"?d=u(mc(m),mc(G)):v.value==="exception"?d=D(s?Co:Br,null,null):v.value==="success"&&(d=D(s?Ch:H0,null,null)),D("span",{class:"".concat(l.value,"-text"),title:N===void 0&&typeof d=="string"?d:void 0},[d])};return function(){var Z=e.type,p=e.steps,y=e.strokeColor,X=e.title,m=b(),N;Z==="line"?N=p?D(ede,P(P({},e),{},{strokeColor:typeof y=="string"?y:void 0,prefixCls:l.value,steps:p}),{default:function(){return[m]}}):D(Eue,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}):(Z==="circle"||Z==="dashboard")&&(N=D($ue,P(P({},e),{},{prefixCls:l.value}),{default:function(){return[m]}}));var G=P(P({},r.value),{},ce({},"".concat(l.value,"-status-").concat(v.value),!0));return D("div",{class:G,title:X},[N])}}}),hX=wi(tde);function nde(n){var e=n.pageXOffset,t="scrollLeft";if(typeof e!="number"){var i=n.document;e=i.documentElement[t],typeof e!="number"&&(e=i.body[t])}return e}function ide(n){var e,t,i=n.ownerDocument,a=i.body,l=i&&i.documentElement,o=n.getBoundingClientRect();return e=o.left,t=o.top,e-=l.clientLeft||a.clientLeft||0,t-=l.clientTop||a.clientTop||0,{left:e,top:t}}function lde(n){var e=ide(n),t=n.ownerDocument,i=t.defaultView||t.parentWindow;return e.left+=nde(i),e.left}var ade={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z"}}]},name:"star",theme:"filled"};const rde=ade;function Ug(n){for(var e=1;e=X&&Zp?"true":"false","aria-posinset":p+1,"aria-setsize":y,tabindex:v?-1:0},[D("div",{class:"".concat(b,"-first")},[m]),D("div",{class:"".concat(b,"-second")},[m])])]);return Z&&(N=Z(N,e)),N}}});var dde=function(){return{prefixCls:String,count:Number,value:Number,allowHalf:{type:Boolean,default:void 0},allowClear:{type:Boolean,default:void 0},tooltips:Array,disabled:{type:Boolean,default:void 0},character:We.any,autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),direction:String,id:String,onChange:Function,onHoverChange:Function,"onUpdate:value":Function,onFocus:Function,onBlur:Function,onKeydown:Function}},hde=He({compatConfig:{MODE:3},name:"ARate",inheritAttrs:!1,props:pn(dde(),{value:0,count:5,allowHalf:!1,allowClear:!0,tabindex:0,direction:"ltr"}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.emit,o=t.expose,r=Nt("rate",e),f=r.prefixCls,v=r.direction,b=Hi(),Z=Ne(),p=X1(),y=ft(p,2),X=y[0],m=y[1],N=zn({value:e.value,focused:!1,cleanedValue:null,hoverValue:void 0});rt(function(){return e.value},function(){N.value=e.value});var G=function(S){return us(m.value.get(S))},d=function(S,L){var V=v.value==="rtl",Y=S+1;if(e.allowHalf){var T=G(S),J=lde(T),U=T.clientWidth;(V&&L-J>U/2||!V&&L-J0&&!T||L===bt.RIGHT&&N.value>0&&T?(Y?N.value-=.5:N.value-=1,u(N.value),S.preventDefault()):L===bt.LEFT&&N.value0:!0,"Slider","`Slider[step]` should be a positive number in order to make Slider[dots] work.");var r=Object.keys(t).map(parseFloat).sort(function(v,b){return v-b});if(i&&a)for(var f=l;f<=o;f+=a)r.indexOf(f)===-1&&r.push(f);return r},FC=function(e,t){var i=t.attrs,a=i.prefixCls,l=i.vertical,o=i.reverse,r=i.marks,f=i.dots,v=i.step,b=i.included,Z=i.lowerBound,p=i.upperBound,y=i.max,X=i.min,m=i.dotStyle,N=i.activeDotStyle,G=y-X,d=kde(l,r,f,v,X,y).map(function(u){var s,h="".concat(Math.abs(u-X)/G*100,"%"),c=!b&&u===p||b&&u<=p&&u>=Z,W=l?P(P({},m),{},ce({},o?"top":"bottom",h)):P(P({},m),{},ce({},o?"right":"left",h));c&&(W=P(P({},W),N));var M=_e((s={},ce(s,"".concat(a,"-dot"),!0),ce(s,"".concat(a,"-dot-active"),c),ce(s,"".concat(a,"-dot-reverse"),o),s));return D("span",{class:M,style:W,key:u},null)});return D("div",{class:"".concat(a,"-step")},[d])};FC.inheritAttrs=!1;const Fde=FC;var JC=function(e,t){var i=t.attrs,a=t.slots,l=i.class,o=i.vertical,r=i.reverse,f=i.marks,v=i.included,b=i.upperBound,Z=i.lowerBound,p=i.max,y=i.min,X=i.onClickLabel,m=Object.keys(f),N=a.mark,G=p-y,d=m.map(parseFloat).sort(function(u,s){return u-s}).map(function(u){var s,h=typeof f[u]=="function"?f[u]():f[u],c=Yt(h)==="object"&&!Si(h),W=c?h.label:h;if(!W&&W!==0)return null;N&&(W=N({point:u,label:W}));var M=!v&&u===b||v&&u<=b&&u>=Z,I=_e((s={},ce(s,"".concat(l,"-text"),!0),ce(s,"".concat(l,"-text-active"),M),s)),w=ce({marginBottom:"-50%"},r?"top":"bottom","".concat((u-y)/G*100,"%")),C=ce({transform:"translateX(".concat(r?"50%":"-50%",")"),msTransform:"translateX(".concat(r?"50%":"-50%",")")},r?"right":"left","".concat((u-y)/G*100,"%")),x=o?w:C,R=c?P(P({},x),h.style):x,g=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(S){return X(S,u)});return D("span",P({class:I,style:R,key:u,onMousedown:function(L){return X(L,u)}},g),[W])});return D("div",{class:l},[d])};JC.inheritAttrs=!1;const Jde=JC,DC=He({compatConfig:{MODE:3},name:"Handle",inheritAttrs:!1,props:{prefixCls:String,vertical:{type:Boolean,default:void 0},offset:Number,disabled:{type:Boolean,default:void 0},min:Number,max:Number,value:Number,tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},ariaLabel:String,ariaLabelledBy:String,ariaValueTextFormatter:Function,onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function}},setup:function(e,t){var i=t.attrs,a=t.emit,l=t.expose,o=Ne(!1),r=Ne(),f=function(){document.activeElement===r.value&&(o.value=!0)},v=function(d){o.value=!1,a("blur",d)},b=function(){o.value=!1},Z=function(){var d;(d=r.value)===null||d===void 0||d.focus()},p=function(){var d;(d=r.value)===null||d===void 0||d.blur()},y=function(){o.value=!0,Z()},X=function(d){d.preventDefault(),Z(),a("mousedown",d)};l({focus:Z,blur:p,clickFocus:y,ref:r});var m=null;Kt(function(){m=hi(document,"mouseup",f)}),fn(function(){var G;(G=m)===null||G===void 0||G.remove()});var N=de(function(){var G,d,u=e.vertical,s=e.offset,h=e.reverse;return u?(G={},ce(G,h?"top":"bottom","".concat(s,"%")),ce(G,h?"bottom":"top","auto"),ce(G,"transform",h?null:"translateY(+50%)"),G):(d={},ce(d,h?"right":"left","".concat(s,"%")),ce(d,h?"left":"right","auto"),ce(d,"transform","translateX(".concat(h?"+":"-","50%)")),d)});return function(){var G=e.prefixCls,d=e.disabled,u=e.min,s=e.max,h=e.value,c=e.tabindex,W=e.ariaLabel,M=e.ariaLabelledBy,I=e.ariaValueTextFormatter,w=e.onMouseenter,C=e.onMouseleave,x=_e(i.class,ce({},"".concat(G,"-handle-click-focused"),o.value)),R={"aria-valuemin":u,"aria-valuemax":s,"aria-valuenow":h,"aria-disabled":!!d},g=[i.style,N.value],S=c||0;(d||c===null)&&(S=null);var L;I&&(L=I(h));var V=P(P(P({},i),{},{role:"slider",tabindex:S},R),{},{class:x,onBlur:v,onKeydown:b,onMousedown:X,onMouseenter:w,onMouseleave:C,ref:r,style:g});return D("div",P(P({},V),{},{"aria-label":W,"aria-labelledby":M,"aria-valuetext":L}),null)}}});function zZ(n,e){try{return Object.keys(e).some(function(t){return n.target===e[t].ref})}catch{return!1}}function OC(n,e){var t=e.min,i=e.max;return ni}function Kg(n){return n.touches.length>1||n.type.toLowerCase()==="touchend"&&n.touches.length>0}function Hg(n,e){var t=e.marks,i=e.step,a=e.min,l=e.max,o=Object.keys(t).map(parseFloat);if(i!==null){var r=Math.pow(10,jC(i)),f=Math.floor((l*r-a*r)/(i*r)),v=Math.min((n-a)/i,f),b=Math.round(v)*i+a;o.push(b)}var Z=o.map(function(p){return Math.abs(n-p)});return o[Z.indexOf(Math.min.apply(Math,yt(Z)))]}function jC(n){var e=n.toString(),t=0;return e.indexOf(".")>=0&&(t=e.length-e.indexOf(".")-1),t}function Pg(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.clientY:e.pageX)/t}function Qg(n,e){var t=1;return window.visualViewport&&(t=+(window.visualViewport.width/document.body.getBoundingClientRect().width).toFixed(2)),(n?e.touches[0].clientY:e.touches[0].pageX)/t}function Bg(n,e){var t=e.getBoundingClientRect();return n?t.top+t.height*.5:window.pageXOffset+t.left+t.width*.5}function vX(n,e){var t=e.max,i=e.min;return n<=i?i:n>=t?t:n}function UC(n,e){var t=e.step,i=isFinite(Hg(n,e))?Hg(n,e):0;return t===null?i:parseFloat(i.toFixed(jC(t)))}function Su(n){n.stopPropagation(),n.preventDefault()}function Dde(n,e,t){var i={increase:function(r,f){return r+f},decrease:function(r,f){return r-f}},a=i[n](Object.keys(t.marks).indexOf(JSON.stringify(e)),1),l=Object.keys(t.marks)[a];return t.step?i[n](e,t.step):Object.keys(t.marks).length&&t.marks[l]?t.marks[l]:e}function EC(n,e,t){var i="increase",a="decrease",l=i;switch(n.keyCode){case bt.UP:l=e&&t?a:i;break;case bt.RIGHT:l=!e&&t?a:i;break;case bt.DOWN:l=e&&t?i:a;break;case bt.LEFT:l=!e&&t?i:a;break;case bt.END:return function(o,r){return r.max};case bt.HOME:return function(o,r){return r.min};case bt.PAGE_UP:return function(o,r){return o+r.step*2};case bt.PAGE_DOWN:return function(o,r){return o-r.step*2};default:return}return function(o,r){return Dde(l,o,r)}}var Ode=["index","directives","className","style"];function Hs(){}function KC(n){var e={id:String,min:Number,max:Number,step:Number,marks:We.object,included:{type:Boolean,default:void 0},prefixCls:String,disabled:{type:Boolean,default:void 0},handle:Function,dots:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},minimumTrackStyle:We.object,maximumTrackStyle:We.object,handleStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),trackStyle:We.oneOfType([We.object,We.arrayOf(We.object)]),railStyle:We.object,dotStyle:We.object,activeDotStyle:We.object,autofocus:{type:Boolean,default:void 0},draggableTrack:{type:Boolean,default:void 0}};return He({compatConfig:{MODE:3},name:"CreateSlider",mixins:[Vc,n],inheritAttrs:!1,slots:["mark"],props:pn(e,{prefixCls:"rc-slider",min:0,max:100,step:1,marks:{},included:!0,disabled:!1,dots:!1,vertical:!1,reverse:!1,trackStyle:[{}],handleStyle:[{}],railStyle:{},dotStyle:{},activeDotStyle:{}}),emits:["change","blur","focus"],data:function(){var i=this.step,a=this.max,l=this.min,o=isFinite(a-l)?(a-l)%i===0:!0;return Ci(i&&Math.floor(i)===i?o:!0,"Slider[max] - Slider[min] (".concat(a-l,") should be a multiple of Slider[step] (").concat(i,")")),this.handlesRefs={},{}},mounted:function(){var i=this;this.$nextTick(function(){i.document=i.sliderRef&&i.sliderRef.ownerDocument;var a=i.autofocus,l=i.disabled;a&&!l&&i.focus()})},beforeUnmount:function(){var i=this;this.$nextTick(function(){i.removeDocumentEvents()})},methods:{defaultHandle:function(i){var a=i.index;i.directives;var l=i.className,o=i.style,r=jt(i,Ode);if(delete r.dragging,r.value===null)return null;var f=P(P({},r),{},{class:l,style:o,key:a});return D(DC,f,null)},onDown:function(i,a){var l=a,o=this.$props,r=o.draggableTrack,f=o.vertical,v=this.$data.bounds,b=r&&this.positionGetValue?this.positionGetValue(l)||[]:[],Z=zZ(i,this.handlesRefs);if(this.dragTrack=r&&v.length>=2&&!Z&&!b.map(function(y,X){var m=X?!0:y>=v[X];return X===b.length-1?y<=v[X]:m}).some(function(y){return!y}),this.dragTrack)this.dragOffset=l,this.startBounds=yt(v);else{if(!Z)this.dragOffset=0;else{var p=Bg(f,i.target);this.dragOffset=l-p,l=p}this.onStart(l)}},onMouseDown:function(i){if(i.button===0){this.removeDocumentEvents();var a=this.$props.vertical,l=Pg(a,i);this.onDown(i,l),this.addDocumentMouseEvents()}},onTouchStart:function(i){if(!Kg(i)){var a=this.vertical,l=Qg(a,i);this.onDown(i,l),this.addDocumentTouchEvents(),Su(i)}},onFocus:function(i){var a=this.vertical;if(zZ(i,this.handlesRefs)&&!this.dragTrack){var l=Bg(a,i.target);this.dragOffset=0,this.onStart(l),Su(i),this.$emit("focus",i)}},onBlur:function(i){this.dragTrack||this.onEnd(),this.$emit("blur",i)},onMouseUp:function(){this.handlesRefs[this.prevMovedHandleIndex]&&this.handlesRefs[this.prevMovedHandleIndex].clickFocus()},onMouseMove:function(i){if(!this.sliderRef){this.onEnd();return}var a=Pg(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onTouchMove:function(i){if(Kg(i)||!this.sliderRef){this.onEnd();return}var a=Qg(this.vertical,i);this.onMove(i,a-this.dragOffset,this.dragTrack,this.startBounds)},onKeyDown:function(i){this.sliderRef&&zZ(i,this.handlesRefs)&&this.onKeyboard(i)},onClickMarkLabel:function(i,a){var l=this;i.stopPropagation(),this.onChange({sValue:a}),this.setState({sValue:a},function(){return l.onEnd(!0)})},getSliderStart:function(){var i=this.sliderRef,a=this.vertical,l=this.reverse,o=i.getBoundingClientRect();return a?l?o.bottom:o.top:window.pageXOffset+(l?o.right:o.left)},getSliderLength:function(){var i=this.sliderRef;if(!i)return 0;var a=i.getBoundingClientRect();return this.vertical?a.height:a.width},addDocumentTouchEvents:function(){this.onTouchMoveListener=hi(this.document,"touchmove",this.onTouchMove),this.onTouchUpListener=hi(this.document,"touchend",this.onEnd)},addDocumentMouseEvents:function(){this.onMouseMoveListener=hi(this.document,"mousemove",this.onMouseMove),this.onMouseUpListener=hi(this.document,"mouseup",this.onEnd)},removeDocumentEvents:function(){this.onTouchMoveListener&&this.onTouchMoveListener.remove(),this.onTouchUpListener&&this.onTouchUpListener.remove(),this.onMouseMoveListener&&this.onMouseMoveListener.remove(),this.onMouseUpListener&&this.onMouseUpListener.remove()},focus:function(){var i;this.$props.disabled||(i=this.handlesRefs[0])===null||i===void 0||i.focus()},blur:function(){var i=this;this.$props.disabled||Object.keys(this.handlesRefs).forEach(function(a){var l,o;(l=i.handlesRefs[a])===null||l===void 0||(o=l.blur)===null||o===void 0||o.call(l)})},calcValue:function(i){var a=this.vertical,l=this.min,o=this.max,r=Math.abs(Math.max(i,0)/this.getSliderLength()),f=a?(1-r)*(o-l)+l:r*(o-l)+l;return f},calcValueByPos:function(i){var a=this.reverse?-1:1,l=a*(i-this.getSliderStart()),o=this.trimAlignValue(this.calcValue(l));return o},calcOffset:function(i){var a=this.min,l=this.max,o=(i-a)/(l-a);return Math.max(0,o*100)},saveSlider:function(i){this.sliderRef=i},saveHandle:function(i,a){this.handlesRefs[i]=a}},render:function(){var i,a=this.prefixCls,l=this.marks,o=this.dots,r=this.step,f=this.included,v=this.disabled,b=this.vertical,Z=this.reverse,p=this.min,y=this.max,X=this.maximumTrackStyle,m=this.railStyle,N=this.dotStyle,G=this.activeDotStyle,d=this.id,u=this.$attrs,s=u.class,h=u.style,c=this.renderSlider(),W=c.tracks,M=c.handles,I=_e(a,s,(i={},ce(i,"".concat(a,"-with-marks"),Object.keys(l).length),ce(i,"".concat(a,"-disabled"),v),ce(i,"".concat(a,"-vertical"),b),i)),w={vertical:b,marks:l,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,reverse:Z,class:"".concat(a,"-mark"),onClickLabel:v?Hs:this.onClickMarkLabel},C=ce({},Ui?"onTouchstartPassive":"onTouchstart",v?Hs:this.onTouchStart);return D("div",P(P({id:d,ref:this.saveSlider,tabindex:"-1",class:I},C),{},{onMousedown:v?Hs:this.onMouseDown,onMouseup:v?Hs:this.onMouseUp,onKeydown:v?Hs:this.onKeyDown,onFocus:v?Hs:this.onFocus,onBlur:v?Hs:this.onBlur,style:h}),[D("div",{class:"".concat(a,"-rail"),style:P(P({},X),m)},null),W,D(Fde,{prefixCls:a,vertical:b,reverse:Z,marks:l,dots:o,step:r,included:f,lowerBound:this.getLowerBound(),upperBound:this.getUpperBound(),max:y,min:p,dotStyle:N,activeDotStyle:G},null),M,D(Jde,w,{mark:this.$slots.mark}),Rh(this)])}})}var jde=He({compatConfig:{MODE:3},name:"Slider",mixins:[Vc],inheritAttrs:!1,props:{defaultValue:Number,value:Number,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},tabindex:We.oneOfType([We.number,We.string]),reverse:{type:Boolean,default:void 0},min:Number,max:Number,ariaLabelForHandle:String,ariaLabelledByForHandle:String,ariaValueTextFormatterForHandle:String,startPoint:Number},emits:["beforeChange","afterChange","change"],data:function(){var e=this.defaultValue!==void 0?this.defaultValue:this.min,t=this.value!==void 0?this.value:e;return{sValue:this.trimAlignValue(t),dragging:!1}},watch:{value:{handler:function(e){this.setChangeValue(e)},deep:!0},min:function(){var e=this.sValue;this.setChangeValue(e)},max:function(){var e=this.sValue;this.setChangeValue(e)}},methods:{setChangeValue:function(e){var t=e!==void 0?e:this.sValue,i=this.trimAlignValue(t,this.$props);i!==this.sValue&&(this.setState({sValue:i}),OC(t,this.$props)&&this.$emit("change",i))},onChange:function(e){var t=!No(this,"value"),i=e.sValue>this.max?P(P({},e),{},{sValue:this.max}):e;t&&this.setState(i);var a=i.sValue;this.$emit("change",a)},onStart:function(e){this.setState({dragging:!0});var t=this.sValue;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e,i!==t&&(this.prevMovedHandleIndex=0,this.onChange({sValue:i}))},onEnd:function(e){var t=this.dragging;this.removeDocumentEvents(),(t||e)&&this.$emit("afterChange",this.sValue),this.setState({dragging:!1})},onMove:function(e,t){Su(e);var i=this.sValue,a=this.calcValueByPos(t);a!==i&&this.onChange({sValue:a})},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=EC(e,a,i);if(l){Su(e);var o=this.sValue,r=l(o,this.$props),f=this.trimAlignValue(r);if(f===o)return;this.onChange({sValue:f}),this.$emit("afterChange",f),this.onEnd()}},getLowerBound:function(){var e=this.$props.startPoint||this.$props.min;return this.$data.sValue>e?e:this.$data.sValue},getUpperBound:function(){return this.$data.sValue1&&arguments[1]!==void 0?arguments[1]:{};if(e===null)return null;var i=P(P({},this.$props),t),a=vX(e,i);return UC(a,i)},getTrack:function(e){var t=e.prefixCls,i=e.reverse,a=e.vertical,l=e.included,o=e.minimumTrackStyle,r=e.mergedTrackStyle,f=e.length,v=e.offset;return D(kC,{class:"".concat(t,"-track"),vertical:a,included:l,offset:v,reverse:i,length:f,style:P(P({},o),r)},null)},renderSlider:function(){var e=this,t=this.prefixCls,i=this.vertical,a=this.included,l=this.disabled,o=this.minimumTrackStyle,r=this.trackStyle,f=this.handleStyle,v=this.tabindex,b=this.ariaLabelForHandle,Z=this.ariaLabelledByForHandle,p=this.ariaValueTextFormatterForHandle,y=this.min,X=this.max,m=this.startPoint,N=this.reverse,G=this.handle,d=this.defaultHandle,u=G||d,s=this.sValue,h=this.dragging,c=this.calcOffset(s),W=u({class:"".concat(t,"-handle"),prefixCls:t,vertical:i,offset:c,value:s,dragging:h,disabled:l,min:y,max:X,reverse:N,index:0,tabindex:v,ariaLabel:b,ariaLabelledBy:Z,ariaValueTextFormatter:p,style:f[0]||f,ref:function(C){return e.saveHandle(0,C)},onFocus:this.onFocus,onBlur:this.onBlur}),M=m!==void 0?this.calcOffset(m):0,I=r[0]||r;return{tracks:this.getTrack({prefixCls:t,reverse:N,vertical:i,included:a,offset:M,minimumTrackStyle:o,mergedTrackStyle:I,length:c-M}),handles:W}}}});const Ude=KC(jde);var Id=function(e){var t=e.value,i=e.handle,a=e.bounds,l=e.props,o=l.allowCross,r=l.pushable,f=Number(r),v=vX(t,l),b=v;return!o&&i!=null&&a!==void 0&&(i>0&&v<=a[i-1]+f&&(b=a[i-1]+f),i=a[i+1]-f&&(b=a[i+1]-f)),UC(b,l)},Ede={defaultValue:We.arrayOf(We.number),value:We.arrayOf(We.number),count:Number,pushable:rT(We.oneOfType([We.looseBool,We.number])),allowCross:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},reverse:{type:Boolean,default:void 0},tabindex:We.arrayOf(We.number),prefixCls:String,min:Number,max:Number,autofocus:{type:Boolean,default:void 0},ariaLabelGroupForHandles:Array,ariaLabelledByGroupForHandles:Array,ariaValueTextFormatterGroupForHandles:Array,draggableTrack:{type:Boolean,default:void 0}},Kde=He({compatConfig:{MODE:3},name:"Range",mixins:[Vc],inheritAttrs:!1,props:pn(Ede,{count:1,allowCross:!0,pushable:!1,tabindex:[],draggableTrack:!1,ariaLabelGroupForHandles:[],ariaLabelledByGroupForHandles:[],ariaValueTextFormatterGroupForHandles:[]}),emits:["beforeChange","afterChange","change"],displayName:"Range",data:function(){var e=this,t=this.count,i=this.min,a=this.max,l=Array.apply(void 0,yt(Array(t+1))).map(function(){return i}),o=No(this,"defaultValue")?this.defaultValue:l,r=this.value;r===void 0&&(r=o);var f=r.map(function(b,Z){return Id({value:b,handle:Z,props:e.$props})}),v=f[0]===a?0:f.length-1;return{sHandle:null,recent:v,bounds:f}},watch:{value:{handler:function(e){var t=this.bounds;this.setChangeValue(e||t)},deep:!0},min:function(){var e=this.value;this.setChangeValue(e||this.bounds)},max:function(){var e=this.value;this.setChangeValue(e||this.bounds)}},methods:{setChangeValue:function(e){var t=this,i=this.bounds,a=e.map(function(o,r){return Id({value:o,handle:r,bounds:i,props:t.$props})});if(i.length===a.length){if(a.every(function(o,r){return o===i[r]}))return null}else a=e.map(function(o,r){return Id({value:o,handle:r,props:t.$props})});if(this.setState({bounds:a}),e.some(function(o){return OC(o,t.$props)})){var l=e.map(function(o){return vX(o,t.$props)});this.$emit("change",l)}},onChange:function(e){var t=!No(this,"value");if(t)this.setState(e);else{var i={};["sHandle","recent"].forEach(function(o){e[o]!==void 0&&(i[o]=e[o])}),Object.keys(i).length&&this.setState(i)}var a=P(P({},this.$data),e),l=a.bounds;this.$emit("change",l)},positionGetValue:function(e){var t=this.getValue(),i=this.calcValueByPos(e),a=this.getClosestBound(i),l=this.getBoundNeedMoving(i,a),o=t[l];if(i===o)return null;var r=yt(t);return r[l]=i,r},onStart:function(e){var t=this.bounds;this.$emit("beforeChange",t);var i=this.calcValueByPos(e);this.startValue=i,this.startPosition=e;var a=this.getClosestBound(i);this.prevMovedHandleIndex=this.getBoundNeedMoving(i,a),this.setState({sHandle:this.prevMovedHandleIndex,recent:this.prevMovedHandleIndex});var l=t[this.prevMovedHandleIndex];if(i!==l){var o=yt(t);o[this.prevMovedHandleIndex]=i,this.onChange({bounds:o})}},onEnd:function(e){var t=this.sHandle;this.removeDocumentEvents(),t||(this.dragTrack=!1),(t!==null||e)&&this.$emit("afterChange",this.bounds),this.setState({sHandle:null})},onMove:function(e,t,i,a){Su(e);var l=this.$data,o=this.$props,r=o.max||100,f=o.min||0;if(i){var v=o.vertical?-t:t;v=o.reverse?-v:v;var b=r-Math.max.apply(Math,yt(a)),Z=f-Math.min.apply(Math,yt(a)),p=Math.min(Math.max(v/(this.getSliderLength()/100),Z),b),y=a.map(function(d){return Math.floor(Math.max(Math.min(d+p,r),f))});l.bounds.map(function(d,u){return d===y[u]}).some(function(d){return!d})&&this.onChange({bounds:y});return}var X=this.bounds,m=this.sHandle,N=this.calcValueByPos(t),G=X[m];N!==G&&this.moveTo(N)},onKeyboard:function(e){var t=this.$props,i=t.reverse,a=t.vertical,l=EC(e,a,i);if(l){Su(e);var o=this.bounds,r=this.sHandle,f=o[r===null?this.recent:r],v=l(f,this.$props),b=Id({value:v,handle:r,bounds:o,props:this.$props});if(b===f)return;var Z=!0;this.moveTo(b,Z)}},getClosestBound:function(e){for(var t=this.bounds,i=0,a=1;a=t[a]&&(i=a);return Math.abs(t[i+1]-e)=a.length||o<0)return!1;var r=t+i,f=a[o],v=this.pushable,b=Number(v),Z=i*(e[r]-f);return this.pushHandle(e,r,i,b-Z)?(e[t]=f,!0):!1},trimAlignValue:function(e){var t=this.sHandle,i=this.bounds;return Id({value:e,handle:t,bounds:i,props:this.$props})},ensureValueNotConflict:function(e,t,i){var a=i.allowCross,l=i.pushable,o=this.$data||{},r=o.bounds;if(e=e===void 0?o.sHandle:e,l=Number(l),!a&&e!=null&&r!==void 0){if(e>0&&t<=r[e-1]+l)return r[e-1]+l;if(e=r[e+1]-l)return r[e+1]-l}return t},getTrack:function(e){var t=e.bounds,i=e.prefixCls,a=e.reverse,l=e.vertical,o=e.included,r=e.offsets,f=e.trackStyle;return t.slice(0,-1).map(function(v,b){var Z,p=b+1,y=_e((Z={},ce(Z,"".concat(i,"-track"),!0),ce(Z,"".concat(i,"-track-").concat(p),!0),Z));return D(kC,{class:y,vertical:l,reverse:a,included:o,offset:r[p-1],length:r[p]-r[p-1],style:f[b],key:p},null)})},renderSlider:function(){var e=this,t=this.sHandle,i=this.bounds,a=this.prefixCls,l=this.vertical,o=this.included,r=this.disabled,f=this.min,v=this.max,b=this.reverse,Z=this.handle,p=this.defaultHandle,y=this.trackStyle,X=this.handleStyle,m=this.tabindex,N=this.ariaLabelGroupForHandles,G=this.ariaLabelledByGroupForHandles,d=this.ariaValueTextFormatterGroupForHandles,u=Z||p,s=i.map(function(W){return e.calcOffset(W)}),h="".concat(a,"-handle"),c=i.map(function(W,M){var I,w=m[M]||0;(r||m[M]===null)&&(w=null);var C=t===M;return u({class:_e((I={},ce(I,h,!0),ce(I,"".concat(h,"-").concat(M+1),!0),ce(I,"".concat(h,"-dragging"),C),I)),prefixCls:a,vertical:l,dragging:C,offset:s[M],value:W,index:M,tabindex:w,min:f,max:v,reverse:b,disabled:r,style:X[M],ref:function(R){return e.saveHandle(M,R)},onFocus:e.onFocus,onBlur:e.onBlur,ariaLabel:N[M],ariaLabelledBy:G[M],ariaValueTextFormatter:d[M]})});return{tracks:this.getTrack({bounds:i,prefixCls:a,reverse:b,vertical:l,included:o,offsets:s,trackStyle:y}),handles:c}}}});const Hde=KC(Kde),Pde=He({compatConfig:{MODE:3},name:"SliderTooltip",inheritAttrs:!1,props:Rx(),setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(null),o=Ne(null);function r(){At.cancel(o.value),o.value=null}function f(){o.value=At(function(){var b;(b=l.value)===null||b===void 0||b.forcePopupAlign(),o.value=null})}var v=function(){r(),e.visible&&f()};return rt([function(){return e.visible},function(){return e.title}],function(){v()},{flush:"post",immediate:!0}),I0(function(){v()}),fn(function(){r()}),function(){return D(Xr,P(P({ref:l},e),i),a)}}});var Qde=["value","dragging","index"],Bde=["tooltipPrefixCls","range","id"],Ade=function(e){return typeof e=="number"?e.toString():""},_de=function(){return{id:String,prefixCls:String,tooltipPrefixCls:String,range:{type:[Boolean,Object],default:void 0},reverse:{type:Boolean,default:void 0},min:Number,max:Number,step:{type:[Number,Object]},marks:{type:Object},dots:{type:Boolean,default:void 0},value:{type:[Number,Array]},defaultValue:{type:[Number,Array]},included:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},vertical:{type:Boolean,default:void 0},tipFormatter:{type:[Function,Object],default:function(){return Ade}},tooltipVisible:{type:Boolean,default:void 0},tooltipPlacement:{type:String},getTooltipPopupContainer:{type:Function},autofocus:{type:Boolean,default:void 0},handleStyle:{type:[Object,Array]},trackStyle:{type:[Object,Array]},onChange:{type:Function},onAfterChange:{type:Function},onFocus:{type:Function},onBlur:{type:Function},"onUpdate:value":{type:Function}}},$de=He({compatConfig:{MODE:3},name:"ASlider",inheritAttrs:!1,props:_de(),slots:["mark"],setup:function(e,t){var i=t.attrs,a=t.slots,l=t.emit,o=t.expose,r=Nt("slider",e),f=r.prefixCls,v=r.rootPrefixCls,b=r.direction,Z=r.getPopupContainer,p=r.configProvider,y=Hi(),X=Ne(),m=Ne({}),N=function(M,I){m.value[M]=I},G=de(function(){return e.tooltipPlacement?e.tooltipPlacement:e.vertical?b.value==="rtl"?"left":"right":"top"}),d=function(){var M;(M=X.value)===null||M===void 0||M.focus()},u=function(){var M;(M=X.value)===null||M===void 0||M.blur()},s=function(M){l("update:value",M),l("change",M),y.onFieldChange()},h=function(M){l("blur",M)};o({focus:d,blur:u});var c=function(M){var I=M.tooltipPrefixCls,w=M.info,C=w.value,x=w.dragging,R=w.index,g=jt(w,Qde),S=e.tipFormatter,L=e.tooltipVisible,V=e.getTooltipPopupContainer,Y=S?m.value[R]||x:!1,T=L||L===void 0&&Y;return D(Pde,{prefixCls:I,title:S?S(C):"",visible:T,placement:G.value,transitionName:"".concat(v.value,"-zoom-down"),key:R,overlayClassName:"".concat(f.value,"-tooltip"),getPopupContainer:V||Z.value},{default:function(){return[D(DC,P(P({},g),{},{value:C,onMouseenter:function(){return N(R,!0)},onMouseleave:function(){return N(R,!1)}}),null)]}})};return function(){var W=e.tooltipPrefixCls,M=e.range,I=e.id,w=I===void 0?y.id.value:I,C=jt(e,Bde),x=p.getPrefixCls("tooltip",W),R=_e(i.class,ce({},"".concat(f.value,"-rtl"),b.value==="rtl"));b.value==="rtl"&&!C.vertical&&(C.reverse=!C.reverse);var g;return Yt(M)==="object"&&(g=M.draggableTrack),M?D(Hde,P(P({},C),{},{step:C.step,draggableTrack:g,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark}):D(Ude,P(P({},C),{},{id:w,step:C.step,class:R,ref:X,handle:function(L){return c({tooltipPrefixCls:x,prefixCls:f.value,info:L})},prefixCls:f.value,onChange:s,onBlur:h}),{mark:a.mark})}}});const qde=wi($de);var ehe={small:8,middle:16,large:24},the=function(){return{prefixCls:String,size:{type:[String,Number,Array]},direction:We.oneOf(pi("horizontal","vertical")).def("horizontal"),align:We.oneOf(pi("start","end","center","baseline")),wrap:{type:Boolean,default:void 0}}};function nhe(n){return typeof n=="string"?ehe[n]:n||0}var ihe=He({compatConfig:{MODE:3},name:"ASpace",props:the(),slots:["split"],setup:function(e,t){var i=t.slots,a=Nt("space",e),l=a.prefixCls,o=a.space,r=a.direction,f=t9(),v=de(function(){var N,G,d;return(N=(G=e.size)!==null&&G!==void 0?G:(d=o.value)===null||d===void 0?void 0:d.size)!==null&&N!==void 0?N:"small"}),b=Ne(),Z=Ne();rt(v,function(){var N=(Array.isArray(v.value)?v.value:[v.value,v.value]).map(function(d){return nhe(d)}),G=ft(N,2);b.value=G[0],Z.value=G[1]},{immediate:!0});var p=de(function(){return e.align===void 0&&e.direction==="horizontal"?"center":e.align}),y=de(function(){var N;return _e(l.value,"".concat(l.value,"-").concat(e.direction),(N={},ce(N,"".concat(l.value,"-rtl"),r.value==="rtl"),ce(N,"".concat(l.value,"-align-").concat(p.value),p.value),N))}),X=de(function(){return r.value==="rtl"?"marginLeft":"marginRight"}),m=de(function(){var N={};return f.value&&(N.columnGap="".concat(b.value,"px"),N.rowGap="".concat(Z.value,"px")),P(P({},N),e.wrap&&{flexWrap:"wrap",marginBottom:"".concat(-Z.value,"px")})});return function(){var N,G,d=e.wrap,u=e.direction,s=u===void 0?"horizontal":u,h=Ri((N=i.default)===null||N===void 0?void 0:N.call(i)),c=h.length;if(c===0)return null;var W=(G=i.split)===null||G===void 0?void 0:G.call(i),M="".concat(l.value,"-item"),I=b.value,w=c-1;return D("div",{class:y.value,style:m.value},[h.map(function(C,x){var R={};return f.value||(s==="vertical"?x=t}function whe(n){return n&&Yt(n)==="object"&&!Array.isArray(n)&&!yl(n)}const Gp=He({name:"Cell",props:["prefixCls","record","index","renderIndex","dataIndex","customRender","component","colSpan","rowSpan","fixLeft","fixRight","firstFixLeft","lastFixLeft","firstFixRight","lastFixRight","appendNode","additionalProps","ellipsis","align","rowType","isSticky","column","cellType","transformCellText"],slots:["appendNode"],setup:function(e,t){var i=t.slots,a=_C(),l=Xhe(),o=l.onHover,r=l.startRow,f=l.endRow,v=de(function(){var N,G,d,u;return(N=(G=e.colSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.colSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.colspan}),b=de(function(){var N,G,d,u;return(N=(G=e.rowSpan)!==null&&G!==void 0?G:(d=e.additionalProps)===null||d===void 0?void 0:d.rowSpan)!==null&&N!==void 0?N:(u=e.additionalProps)===null||u===void 0?void 0:u.rowspan}),Z=Sa(function(){var N=e.index;return Yhe(N,b.value||1,r.value,f.value)}),p=Mhe(),y=function(G,d){var u,s=e.record,h=e.index,c=e.additionalProps;s&&o(h,h+d-1),c==null||(u=c.onMouseenter)===null||u===void 0||u.call(c,G)},X=function(G){var d,u=e.record,s=e.additionalProps;u&&o(-1,-1),s==null||(d=s.onMouseleave)===null||d===void 0||d.call(s,G)},m=function N(G){var d=Ri(G)[0];return yl(d)?d.type===Ns?d.children:Array.isArray(d.children)?N(d.children):void 0:d};return function(){var N,G,d,u,s,h,c=e.prefixCls,W=e.record,M=e.index,I=e.renderIndex,w=e.dataIndex,C=e.customRender,x=e.component,R=x===void 0?"td":x,g=e.fixLeft,S=e.fixRight,L=e.firstFixLeft,V=e.lastFixLeft,Y=e.firstFixRight,T=e.lastFixRight,J=e.appendNode,U=J===void 0?(N=i.appendNode)===null||N===void 0?void 0:N.call(i):J,K=e.additionalProps,H=K===void 0?{}:K,k=e.ellipsis,F=e.align,O=e.rowType,Q=e.isSticky,oe=e.column,se=oe===void 0?{}:oe,he=e.cellType,pe="".concat(c,"-cell"),re,_,E=(G=i.default)===null||G===void 0?void 0:G.call(i);if(xv(E)||he==="header")_=E;else{var $,ae=BC(W,w);if(_=ae,C){var le=C({text:ae,value:ae,record:W,index:M,renderIndex:I,column:se.__originColumn__});whe(le)?(_=le.children,re=le.props):_=le}if(!(Nu in se)&&he==="body"&&a.value.bodyCell&&!(($=se.slots)!==null&&$!==void 0&&$.customRender)){var ee=g0(a.value,"bodyCell",{text:ae,value:ae,record:W,index:M,column:se.__originColumn__},function(){var Se=_===void 0?ae:_;return[Yt(Se)==="object"&&Si(Se)||Yt(Se)!=="object"?Se:null]});_=ti(ee)}e.transformCellText&&(_=e.transformCellText({text:_,record:W,index:M,column:se.__originColumn__}))}Yt(_)==="object"&&!Array.isArray(_)&&!yl(_)&&(_=null),k&&(V||Y)&&(_=D("span",{class:"".concat(pe,"-content")},[_])),Array.isArray(_)&&_.length===1&&(_=_[0]);var te=re||{},be=te.colSpan,ne=te.rowSpan,B=te.style,q=te.class,ue=jt(te,Ihe),ve=(d=be!==void 0?be:v.value)!==null&&d!==void 0?d:1,Ge=(u=ne!==void 0?ne:b.value)!==null&&u!==void 0?u:1;if(ve===0||Ge===0)return null;var Je={},xe=typeof g=="number"&&p.value,ke=typeof S=="number"&&p.value;xe&&(Je.position="sticky",Je.left="".concat(g,"px")),ke&&(Je.position="sticky",Je.right="".concat(S,"px"));var Pe={};F&&(Pe.textAlign=F);var Be,Te=k===!0?{showTitle:!0}:k;Te&&(Te.showTitle||O==="header")&&(typeof _=="string"||typeof _=="number"?Be=_.toString():yl(_)&&(Be=m([_])));var we=P(P(P({title:Be},ue),H),{},{colSpan:ve!==1?ve:null,rowSpan:Ge!==1?Ge:null,class:_e(pe,(s={},ce(s,"".concat(pe,"-fix-left"),xe&&p.value),ce(s,"".concat(pe,"-fix-left-first"),L&&p.value),ce(s,"".concat(pe,"-fix-left-last"),V&&p.value),ce(s,"".concat(pe,"-fix-right"),ke&&p.value),ce(s,"".concat(pe,"-fix-right-first"),Y&&p.value),ce(s,"".concat(pe,"-fix-right-last"),T&&p.value),ce(s,"".concat(pe,"-ellipsis"),k),ce(s,"".concat(pe,"-with-append"),U),ce(s,"".concat(pe,"-fix-sticky"),(xe||ke)&&Q&&p.value),ce(s,"".concat(pe,"-row-hover"),!re&&Z.value),s),H.class,q),onMouseenter:function(De){y(De,Ge)},onMouseleave:X,style:P(P(P(P({},FW(H.style)),Pe),Je),B)});return D(R,we,{default:function(){return[U,_,(h=i.dragHandle)===null||h===void 0?void 0:h.call(i)]}})}}});function WX(n,e,t,i,a){var l=t[n]||{},o=t[e]||{},r,f;l.fixed==="left"?r=i.left[n]:o.fixed==="right"&&(f=i.right[e]);var v=!1,b=!1,Z=!1,p=!1,y=t[e+1],X=t[n-1];if(a==="rtl"){if(r!==void 0){var m=X&&X.fixed==="left";p=!m}else if(f!==void 0){var N=y&&y.fixed==="right";Z=!N}}else if(r!==void 0){var G=y&&y.fixed==="left";v=!G}else if(f!==void 0){var d=X&&X.fixed==="right";b=!d}return{fixLeft:r,fixRight:f,lastFixLeft:v,firstFixRight:b,lastFixRight:Z,firstFixLeft:p,isSticky:i.isSticky}}var _g={mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"},touch:{start:"touchstart",move:"touchmove",stop:"touchend"}},$g=50;const ghe=He({compatConfig:{MODE:3},name:"DragHandle",props:{prefixCls:String,width:{type:Number,required:!0},minWidth:{type:Number,default:$g},maxWidth:{type:Number,default:1/0},column:{type:Object,default:void 0}},setup:function(e){var t=0,i={remove:function(){}},a={remove:function(){}},l=function(){i.remove(),a.remove()};la(function(){l()}),qt(function(){jn(!isNaN(e.width),"Table","width must be a number when use resizable")});var o=Whe(),r=o.onResizeColumn,f=de(function(){return typeof e.minWidth=="number"&&!isNaN(e.minWidth)?e.minWidth:$g}),v=de(function(){return typeof e.maxWidth=="number"&&!isNaN(e.maxWidth)?e.maxWidth:1/0}),b=Wl(),Z=0,p=Ne(!1),y,X=function(c){var W=0;c.touches?c.touches.length?W=c.touches[0].pageX:W=c.changedTouches[0].pageX:W=c.pageX;var M=t-W,I=Math.max(Z-M,f.value);I=Math.min(I,v.value),At.cancel(y),y=At(function(){r(I,e.column.__originColumn__)})},m=function(c){X(c)},N=function(c){p.value=!1,X(c),l()},G=function(c,W){p.value=!0,l(),Z=b.vnode.el.parentNode.getBoundingClientRect().width,!(c instanceof MouseEvent&&c.which!==1)&&(c.stopPropagation&&c.stopPropagation(),t=c.touches?c.touches[0].pageX:c.pageX,i=hi(document.documentElement,W.move,m),a=hi(document.documentElement,W.stop,N))},d=function(c){c.stopPropagation(),c.preventDefault(),G(c,_g.mouse)},u=function(c){c.stopPropagation(),c.preventDefault(),G(c,_g.touch)},s=function(c){c.stopPropagation(),c.preventDefault()};return function(){var h=e.prefixCls,c=ce({},Ui?"onTouchstartPassive":"onTouchstart",function(W){return u(W)});return D("div",P(P({class:"".concat(h,"-resize-handle ").concat(p.value?"dragging":""),onMousedown:d},c),{},{onClick:s}),[D("div",{class:"".concat(h,"-resize-handle-line")},null)])}}}),Vhe=He({name:"HeaderRow",props:["cells","stickyOffsets","flattenColumns","rowComponent","cellComponent","index","customHeaderRow"],setup:function(e){var t=_r();return function(){var i=t.prefixCls,a=t.direction,l=e.cells,o=e.stickyOffsets,r=e.flattenColumns,f=e.rowComponent,v=e.cellComponent,b=e.customHeaderRow,Z=e.index,p;b&&(p=b(l.map(function(X){return X.column}),Z));var y=Wp(l.map(function(X){return X.column}));return D(f,p,{default:function(){return[l.map(function(m,N){var G=m.column,d=WX(m.colStart,m.colEnd,r,o,a),u;G&&G.customHeaderCell&&(u=m.column.customHeaderCell(G));var s=G;return D(Gp,P(P(P({},m),{},{cellType:"header",ellipsis:G.ellipsis,align:G.align,component:v,prefixCls:i,key:y[N]},d),{},{additionalProps:u,rowType:"header",column:G}),{default:function(){return G.title},dragHandle:function(){return s.resizable?D(ghe,{prefixCls:i,width:s.width,minWidth:s.minWidth,maxWidth:s.maxWidth,column:s},null):null}})})]}})}}});function Lhe(n){var e=[];function t(o,r){var f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;e[f]=e[f]||[];var v=r,b=o.filter(Boolean).map(function(Z){var p={key:Z.key,class:_e(Z.className,Z.class),column:Z,colStart:v},y=1,X=Z.children;return X&&X.length>0&&(y=t(X,v,f+1).reduce(function(m,N){return m+N},0),p.hasSubColumns=!0),"colSpan"in Z&&(y=Z.colSpan),"rowSpan"in Z&&(p.rowSpan=Z.rowSpan),p.colSpan=y,p.colEnd=p.colStart+y-1,e[f].push(p),v+=y,y});return b}t(n,0);for(var i=e.length,a=function(r){e[r].forEach(function(f){!("rowSpan"in f)&&!f.hasSubColumns&&(f.rowSpan=i-r)})},l=0;l1?h-1:0),W=1;W0?[].concat(yt(e),yt(Sv(l).map(function(o){return P({fixed:a},o)}))):[].concat(yt(e),[P(P({},t),{},{fixed:a})])},[])}function Ohe(n){return n.map(function(e){var t=e.fixed,i=jt(e,Dhe),a=t;return t==="left"?a="right":t==="right"&&(a="left"),P({fixed:a},i)})}function jhe(n,e){var t=n.prefixCls,i=n.columns,a=n.expandable,l=n.expandedKeys,o=n.getRowKey,r=n.onTriggerExpand,f=n.expandIcon,v=n.rowExpandable,b=n.expandIconColumnIndex,Z=n.direction,p=n.expandRowByClick,y=n.expandColumnWidth,X=n.expandFixed,m=de(function(){if(a.value){var d,u=i.value.slice();if(!u.includes(rs)){var s=b.value||0;s>=0&&u.splice(s,0,rs)}var h=u.indexOf(rs);u=u.filter(function(g,S){return g!==rs||S===h});var c=i.value[h],W;(X.value==="left"||X.value)&&!b.value?W="left":(X.value==="right"||X.value)&&b.value===i.value.length?W="right":W=c?c.fixed:null;var M=l.value,I=v.value,w=f.value,C=t.value,x=p.value,R=(d={},ce(d,Nu,{class:"".concat(t.value,"-expand-icon-col"),columnType:"EXPAND_COLUMN"}),ce(d,"title",""),ce(d,"fixed",W),ce(d,"class","".concat(t.value,"-row-expand-icon-cell")),ce(d,"width",y.value),ce(d,"customRender",function(S){var L=S.record,V=S.index,Y=o.value(L,V),T=M.has(Y),J=I?I(L):!0,U=w({prefixCls:C,expanded:T,expandable:J,record:L,onExpand:r});return x?D("span",{onClick:function(H){return H.stopPropagation()}},[U]):U}),d);return u.map(function(g){return g===rs?R:g})}return i.value.filter(function(g){return g!==rs})}),N=de(function(){var d=m.value;return e.value&&(d=e.value(d)),d.length||(d=[{customRender:function(){return null}}]),d}),G=de(function(){return Z.value==="rtl"?Ohe(Sv(N.value)):Sv(N.value)});return[N,G]}function rS(n){var e=Gn(n),t,i=Gn([]);function a(l){i.value.push(l),At.cancel(t),t=At(function(){var o=i.value;i.value=[],o.forEach(function(r){e.value=r(e.value)})})}return fn(function(){At.cancel(t)}),[e,a]}function Uhe(n){var e=Ne(n||null),t=Ne();function i(){clearTimeout(t.value)}function a(o){e.value=o,i(),t.value=setTimeout(function(){e.value=null,t.value=void 0},100)}function l(){return e.value}return fn(function(){i()}),[a,l]}function Ehe(n,e,t){var i=de(function(){for(var a=[],l=[],o=0,r=0,f=n.value,v=e.value,b=t.value,Z=0;Z=0;r-=1){var f=e[r],v=t&&t[r],b=v&&v[Nu];if(f||b||o){var Z=b||{};Z.columnType;var p=jt(Z,Khe);a.unshift(D("col",P({key:r,style:{width:typeof f=="number"?"".concat(f,"px"):f}},p),null)),o=!0}}return D("colgroup",null,[a])}function zv(n,e){var t,i=e.slots;return D("div",null,[(t=i.default)===null||t===void 0?void 0:t.call(i)])}zv.displayName="Panel";var Hhe=0,Phe=He({name:"Summary",props:["fixed"],setup:function(e,t){var i=t.slots,a=_r(),l="table-summary-uni-key-".concat(++Hhe),o=de(function(){return e.fixed===""||e.fixed});return qt(function(){a.summaryCollect(l,o.value)}),fn(function(){a.summaryCollect(l,!1)}),function(){var r;return(r=i.default)===null||r===void 0?void 0:r.call(i)}}});const Qhe=Phe,Bhe=He({compatConfig:{MODE:3},name:"FooterRow",setup:function(e,t){var i=t.slots;return function(){var a;return D("tr",null,[(a=i.default)===null||a===void 0?void 0:a.call(i)])}}});var sS=Symbol("SummaryContextProps"),Ahe=function(e){hn(sS,e)},_he=function(){return un(sS,{})};const $he=He({name:"SummaryCell",props:["index","colSpan","rowSpan","align"],setup:function(e,t){var i=t.attrs,a=t.slots,l=_r(),o=_he();return function(){var r=e.index,f=e.colSpan,v=f===void 0?1:f,b=e.rowSpan,Z=e.align,p=l.prefixCls,y=l.direction,X=o.scrollColumnIndex,m=o.stickyOffsets,N=o.flattenColumns,G=r+v-1,d=G+1===X?v+1:v,u=WX(r,r+d-1,N,m,y);return D(Gp,P({class:i.class,index:r,component:"td",prefixCls:p,record:null,dataIndex:null,align:Z,colSpan:d,rowSpan:b,customRender:function(){var h;return(h=a.default)===null||h===void 0?void 0:h.call(a)}},u),null)}}}),Zb=He({name:"Footer",inheritAttrs:!1,props:["stickyOffsets","flattenColumns"],setup:function(e,t){var i=t.slots,a=_r();return Ahe(zn({stickyOffsets:Ot(e,"stickyOffsets"),flattenColumns:Ot(e,"flattenColumns"),scrollColumnIndex:de(function(){var l=e.flattenColumns.length-1,o=e.flattenColumns[l];return o!=null&&o.scrollbar?l:null})})),function(){var l,o=a.prefixCls;return D("tfoot",{class:"".concat(o,"-summary")},[(l=i.default)===null||l===void 0?void 0:l.call(i)])}}});var qhe=Qhe;function efe(n){var e,t=n.prefixCls,i=n.record,a=n.onExpand,l=n.expanded,o=n.expandable,r="".concat(t,"-row-expand-icon");if(!o)return D("span",{class:[r,"".concat(t,"-row-spaced")]},null);var f=function(b){a(i,b),b.stopPropagation()};return D("span",{class:(e={},ce(e,r,!0),ce(e,"".concat(t,"-row-expanded"),l),ce(e,"".concat(t,"-row-collapsed"),!l),e),onClick:f},null)}function tfe(n,e,t){var i=[];function a(l){(l||[]).forEach(function(o,r){i.push(e(o,r)),a(o[t])})}return a(n),i}const nfe=He({name:"StickyScrollBar",inheritAttrs:!1,props:["offsetScroll","container","scrollBodyRef","scrollBodySizeInfo"],emits:["scroll"],setup:function(e,t){var i=t.emit,a=t.expose,l=_r(),o=Ne(0),r=Ne(0),f=Ne(0);qt(function(){o.value=e.scrollBodySizeInfo.scrollWidth||0,r.value=e.scrollBodySizeInfo.clientWidth||0,f.value=o.value&&r.value*(r.value/o.value)},{flush:"post"});var v=Ne(),b=rS({scrollLeft:0,isHiddenScrollBar:!0}),Z=ft(b,2),p=Z[0],y=Z[1],X=Ne({delta:0,x:0}),m=Ne(!1),N=function(){m.value=!1},G=function(C){X.value={delta:C.pageX-p.value.scrollLeft,x:0},m.value=!0,C.preventDefault()},d=function(C){var x,R=C||((x=window)===null||x===void 0?void 0:x.event),g=R.buttons;if(!m.value||g===0){m.value&&(m.value=!1);return}var S=X.value.x+C.pageX-X.value.x-X.value.delta;S<=0&&(S=0),S+f.value>=r.value&&(S=r.value-f.value),i("scroll",{scrollLeft:S/r.value*(o.value+2)}),X.value.x=C.pageX},u=function(){if(e.scrollBodyRef.value){var C=i0(e.scrollBodyRef.value).top,x=C+e.scrollBodyRef.value.offsetHeight,R=e.container===window?document.documentElement.scrollTop+window.innerHeight:i0(e.container).top+e.container.clientHeight;x-xu()<=R||C>=R-e.offsetScroll?y(function(g){return P(P({},g),{},{isHiddenScrollBar:!0})}):y(function(g){return P(P({},g),{},{isHiddenScrollBar:!1})})}},s=function(C){y(function(x){return P(P({},x),{},{scrollLeft:C/o.value*r.value||0})})};a({setScrollLeft:s});var h=null,c=null,W=null,M=null;Kt(function(){h=hi(document.body,"mouseup",N,!1),c=hi(document.body,"mousemove",d,!1),W=hi(window,"resize",u,!1)}),I0(function(){cn(function(){u()})}),Kt(function(){setTimeout(function(){rt([f,m],function(){u()},{immediate:!0,flush:"post"})})}),rt(function(){return e.container},function(){var w;(w=M)===null||w===void 0||w.remove(),M=hi(e.container,"scroll",u,!1)},{immediate:!0,flush:"post"}),fn(function(){var w,C,x,R;(w=h)===null||w===void 0||w.remove(),(C=c)===null||C===void 0||C.remove(),(x=M)===null||x===void 0||x.remove(),(R=W)===null||R===void 0||R.remove()}),rt(function(){return P({},p.value)},function(w,C){w.isHiddenScrollBar!==(C==null?void 0:C.isHiddenScrollBar)&&!w.isHiddenScrollBar&&y(function(x){var R=e.scrollBodyRef.value;return R?P(P({},x),{},{scrollLeft:R.scrollLeft/R.scrollWidth*R.clientWidth}):x})},{immediate:!0});var I=xu();return function(){if(o.value<=r.value||!f.value||p.value.isHiddenScrollBar)return null;var w=l.prefixCls;return D("div",{style:{height:"".concat(I,"px"),width:"".concat(r.value,"px"),bottom:"".concat(e.offsetScroll,"px")},class:"".concat(w,"-sticky-scroll")},[D("div",{onMousedown:G,ref:v,class:_e("".concat(w,"-sticky-scroll-bar"),ce({},"".concat(w,"-sticky-scroll-bar-active"),m)),style:{width:"".concat(f.value,"px"),transform:"translate3d(".concat(p.value.scrollLeft,"px, 0, 0)")}},null)])}}});var eV=Yc()?window:null;function ife(n,e){return de(function(){var t=Yt(n.value)==="object"?n.value:{},i=t.offsetHeader,a=i===void 0?0:i,l=t.offsetSummary,o=l===void 0?0:l,r=t.offsetScroll,f=r===void 0?0:r,v=t.getContainer,b=v===void 0?function(){return eV}:v,Z=b()||eV,p=!!n.value;return{isSticky:p,stickyClassName:p?"".concat(e.value,"-sticky-holder"):"",offsetHeader:a,offsetSummary:o,offsetScroll:f,container:Z}})}function lfe(n,e){return de(function(){for(var t=[],i=n.value,a=e.value,l=0;l1?e-1:0),i=1;i0)):(L(qe>0),J(qe0?a.value:n.value}),y=Math.ceil((a.value||n.value)/p.pageSize);return p.current>y&&(p.current=y||1),p}),b=function(y,X){i.value!==!1&&f({current:y??1,pageSize:X||v.value.pageSize})},Z=function(y,X){if(i.value){var m,N;(m=(N=i.value).onChange)===null||m===void 0||m.call(N,y,X)}b(y,X),t(y,X||v.value.pageSize)};return[de(function(){return i.value===!1?{}:P(P({},v.value),{},{onChange:Z})}),b]}function hfe(n,e,t){var i=Gn({});rt([n,e,t],function(){var l=new Map,o=t.value,r=e.value;function f(v){v.forEach(function(b,Z){var p=o(b,Z);l.set(p,b),b&&Yt(b)==="object"&&r in b&&f(b[r]||[])})}f(n.value),i.value={kvMap:l}},{deep:!0,immediate:!0});function a(l){return i.value.kvMap.get(l)}return[a]}var Go={},Jv="SELECT_ALL",Dv="SELECT_INVERT",Ov="SELECT_NONE",ffe=[];function cS(n,e){var t=[];return(n||[]).forEach(function(i){t.push(i),i&&Yt(i)==="object"&&e in i&&(t=[].concat(yt(t),yt(cS(i[e],e))))}),t}function bfe(n,e){var t=de(function(){var g=n.value||{},S=g.checkStrictly,L=S===void 0?!0:S;return P(P({},g),{},{checkStrictly:L})}),i=Wi(t.value.selectedRowKeys||t.value.defaultSelectedRowKeys||ffe,{value:de(function(){return t.value.selectedRowKeys})}),a=ft(i,2),l=a[0],o=a[1],r=Gn(new Map),f=function(S){if(t.value.preserveSelectedRowKeys){var L=new Map;S.forEach(function(V){var Y=e.getRecordByKey(V);!Y&&r.value.has(V)&&(Y=r.value.get(V)),L.set(V,Y)}),r.value=L}};qt(function(){f(l.value)});var v=de(function(){return t.value.checkStrictly?null:Uh(e.data.value,{externalGetKey:e.getRowKey.value,childrenPropName:e.childrenColumnName.value}).keyEntities}),b=de(function(){return cS(e.pageData.value,e.childrenColumnName.value)}),Z=de(function(){var g=new Map,S=e.getRowKey.value,L=t.value.getCheckboxProps;return b.value.forEach(function(V,Y){var T=S(V,Y),J=(L?L(V):null)||{};g.set(T,J)}),g}),p=up(v),y=p.maxLevel,X=p.levelEntities,m=function(S){var L;return!!((L=Z.value.get(e.getRowKey.value(S)))!==null&&L!==void 0&&L.disabled)},N=de(function(){if(t.value.checkStrictly)return[l.value||[],[]];var g=ir(l.value,!0,v.value,y.value,X.value,m),S=g.checkedKeys,L=g.halfCheckedKeys;return[S||[],L]}),G=de(function(){return N.value[0]}),d=de(function(){return N.value[1]}),u=de(function(){var g=t.value.type==="radio"?G.value.slice(0,1):G.value;return new Set(g)}),s=de(function(){return t.value.type==="radio"?new Set:new Set(d.value)}),h=di(null),c=ft(h,2),W=c[0],M=c[1],I=function(S){var L,V;f(S);var Y=t.value,T=Y.preserveSelectedRowKeys,J=Y.onChange,U=e.getRecordByKey;T?(L=S,V=S.map(function(K){return r.value.get(K)})):(L=[],V=[],S.forEach(function(K){var H=U(K);H!==void 0&&(L.push(K),V.push(H))})),o(L),J==null||J(L,V)},w=function(S,L,V,Y){var T=t.value.onSelect,J=e||{},U=J.getRecordByKey;if(T){var K=V.map(function(H){return U(H)});T(U(S),L,K,Y)}I(V)},C=de(function(){var g=t.value,S=g.onSelectInvert,L=g.onSelectNone,V=g.selections,Y=g.hideSelectAll,T=e.data,J=e.pageData,U=e.getRowKey,K=e.locale;if(!V||Y)return null;var H=V===!0?[Jv,Dv,Ov]:V;return H.map(function(k){return k===Jv?{key:"all",text:K.value.selectionAll,onSelect:function(){I(T.value.map(function(O,Q){return U.value(O,Q)}).filter(function(O){var Q=Z.value.get(O);return!(Q!=null&&Q.disabled)||u.value.has(O)}))}}:k===Dv?{key:"invert",text:K.value.selectInvert,onSelect:function(){var O=new Set(u.value);J.value.forEach(function(oe,se){var he=U.value(oe,se),pe=Z.value.get(he);pe!=null&&pe.disabled||(O.has(he)?O.delete(he):O.add(he))});var Q=Array.from(O);S&&(jn(!1,"Table","`onSelectInvert` will be removed in future. Please use `onChange` instead."),S(Q)),I(Q)}}:k===Ov?{key:"none",text:K.value.selectNone,onSelect:function(){L==null||L(),I(Array.from(u.value).filter(function(O){var Q=Z.value.get(O);return Q==null?void 0:Q.disabled}))}}:k})}),x=de(function(){return b.value.length}),R=function(S){var L,V=t.value,Y=V.onSelectAll,T=V.onSelectMultiple,J=V.columnWidth,U=V.type,K=V.fixed,H=V.renderCell,k=V.hideSelectAll,F=V.checkStrictly,O=e.prefixCls,Q=e.getRecordByKey,oe=e.getRowKey,se=e.expandType,he=e.getPopupContainer;if(!n.value)return S.filter(function(De){return De!==Go});var pe=S.slice(),re=new Set(u.value),_=b.value.map(oe.value).filter(function(De){return!Z.value.get(De).disabled}),E=_.every(function(De){return re.has(De)}),$=_.some(function(De){return re.has(De)}),ae=function(){var me=[];E?_.forEach(function(Me){re.delete(Me),me.push(Me)}):_.forEach(function(Me){re.has(Me)||(re.add(Me),me.push(Me))});var Ve=Array.from(re);Y==null||Y(!E,Ve.map(function(Me){return Q(Me)}),me.map(function(Me){return Q(Me)})),I(Ve)},le;if(U!=="radio"){var ee;if(C.value){var te=D(Yi,{getPopupContainer:he.value},{default:function(){return[C.value.map(function(me,Ve){var Me=me.key,Ie=me.text,Ze=me.onSelect;return D(Yi.Item,{key:Me||Ve,onClick:function(){Ze==null||Ze(_)}},{default:function(){return[Ie]}})})]}});ee=D("div",{class:"".concat(O.value,"-selection-extra")},[D(Hr,{overlay:te,getPopupContainer:he.value},{default:function(){return[D("span",null,[D(Fh,null,null)])]}})])}var be=b.value.map(function(De,me){var Ve=oe.value(De,me),Me=Z.value.get(Ve)||{};return P({checked:re.has(Ve)},Me)}).filter(function(De){var me=De.disabled;return me}),ne=!!be.length&&be.length===x.value,B=ne&&be.every(function(De){var me=De.checked;return me}),q=ne&&be.some(function(De){var me=De.checked;return me});le=!k&&D("div",{class:"".concat(O.value,"-selection")},[D(lr,{checked:ne?B:!!x.value&&E,indeterminate:ne?!B&&q:!E&&$,onChange:ae,disabled:x.value===0||ne,skipGroup:!0},null),ee])}var ue;U==="radio"?ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie);return{node:D(ta,P(P({},Z.value.get(Ie)),{},{checked:Ze,onClick:function(ye){return ye.stopPropagation()},onChange:function(ye){re.has(Ie)||w(Ie,!0,[Ie],ye.nativeEvent)}}),null),checked:Ze}}:ue=function(me){var Ve=me.record,Me=me.index,Ie=oe.value(Ve,Me),Ze=re.has(Ie),Ce=s.value.has(Ie),ye=Z.value.get(Ie),Ue;if(se.value==="nest")Ue=Ce,jn(typeof(ye==null?void 0:ye.indeterminate)!="boolean","Table","set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.");else{var qe;Ue=(qe=ye==null?void 0:ye.indeterminate)!==null&&qe!==void 0?qe:Ce}return{node:D(lr,P(P({},ye),{},{indeterminate:Ue,checked:Ze,skipGroup:!0,onClick:function(Oe){return Oe.stopPropagation()},onChange:function(Oe){var Ke=Oe.nativeEvent,Xe=Ke.shiftKey,Re=-1,Ae=-1;if(Xe&&F){var ct=new Set([W.value,Ie]);_.some(function(Pt,Ut){if(ct.has(Pt))if(Re===-1)Re=Ut;else return Ae=Ut,!0;return!1})}if(Ae!==-1&&Re!==Ae&&F){var lt=_.slice(Re,Ae+1),ot=[];Ze?lt.forEach(function(Pt){re.has(Pt)&&(ot.push(Pt),re.delete(Pt))}):lt.forEach(function(Pt){re.has(Pt)||(ot.push(Pt),re.add(Pt))});var wt=Array.from(re);T==null||T(!Ze,wt.map(function(Pt){return Q(Pt)}),ot.map(function(Pt){return Q(Pt)})),I(wt)}else{var Mt=G.value;if(F){var xt=Ze?vo(Mt,Ie):ns(Mt,Ie);w(Ie,!Ze,xt,Ke)}else{var Gt=ir([].concat(yt(Mt),[Ie]),!0,v.value,y.value,X.value,m),Zt=Gt.checkedKeys,Tt=Gt.halfCheckedKeys,Ct=Zt;if(Ze){var St=new Set(Zt);St.delete(Ie),Ct=ir(Array.from(St),{checked:!1,halfCheckedKeys:Tt},v.value,y.value,X.value,m).checkedKeys}w(Ie,!Ze,Ct,Ke)}}M(Ie)}}),null),checked:Ze}};var ve=function(me){var Ve=me.record,Me=me.index,Ie=ue({record:Ve,index:Me}),Ze=Ie.node,Ce=Ie.checked;return H?H(Ce,Ve,Me,Ze):Ze};if(!pe.includes(Go))if(pe.findIndex(function(De){var me;return((me=De[Nu])===null||me===void 0?void 0:me.columnType)==="EXPAND_COLUMN"})===0){var Ge=pe,Je=uG(Ge),xe=Je[0],ke=Je.slice(1);pe=[xe,Go].concat(yt(ke))}else pe=[Go].concat(yt(pe));var Pe=pe.indexOf(Go);pe=pe.filter(function(De,me){return De!==Go||me===Pe});var Be=pe[Pe-1],Te=pe[Pe+1],we=K;we===void 0&&((Te==null?void 0:Te.fixed)!==void 0?we=Te.fixed:(Be==null?void 0:Be.fixed)!==void 0&&(we=Be.fixed)),we&&Be&&((L=Be[Nu])===null||L===void 0?void 0:L.columnType)==="EXPAND_COLUMN"&&Be.fixed===void 0&&(Be.fixed=we);var Se=ce({fixed:we,width:J,className:"".concat(O.value,"-selection-column"),title:t.value.columnTitle||le,customRender:ve},Nu,{class:"".concat(O.value,"-selection-col")});return pe.map(function(De){return De===Go?Se:De})};return[R,u]}var mfe={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"}}]},name:"caret-down",theme:"outlined"};const pfe=mfe;function iV(n){for(var e=1;e0&&arguments[0]!==void 0?arguments[0]:[],e=ti(n),t=[];return e.forEach(function(i){var a,l,o;if(i){for(var r=i.key,f=((a=i.props)===null||a===void 0?void 0:a.style)||{},v=((l=i.props)===null||l===void 0?void 0:l.class)||"",b=i.props||{},Z=0,p=Object.entries(b);Z0&&arguments[0]!==void 0?arguments[0]:[],e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],t=n.length,i=e.length;if(Math.abs(t-i)!==1)return{add:!1,key:null};function a(l,o){var r=new Map;l.forEach(function(v){r.set(v,!0)});var f=o.filter(function(v){return!r.has(v)});return f.length===1?f[0]:null}return t ").concat(e);return e}const Ffe=He({compatConfig:{MODE:3},name:"NodeList",inheritAttrs:!1,props:one,setup:function(e,t){var i=t.expose,a=t.attrs,l=Ne(),o=Ne(),r=y9(),f=r.expandedKeys,v=r.flattenNodes;i({scrollTo:function(d){l.value.scrollTo(d)},getIndentWidth:function(){return o.value.offsetWidth}});var b=Gn(v.value),Z=Gn([]),p=Ne(null);function y(){b.value=v.value,Z.value=[],p.value=null,e.onListChangeEnd()}var X=x1();rt([function(){return f.value.slice()},v],function(G,d){var u=ft(G,2),s=u[0],h=u[1],c=ft(d,2),W=c[0],M=c[1],I=Cfe(W,s);if(I.key!==null){var w=e.virtual,C=e.height,x=e.itemHeight;if(I.add){var R=M.findIndex(function(T){var J=T.key;return J===I.key}),g=fV(uV(M,h,I.key),w,C,x),S=M.slice();S.splice(R+1,0,hV),b.value=S,Z.value=g,p.value="show"}else{var L=h.findIndex(function(T){var J=T.key;return J===I.key}),V=fV(uV(h,M,I.key),w,C,x),Y=h.slice();Y.splice(L+1,0,hV),b.value=Y,Z.value=V,p.value="hide"}}else M!==h&&(b.value=h)}),rt(function(){return X.value.dragging},function(G){G||y()});var m=de(function(){return e.motion===void 0?b.value:v.value}),N=function(){e.onActiveChange(null)};return function(){var G=P(P({},e),a),d=G.prefixCls;G.selectable,G.checkable;var u=G.disabled,s=G.motion,h=G.height,c=G.itemHeight,W=G.virtual,M=G.focusable,I=G.activeItem,w=G.focused,C=G.tabindex,x=G.onKeydown,R=G.onFocus,g=G.onBlur,S=G.onListChangeStart;G.onListChangeEnd;var L=jt(G,Sfe);return D(ln,null,[w&&I&&D("span",{style:dV,"aria-live":"assertive"},[kfe(I)]),D("div",null,[D("input",{style:dV,disabled:M===!1||u,tabindex:M!==!1?C:null,onKeydown:x,onFocus:R,onBlur:g,value:"",onChange:zfe,"aria-label":"for screen reader"},null)]),D("div",{class:"".concat(d,"-treenode"),"aria-hidden":!0,style:{position:"absolute",pointerEvents:"none",visibility:"hidden",height:0,overflow:"hidden"}},[D("div",{class:"".concat(d,"-indent")},[D("div",{ref:o,class:"".concat(d,"-indent-unit")},null)])]),D(Xx,P(P({},dn(L,["onActiveChange"])),{},{data:m.value,itemKey:bV,height:h,fullHeight:!1,virtual:W,itemHeight:c,prefixCls:"".concat(d,"-list"),ref:l,onVisibleChange:function(Y,T){var J=new Set(Y),U=T.filter(function(K){return!J.has(K)});U.some(function(K){return bV(K)===Nc})&&y()}}),{default:function(Y){var T=Y.pos,J=Xn({},(fp(Y.data),Y.data)),U=Y.title,K=Y.key,H=Y.isStart,k=Y.isEnd,F=jh(K,T);return delete J.key,delete J.children,D(xfe,P(P({},J),{},{eventKey:F,title:U,active:!!I&&K===I.key,data:Y.data,isStart:H,isEnd:k,motion:s,motionNodes:K===Nc?Z.value:null,motionType:p.value,onMotionStart:S,onMotionEnd:y,onMousemove:N}),null)}})])}}});function Jfe(n){var e=n.dropPosition,t=n.dropLevelOffset,i=n.indent,a={pointerEvents:"none",position:"absolute",right:0,backgroundColor:"red",height:"".concat(2,"px")};switch(e){case-1:a.top=0,a.left="".concat(-t*i,"px");break;case 1:a.bottom=0,a.left="".concat(-t*i,"px");break;case 0:a.bottom=0,a.left="".concat(i);break}return D("div",{style:a},null)}var Dfe=10;const fS=He({compatConfig:{MODE:3},name:"Tree",inheritAttrs:!1,slots:["checkable","title","icon","titleRender"],props:pn(Z9(),{prefixCls:"vc-tree",showLine:!1,showIcon:!0,selectable:!0,multiple:!1,checkable:!1,disabled:!1,checkStrictly:!1,draggable:!1,defaultExpandParent:!0,autoExpandParent:!1,defaultExpandAll:!1,defaultExpandedKeys:[],defaultCheckedKeys:[],defaultSelectedKeys:[],dropIndicatorRender:Jfe,allowDrop:function(){return!0}}),setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne(!1),r={},f=Ne(),v=Gn([]),b=Gn([]),Z=Gn([]),p=Gn([]),y=Gn([]),X=Gn([]),m={},N=zn({draggingNodeKey:null,dragChildrenKeys:[],dropTargetKey:null,dropPosition:null,dropContainerKey:null,dropLevelOffset:null,dropTargetPos:null,dropAllowed:!0,dragOverNodeKey:null}),G=Gn([]);rt([function(){return e.treeData},function(){return e.children}],function(){G.value=e.treeData!==void 0?on(e.treeData).slice():mv(on(e.children))},{immediate:!0,deep:!0});var d=Gn({}),u=Ne(!1),s=Ne(null),h=Ne(!1),c=de(function(){return rp(e.fieldNames)}),W=Ne(),M=null,I=null,w=null,C=de(function(){return{expandedKeysSet:x.value,selectedKeysSet:R.value,loadedKeysSet:g.value,loadingKeysSet:S.value,checkedKeysSet:L.value,halfCheckedKeysSet:V.value,dragOverNodeKey:N.dragOverNodeKey,dropPosition:N.dropPosition,keyEntities:d.value}}),x=de(function(){return new Set(X.value)}),R=de(function(){return new Set(v.value)}),g=de(function(){return new Set(p.value)}),S=de(function(){return new Set(y.value)}),L=de(function(){return new Set(b.value)}),V=de(function(){return new Set(Z.value)});qt(function(){if(G.value){var Te=Uh(G.value,{fieldNames:c.value});d.value=P(ce({},Nc,hS),Te.keyEntities)}});var Y=!1;rt([function(){return e.expandedKeys},function(){return e.autoExpandParent},d],function(Te,we){var Se=ft(Te,2);Se[0];var De=Se[1],me=ft(we,2);me[0];var Ve=me[1],Me=X.value;if(e.expandedKeys!==void 0||Y&&De!==Ve)Me=e.autoExpandParent||!Y&&e.defaultExpandParent?bv(e.expandedKeys,d.value):e.expandedKeys;else if(!Y&&e.defaultExpandAll){var Ie=P({},d.value);delete Ie[Nc],Me=Object.keys(Ie).map(function(Ze){return Ie[Ze].key})}else!Y&&e.defaultExpandedKeys&&(Me=e.autoExpandParent||e.defaultExpandParent?bv(e.defaultExpandedKeys,d.value):e.defaultExpandedKeys);Me&&(X.value=Me),Y=!0},{immediate:!0});var T=Gn([]);qt(function(){T.value=mne(G.value,X.value,c.value)}),qt(function(){e.selectable&&(e.selectedKeys!==void 0?v.value=vw(e.selectedKeys,e):!Y&&e.defaultSelectedKeys&&(v.value=vw(e.defaultSelectedKeys,e)))});var J=up(d),U=J.maxLevel,K=J.levelEntities;qt(function(){if(e.checkable){var Te;if(e.checkedKeys!==void 0?Te=fZ(e.checkedKeys)||{}:!Y&&e.defaultCheckedKeys?Te=fZ(e.defaultCheckedKeys)||{}:G.value&&(Te=fZ(e.checkedKeys)||{checkedKeys:b.value,halfCheckedKeys:Z.value}),Te){var we=Te,Se=we.checkedKeys,De=Se===void 0?[]:Se,me=we.halfCheckedKeys,Ve=me===void 0?[]:me;if(!e.checkStrictly){var Me=ir(De,!0,d.value,U.value,K.value);De=Me.checkedKeys,Ve=Me.halfCheckedKeys}b.value=De,Z.value=Ve}}}),qt(function(){e.loadedKeys&&(p.value=e.loadedKeys)});var H=function(){Xn(N,{dragOverNodeKey:null,dropPosition:null,dropLevelOffset:null,dropTargetKey:null,dropContainerKey:null,dropTargetPos:null,dropAllowed:!1})},k=function(we){W.value.scrollTo(we)};rt(function(){return e.activeKey},function(){e.activeKey!==void 0&&(s.value=e.activeKey)},{immediate:!0}),rt(s,function(Te){cn(function(){Te!==null&&k({key:Te})})},{immediate:!0,flush:"post"});var F=function(we){e.expandedKeys===void 0&&(X.value=we)},O=function(){N.draggingNodeKey!==null&&Xn(N,{draggingNodeKey:null,dropPosition:null,dropContainerKey:null,dropTargetKey:null,dropLevelOffset:null,dropAllowed:!0,dragOverNodeKey:null}),M=null,w=null},Q=function(we,Se){var De=e.onDragend;N.dragOverNodeKey=null,O(),De==null||De({event:we,node:Se.eventData}),I=null},oe=function Te(we){Q(we,null),window.removeEventListener("dragend",Te)},se=function(we,Se){var De=e.onDragstart,me=Se.eventKey,Ve=Se.eventData;I=Se,M={x:we.clientX,y:we.clientY};var Me=vo(X.value,me);N.draggingNodeKey=me,N.dragChildrenKeys=dne(me,d.value),f.value=W.value.getIndentWidth(),F(Me),window.addEventListener("dragend",oe),De&&De({event:we,node:Ve})},he=function(we,Se){var De=e.onDragenter,me=e.onExpand,Ve=e.allowDrop,Me=e.direction,Ie=Se.pos,Ze=Se.eventKey;if(w!==Ze&&(w=Ze),!I){H();return}var Ce=Zw(we,I,Se,f.value,M,Ve,T.value,d.value,x.value,Me),ye=Ce.dropPosition,Ue=Ce.dropLevelOffset,qe=Ce.dropTargetKey,ie=Ce.dropContainerKey,Oe=Ce.dropTargetPos,Ke=Ce.dropAllowed,Xe=Ce.dragOverNodeKey;if(N.dragChildrenKeys.indexOf(qe)!==-1||!Ke){H();return}if(r||(r={}),Object.keys(r).forEach(function(Re){clearTimeout(r[Re])}),I.eventKey!==Se.eventKey&&(r[Ie]=window.setTimeout(function(){if(N.draggingNodeKey!==null){var Re=X.value.slice(),Ae=d.value[Se.eventKey];Ae&&(Ae.children||[]).length&&(Re=ns(X.value,Se.eventKey)),F(Re),me&&me(Re,{node:Se.eventData,expanded:!0,nativeEvent:we})}},800)),I.eventKey===qe&&Ue===0){H();return}Xn(N,{dragOverNodeKey:Xe,dropPosition:ye,dropLevelOffset:Ue,dropTargetKey:qe,dropContainerKey:ie,dropTargetPos:Oe,dropAllowed:Ke}),De&&De({event:we,node:Se.eventData,expandedKeys:X.value})},pe=function(we,Se){var De=e.onDragover,me=e.allowDrop,Ve=e.direction;if(I){var Me=Zw(we,I,Se,f.value,M,me,T.value,d.value,x.value,Ve),Ie=Me.dropPosition,Ze=Me.dropLevelOffset,Ce=Me.dropTargetKey,ye=Me.dropContainerKey,Ue=Me.dropAllowed,qe=Me.dropTargetPos,ie=Me.dragOverNodeKey;N.dragChildrenKeys.indexOf(Ce)!==-1||!Ue||(I.eventKey===Ce&&Ze===0?N.dropPosition===null&&N.dropLevelOffset===null&&N.dropTargetKey===null&&N.dropContainerKey===null&&N.dropTargetPos===null&&N.dropAllowed===!1&&N.dragOverNodeKey===null||H():Ie===N.dropPosition&&Ze===N.dropLevelOffset&&Ce===N.dropTargetKey&&ye===N.dropContainerKey&&qe===N.dropTargetPos&&Ue===N.dropAllowed&&ie===N.dragOverNodeKey||Xn(N,{dropPosition:Ie,dropLevelOffset:Ze,dropTargetKey:Ce,dropContainerKey:ye,dropTargetPos:qe,dropAllowed:Ue,dragOverNodeKey:ie}),De&&De({event:we,node:Se.eventData}))}},re=function(we,Se){w===Se.eventKey&&!we.currentTarget.contains(we.relatedTarget)&&(H(),w=null);var De=e.onDragleave;De&&De({event:we,node:Se.eventData})},_=function(we,Se){var De,me=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Ve=N.dragChildrenKeys,Me=N.dropPosition,Ie=N.dropTargetKey,Ze=N.dropTargetPos,Ce=N.dropAllowed;if(Ce){var ye=e.onDrop;if(N.dragOverNodeKey=null,O(),Ie!==null){var Ue=P(P({},pv(Ie,on(C.value))),{},{active:((De=xe.value)===null||De===void 0?void 0:De.key)===Ie,data:d.value[Ie].node});Ve.indexOf(Ie);var qe=S1(Ze),ie={event:we,node:yv(Ue),dragNode:I?I.eventData:null,dragNodesKeys:[I.eventKey].concat(Ve),dropToGap:Me!==0,dropPosition:Me+Number(qe[qe.length-1])};me||ye==null||ye(ie),I=null}}},E=function(we,Se){var De=e.onClick;De&&De(we,Se)},$=function(we,Se){var De=e.onDblclick;De&&De(we,Se)},ae=function(we,Se){var De=v.value,me=e.onSelect,Ve=e.multiple,Me=Se.selected,Ie=Se[c.value.key],Ze=!Me;Ze?Ve?De=ns(De,Ie):De=[Ie]:De=vo(De,Ie);var Ce=d.value,ye=De.map(function(Ue){var qe=Ce[Ue];return qe?qe.node:null}).filter(function(Ue){return Ue});e.selectedKeys===void 0&&(v.value=De),me&&me(De,{event:"select",selected:Ze,node:Se,selectedNodes:ye,nativeEvent:we})},le=function(we,Se,De){var me=e.checkStrictly,Ve=e.onCheck,Me=Se[c.value.key],Ie,Ze={event:"check",node:Se,checked:De,nativeEvent:we},Ce=d.value;if(me){var ye=De?ns(b.value,Me):vo(b.value,Me),Ue=vo(Z.value,Me);Ie={checked:ye,halfChecked:Ue},Ze.checkedNodes=ye.map(function(Re){return Ce[Re]}).filter(function(Re){return Re}).map(function(Re){return Re.node}),e.checkedKeys===void 0&&(b.value=ye)}else{var qe=ir([].concat(yt(b.value),[Me]),!0,Ce,U.value,K.value),ie=qe.checkedKeys,Oe=qe.halfCheckedKeys;if(!De){var Ke=new Set(ie);Ke.delete(Me);var Xe=ir(Array.from(Ke),{checked:!1,halfCheckedKeys:Oe},Ce,U.value,K.value);ie=Xe.checkedKeys,Oe=Xe.halfCheckedKeys}Ie=ie,Ze.checkedNodes=[],Ze.checkedNodesPositions=[],Ze.halfCheckedKeys=Oe,ie.forEach(function(Re){var Ae=Ce[Re];if(Ae){var ct=Ae.node,lt=Ae.pos;Ze.checkedNodes.push(ct),Ze.checkedNodesPositions.push({node:ct,pos:lt})}}),e.checkedKeys===void 0&&(b.value=ie,Z.value=Oe)}Ve&&Ve(Ie,Ze)},ee=function(we){var Se=we[c.value.key],De=new Promise(function(me,Ve){var Me=e.loadData,Ie=e.onLoad;if(!Me||g.value.has(Se)||S.value.has(Se))return null;var Ze=Me(we);Ze.then(function(){var Ce=ns(p.value,Se),ye=vo(y.value,Se);Ie&&Ie(Ce,{event:"load",node:we}),e.loadedKeys===void 0&&(p.value=Ce),y.value=ye,me()}).catch(function(Ce){var ye=vo(y.value,Se);if(y.value=ye,m[Se]=(m[Se]||0)+1,m[Se]>=Dfe){var Ue=ns(p.value,Se);e.loadedKeys===void 0&&(p.value=Ue),me()}Ve(Ce)}),y.value=ns(y.value,Se)});return De.catch(function(){}),De},te=function(we,Se){var De=e.onMouseenter;De&&De({event:we,node:Se})},be=function(we,Se){var De=e.onMouseleave;De&&De({event:we,node:Se})},ne=function(we,Se){var De=e.onRightClick;De&&(we.preventDefault(),De({event:we,node:Se}))},B=function(we){var Se=e.onFocus;u.value=!0,Se&&Se(we)},q=function(we){var Se=e.onBlur;u.value=!1,Je(null),Se&&Se(we)},ue=function(we,Se){var De=X.value,me=e.onExpand,Ve=e.loadData,Me=Se.expanded,Ie=Se[c.value.key];if(!h.value){De.indexOf(Ie);var Ze=!Me;if(Ze?De=ns(De,Ie):De=vo(De,Ie),F(De),me&&me(De,{node:Se,expanded:Ze,nativeEvent:we}),Ze&&Ve){var Ce=ee(Se);Ce&&Ce.then(function(){}).catch(function(ye){var Ue=vo(X.value,Ie);F(Ue),Promise.reject(ye)})}}},ve=function(){h.value=!0},Ge=function(){setTimeout(function(){h.value=!1})},Je=function(we){var Se=e.onActiveChange;s.value!==we&&(e.activeKey!==void 0&&(s.value=we),we!==null&&k({key:we}),Se&&Se(we))},xe=de(function(){return s.value===null?null:T.value.find(function(Te){var we=Te.key;return we===s.value})||null}),ke=function(we){var Se=T.value.findIndex(function(Ve){var Me=Ve.key;return Me===s.value});Se===-1&&we<0&&(Se=T.value.length),Se=(Se+we+T.value.length)%T.value.length;var De=T.value[Se];if(De){var me=De.key;Je(me)}else Je(null)},Pe=de(function(){return yv(P(P({},pv(s.value,C.value)),{},{data:xe.value.data,active:!0}))}),Be=function(we){var Se=e.onKeydown,De=e.checkable,me=e.selectable;switch(we.which){case bt.UP:{ke(-1),we.preventDefault();break}case bt.DOWN:{ke(1),we.preventDefault();break}}var Ve=xe.value;if(Ve&&Ve.data){var Me=Ve.data.isLeaf===!1||!!(Ve.data.children||[]).length,Ie=Pe.value;switch(we.which){case bt.LEFT:{Me&&x.value.has(s.value)?ue({},Ie):Ve.parent&&Je(Ve.parent.key),we.preventDefault();break}case bt.RIGHT:{Me&&!x.value.has(s.value)?ue({},Ie):Ve.children&&Ve.children.length&&Je(Ve.children[0].key),we.preventDefault();break}case bt.ENTER:case bt.SPACE:{De&&!Ie.disabled&&Ie.checkable!==!1&&!Ie.disableCheckbox?le({},Ie,!L.value.has(s.value)):!De&&me&&!Ie.disabled&&Ie.selectable!==!1&&ae({},Ie);break}}}Se&&Se(we)};return l({onNodeExpand:ue,scrollTo:k,onKeydown:Be,selectedKeys:de(function(){return v.value}),checkedKeys:de(function(){return b.value}),halfCheckedKeys:de(function(){return Z.value}),loadedKeys:de(function(){return p.value}),loadingKeys:de(function(){return y.value}),expandedKeys:de(function(){return X.value})}),la(function(){window.removeEventListener("dragend",oe),o.value=!0}),lne({expandedKeys:X,selectedKeys:v,loadedKeys:p,loadingKeys:y,checkedKeys:b,halfCheckedKeys:Z,expandedKeysSet:x,selectedKeysSet:R,loadedKeysSet:g,loadingKeysSet:S,checkedKeysSet:L,halfCheckedKeysSet:V,flattenNodes:T}),function(){var Te,we=N.draggingNodeKey,Se=N.dropLevelOffset,De=N.dropContainerKey,me=N.dropTargetKey,Ve=N.dropPosition,Me=N.dragOverNodeKey,Ie=e.prefixCls,Ze=e.showLine,Ce=e.focusable,ye=e.tabindex,Ue=ye===void 0?0:ye,qe=e.selectable,ie=e.showIcon,Oe=e.icon,Ke=Oe===void 0?a.icon:Oe,Xe=e.switcherIcon,Re=e.draggable,Ae=e.checkable,ct=e.checkStrictly,lt=e.disabled,ot=e.motion,wt=e.loadData,Mt=e.filterTreeNode,xt=e.height,Gt=e.itemHeight,Zt=e.virtual,Tt=e.dropIndicatorRender,Ct=e.onContextmenu,St=e.onScroll,Pt=e.direction,Ut=i.class,kt=i.style,en=Ys(P(P({},e),i),{aria:!0,data:!0}),nn;return Re&&(Yt(Re)==="object"?nn=Re:typeof Re=="function"?nn={nodeDraggable:Re}:nn={}),D(ine,{value:{prefixCls:Ie,selectable:qe,showIcon:ie,icon:Ke,switcherIcon:Xe,draggable:nn,draggingNodeKey:we,checkable:Ae,customCheckable:a.checkable,checkStrictly:ct,disabled:lt,keyEntities:d.value,dropLevelOffset:Se,dropContainerKey:De,dropTargetKey:me,dropPosition:Ve,dragOverNodeKey:Me,dragging:we!==null,indent:f.value,direction:Pt,dropIndicatorRender:Tt,loadData:wt,filterTreeNode:Mt,onNodeClick:E,onNodeDoubleClick:$,onNodeExpand:ue,onNodeSelect:ae,onNodeCheck:le,onNodeLoad:ee,onNodeMouseEnter:te,onNodeMouseLeave:be,onNodeContextMenu:ne,onNodeDragStart:se,onNodeDragEnter:he,onNodeDragOver:pe,onNodeDragLeave:re,onNodeDragEnd:Q,onNodeDrop:_,slots:a}},{default:function(){return[D("div",{role:"tree",class:_e(Ie,Ut,(Te={},ce(Te,"".concat(Ie,"-show-line"),Ze),ce(Te,"".concat(Ie,"-focused"),u.value),ce(Te,"".concat(Ie,"-active-focused"),s.value!==null),Te))},[D(Ffe,P({ref:W,prefixCls:Ie,style:kt,disabled:lt,selectable:qe,checkable:!!Ae,motion:ot,height:xt,itemHeight:Gt,virtual:Zt,focusable:Ce,focused:u.value,tabindex:Ue,activeItem:xe.value,onFocus:B,onBlur:q,onKeydown:Be,onActiveChange:Je,onListChangeStart:ve,onListChangeEnd:Ge,onContextmenu:Ct,onScroll:St},en),null)])]}})}}});var Ofe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494z"}}]},name:"file",theme:"outlined"};const jfe=Ofe;function mV(n){for(var e=1;e0})}function ZS(n,e){return typeof e=="string"||typeof e=="number"?e==null?void 0:e.toString().toLowerCase().includes(n.trim().toLowerCase()):!1}function vS(n){var e=n.filters,t=n.prefixCls,i=n.filteredKeys,a=n.filterMultiple,l=n.searchValue,o=n.filterSearch;return e.map(function(r,f){var v=String(r.value);if(r.children)return D(mbe,{key:v||f,title:r.text,popupClassName:"".concat(t,"-dropdown-submenu")},{default:function(){return[vS({filters:r.children,prefixCls:t,filteredKeys:i,filterMultiple:a,searchValue:l,filterSearch:o})]}});var b=a?lr:ta,Z=D(pbe,{key:r.value!==void 0?v:f},{default:function(){return[D(b,{checked:i.includes(v)},null),D("span",null,[r.text])]}});return l.trim()?typeof o=="function"?o(l,r)?Z:void 0:ZS(l,r.text)?Z:void 0:Z})}const Zbe=He({name:"FilterDropdown",props:["tablePrefixCls","prefixCls","dropdownPrefixCls","column","filterState","filterMultiple","filterMode","filterSearch","columnKey","triggerFilter","locale","getPopupContainer"],setup:function(e,t){var i=t.slots,a=_C(),l=de(function(){var U;return(U=e.filterMode)!==null&&U!==void 0?U:"menu"}),o=de(function(){var U;return(U=e.filterSearch)!==null&&U!==void 0?U:!1}),r=de(function(){return e.column.filterDropdownVisible}),f=Ne(!1),v=de(function(){var U;return!!(e.filterState&&((U=e.filterState.filteredKeys)!==null&&U!==void 0&&U.length||e.filterState.forceFiltered))}),b=de(function(){var U;return Np((U=e.column)===null||U===void 0?void 0:U.filters)}),Z=de(function(){var U=e.column,K=U.filterDropdown,H=U.slots,k=H===void 0?{}:H,F=U.customFilterDropdown;return K||k.filterDropdown&&a.value[k.filterDropdown]||F&&a.value.customFilterDropdown}),p=de(function(){var U=e.column,K=U.filterIcon,H=U.slots,k=H===void 0?{}:H;return K||k.filterIcon&&a.value[k.filterIcon]||a.value.customFilterIcon}),y=function(K){var H,k;f.value=K,(H=(k=e.column).onFilterDropdownVisibleChange)===null||H===void 0||H.call(k,K)},X=de(function(){return typeof r.value=="boolean"?r.value:f.value}),m=de(function(){var U;return(U=e.filterState)===null||U===void 0?void 0:U.filteredKeys}),N=Gn([]),G=function(K){var H=K.selectedKeys;N.value=H},d=function(K,H){var k=H.node,F=H.checked;e.filterMultiple?G({selectedKeys:K}):G({selectedKeys:F&&k.key?[k.key]:[]})};rt(m,function(){f.value&&G({selectedKeys:m.value||[]})},{immediate:!0});var u=Gn([]),s=Ne(),h=function(K){s.value=setTimeout(function(){u.value=K})},c=function(){clearTimeout(s.value)};fn(function(){clearTimeout(s.value)});var W=Ne(""),M=function(K){var H=K.target.value;W.value=H};rt(f,function(){f.value||(W.value="")});var I=function(K){var H=e.column,k=e.columnKey,F=e.filterState,O=K&&K.length?K:null;if(O===null&&(!F||!F.filteredKeys)||D0(O,F==null?void 0:F.filteredKeys))return null;e.triggerFilter({column:H,key:k,filteredKeys:O})},w=function(){y(!1),I(N.value)},C=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{confirm:!1,closeDropdown:!1},H=K.confirm,k=K.closeDropdown;H&&I([]),k&&y(!1),W.value="",N.value=[]},x=function(){var K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{closeDropdown:!0},H=K.closeDropdown;H&&y(!1),I(N.value)},R=function(K){K&&m.value!==void 0&&(N.value=m.value||[]),y(K),!K&&!Z.value&&w()},g=Nt("",e),S=g.direction,L=function(K){if(K.target.checked){var H=b.value;N.value=H}else N.value=[]},V=function U(K){var H=K.filters;return(H||[]).map(function(k,F){var O=String(k.value),Q={title:k.text,key:k.value!==void 0?O:F};return k.children&&(Q.children=U({filters:k.children})),Q})},Y=de(function(){return V({filters:e.column.filters})}),T=de(function(){return _e(ce({},"".concat(e.dropdownPrefixCls,"-menu-without-submenu"),!ybe(e.column.filters||[])))}),J=function(){var K=N.value,H=e.column,k=e.locale,F=e.tablePrefixCls,O=e.filterMultiple,Q=e.dropdownPrefixCls,oe=e.getPopupContainer,se=e.prefixCls;return(H.filters||[]).length===0?D(ss,{image:ss.PRESENTED_IMAGE_SIMPLE,description:k.filterEmptyText,imageStyle:{height:24},style:{margin:0,padding:"16px 0"}},null):l.value==="tree"?D(ln,null,[D(cV,{filterSearch:o.value,value:W.value,onChange:M,tablePrefixCls:F,locale:k},null),D("div",{class:"".concat(F,"-filter-dropdown-tree")},[O?D(lr,{class:"".concat(F,"-filter-dropdown-checkall"),onChange:L,checked:K.length===b.value.length,indeterminate:K.length>0&&K.length1),"Table","`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected."),Zhe(de(function(){return e.contextSlots})),vhe({onResizeColumn:function(we,Se){o("resizeColumn",we,Se)}});var r=Qu(),f=de(function(){var Te=new Set(Object.keys(r.value).filter(function(we){return r.value[we]}));return e.columns.filter(function(we){return!we.responsive||we.responsive.some(function(Se){return Te.has(Se)})})}),v=Nt("table",e),b=v.size,Z=v.renderEmpty,p=v.direction,y=v.prefixCls,X=v.configProvider,m=de(function(){return e.transformCellText||X.transformCellText}),N=Qr("Table",Mr.Table,Ot(e,"locale")),G=ft(N,1),d=G[0],u=de(function(){return e.dataSource||Nbe}),s=de(function(){return X.getPrefixCls("dropdown",e.dropdownPrefixCls)}),h=de(function(){return e.childrenColumnName||"children"}),c=de(function(){return u.value.some(function(Te){return Te==null?void 0:Te[h.value]})?"nest":e.expandedRowRender?"row":null}),W=zn({body:null}),M=function(we){Xn(W,we)},I=de(function(){return typeof e.rowKey=="function"?e.rowKey:function(Te){return Te==null?void 0:Te[e.rowKey]}}),w=hfe(u,h,I),C=ft(w,1),x=C[0],R={},g=function(we,Se){var De=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,me=e.pagination,Ve=e.scroll,Me=e.onChange,Ie=P(P({},R),we);De&&(R.resetPagination(),Ie.pagination.current&&(Ie.pagination.current=1),me&&me.onChange&&me.onChange(1,Ie.pagination.pageSize)),Ve&&Ve.scrollToFirstRowOnChange!==!1&&W.body&&cG(0,{getContainer:function(){return W.body}}),Me==null||Me(Ie.pagination,Ie.filters,Ie.sorter,{currentDataSource:NV(Ev(u.value,Ie.sorterStates,h.value),Ie.filterStates),action:Se})},S=function(we,Se){g({sorter:we,sorterStates:Se},"sort",!1)},L=Ife({prefixCls:y,mergedColumns:f,onSorterChange:S,sortDirections:de(function(){return e.sortDirections||["ascend","descend"]}),tableLocale:d,showSorterTooltip:Ot(e,"showSorterTooltip")}),V=ft(L,4),Y=V[0],T=V[1],J=V[2],U=V[3],K=de(function(){return Ev(u.value,T.value,h.value)}),H=function(we,Se){g({filters:we,filterStates:Se},"filter",!0)},k=vbe({prefixCls:y,locale:d,dropdownPrefixCls:s,mergedColumns:f,onFilterChange:H,getPopupContainer:Ot(e,"getPopupContainer")}),F=ft(k,3),O=F[0],Q=F[1],oe=F[2],se=de(function(){return NV(K.value,Q.value)}),he=Xbe(Ot(e,"contextSlots")),pe=ft(he,1),re=pe[0],_=de(function(){return P({},J.value)}),E=Wbe(_),$=ft(E,1),ae=$[0],le=function(we,Se){g({pagination:P(P({},R.pagination),{},{current:we,pageSize:Se})},"paginate")},ee=dfe(de(function(){return se.value.length}),Ot(e,"pagination"),le),te=ft(ee,2),be=te[0],ne=te[1];qt(function(){R.sorter=U.value,R.sorterStates=T.value,R.filters=oe.value,R.filterStates=Q.value,R.pagination=e.pagination===!1?{}:cfe(e.pagination,be.value),R.resetPagination=ne});var B=de(function(){if(e.pagination===!1||!be.value.pageSize)return se.value;var Te=be.value,we=Te.current,Se=we===void 0?1:we,De=Te.total,me=Te.pageSize,Ve=me===void 0?Fv:me;return jn(Se>0,"Table","`current` should be positive number."),se.value.lengthVe?se.value.slice((Se-1)*Ve,Se*Ve):se.value:se.value.slice((Se-1)*Ve,Se*Ve)});qt(function(){cn(function(){var Te=be.value,we=Te.total,Se=Te.pageSize,De=Se===void 0?Fv:Se;se.value.lengthDe&&jn(!1,"Table","`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.")})},{flush:"post"});var q=de(function(){return e.showExpandColumn===!1?-1:c.value==="nest"&&e.expandIconColumnIndex===void 0?e.rowSelection?1:0:e.expandIconColumnIndex>0&&e.rowSelection?e.expandIconColumnIndex-1:e.expandIconColumnIndex}),ue=Ne();rt(function(){return e.rowSelection},function(){ue.value=e.rowSelection?P({},e.rowSelection):e.rowSelection},{deep:!0,immediate:!0});var ve=bfe(ue,{prefixCls:y,data:se,pageData:B,getRowKey:I,getRecordByKey:x,expandType:c,childrenColumnName:h,locale:d,getPopupContainer:de(function(){return e.getPopupContainer})}),Ge=ft(ve,2),Je=Ge[0],xe=Ge[1],ke=function(we,Se,De){var me,Ve=e.rowClassName;return typeof Ve=="function"?me=_e(Ve(we,Se,De)):me=_e(Ve),_e(ce({},"".concat(y.value,"-row-selected"),xe.value.has(I.value(we,Se))),me)};l({selectedKeySet:xe});var Pe=de(function(){return typeof e.indentSize=="number"?e.indentSize:15}),Be=function(we){var Se=ae(Je(O(Y(re(we)))));return Se};return function(){var Te,we,Se=e.expandIcon,De=Se===void 0?a.expandIcon||Gbe(d.value):Se,me=e.pagination,Ve=e.loading,Me=e.bordered,Ie,Ze;if(me!==!1&&(Te=be.value)!==null&&Te!==void 0&&Te.total){var Ce;be.value.size?Ce=be.value.size:Ce=b.value==="small"||b.value==="middle"?"small":void 0;var ye=function(lt){return D(mp,P(P({},be.value),{},{class:["".concat(y.value,"-pagination ").concat(y.value,"-pagination-").concat(lt),be.value.class],size:Ce}),null)},Ue=p.value==="rtl"?"left":"right",qe=be.value.position;if(qe!==null&&Array.isArray(qe)){var ie=qe.find(function(ct){return ct.indexOf("top")!==-1}),Oe=qe.find(function(ct){return ct.indexOf("bottom")!==-1}),Ke=qe.every(function(ct){return"".concat(ct)==="none"});!ie&&!Oe&&!Ke&&(Ze=ye(Ue)),ie&&(Ie=ye(ie.toLowerCase().replace("top",""))),Oe&&(Ze=ye(Oe.toLowerCase().replace("bottom","")))}else Ze=ye(Ue)}var Xe;typeof Ve=="boolean"?Xe={spinning:Ve}:Yt(Ve)==="object"&&(Xe=P({spinning:!0},Ve));var Re=_e("".concat(y.value,"-wrapper"),ce({},"".concat(y.value,"-wrapper-rtl"),p.value==="rtl"),i.class),Ae=dn(e,["columns"]);return D("div",{class:Re,style:i.style},[D(vs,P({spinning:!1},Xe),{default:function(){return[Ie,D(sfe,P(P(P({},i),Ae),{},{expandedRowKeys:e.expandedRowKeys,defaultExpandedRowKeys:e.defaultExpandedRowKeys,expandIconColumnIndex:q.value,indentSize:Pe.value,expandIcon:De,columns:f.value,direction:p.value,prefixCls:y.value,class:_e((we={},ce(we,"".concat(y.value,"-middle"),b.value==="middle"),ce(we,"".concat(y.value,"-small"),b.value==="small"),ce(we,"".concat(y.value,"-bordered"),Me),ce(we,"".concat(y.value,"-empty"),u.value.length===0),we)),data:B.value,rowKey:I.value,rowClassName:ke,internalHooks:kv,internalRefs:W,onUpdateInternalRefs:M,transformColumns:Be,transformCellText:m.value}),P(P({},a),{},{emptyText:function(){var ot,wt;return((ot=a.emptyText)===null||ot===void 0?void 0:ot.call(a))||((wt=e.locale)===null||wt===void 0?void 0:wt.emptyText)||Z.value("Table")}})),Ze]}})])}}}),Ybe=He({name:"ATable",inheritAttrs:!1,setup:function(e,t){var i=t.attrs,a=t.slots,l=t.expose,o=Ne();return l({table:o}),function(){var r,f=i,v=f.columns||uS((r=a.default)===null||r===void 0?void 0:r.call(a));return D(Ibe,P(P({ref:o},i),{},{columns:v||[],expandedRowRender:a.expandedRowRender,contextSlots:P({},a)}),a)}}});const DZ=Ybe,rm=He({name:"ATableColumn",slots:["title","filterIcon"],render:function(){return null}}),om=He({name:"ATableColumnGroup",slots:["title"],__ANT_TABLE_COLUMN_GROUP:!0,render:function(){return null}});var r0=He(P(P({},Bhe),{},{name:"ATableSummaryRow"})),o0=He(P(P({},$he),{},{name:"ATableSummaryCell"})),sm=Xn(qhe,{Cell:o0,Row:r0,name:"ATableSummary"});const wbe=Xn(DZ,{SELECTION_ALL:Jv,SELECTION_INVERT:Dv,SELECTION_NONE:Ov,SELECTION_COLUMN:Go,EXPAND_COLUMN:rs,Column:rm,ColumnGroup:om,Summary:sm,install:function(e){return e.component(sm.name,sm),e.component(o0.name,o0),e.component(r0.name,r0),e.component(DZ.name,DZ),e.component(rm.name,rm),e.component(om.name,om),e}});var gbe={prefixCls:String,placeholder:String,value:String,handleClear:Function,disabled:{type:Boolean,default:void 0},onChange:Function};const Vbe=He({compatConfig:{MODE:3},name:"Search",inheritAttrs:!1,props:pn(gbe,{placeholder:""}),emits:["change"],setup:function(e,t){var i=t.emit,a=function(o){if(i("change",o),o.target.value===""){var r;(r=e.handleClear)===null||r===void 0||r.call(e)}};return function(){var l=e.placeholder,o=e.value,r=e.prefixCls,f=e.disabled;return D(Ai,{placeholder:l,class:r,value:o,onChange:a,disabled:f,allowClear:!0},{prefix:function(){return D(P0,null,null)}})}}});var Lbe={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"};const Rbe=Lbe;function MV(n){for(var e=1;e=0;i("itemSelect",y.key,!m)},r=function(y){i("itemRemove",[y.key])},f=function(y){i("scroll",y)},v=de(function(){return kbe(e.pagination)});rt([v,function(){return e.filteredRenderItems}],function(){if(v.value){var p=Math.ceil(e.filteredRenderItems.length/v.value.pageSize);l.value>p&&(l.value=p)}},{immediate:!0});var b=de(function(){var p=e.filteredRenderItems,y=p;return v.value&&(y=p.slice((l.value-1)*v.value.pageSize,l.value*v.value.pageSize)),y}),Z=function(y){l.value=y};return a({items:b}),function(){var p=e.prefixCls,y=e.filteredRenderItems,X=e.selectedKeys,m=e.disabled,N=e.showRemove,G=null;v.value&&(G=D(mp,{simple:!0,size:"small",disabled:m,class:"".concat(p,"-pagination"),total:y.length,pageSize:v.value.pageSize,current:l.value,onChange:Z},null));var d=b.value.map(function(u){var s=u.renderedEl,h=u.renderedText,c=u.item,W=c.disabled,M=X.indexOf(c.key)>=0;return D(Sbe,{disabled:m||W,key:c.key,item:c,renderedText:h,renderedEl:s,checked:M,prefixCls:p,onClick:o,onRemove:r,showRemove:N},null)});return D(ln,null,[D("ul",{class:_e("".concat(p,"-content"),ce({},"".concat(p,"-content-show-remove"),N)),onScroll:f},[d]),G])}}});const Jbe=Fbe;var Dbe=function(){return null};function Obe(n){return n&&!Si(n)&&Object.prototype.toString.call(n)==="[object Object]"}function vb(n){return n.filter(function(e){return!e.disabled}).map(function(e){return e.key})}var jbe={prefixCls:String,dataSource:{type:Array,default:[]},filter:String,filterOption:Function,checkedKeys:We.arrayOf(We.string),handleFilter:Function,handleClear:Function,renderItem:Function,showSearch:{type:Boolean,default:!1},searchPlaceholder:String,notFoundContent:We.any,itemUnit:String,itemsUnit:String,renderList:We.any,disabled:{type:Boolean,default:void 0},direction:String,showSelectAll:{type:Boolean,default:void 0},remove:String,selectAll:String,selectCurrent:String,selectInvert:String,removeAll:String,removeCurrent:String,selectAllLabel:We.any,showRemove:{type:Boolean,default:void 0},pagination:We.any,onItemSelect:Function,onItemSelectAll:Function,onItemRemove:Function,onScroll:Function};const IV=He({compatConfig:{MODE:3},name:"TransferList",inheritAttrs:!1,props:jbe,slots:["footer","titleText"],setup:function(e,t){var i=t.attrs,a=t.slots,l=Ne(""),o=Ne(),r=Ne(),f=function(c,W){var M=c?c(W):null,I=!!M&&Ri(M).length>0;return I||(M=D(Jbe,P(P({},W),{},{ref:r}),null)),{customize:I,bodyContent:M}},v=function(c){var W=e.renderItem,M=W===void 0?Dbe:W,I=M(c),w=Obe(I);return{renderedText:w?I.value:I,renderedEl:w?I.label:I,item:c}},b=Ne([]),Z=Ne([]);qt(function(){var h=[],c=[];e.dataSource.forEach(function(W){var M=v(W),I=M.renderedText;if(l.value&&l.value.trim()&&!d(I,W))return null;h.push(W),c.push(M)}),b.value=h,Z.value=c});var p=de(function(){var h=e.checkedKeys;return h.length===0?"none":b.value.every(function(c){return h.indexOf(c.key)>=0||!!c.disabled})?"all":"part"}),y=de(function(){return vb(b.value)}),X=function(c,W){return Array.from(new Set([].concat(yt(c),yt(e.checkedKeys)))).filter(function(M){return W.indexOf(M)===-1})},m=function(c){var W=c.disabled,M=c.prefixCls,I=p.value==="all",w=D(lr,{disabled:W,checked:I,indeterminate:p.value==="part",class:"".concat(M,"-checkbox"),onChange:function(){var x=y.value;e.onItemSelectAll(X(I?[]:x,I?e.checkedKeys:[]))}},null);return w},N=function(c){var W,M=c.target.value;l.value=M,(W=e.handleFilter)===null||W===void 0||W.call(e,c)},G=function(c){var W;l.value="",(W=e.handleClear)===null||W===void 0||W.call(e,c)},d=function(c,W){var M=e.filterOption;return M?M(l.value,W):c.indexOf(l.value)>=0},u=function(c,W){var M=e.itemsUnit,I=e.itemUnit,w=e.selectAllLabel;if(w)return typeof w=="function"?w({selectedCount:c,totalCount:W}):w;var C=W>1?M:I;return D(ln,null,[(c>0?"".concat(c,"/"):"")+W,Fl(" "),C])},s=function(c,W,M,I,w,C){var x=w?D("div",{class:"".concat(c,"-body-search-wrapper")},[D(Vbe,{prefixCls:"".concat(c,"-search"),onChange:N,handleClear:G,placeholder:W,value:l.value,disabled:C},null)]):null,R,g=kW(i),S=g.onEvents,L=f(I,P(P({},e),{},{filteredItems:b.value,filteredRenderItems:Z.value,selectedKeys:M},S)),V=L.bodyContent,Y=L.customize;return Y?R=D("div",{class:"".concat(c,"-body-customize-wrapper")},[V]):R=b.value.length?V:D("div",{class:"".concat(c,"-body-not-found")},[e.notFoundContent]),D("div",{class:w?"".concat(c,"-body ").concat(c,"-body-with-search"):"".concat(c,"-body"),ref:o},[x,R])};return function(){var h,c,W,M=e.prefixCls,I=e.checkedKeys,w=e.disabled,C=e.showSearch,x=e.searchPlaceholder,R=e.selectAll,g=e.selectCurrent,S=e.selectInvert,L=e.removeAll,V=e.removeCurrent,Y=e.renderList,T=e.onItemSelectAll,J=e.onItemRemove,U=e.showSelectAll,K=U===void 0?!0:U,H=e.showRemove,k=e.pagination,F=(h=a.footer)===null||h===void 0?void 0:h.call(a,P({},e)),O=_e(M,(c={},ce(c,"".concat(M,"-with-pagination"),!!k),ce(c,"".concat(M,"-with-footer"),!!F),c)),Q=s(M,x,I,Y,C,w),oe=F?D("div",{class:"".concat(M,"-footer")},[F]):null,se=!H&&!k&&m({disabled:w,prefixCls:M}),he=null;H?he=D(Yi,null,{default:function(){return[k&&D(Yi.Item,{key:"removeCurrent",onClick:function(){var E=vb((r.value.items||[]).map(function($){return $.item}));J==null||J(E)}},{default:function(){return[V]}}),D(Yi.Item,{key:"removeAll",onClick:function(){J==null||J(y.value)}},{default:function(){return[L]}})]}}):he=D(Yi,null,{default:function(){return[D(Yi.Item,{key:"selectAll",onClick:function(){var E=y.value;T(X(E,[]))}},{default:function(){return[R]}}),k&&D(Yi.Item,{onClick:function(){var E=vb((r.value.items||[]).map(function($){return $.item}));T(X(E,[]))}},{default:function(){return[g]}}),D(Yi.Item,{key:"selectInvert",onClick:function(){var E;k?E=vb((r.value.items||[]).map(function(ee){return ee.item})):E=y.value;var $=new Set(I),ae=[],le=[];E.forEach(function(ee){$.has(ee)?le.push(ee):ae.push(ee)}),T(X(ae,le))}},{default:function(){return[S]}})]}});var pe=D(Hr,{class:"".concat(M,"-header-dropdown"),overlay:he,disabled:w},{default:function(){return[D(Fh,null,null)]}});return D("div",{class:O,style:i.style},[D("div",{class:"".concat(M,"-header")},[K?D(ln,null,[se,pe]):null,D("span",{class:"".concat(M,"-header-selected")},[D("span",null,[u(I.length,b.value.length)]),D("span",{class:"".concat(M,"-header-title")},[(W=a.titleText)===null||W===void 0?void 0:W.call(a)])])]),Q,oe])}}});function YV(){}var xX=function(e){var t=e.disabled,i=e.moveToLeft,a=i===void 0?YV:i,l=e.moveToRight,o=l===void 0?YV:l,r=e.leftArrowText,f=r===void 0?"":r,v=e.rightArrowText,b=v===void 0?"":v,Z=e.leftActive,p=e.rightActive,y=e.class,X=e.style,m=e.direction,N=e.oneWay;return D("div",{class:y,style:X},[D(qi,{type:"primary",size:"small",disabled:t||!p,onClick:o,icon:D(m!=="rtl"?To:Xc,null,null)},{default:function(){return[b]}}),!N&&D(qi,{type:"primary",size:"small",disabled:t||!Z,onClick:a,icon:D(m!=="rtl"?Xc:To,null,null)},{default:function(){return[f]}})])};xX.displayName="Operation";xX.inheritAttrs=!1;const Ube=xX;var Ebe=function(){return{id:String,prefixCls:String,dataSource:{type:Array,default:[]},disabled:{type:Boolean,default:void 0},targetKeys:{type:Array,default:void 0},selectedKeys:{type:Array,default:void 0},render:{type:Function},listStyle:{type:[Function,Object],default:function(){return{}}},operationStyle:{type:Object,default:void 0},titles:{type:Array},operations:{type:Array},showSearch:{type:Boolean,default:!1},filterOption:{type:Function},searchPlaceholder:String,notFoundContent:We.any,locale:{type:Object,default:function(){return{}}},rowKey:{type:Function},showSelectAll:{type:Boolean,default:void 0},selectAllLabels:{type:Array},children:{type:Function},oneWay:{type:Boolean,default:void 0},pagination:{type:[Object,Boolean],default:void 0},onChange:Function,onSelectChange:Function,onSearch:Function,onScroll:Function,"onUpdate:targetKeys":Function,"onUpdate:selectedKeys":Function}},Kbe=He({compatConfig:{MODE:3},name:"ATransfer",inheritAttrs:!1,props:Ebe(),slots:["leftTitle","rightTitle","children","render","notFoundContent","leftSelectAllLabel","rightSelectAllLabel","footer"],setup:function(e,t){var i=t.emit,a=t.attrs,l=t.slots,o=t.expose,r=Nt("transfer",e),f=r.configProvider,v=r.prefixCls,b=r.direction,Z=Ne([]),p=Ne([]),y=Hi();rt(function(){return e.selectedKeys},function(){var H,k;Z.value=((H=e.selectedKeys)===null||H===void 0?void 0:H.filter(function(F){return e.targetKeys.indexOf(F)===-1}))||[],p.value=((k=e.selectedKeys)===null||k===void 0?void 0:k.filter(function(F){return e.targetKeys.indexOf(F)>-1}))||[]},{immediate:!0});var X=function(k,F){var O={notFoundContent:F("Transfer")},Q=ui(l,e,"notFoundContent");return Q&&(O.notFoundContent=Q),e.searchPlaceholder!==void 0&&(O.searchPlaceholder=e.searchPlaceholder),P(P(P({},k),O),e.locale)},m=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=e.dataSource,oe=Q===void 0?[]:Q,se=k==="right"?Z.value:p.value,he=se.filter(function(_){return!oe.some(function(E){return!!(_===E.key&&E.disabled)})}),pe=k==="right"?he.concat(O):O.filter(function(_){return he.indexOf(_)===-1}),re=k==="right"?"left":"right";k==="right"?Z.value=[]:p.value=[],i("update:targetKeys",pe),h(re,[]),i("change",pe,k,he),y.onFieldChange()},N=function(){m("left")},G=function(){m("right")},d=function(k,F){h(k,F)},u=function(k){return d("left",k)},s=function(k){return d("right",k)},h=function(k,F){k==="left"?(e.selectedKeys||(Z.value=F),i("update:selectedKeys",[].concat(yt(F),yt(p.value))),i("selectChange",F,on(p.value))):(e.selectedKeys||(p.value=F),i("update:selectedKeys",[].concat(yt(F),yt(Z.value))),i("selectChange",on(Z.value),F))},c=function(k,F){var O=F.target.value;i("search",k,O)},W=function(k){c("left",k)},M=function(k){c("right",k)},I=function(k){i("search",k,"")},w=function(){I("left")},C=function(){I("right")},x=function(k,F,O){var Q=yt(k==="left"?Z.value:p.value),oe=Q.indexOf(F);oe>-1&&Q.splice(oe,1),O&&Q.push(F),h(k,Q)},R=function(k,F){return x("left",k,F)},g=function(k,F){return x("right",k,F)},S=function(k){var F=e.targetKeys,O=F===void 0?[]:F,Q=O.filter(function(oe){return!k.includes(oe)});i("update:targetKeys",Q),i("change",Q,"left",yt(k))},L=function(k,F){i("scroll",k,F)},V=function(k){L("left",k)},Y=function(k){L("right",k)},T=function(k,F){return typeof k=="function"?k({direction:F}):k},J=Ne([]),U=Ne([]);qt(function(){var H=e.dataSource,k=e.rowKey,F=e.targetKeys,O=F===void 0?[]:F,Q=[],oe=new Array(O.length);H.forEach(function(se){k&&(se.key=k(se));var he=O.indexOf(se.key);he!==-1?oe[he]=se:Q.push(se)}),J.value=Q,U.value=oe}),o({handleSelectChange:h});var K=function(k){var F,O,Q,oe,se,he,pe,re=e.disabled,_=e.operations,E=_===void 0?[]:_,$=e.showSearch,ae=e.listStyle,le=e.operationStyle,ee=e.filterOption,te=e.showSelectAll,be=e.selectAllLabels,ne=be===void 0?[]:be,B=e.oneWay,q=e.pagination,ue=e.id,ve=ue===void 0?y.id.value:ue,Ge=a.class,Je=a.style,xe=l.children,ke=!xe&&q,Pe=f.renderEmpty,Be=X(k,Pe),Te=l.footer,we=e.render||l.render,Se=p.value.length>0,De=Z.value.length>0,me=_e(v.value,Ge,(F={},ce(F,"".concat(v.value,"-disabled"),re),ce(F,"".concat(v.value,"-customize-list"),!!xe),F)),Ve=e.titles,Me=(O=(Q=Ve&&Ve[0])!==null&&Q!==void 0?Q:(oe=l.leftTitle)===null||oe===void 0?void 0:oe.call(l))!==null&&O!==void 0?O:(Be.titles||["",""])[0],Ie=(se=(he=Ve&&Ve[1])!==null&&he!==void 0?he:(pe=l.rightTitle)===null||pe===void 0?void 0:pe.call(l))!==null&&se!==void 0?se:(Be.titles||["",""])[1];return D("div",{class:me,style:Je,id:ve},[D(IV,P({key:"leftList",prefixCls:"".concat(v.value,"-list"),dataSource:J.value,filterOption:ee,style:T(ae,"left"),checkedKeys:Z.value,handleFilter:W,handleClear:w,onItemSelect:R,onItemSelectAll:u,renderItem:we,showSearch:$,renderList:xe,onScroll:V,disabled:re,direction:b.value==="rtl"?"right":"left",showSelectAll:te,selectAllLabel:ne[0]||l.leftSelectAllLabel,pagination:ke},Be),{titleText:function(){return Me},footer:Te}),D(Ube,{key:"operation",class:"".concat(v.value,"-operation"),rightActive:De,rightArrowText:E[0],moveToRight:G,leftActive:Se,leftArrowText:E[1],moveToLeft:N,style:le,disabled:re,direction:b.value,oneWay:B},null),D(IV,P({key:"rightList",prefixCls:"".concat(v.value,"-list"),dataSource:U.value,filterOption:ee,style:T(ae,"right"),checkedKeys:p.value,handleFilter:M,handleClear:C,onItemSelect:g,onItemSelectAll:s,onItemRemove:S,renderItem:we,showSearch:$,renderList:xe,onScroll:Y,disabled:re,direction:b.value==="rtl"?"left":"right",showSelectAll:te,selectAllLabel:ne[1]||l.rightSelectAllLabel,showRemove:B,pagination:ke},Be),{titleText:function(){return Ie},footer:Te})])};return function(){return D(Ou,{componentName:"Transfer",defaultLocale:Mr.Transfer,children:K},null)}}});const Hbe=wi(Kbe);function Pbe(n){return Array.isArray(n)?n:n!==void 0?[n]:[]}function Qbe(n){var e=n||{},t=e.label,i=e.value,a=e.children,l=i||"value";return{_title:t?[t]:["title","label"],value:l,key:l,children:a||"children"}}function Pv(n){return n.disabled||n.disableCheckbox||n.checkable===!1}function Bbe(n,e){var t=[];function i(a){a.forEach(function(l){t.push(l[e.value]);var o=l[e.children];o&&i(o)})}return i(n),t}function wV(n){return n==null}var MS=Symbol("TreeSelectContextPropsKey");function Abe(n){return hn(MS,n)}function _be(){return un(MS,{})}var $be={width:0,height:0,display:"flex",overflow:"hidden",opacity:0,border:0,padding:0,margin:0};const qbe=He({compatConfig:{MODE:3},name:"OptionList",inheritAttrs:!1,slots:["notFoundContent","menuItemSelectedIcon"],setup:function(e,t){var i=t.slots,a=t.expose,l=kh(),o=U0(),r=_be(),f=Ne(),v=LG(function(){return r.treeData},[function(){return l.open},function(){return r.treeData}],function(c){return c[0]}),b=de(function(){var c=o.checkable,W=o.halfCheckedKeys,M=o.checkedKeys;return c?{checked:M,halfChecked:W}:null});rt(function(){return l.open},function(){cn(function(){if(l.open&&!l.multiple&&o.checkedKeys.length){var c;(c=f.value)===null||c===void 0||c.scrollTo({key:o.checkedKeys[0]})}})},{immediate:!0,flush:"post"});var Z=de(function(){return String(l.searchValue).toLowerCase()}),p=function(W){return Z.value?String(W[o.treeNodeFilterProp]).toLowerCase().includes(Z.value):!1},y=Gn(o.treeDefaultExpandedKeys),X=Gn(null);rt(function(){return l.searchValue},function(){l.searchValue&&(X.value=Bbe(on(r.treeData),on(r.fieldNames)))},{immediate:!0});var m=de(function(){return o.treeExpandedKeys?o.treeExpandedKeys.slice():l.searchValue?X.value:y.value}),N=function(W){var M;y.value=W,X.value=W,(M=o.onTreeExpand)===null||M===void 0||M.call(o,W)},G=function(W){W.preventDefault()},d=function(W,M){var I,w=M.node,C=o.checkable,x=o.checkedKeys;if(!(C&&Pv(w))&&((I=r.onSelect)===null||I===void 0||I.call(r,w.key,{selected:!x.includes(w.key)}),!l.multiple)){var R;(R=l.toggleOpen)===null||R===void 0||R.call(l,!1)}},u=Ne(null),s=de(function(){return o.keyEntities[u.value]}),h=function(W){u.value=W};return a({scrollTo:function(){for(var W,M,I=arguments.length,w=new Array(I),C=0;C0&&arguments[0]!==void 0?arguments[0]:[];return Ri(t).map(function(i){var a,l,o;if(!nme(i))return null;for(var r=i.children||{},f=i.key,v={},b=0,Z=Object.entries(i.props);b1&&arguments[1]!==void 0?arguments[1]:"0",p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return b.map(function(y,X){var m="".concat(Z,"-").concat(X),N=y[l.value],G=t.includes(N),d=v(y[l.children]||[],m,G),u=D(SX,y,{default:function(){return[d.map(function(c){return c.node})]}});if(e===N&&(o=u),G){var s={pos:m,node:u,children:d};return p||r.push(s),s}return null}).filter(function(y){return y})}r||(r=[],v(i),r.sort(function(b,Z){var p=b.node.props.value,y=Z.node.props.value,X=t.indexOf(p),m=t.indexOf(y);return X-m}))}Object.defineProperty(n,"triggerNode",{get:function(){return f(),o}}),Object.defineProperty(n,"allCheckedNodes",{get:function(){return f(),a?r:r.map(function(b){var Z=b.node;return Z})}})}function ame(n,e){var t=e.id,i=e.pId,a=e.rootPId,l={},o=[],r=n.map(function(f){var v=P({},f),b=v[t];return l[b]=v,v.key=v.key||b,v});return r.forEach(function(f){var v=f[i],b=l[v];b&&(b.children=b.children||[],b.children.push(f)),(v===a||!b&&a===null)&&o.push(f)}),o}function rme(n,e,t){var i=Gn();return rt([t,n,e],function(){var a=t.value;n.value?i.value=t.value?ame(on(n.value),P({id:"id",pId:"pId",rootPId:null},a!==!0?a:{})):on(n.value).slice():i.value=ime(on(e.value))},{immediate:!0,deep:!0}),i}const ome=function(n){var e=Gn({valueLabels:new Map}),t=Gn();rt(n,function(){t.value=on(n.value)},{immediate:!0});var i=de(function(){var a=e.value.valueLabels,l=new Map,o=t.value.map(function(r){var f,v=r.value,b=(f=r.label)!==null&&f!==void 0?f:a.get(v);return l.set(v,b),P(P({},r),{},{label:b})});return e.value.valueLabels=l,o});return[i]},sme=function(n,e){var t=Gn(new Map),i=Gn({});return qt(function(){var a=e.value,l=Uh(n.value,{fieldNames:a,initWrapper:function(r){return P(P({},r),{},{valueEntities:new Map})},processEntity:function(r,f){var v=r.node[a.value];f.valueEntities.set(v,r)}});t.value=l.valueEntities,i.value=l.keyEntities}),{valueEntities:t,keyEntities:i}},cme=function(n,e,t,i,a,l){var o=Gn([]),r=Gn([]);return qt(function(){var f=n.value.map(function(p){var y=p.value;return y}),v=e.value.map(function(p){var y=p.value;return y}),b=f.filter(function(p){return!i.value[p]});if(t.value){var Z=ir(f,!0,i.value,a.value,l.value);f=Z.checkedKeys,v=Z.halfCheckedKeys}o.value=Array.from(new Set([].concat(yt(b),yt(f)))),r.value=v}),[o,r]},ume=function(n,e,t){var i=t.treeNodeFilterProp,a=t.filterTreeNode,l=t.fieldNames;return de(function(){var o=l.value.children,r=e.value,f=i==null?void 0:i.value;if(!r||a.value===!1)return n.value;var v;if(typeof a.value=="function")v=a.value;else{var b=r.toUpperCase();v=function(y,X){var m=X[f];return String(m).toUpperCase().includes(b)}}function Z(p){for(var y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X=[],m=0,N=p.length;m2&&arguments[2]!==void 0?arguments[2]:0,W=arguments.length>3&&arguments[3]!==void 0?arguments[3]:h.length,M=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,I=Math.floor((c+W)/2),w=h.slice(0,I);if(s.textContent=w,c>=W-1)for(var C=W;C>=c;C-=1){var x=h.slice(0,C);if(s.textContent=x,Z()||!x)return C===h.length?{finished:!1,vNode:h}:{finished:!0,vNode:x}}return Z()?d(s,h,I,W,I):d(s,h,c,I,M)}function u(s){var h=s.nodeType;if(h===Yme){var c=s.textContent||"",W=document.createTextNode(c);return G(W),d(W,c)}return{finished:!1,vNode:null}}return p.some(function(s){var h=u(s),c=h.finished,W=h.vNode;return W&&X.push(W),c}),{content:X,text:ha.innerHTML,ellipsis:!0}};var Rme=["prefixCls","class","direction","component"],Tme=function(){return{prefixCls:String,direction:String,component:String}},xme=He({name:"ATypography",inheritAttrs:!1,props:Tme(),setup:function(e,t){var i=t.slots,a=t.attrs,l=Nt("typography",e),o=l.prefixCls,r=l.direction;return function(){var f,v=P(P({},e),a);v.prefixCls,v.class,v.direction;var b=v.component,Z=b===void 0?"article":b,p=jt(v,Rme);return D(Z,P({class:_e(o.value,ce({},"".concat(o.value,"-rtl"),r.value==="rtl"),a.class)},p),{default:function(){return[(f=i.default)===null||f===void 0?void 0:f.call(i)]}})}}});const ma=xme;var Cme=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,i=[],a=0;a"u"){f&&console.warn("unable to use e.clipboardData"),f&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var Z=RV[e.format]||RV.default;window.clipboardData.setData(Z,n)}else b.clipboardData.clearData(),b.clipboardData.setData(e.format,n);e.onCopy&&(b.preventDefault(),e.onCopy(b.clipboardData))}),document.body.appendChild(o),a.selectNodeContents(o),l.addRange(a);var v=document.execCommand("copy");if(!v)throw new Error("copy command was unsuccessful");r=!0}catch(b){f&&console.error("unable to copy using execCommand: ",b),f&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",n),e.onCopy&&e.onCopy(window.clipboardData),r=!0}catch(Z){f&&console.error("unable to copy using clipboardData: ",Z),f&&console.error("falling back to prompt"),t=kme("message"in e?e.message:zme),window.prompt(t,n)}}finally{l&&(typeof l.removeRange=="function"?l.removeRange(a):l.removeAllRanges()),o&&document.body.removeChild(o),i()}return r}var Jme={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"};const Dme=Jme;function TV(n){for(var e=1;e1&&ne,ue=K,ve;if(_&&v.isEllipsis&&!v.expanded&&!ne){var Ge,Je=pe.title,xe=Je||"";!Je&&(typeof K=="string"||typeof K=="number")&&(xe=String(K)),xe=(Ge=xe)===null||Ge===void 0?void 0:Ge.slice(String(v.ellipsisContent||"").length),ue=D(ln,null,[on(v.ellipsisContent),D("span",{title:xe,"aria-hidden":"true"},[CV]),E])}else ue=D(ln,null,[K,E]);ue=R(e,ue);var ke=$&&_&&v.isEllipsis&&!v.expanded&&!ne,Pe=i.ellipsisTooltip?i.ellipsisTooltip():$;return D(rr,{onResize:w,disabled:!_},{default:function(){return[D(ma,P({ref:b,class:[(F={},ce(F,"".concat(r.value,"-").concat(Q),Q),ce(F,"".concat(r.value,"-disabled"),oe),ce(F,"".concat(r.value,"-ellipsis"),_),ce(F,"".concat(r.value,"-single-line"),_===1&&!v.isEllipsis),ce(F,"".concat(r.value,"-ellipsis-single-line"),B),ce(F,"".concat(r.value,"-ellipsis-multiple-line"),q),F),se],style:P(P({},he),{},{WebkitLineClamp:q?_:void 0}),"aria-label":ve,direction:f.value,onClick:U.indexOf("text")!==-1?m:function(){}},be),{default:function(){return[ke?D(Xr,{title:$===!0?K:Pe},{default:function(){return[D("span",null,[ue])]}}):ue,Y()]}})]}})}},null)}}});const Bh=Ame;var _me=["ellipsis","rel"],$me=function(){return dn(P(P({},Qh()),{},{ellipsis:{type:Boolean,default:void 0}}),["component"])},Ip=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),a),o=l.ellipsis,r=l.rel,f=jt(l,_me);Ci(Yt(o)!=="object","Typography.Link","`ellipsis` only supports boolean value.");var v=P(P({},f),{},{rel:r===void 0&&f.target==="_blank"?"noopener noreferrer":r,ellipsis:!!o,component:"a"});return delete v.navigate,D(Bh,v,i)};Ip.displayName="ATypographyLink";Ip.inheritAttrs=!1;Ip.props=$me();const JX=Ip;var qme=function(){return dn(Qh(),["component"])},Yp=function(e,t){var i=t.slots,a=t.attrs,l=P(P({},e),{},{component:"div"},a);return D(Bh,l,i)};Yp.displayName="ATypographyParagraph";Yp.inheritAttrs=!1;Yp.props=qme();const DX=Yp;var e0e=function(){return P(P({},dn(Qh(),["component"])),{},{ellipsis:{type:[Boolean,Object],default:void 0}})},wp=function(e,t){var i=t.slots,a=t.attrs,l=e.ellipsis;Ci(Yt(l)!=="object"||!l||!("expandable"in l)&&!("rows"in l),"Typography.Text","`ellipsis` do not support `expandable` or `rows` props.");var o=P(P({},e),{},{ellipsis:l&&Yt(l)==="object"?dn(l,["expandable","rows"]):l,component:"span"},a);return D(Bh,o,i)};wp.displayName="ATypographyText";wp.inheritAttrs=!1;wp.props=e0e();const OX=wp;var t0e=["level"],n0e=fK(1,2,3,4,5),i0e=function(){return P(P({},dn(Qh(),["component","strong"])),{},{level:Number})},gp=function(e,t){var i=t.slots,a=t.attrs,l=e.level,o=l===void 0?1:l,r=jt(e,t0e),f;n0e.indexOf(o)!==-1?f="h".concat(o):(Ci(!1,"Typography","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value."),f="h1");var v=P(P({},r),{},{component:f},a);return D(Bh,v,i)};gp.displayName="ATypographyTitle";gp.inheritAttrs=!1;gp.props=i0e();const jX=gp;ma.Text=OX;ma.Title=jX;ma.Paragraph=DX;ma.Link=JX;ma.Base=Bh;ma.install=function(n){return n.component(ma.name,ma),n.component(ma.Text.displayName,OX),n.component(ma.Title.displayName,jX),n.component(ma.Paragraph.displayName,DX),n.component(ma.Link.displayName,JX),n};function l0e(n,e){var t="cannot ".concat(n.method," ").concat(n.action," ").concat(e.status,"'"),i=new Error(t);return i.status=e.status,i.method=n.method,i.url=n.action,i}function SV(n){var e=n.responseText||n.response;if(!e)return e;try{return JSON.parse(e)}catch{return e}}function a0e(n){var e=new XMLHttpRequest;n.onProgress&&e.upload&&(e.upload.onprogress=function(l){l.total>0&&(l.percent=l.loaded/l.total*100),n.onProgress(l)});var t=new FormData;n.data&&Object.keys(n.data).forEach(function(a){var l=n.data[a];if(Array.isArray(l)){l.forEach(function(o){t.append("".concat(a,"[]"),o)});return}t.append(a,l)}),n.file instanceof Blob?t.append(n.filename,n.file,n.file.name):t.append(n.filename,n.file),e.onerror=function(l){n.onError(l)},e.onload=function(){return e.status<200||e.status>=300?n.onError(l0e(n,e),SV(e)):n.onSuccess(SV(e),e)},e.open(n.method,n.action,!0),n.withCredentials&&"withCredentials"in e&&(e.withCredentials=!0);var i=n.headers||{};return i["X-Requested-With"]!==null&&e.setRequestHeader("X-Requested-With","XMLHttpRequest"),Object.keys(i).forEach(function(a){i[a]!==null&&e.setRequestHeader(a,i[a])}),e.send(t),{abort:function(){e.abort()}}}var r0e=+new Date,o0e=0;function EZ(){return"vc-upload-".concat(r0e,"-").concat(++o0e)}const KZ=function(n,e){if(n&&e){var t=Array.isArray(e)?e:e.split(","),i=n.name||"",a=n.type||"",l=a.replace(/\/.*$/,"");return t.some(function(o){var r=o.trim();if(/^\*(\/\*)?$/.test(o))return!0;if(r.charAt(0)==="."){var f=i.toLowerCase(),v=r.toLowerCase(),b=[v];return(v===".jpg"||v===".jpeg")&&(b=[".jpg",".jpeg"]),b.some(function(Z){return f.endsWith(Z)})}return/\/\*$/.test(r)?l===r.replace(/\/.*$/,""):!!(a===r||/^\w+$/.test(r))})}return!0};function s0e(n,e){var t=n.createReader(),i=[];function a(){t.readEntries(function(l){var o=Array.prototype.slice.apply(l);i=i.concat(o);var r=!o.length;r?e(i):a()})}a()}var c0e=function(e,t,i){var a=function l(o,r){o.path=r||"",o.isFile?o.file(function(f){i(f)&&(o.fullPath&&!f.webkitRelativePath&&(Object.defineProperties(f,{webkitRelativePath:{writable:!0}}),f.webkitRelativePath=o.fullPath.replace(/^\//,""),Object.defineProperties(f,{webkitRelativePath:{writable:!1}})),t([f]))}):o.isDirectory&&s0e(o,function(f){f.forEach(function(v){l(v,"".concat(r).concat(o.name,"/"))})})};e.forEach(function(l){a(l.webkitGetAsEntry())})};const u0e=c0e;var VS=function(){return{capture:[Boolean,String],multipart:{type:Boolean,default:void 0},name:String,disabled:{type:Boolean,default:void 0},componentTag:String,action:[String,Function],method:String,directory:{type:Boolean,default:void 0},data:[Object,Function],headers:Object,accept:String,multiple:{type:Boolean,default:void 0},onBatchStart:Function,onReject:Function,onStart:Function,onError:Function,onSuccess:Function,onProgress:Function,beforeUpload:Function,customRequest:Function,withCredentials:{type:Boolean,default:void 0},openFileDialogOnClick:{type:Boolean,default:void 0},prefixCls:String,id:String,onMouseenter:Function,onMouseleave:Function,onClick:Function}};function d0e(n,e,t,i){for(var a=-1,l=n==null?0:n.length;++a0&&arguments[0]!==void 0?arguments[0]:"",t=e.split("/"),i=t[t.length-1],a=i.split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(a)||[""])[0]},RS=function(e){return e.indexOf("image/")===0},D0e=function(e){if(e.type&&!e.thumbUrl)return RS(e.type);var t=e.thumbUrl||e.url||"",i=J0e(t);return/^data:image\//.test(t)||/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(i)?!0:!(/^data:/.test(t)||i)},qo=200;function O0e(n){return new Promise(function(e){if(!n.type||!RS(n.type)){e("");return}var t=document.createElement("canvas");t.width=qo,t.height=qo,t.style.cssText="position: fixed; left: 0; top: 0; width: ".concat(qo,"px; height: ").concat(qo,"px; z-index: 9999; display: none;"),document.body.appendChild(t);var i=t.getContext("2d"),a=new Image;a.onload=function(){var l=a.width,o=a.height,r=qo,f=qo,v=0,b=0;l>o?(f=o*(qo/l),b=-(f-r)/2):(r=l*(qo/o),v=-(r-f)/2),i.drawImage(a,v,b,r,f);var Z=t.toDataURL();document.body.removeChild(t),e(Z)},a.src=window.URL.createObjectURL(n)})}var j0e={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M505.7 661a8 8 0 0012.6 0l112-141.7c4.1-5.2.4-12.9-6.3-12.9h-74.1V168c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v338.3H400c-6.7 0-10.4 7.7-6.3 12.9l112 141.8zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z"}}]},name:"download",theme:"outlined"};const U0e=j0e;function DV(n){for(var e=1;e"u"||typeof window>"u"||!window.FileReader||!window.File||!(G.originFileObj instanceof File||G.originFileObj instanceof Blob)||G.thumbUrl!==void 0||(G.thumbUrl="",e.previewFile&&e.previewFile(G.originFileObj).then(function(d){G.thumbUrl=d||"",o.update()}))})});var r=function(d,u){if(e.onPreview)return u==null||u.preventDefault(),e.onPreview(d)},f=function(d){typeof e.onDownload=="function"?e.onDownload(d):d.url&&window.open(d.url)},v=function(d){var u;(u=e.onRemove)===null||u===void 0||u.call(e,d)},b=function(d){var u=d.file,s=e.iconRender||i.iconRender;if(s)return s({file:u,listType:e.listType});var h=u.status==="uploading",c=e.isImageUrl&&e.isImageUrl(u)?D(T0e,null,null):D(z0e,null,null),W=D(h?Yr:g0e,null,null);return e.listType==="picture"?W=h?D(Yr,null,null):c:e.listType==="picture-card"&&(W=h?e.locale.uploading:c),W},Z=function(d){var u=d.customIcon,s=d.callback,h=d.prefixCls,c=d.title,W={type:"text",size:"small",title:c,onClick:function(){s()},class:"".concat(h,"-list-item-card-actions-btn")};return Si(u)?D(qi,W,{icon:function(){return u}}):D(qi,W,{default:function(){return[D("span",null,[u])]}})};a({handlePreview:r,handleDownload:f});var p=Nt("upload",e),y=p.prefixCls,X=p.direction,m=de(function(){var G;return G={},ce(G,"".concat(y.value,"-list"),!0),ce(G,"".concat(y.value,"-list-").concat(e.listType),!0),ce(G,"".concat(y.value,"-list-rtl"),X.value==="rtl"),G}),N=de(function(){return P(P(P({},Jh("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),jW("".concat(y.value,"-").concat(e.listType==="picture-card"?"animate-inline":"animate"))),{},{class:m.value,appear:l.value})});return function(){var G=e.listType,d=e.locale,u=e.isImageUrl,s=e.items,h=s===void 0?[]:s,c=e.showPreviewIcon,W=e.showRemoveIcon,M=e.showDownloadIcon,I=e.removeIcon,w=e.previewIcon,C=e.downloadIcon,x=e.progress,R=e.appendAction,g=e.itemRender,S=e.appendActionVisible,L=R==null?void 0:R();return D(TW,P(P({},N.value),{},{tag:"div"}),{default:function(){return[h.map(function(Y){var T=Y.uid;return D(P0e,{key:T,locale:d,prefixCls:y.value,file:Y,items:h,progress:x,listType:G,isImgUrl:u,showPreviewIcon:c,showRemoveIcon:W,showDownloadIcon:M,onPreview:r,onDownload:f,onClose:v,removeIcon:I,previewIcon:w,downloadIcon:C,itemRender:g},P(P({},i),{},{iconRender:b,actionIconRender:Z}))}),R?vl(D(Q0e,{key:"__ant_upload_appendAction"},{default:function(){return L}}),[[gr,!!S]]):null]}})}}});var A0e=["class","style"],Sd="__LIST_IGNORE_".concat(Date.now(),"__");const um=He({compatConfig:{MODE:3},name:"AUpload",inheritAttrs:!1,props:pn(LS(),{type:"select",multiple:!1,action:"",data:{},accept:"",showUploadList:!0,listType:"text",disabled:!1,supportServerRender:!0}),setup:function(e,t){var i=t.slots,a=t.attrs,l=t.expose,o=Hi(),r=Wi(e.defaultFileList||[],{value:Ot(e,"fileList"),postState:function(R){var g=Date.now();return(R??[]).map(function(S,L){return!S.uid&&!Object.isFrozen(S)&&(S.uid="__AUTO__".concat(g,"_").concat(L,"__")),S})}}),f=ft(r,2),v=f[0],b=f[1],Z=Ne("drop"),p=Ne();Kt(function(){jn(e.fileList!==void 0||a.value===void 0,"Upload","`value` is not a valid prop, do you mean `fileList`?"),jn(e.transformFile===void 0,"Upload","`transformFile` is deprecated. Please use `beforeUpload` directly."),jn(e.remove===void 0,"Upload","`remove` props is deprecated. Please use `remove` event.")});var y=function(R,g,S){var L,V,Y=yt(g);e.maxCount===1?Y=Y.slice(-1):e.maxCount&&(Y=Y.slice(0,e.maxCount)),b(Y);var T={file:R,fileList:Y};S&&(T.event=S),(L=e["onUpdate:fileList"])===null||L===void 0||L.call(e,T.fileList),(V=e.onChange)===null||V===void 0||V.call(e,T),o.onFieldChange()},X=function(){var x=Ic(Xa.mark(function R(g,S){var L,V,Y,T;return Xa.wrap(function(U){for(;;)switch(U.prev=U.next){case 0:if(L=e.beforeUpload,V=e.transformFile,Y=g,!L){U.next=13;break}return U.next=5,L(g,S);case 5:if(T=U.sent,T!==!1){U.next=8;break}return U.abrupt("return",!1);case 8:if(delete g[Sd],T!==Sd){U.next=12;break}return Object.defineProperty(g,Sd,{value:!0,configurable:!0}),U.abrupt("return",!1);case 12:Yt(T)==="object"&&T&&(Y=T);case 13:if(!V){U.next=17;break}return U.next=16,V(Y);case 16:Y=U.sent;case 17:return U.abrupt("return",Y);case 18:case"end":return U.stop()}},R)}));return function(g,S){return x.apply(this,arguments)}}(),m=function(R){var g=R.filter(function(V){return!V.file[Sd]});if(g.length){var S=g.map(function(V){return Gb(V.file)}),L=yt(v.value);S.forEach(function(V){L=Xb(V,L)}),S.forEach(function(V,Y){var T=V;if(g[Y].parsedFile)V.status="uploading";else{var J=V.originFileObj,U;try{U=new File([J],J.name,{type:J.type})}catch{U=new Blob([J],{type:J.type}),U.name=J.name,U.lastModifiedDate=new Date,U.lastModified=new Date().getTime()}U.uid=V.uid,T=U}y(T,L)})}},N=function(R,g,S){try{typeof R=="string"&&(R=JSON.parse(R))}catch{}if(PZ(g,v.value)){var L=Gb(g);L.status="done",L.percent=100,L.response=R,L.xhr=S;var V=Xb(L,v.value);y(L,V)}},G=function(R,g){if(PZ(g,v.value)){var S=Gb(g);S.status="uploading",S.percent=R.percent;var L=Xb(S,v.value);y(S,L,R)}},d=function(R,g,S){if(PZ(S,v.value)){var L=Gb(S);L.error=R,L.response=g,L.status="error";var V=Xb(L,v.value);y(L,V)}},u=function(R){var g,S=e.onRemove||e.remove;Promise.resolve(typeof S=="function"?S(R):S).then(function(L){if(L!==!1){var V=F0e(R,v.value);if(V){var Y,T;g=P(P({},R),{},{status:"removed"}),(Y=v.value)===null||Y===void 0||Y.forEach(function(J){var U=g.uid!==void 0?"uid":"name";J[U]===g[U]&&!Object.isFrozen(J)&&(J.status="removed")}),(T=p.value)===null||T===void 0||T.abort(g),y(g,V)}}})},s=function(R){if(Z.value=R.type,R.type==="drop"){var g;(g=e.onDrop)===null||g===void 0||g.call(e,R)}};l({onBatchStart:m,onSuccess:N,onProgress:G,onError:d,fileList:v,upload:p});var h=Nt("upload",e),c=h.prefixCls,W=h.direction,M=Qr("Upload",Mr.Upload,de(function(){return e.locale})),I=ft(M,1),w=I[0],C=function(R,g){var S=e.removeIcon,L=e.previewIcon,V=e.downloadIcon,Y=e.previewFile,T=e.onPreview,J=e.onDownload,U=e.disabled,K=e.isImageUrl,H=e.progress,k=e.itemRender,F=e.iconRender,O=e.showUploadList,Q=typeof O=="boolean"?{}:O,oe=Q.showDownloadIcon,se=Q.showPreviewIcon,he=Q.showRemoveIcon;return O?D(B0e,{listType:e.listType,items:v.value,previewFile:Y,onPreview:T,onDownload:J,onRemove:u,showRemoveIcon:!U&&he,showPreviewIcon:se,showDownloadIcon:oe,removeIcon:S,previewIcon:L,downloadIcon:V,iconRender:F,locale:w.value,isImageUrl:K,progress:H,itemRender:k,appendActionVisible:g,appendAction:R},P({},i)):R==null?void 0:R()};return function(){var x,R,g,S=e.listType,L=e.disabled,V=e.type;a.class,a.style;var Y=jt(a,A0e),T=P(P(P({onBatchStart:m,onError:d,onProgress:G,onSuccess:N},Y),e),{},{id:(x=e.id)!==null&&x!==void 0?x:o.id.value,prefixCls:c.value,beforeUpload:X,onChange:void 0});if(delete T.remove,(!i.default||L)&&delete T.id,V==="drag"){var J,U,K=_e(c.value,(J={},ce(J,"".concat(c.value,"-drag"),!0),ce(J,"".concat(c.value,"-drag-uploading"),v.value.some(function(O){return O.status==="uploading"})),ce(J,"".concat(c.value,"-drag-hover"),Z.value==="dragover"),ce(J,"".concat(c.value,"-disabled"),L),ce(J,"".concat(c.value,"-rtl"),W.value==="rtl"),J),a.class);return D("span",null,[D("div",{class:K,onDrop:s,onDragover:s,onDragleave:s,style:a.style},[D(zV,P(P({},T),{},{ref:p,class:"".concat(c.value,"-btn")}),P({default:function(){return[D("div",{class:"".concat(c,"-drag-container")},[(U=i.default)===null||U===void 0?void 0:U.call(i)])]}},i))]),C()])}var H=_e(c.value,(R={},ce(R,"".concat(c.value,"-select"),!0),ce(R,"".concat(c.value,"-select-").concat(S),!0),ce(R,"".concat(c.value,"-disabled"),L),ce(R,"".concat(c.value,"-rtl"),W.value==="rtl"),R)),k=ti((g=i.default)===null||g===void 0?void 0:g.call(i)),F=function(Q){return D("div",{class:H,style:Q},[D(zV,P(P({},T),{},{ref:p}),i)])};return S==="picture-card"?D("span",{class:_e("".concat(c.value,"-picture-card-wrapper"),a.class)},[C(F,!!(k&&k.length))]):D("span",{class:a.class},[F(k&&k.length?void 0:{display:"none"}),C()])}}});var _0e=["height"],$0e=["style"];const dm=He({compatConfig:{MODE:3},name:"AUploadDragger",inheritAttrs:!1,props:LS(),setup:function(e,t){var i=t.slots,a=t.attrs;return function(){var l=e.height,o=jt(e,_0e),r=a.style,f=jt(a,$0e),v=P(P(P({},o),f),{},{type:"drag",style:P(P({},r),{},{height:typeof l=="number"?"".concat(l,"px"):l})});return D(um,v,i)}}});var q0e=dm;const epe=Xn(um,{Dragger:dm,LIST_IGNORE:Sd,install:function(e){return e.component(um.name,um),e.component(dm.name,dm),e}}),OV=Object.freeze(Object.defineProperty({__proto__:null,Affix:JT,Alert:p6,Anchor:tc,AnchorLink:OT,AutoComplete:u6,AutoCompleteOptGroup:c6,AutoCompleteOption:s6,Avatar:hc,AvatarGroup:km,BackTop:O6,Badge:Fb,BadgeRibbon:Fm,Breadcrumb:fc,BreadcrumbItem:Nh,BreadcrumbSeparator:Em,Button:qi,ButtonGroup:Dm,Calendar:ree,Card:Gu,CardGrid:Am,CardMeta:Bm,Carousel:_te,Cascader:qae,CheckableTag:e0,Checkbox:lr,CheckboxGroup:qm,Col:mr,Collapse:Ad,CollapsePanel:_m,Comment:cre,ConfigProvider:oG,DatePicker:kre,Descriptions:Kre,DescriptionsItem:_9,DirectoryTree:lm,Divider:Qre,Drawer:moe,Dropdown:Hr,DropdownButton:Xh,Empty:ss,Form:cs,FormItem:D9,FormItemRest:Sm,Grid:cte,Image:Zse,ImagePreviewGroup:WC,Input:Ai,InputGroup:cC,InputNumber:Cse,InputPassword:hC,InputSearch:uC,Layout:Pse,LayoutContent:Hse,LayoutFooter:Ese,LayoutHeader:Use,LayoutSider:Kse,List:Wce,ListItem:MC,ListItemMeta:XC,LocaleProvider:hT,Mentions:jce,MentionsOption:em,Menu:Yi,MenuDivider:Um,MenuItem:Lo,MenuItemGroup:jm,Modal:pl,MonthPicker:Hb,PageHeader:xue,Pagination:mp,Popconfirm:kue,Popover:xx,Progress:hX,QuarterPicker:Pb,Radio:ta,RadioButton:Hm,RadioGroup:G1,RangePicker:Qb,Rate:fde,Result:Vde,Row:au,Select:Xs,SelectOptGroup:a6,SelectOption:l6,Skeleton:ea,SkeletonAvatar:ZX,SkeletonButton:mX,SkeletonImage:yX,SkeletonInput:pX,SkeletonTitle:pp,Slider:qde,Space:lhe,Spin:vs,Statistic:Mo,StatisticCountdown:vue,Step:tm,Steps:uhe,SubMenu:Tu,Switch:bhe,TabPane:Qm,Table:wbe,TableColumn:rm,TableColumnGroup:om,TableSummary:sm,TableSummaryCell:o0,TableSummaryRow:r0,Tabs:bc,Tag:E9,Textarea:H1,TimePicker:pme,TimeRangePicker:cm,Timeline:lh,TimelineItem:Vh,Tooltip:Xr,Transfer:Hbe,Tree:yS,TreeNode:am,TreeSelect:bme,TreeSelectNode:Bv,Typography:ma,TypographyLink:JX,TypographyParagraph:DX,TypographyText:OX,TypographyTitle:jX,Upload:epe,UploadDragger:q0e,WeekPicker:Kb,message:BW,notification:lG},Symbol.toStringTag,{value:"Module"})),tpe="3.2.15";var npe=function(e){return Object.keys(OV).forEach(function(t){var i=OV[t];i.install&&e.use(i)}),e.config.globalProperties.$message=BW,e.config.globalProperties.$notification=lG,e.config.globalProperties.$info=pl.info,e.config.globalProperties.$success=pl.success,e.config.globalProperties.$error=pl.error,e.config.globalProperties.$warning=pl.warning,e.config.globalProperties.$confirm=pl.confirm,e.config.globalProperties.$destroyAll=pl.destroyAll,e};const ipe={version:tpe,install:npe};var Av={},lpe={get exports(){return Av},set exports(n){Av=n}};function bs(n){throw new Error('Could not dynamically require "'+n+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var s0={},ape={get exports(){return s0},set exports(n){s0=n}};/*! JSZip v3.10.1 - A JavaScript class for generating and reading zip files @@ -124,8 +124,8 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/main/LICENSE -*/var DV;function npe(){return DV||(DV=1,function(n,e){(function(t){n.exports=t()})(function(){return function t(i,l,a){function o(v,b){if(!l[v]){if(!i[v]){var Z=typeof bs=="function"&&bs;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=l[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,l,a)}return l[v].exports}for(var r=typeof bs=="function"&&bs,f=0;f>2,y=(3&v)<<4|b>>4,X=1>6:64,m=2>4,b=(15&p)<<4|(y=r.indexOf(f.charAt(m++)))>>2,Z=(3&y)<<6|(X=r.indexOf(f.charAt(m++))),d[N++]=v,y!==64&&(d[N++]=b),X!==64&&(d[N++]=Z);return d}},{"./support":30,"./utils":32}],2:[function(t,i,l){var a=t("./external"),o=t("./stream/DataWorker"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var b=new o(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),Z=this;return b.on("end",function(){if(this.streamInfo.data_length!==Z.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),b},getCompressedWorker:function(){return new o(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,i,l){var a=t("./stream/GenericWorker");l.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},l.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,i,l){var a=t("./utils"),o=function(){for(var r,f=[],v=0;v<256;v++){r=v;for(var b=0;b<8;b++)r=1&r?3988292384^r>>>1:r>>>1;f[v]=r}return f}();i.exports=function(r,f){return r!==void 0&&r.length?a.getTypeOf(r)!=="string"?function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b[m])];return-1^v}(0|f,r,r.length,0):function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b.charCodeAt(m))];return-1^v}(0|f,r,r.length,0):0}},{"./utils":32}],5:[function(t,i,l){l.base64=!1,l.binary=!1,l.dir=!1,l.createFolders=!0,l.date=null,l.compression=null,l.compressionOptions=null,l.comment=null,l.unixPermissions=null,l.dosPermissions=null},{}],6:[function(t,i,l){var a=null;a=typeof Promise<"u"?Promise:t("lie"),i.exports={Promise:a}},{lie:37}],7:[function(t,i,l){var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=a?"uint8array":"array";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}l.magic="\b\0",r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},l.compressWorker=function(Z){return new b("Deflate",Z)},l.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,i,l){function a(y,X){var m,N="";for(m=0;m>>=8;return N}function o(y,X,m,N,G,d){var u,s,h=y.file,c=y.compression,W=d!==v.utf8encode,M=r.transformTo("string",d(h.name)),I=r.transformTo("string",v.utf8encode(h.name)),w=h.comment,C=r.transformTo("string",d(w)),x=r.transformTo("string",v.utf8encode(w)),R=I.length!==h.name.length,g=x.length!==w.length,S="",L="",V="",Y=h.dir,T=h.date,J={crc32:0,compressedSize:0,uncompressedSize:0};X&&!m||(J.crc32=y.crc32,J.compressedSize=y.compressedSize,J.uncompressedSize=y.uncompressedSize);var U=0;X&&(U|=8),W||!R&&!g||(U|=2048);var K=0,H=0;Y&&(K|=16),G==="UNIX"?(H=798,K|=function(F,O){var Q=F;return F||(Q=O?16893:33204),(65535&Q)<<16}(h.unixPermissions,Y)):(H=20,K|=function(F){return 63&(F||0)}(h.dosPermissions)),u=T.getUTCHours(),u<<=6,u|=T.getUTCMinutes(),u<<=5,u|=T.getUTCSeconds()/2,s=T.getUTCFullYear()-1980,s<<=4,s|=T.getUTCMonth()+1,s<<=5,s|=T.getUTCDate(),R&&(L=a(1,1)+a(b(M),4)+I,S+="up"+a(L.length,2)+L),g&&(V=a(1,1)+a(b(C),4)+x,S+="uc"+a(V.length,2)+V);var k="";return k+=` -\0`,k+=a(U,2),k+=c.magic,k+=a(u,2),k+=a(s,2),k+=a(J.crc32,4),k+=a(J.compressedSize,4),k+=a(J.uncompressedSize,4),k+=a(M.length,2),k+=a(S.length,2),{fileRecord:Z.LOCAL_FILE_HEADER+k+M+S,dirRecord:Z.CENTRAL_FILE_HEADER+a(H,2)+k+a(C.length,2)+"\0\0\0\0"+a(K,4)+a(N,4)+M+S+C}}var r=t("../utils"),f=t("../stream/GenericWorker"),v=t("../utf8"),b=t("../crc32"),Z=t("../signature");function p(y,X,m,N){f.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=X,this.zipPlatform=m,this.encodeFileName=N,this.streamFiles=y,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(p,f),p.prototype.push=function(y){var X=y.meta.percent||0,m=this.entriesCount,N=this._sources.length;this.accumulate?this.contentBuffer.push(y):(this.bytesWritten+=y.data.length,f.prototype.push.call(this,{data:y.data,meta:{currentFile:this.currentFile,percent:m?(X+100*(m-N-1))/m:100}}))},p.prototype.openedSource=function(y){this.currentSourceOffset=this.bytesWritten,this.currentFile=y.file.name;var X=this.streamFiles&&!y.file.dir;if(X){var m=o(y,X,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:m.fileRecord,meta:{percent:0}})}else this.accumulate=!0},p.prototype.closedSource=function(y){this.accumulate=!1;var X=this.streamFiles&&!y.file.dir,m=o(y,X,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(m.dirRecord),X)this.push({data:function(N){return Z.DATA_DESCRIPTOR+a(N.crc32,4)+a(N.compressedSize,4)+a(N.uncompressedSize,4)}(y),meta:{percent:100}});else for(this.push({data:m.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},p.prototype.flush=function(){for(var y=this.bytesWritten,X=0;X=this.index;f--)v=(v<<8)+this.byteAt(f);return this.index+=r,v},readString:function(r){return a.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},i.exports=o},{"../utils":32}],19:[function(t,i,l){var a=t("./Uint8ArrayReader");function o(r){a.call(this,r)}t("../utils").inherits(o,a),o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,l){var a=t("./DataReader");function o(r){a.call(this,r)}t("../utils").inherits(o,a),o.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},o.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},o.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./DataReader":18}],21:[function(t,i,l){var a=t("./ArrayReader");function o(r){a.call(this,r)}t("../utils").inherits(o,a),o.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var f=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,l){var a=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=a.getTypeOf(Z);return a.checkSupport(p),p!=="string"||o.uint8array?p==="nodebuffer"?new v(Z):o.uint8array?new b(a.transformTo("uint8array",Z)):new r(a.transformTo("array",Z)):new f(Z)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,l){l.LOCAL_FILE_HEADER="PK",l.CENTRAL_FILE_HEADER="PK",l.CENTRAL_DIRECTORY_END="PK",l.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",l.ZIP64_CENTRAL_DIRECTORY_END="PK",l.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,l){var a=t("./GenericWorker"),o=t("../utils");function r(f){a.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,a),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,l){var a=t("./GenericWorker"),o=t("../crc32");function r(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(r,a),r.prototype.processChunk=function(f){this.streamInfo.crc32=o(f.data,this.streamInfo.crc32||0),this.push(f)},i.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,l){var a=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}a.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,l){var a=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataWorker");var v=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,f.then(function(b){v.dataIsReady=!0,v.data=b,v.max=b&&b.length||0,v.type=a.getTypeOf(b),v.isPaused||v._tickAndRepeat()},function(b){v.error(b)})}a.inherits(r,o),r.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var f=null,v=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,v);break;case"uint8array":f=this.data.subarray(this.index,v);break;case"array":case"nodebuffer":f=this.data.slice(this.index,v)}return this.index=v,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,l){function a(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(o){this.emit("data",o)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(o){this.emit("error",o)}return!0},error:function(o){return!this.isFinished&&(this.isPaused?this.generatedError=o:(this.isFinished=!0,this.emit("error",o),this.previous&&this.previous.error(o),this.cleanUp()),!0)},on:function(o,r){return this._listeners[o].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(o,r){if(this._listeners[o])for(var f=0;f "+o:o}},i.exports=a},{}],29:[function(t,i,l){var a=t("../utils"),o=t("./ConvertWorker"),r=t("./GenericWorker"),f=t("../base64"),v=t("../support"),b=t("../external"),Z=null;if(v.nodestream)try{Z=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function p(X,m){return new b.Promise(function(N,G){var d=[],u=X._internalType,s=X._outputType,h=X._mimeType;X.on("data",function(c,W){d.push(c),m&&m(W)}).on("error",function(c){d=[],G(c)}).on("end",function(){try{var c=function(W,M,I){switch(W){case"blob":return a.newBlob(a.transformTo("arraybuffer",M),I);case"base64":return f.encode(M);default:return a.transformTo(W,M)}}(s,function(W,M){var I,w=0,C=null,x=0;for(I=0;I"u")l.blob=!1;else{var a=new ArrayBuffer(0);try{l.blob=new Blob([a],{type:"application/zip"}).size===0}catch{try{var o=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);o.append(a),l.blob=o.getBlob("application/zip").size===0}catch{l.blob=!1}}}try{l.nodestream=!!t("readable-stream").Readable}catch{l.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,l){for(var a=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=252<=b?6:248<=b?5:240<=b?4:224<=b?3:192<=b?2:1;v[254]=v[254]=1;function Z(){f.call(this,"utf-8 decode"),this.leftOver=null}function p(){f.call(this,"utf-8 encode")}l.utf8encode=function(y){return o.nodebuffer?r.newBufferFrom(y,"utf-8"):function(X){var m,N,G,d,u,s=X.length,h=0;for(d=0;d>>6:(N<65536?m[u++]=224|N>>>12:(m[u++]=240|N>>>18,m[u++]=128|N>>>12&63),m[u++]=128|N>>>6&63),m[u++]=128|63&N);return m}(y)},l.utf8decode=function(y){return o.nodebuffer?a.transformTo("nodebuffer",y).toString("utf-8"):function(X){var m,N,G,d,u=X.length,s=new Array(2*u);for(m=N=0;m>10&1023,s[N++]=56320|1023&G)}return s.length!==N&&(s.subarray?s=s.subarray(0,N):s.length=N),a.applyFromCharCode(s)}(y=a.transformTo(o.uint8array?"uint8array":"array",y))},a.inherits(Z,f),Z.prototype.processChunk=function(y){var X=a.transformTo(o.uint8array?"uint8array":"array",y.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var m=X;(X=new Uint8Array(m.length+this.leftOver.length)).set(this.leftOver,0),X.set(m,this.leftOver.length)}else X=this.leftOver.concat(X);this.leftOver=null}var N=function(d,u){var s;for((u=u||d.length)>d.length&&(u=d.length),s=u-1;0<=s&&(192&d[s])==128;)s--;return s<0||s===0?u:s+v[d[s]]>u?s:u}(X),G=X;N!==X.length&&(o.uint8array?(G=X.subarray(0,N),this.leftOver=X.subarray(N,X.length)):(G=X.slice(0,N),this.leftOver=X.slice(N,X.length))),this.push({data:l.utf8decode(G),meta:y.meta})},Z.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:l.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},l.Utf8DecodeWorker=Z,a.inherits(p,f),p.prototype.processChunk=function(y){this.push({data:l.utf8encode(y.data),meta:y.meta})},l.Utf8EncodeWorker=p},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,l){var a=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("./external");function v(m){return m}function b(m,N){for(var G=0;G>8;this.dir=!!(16&this.externalFileAttributes),y==0&&(this.dosPermissions=63&this.externalFileAttributes),y==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var y=a(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=y.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=y.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=y.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=y.readInt(4))}},readExtraFields:function(y){var X,m,N,G=y.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});y.index+4>>6:(y<65536?p[N++]=224|y>>>12:(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63),p[N++]=128|y>>>6&63),p[N++]=128|63&y);return p},l.buf2binstring=function(Z){return b(Z,Z.length)},l.binstring2buf=function(Z){for(var p=new a.Buf8(Z.length),y=0,X=p.length;y>10&1023,d[X++]=56320|1023&m)}return b(d,X)},l.utf8border=function(Z,p){var y;for((p=p||Z.length)>Z.length&&(p=Z.length),y=p-1;0<=y&&(192&Z[y])==128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":41}],43:[function(t,i,l){i.exports=function(a,o,r,f){for(var v=65535&a|0,b=a>>>16&65535|0,Z=0;r!==0;){for(r-=Z=2e3>>1:o>>>1;r[f]=o}return r}();i.exports=function(o,r,f,v){var b=a,Z=v+f;o^=-1;for(var p=v;p>>8^b[255&(o^r[p])];return-1^o}},{}],46:[function(t,i,l){var a,o=t("../utils/common"),r=t("./trees"),f=t("./adler32"),v=t("./crc32"),b=t("./messages"),Z=0,p=4,y=0,X=-2,m=-1,N=4,G=2,d=8,u=9,s=286,h=30,c=19,W=2*s+1,M=15,I=3,w=258,C=w+I+1,x=42,R=113,g=1,S=2,L=3,V=4;function Y(E,$){return E.msg=b[$],$}function T(E){return(E<<1)-(4E.avail_out&&(ae=E.avail_out),ae!==0&&(o.arraySet(E.output,$.pending_buf,$.pending_out,ae,E.next_out),E.next_out+=ae,$.pending_out+=ae,E.total_out+=ae,E.avail_out-=ae,$.pending-=ae,$.pending===0&&($.pending_out=0))}function K(E,$){r._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,$),E.block_start=E.strstart,U(E.strm)}function H(E,$){E.pending_buf[E.pending++]=$}function k(E,$){E.pending_buf[E.pending++]=$>>>8&255,E.pending_buf[E.pending++]=255&$}function F(E,$){var ae,le,ee=E.max_chain_length,te=E.strstart,be=E.prev_length,ne=E.nice_match,B=E.strstart>E.w_size-C?E.strstart-(E.w_size-C):0,q=E.window,ue=E.w_mask,ve=E.prev,Ge=E.strstart+w,Je=q[te+be-1],xe=q[te+be];E.prev_length>=E.good_match&&(ee>>=2),ne>E.lookahead&&(ne=E.lookahead);do if(q[(ae=$)+be]===xe&&q[ae+be-1]===Je&&q[ae]===q[te]&&q[++ae]===q[te+1]){te+=2,ae++;do;while(q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&teB&&--ee!=0);return be<=E.lookahead?be:E.lookahead}function O(E){var $,ae,le,ee,te,be,ne,B,q,ue,ve=E.w_size;do{if(ee=E.window_size-E.lookahead-E.strstart,E.strstart>=ve+(ve-C)){for(o.arraySet(E.window,E.window,ve,ve,0),E.match_start-=ve,E.strstart-=ve,E.block_start-=ve,$=ae=E.hash_size;le=E.head[--$],E.head[$]=ve<=le?le-ve:0,--ae;);for($=ae=ve;le=E.prev[--$],E.prev[$]=ve<=le?le-ve:0,--ae;);ee+=ve}if(E.strm.avail_in===0)break;if(be=E.strm,ne=E.window,B=E.strstart+E.lookahead,q=ee,ue=void 0,ue=be.avail_in,q=I)for(te=E.strstart-E.insert,E.ins_h=E.window[te],E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I)if(le=r._tr_tally(E,E.strstart-E.match_start,E.match_length-I),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=I){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I&&E.match_length<=E.prev_length){for(ee=E.strstart+E.lookahead-I,le=r._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-I),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=ee&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(ae=E.pending_buf_size-5);;){if(E.lookahead<=1){if(O(E),E.lookahead===0&&$===Z)return g;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var le=E.block_start+ae;if((E.strstart===0||E.strstart>=le)&&(E.lookahead=E.strstart-le,E.strstart=le,K(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-C&&(K(E,!1),E.strm.avail_out===0))return g}return E.insert=0,$===p?(K(E,!0),E.strm.avail_out===0?L:V):(E.strstart>E.block_start&&(K(E,!1),E.strm.avail_out),g)}),new se(4,4,8,4,Q),new se(4,5,16,8,Q),new se(4,6,32,32,Q),new se(4,4,16,16,oe),new se(8,16,32,32,oe),new se(8,16,128,128,oe),new se(8,32,128,256,oe),new se(32,128,258,1024,oe),new se(32,258,258,4096,oe)],l.deflateInit=function(E,$){return _(E,$,d,15,8,0)},l.deflateInit2=_,l.deflateReset=re,l.deflateResetKeep=pe,l.deflateSetHeader=function(E,$){return E&&E.state?E.state.wrap!==2?X:(E.state.gzhead=$,y):X},l.deflate=function(E,$){var ae,le,ee,te;if(!E||!E.state||5<$||$<0)return E?Y(E,X):X;if(le=E.state,!E.output||!E.input&&E.avail_in!==0||le.status===666&&$!==p)return Y(E,E.avail_out===0?-5:X);if(le.strm=E,ae=le.last_flush,le.last_flush=$,le.status===x)if(le.wrap===2)E.adler=0,H(le,31),H(le,139),H(le,8),le.gzhead?(H(le,(le.gzhead.text?1:0)+(le.gzhead.hcrc?2:0)+(le.gzhead.extra?4:0)+(le.gzhead.name?8:0)+(le.gzhead.comment?16:0)),H(le,255&le.gzhead.time),H(le,le.gzhead.time>>8&255),H(le,le.gzhead.time>>16&255),H(le,le.gzhead.time>>24&255),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,255&le.gzhead.os),le.gzhead.extra&&le.gzhead.extra.length&&(H(le,255&le.gzhead.extra.length),H(le,le.gzhead.extra.length>>8&255)),le.gzhead.hcrc&&(E.adler=v(E.adler,le.pending_buf,le.pending,0)),le.gzindex=0,le.status=69):(H(le,0),H(le,0),H(le,0),H(le,0),H(le,0),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,3),le.status=R);else{var be=d+(le.w_bits-8<<4)<<8;be|=(2<=le.strategy||le.level<2?0:le.level<6?1:le.level===6?2:3)<<6,le.strstart!==0&&(be|=32),be+=31-be%31,le.status=R,k(le,be),le.strstart!==0&&(k(le,E.adler>>>16),k(le,65535&E.adler)),E.adler=1}if(le.status===69)if(le.gzhead.extra){for(ee=le.pending;le.gzindex<(65535&le.gzhead.extra.length)&&(le.pending!==le.pending_buf_size||(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending!==le.pending_buf_size));)H(le,255&le.gzhead.extra[le.gzindex]),le.gzindex++;le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),le.gzindex===le.gzhead.extra.length&&(le.gzindex=0,le.status=73)}else le.status=73;if(le.status===73)if(le.gzhead.name){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.gzindex=0,le.status=91)}else le.status=91;if(le.status===91)if(le.gzhead.comment){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.status=103)}else le.status=103;if(le.status===103&&(le.gzhead.hcrc?(le.pending+2>le.pending_buf_size&&U(E),le.pending+2<=le.pending_buf_size&&(H(le,255&E.adler),H(le,E.adler>>8&255),E.adler=0,le.status=R)):le.status=R),le.pending!==0){if(U(E),E.avail_out===0)return le.last_flush=-1,y}else if(E.avail_in===0&&T($)<=T(ae)&&$!==p)return Y(E,-5);if(le.status===666&&E.avail_in!==0)return Y(E,-5);if(E.avail_in!==0||le.lookahead!==0||$!==Z&&le.status!==666){var ne=le.strategy===2?function(B,q){for(var ue;;){if(B.lookahead===0&&(O(B),B.lookahead===0)){if(q===Z)return g;break}if(B.match_length=0,ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):le.strategy===3?function(B,q){for(var ue,ve,Ge,Je,xe=B.window;;){if(B.lookahead<=w){if(O(B),B.lookahead<=w&&q===Z)return g;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=I&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=I?(ue=r._tr_tally(B,1,B.match_length-I),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):a[le.level].func(le,$);if(ne!==L&&ne!==V||(le.status=666),ne===g||ne===L)return E.avail_out===0&&(le.last_flush=-1),y;if(ne===S&&($===1?r._tr_align(le):$!==5&&(r._tr_stored_block(le,0,0,!1),$===3&&(J(le.head),le.lookahead===0&&(le.strstart=0,le.block_start=0,le.insert=0))),U(E),E.avail_out===0))return le.last_flush=-1,y}return $!==p?y:le.wrap<=0?1:(le.wrap===2?(H(le,255&E.adler),H(le,E.adler>>8&255),H(le,E.adler>>16&255),H(le,E.adler>>24&255),H(le,255&E.total_in),H(le,E.total_in>>8&255),H(le,E.total_in>>16&255),H(le,E.total_in>>24&255)):(k(le,E.adler>>>16),k(le,65535&E.adler)),U(E),0=ae.w_size&&(te===0&&(J(ae.head),ae.strstart=0,ae.block_start=0,ae.insert=0),q=new o.Buf8(ae.w_size),o.arraySet(q,$,ue-ae.w_size,ae.w_size,0),$=q,ue=ae.w_size),be=E.avail_in,ne=E.next_in,B=E.input,E.avail_in=ue,E.next_in=0,E.input=$,O(ae);ae.lookahead>=I;){for(le=ae.strstart,ee=ae.lookahead-(I-1);ae.ins_h=(ae.ins_h<>>=I=M>>>24,u-=I,(I=M>>>16&255)===0)S[b++]=65535&M;else{if(!(16&I)){if(!(64&I)){M=s[(65535&M)+(d&(1<>>=I,u-=I),u<15&&(d+=g[f++]<>>=I=M>>>24,u-=I,!(16&(I=M>>>16&255))){if(!(64&I)){M=h[(65535&M)+(d&(1<>>=I,u-=I,(I=b-Z)>3,d&=(1<<(u-=w<<3))-1,a.next_in=f,a.next_out=b,a.avail_in=f>>24&255)+(x>>>8&65280)+((65280&x)<<8)+((255&x)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function u(x){var R;return x&&x.state?(R=x.state,x.total_in=x.total_out=R.total=0,x.msg="",R.wrap&&(x.adler=1&R.wrap),R.mode=X,R.last=0,R.havedict=0,R.dmax=32768,R.head=null,R.hold=0,R.bits=0,R.lencode=R.lendyn=new a.Buf32(m),R.distcode=R.distdyn=new a.Buf32(N),R.sane=1,R.back=-1,p):y}function s(x){var R;return x&&x.state?((R=x.state).wsize=0,R.whave=0,R.wnext=0,u(x)):y}function h(x,R){var g,S;return x&&x.state?(S=x.state,R<0?(g=0,R=-R):(g=1+(R>>4),R<48&&(R&=15)),R&&(R<8||15=V.wsize?(a.arraySet(V.window,R,g-V.wsize,V.wsize,0),V.wnext=0,V.whave=V.wsize):(S<(L=V.wsize-V.wnext)&&(L=S),a.arraySet(V.window,R,g-S,L,V.wnext),(S-=L)?(a.arraySet(V.window,R,g-S,S,0),V.wnext=S,V.whave=V.wsize):(V.wnext+=L,V.wnext===V.wsize&&(V.wnext=0),V.whave>>8&255,g.check=r(g.check,te,2,0),K=U=0,g.mode=2;break}if(g.flags=0,g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&U)<<8)+(U>>8))%31){x.msg="incorrect header check",g.mode=30;break}if((15&U)!=8){x.msg="unknown compression method",g.mode=30;break}if(K-=4,E=8+(15&(U>>>=4)),g.wbits===0)g.wbits=E;else if(E>g.wbits){x.msg="invalid window size",g.mode=30;break}g.dmax=1<>8&1),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=3;case 3:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>8&255,te[2]=U>>>16&255,te[3]=U>>>24&255,g.check=r(g.check,te,4,0)),K=U=0,g.mode=4;case 4:for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>8),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=5;case 5:if(1024&g.flags){for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>>8&255,g.check=r(g.check,te,2,0)),K=U=0}else g.head&&(g.head.extra=null);g.mode=6;case 6:if(1024&g.flags&&(T<(F=g.length)&&(F=T),F&&(g.head&&(E=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Array(g.head.extra_len)),a.arraySet(g.head.extra,S,V,F,E)),512&g.flags&&(g.check=r(g.check,S,F,V)),T-=F,V+=F,g.length-=F),g.length))break e;g.length=0,g.mode=7;case 7:if(2048&g.flags){if(T===0)break e;for(F=0;E=S[V+F++],g.head&&E&&g.length<65536&&(g.head.name+=String.fromCharCode(E)),E&&F>9&1,g.head.done=!0),x.adler=g.check=0,g.mode=12;break;case 10:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>=7&K,K-=7&K,g.mode=27;break}for(;K<3;){if(T===0)break e;T--,U+=S[V++]<>>=1)){case 0:g.mode=14;break;case 1:if(w(g),g.mode=20,R!==6)break;U>>>=2,K-=2;break e;case 2:g.mode=17;break;case 3:x.msg="invalid block type",g.mode=30}U>>>=2,K-=2;break;case 14:for(U>>>=7&K,K-=7&K;K<32;){if(T===0)break e;T--,U+=S[V++]<>>16^65535)){x.msg="invalid stored block lengths",g.mode=30;break}if(g.length=65535&U,K=U=0,g.mode=15,R===6)break e;case 15:g.mode=16;case 16:if(F=g.length){if(T>>=5,K-=5,g.ndist=1+(31&U),U>>>=5,K-=5,g.ncode=4+(15&U),U>>>=4,K-=4,286>>=3,K-=3}for(;g.have<19;)g.lens[be[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,ae={bits:g.lenbits},$=v(0,g.lens,0,19,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid code lengths set",g.mode=30;break}g.have=0,g.mode=19;case 19:for(;g.have>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=oe,K-=oe,g.lens[g.have++]=he;else{if(he===16){for(le=oe+2;K>>=oe,K-=oe,g.have===0){x.msg="invalid bit length repeat",g.mode=30;break}E=g.lens[g.have-1],F=3+(3&U),U>>>=2,K-=2}else if(he===17){for(le=oe+3;K>>=oe)),U>>>=3,K-=3}else{for(le=oe+7;K>>=oe)),U>>>=7,K-=7}if(g.have+F>g.nlen+g.ndist){x.msg="invalid bit length repeat",g.mode=30;break}for(;F--;)g.lens[g.have++]=E}}if(g.mode===30)break;if(g.lens[256]===0){x.msg="invalid code -- missing end-of-block",g.mode=30;break}if(g.lenbits=9,ae={bits:g.lenbits},$=v(b,g.lens,0,g.nlen,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid literal/lengths set",g.mode=30;break}if(g.distbits=6,g.distcode=g.distdyn,ae={bits:g.distbits},$=v(Z,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,ae),g.distbits=ae.bits,$){x.msg="invalid distances set",g.mode=30;break}if(g.mode=20,R===6)break e;case 20:g.mode=21;case 21:if(6<=T&&258<=J){x.next_out=Y,x.avail_out=J,x.next_in=V,x.avail_in=T,g.hold=U,g.bits=K,f(x,k),Y=x.next_out,L=x.output,J=x.avail_out,V=x.next_in,S=x.input,T=x.avail_in,U=g.hold,K=g.bits,g.mode===12&&(g.back=-1);break}for(g.back=0;se=(ee=g.lencode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,g.length=he,se===0){g.mode=26;break}if(32&se){g.back=-1,g.mode=12;break}if(64&se){x.msg="invalid literal/length code",g.mode=30;break}g.extra=15&se,g.mode=22;case 22:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=23;case 23:for(;se=(ee=g.distcode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,64&se){x.msg="invalid distance code",g.mode=30;break}g.offset=he,g.extra=15&se,g.mode=24;case 24:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){x.msg="invalid distance too far back",g.mode=30;break}g.mode=25;case 25:if(J===0)break e;if(F=k-J,g.offset>F){if((F=g.offset-F)>g.whave&&g.sane){x.msg="invalid distance too far back",g.mode=30;break}O=F>g.wnext?(F-=g.wnext,g.wsize-F):g.wnext-F,F>g.length&&(F=g.length),Q=g.window}else Q=L,O=Y-g.offset,F=g.length;for(JW?(I=O[Q+N[R]],K[H+N[R]]):(I=96,0),d=1<>Y)+(u-=d)]=M<<24|I<<16|w|0,u!==0;);for(d=1<>=1;if(d!==0?(U&=d-1,U+=d):U=0,R++,--k[x]==0){if(x===S)break;x=Z[p+N[R]]}if(L>>7)]}function H(ee,te){ee.pending_buf[ee.pending++]=255&te,ee.pending_buf[ee.pending++]=te>>>8&255}function k(ee,te,be){ee.bi_valid>G-be?(ee.bi_buf|=te<>G-ee.bi_valid,ee.bi_valid+=be-G):(ee.bi_buf|=te<>>=1,be<<=1,0<--te;);return be>>>1}function Q(ee,te,be){var ne,B,q=new Array(N+1),ue=0;for(ne=1;ne<=N;ne++)q[ne]=ue=ue+be[ne-1]<<1;for(B=0;B<=te;B++){var ve=ee[2*B+1];ve!==0&&(ee[2*B]=O(q[ve]++,ve))}}function oe(ee){var te;for(te=0;te>1;1<=be;be--)pe(ee,q,be);for(B=Ge;be=ee.heap[1],ee.heap[1]=ee.heap[ee.heap_len--],pe(ee,q,1),ne=ee.heap[1],ee.heap[--ee.heap_max]=be,ee.heap[--ee.heap_max]=ne,q[2*B]=q[2*be]+q[2*ne],ee.depth[B]=(ee.depth[be]>=ee.depth[ne]?ee.depth[be]:ee.depth[ne])+1,q[2*be+1]=q[2*ne+1]=B,ee.heap[1]=B++,pe(ee,q,1),2<=ee.heap_len;);ee.heap[--ee.heap_max]=ee.heap[1],function(xe,ke){var Pe,Be,Te,we,Se,De,me=ke.dyn_tree,Ve=ke.max_code,Me=ke.stat_desc.static_tree,Ie=ke.stat_desc.has_stree,Ze=ke.stat_desc.extra_bits,Ce=ke.stat_desc.extra_base,ye=ke.stat_desc.max_length,Ue=0;for(we=0;we<=N;we++)xe.bl_count[we]=0;for(me[2*xe.heap[xe.heap_max]+1]=0,Pe=xe.heap_max+1;Pe>=7;B>>=1)if(1&Je&&ve.dyn_ltree[2*Ge]!==0)return o;if(ve.dyn_ltree[18]!==0||ve.dyn_ltree[20]!==0||ve.dyn_ltree[26]!==0)return r;for(Ge=32;Ge>>3,(q=ee.static_len+3+7>>>3)<=B&&(B=q)):B=q=be+5,be+4<=B&&te!==-1?le(ee,te,be,ne):ee.strategy===4||q===B?(k(ee,2+(ne?1:0),3),re(ee,C,x)):(k(ee,4+(ne?1:0),3),function(ve,Ge,Je,xe){var ke;for(k(ve,Ge-257,5),k(ve,Je-1,5),k(ve,xe-4,4),ke=0;ke>>8&255,ee.pending_buf[ee.d_buf+2*ee.last_lit+1]=255&te,ee.pending_buf[ee.l_buf+ee.last_lit]=255&be,ee.last_lit++,te===0?ee.dyn_ltree[2*be]++:(ee.matches++,te--,ee.dyn_ltree[2*(g[be]+Z+1)]++,ee.dyn_dtree[2*K(te)]++),ee.last_lit===ee.lit_bufsize-1},l._tr_align=function(ee){k(ee,2,3),F(ee,u,C),function(te){te.bi_valid===16?(H(te,te.bi_buf),te.bi_buf=0,te.bi_valid=0):8<=te.bi_valid&&(te.pending_buf[te.pending++]=255&te.bi_buf,te.bi_buf>>=8,te.bi_valid-=8)}(ee)}},{"../utils/common":41}],53:[function(t,i,l){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,l){(function(a){(function(o,r){if(!o.setImmediate){var f,v,b,Z,p=1,y={},X=!1,m=o.document,N=Object.getPrototypeOf&&Object.getPrototypeOf(o);N=N&&N.setTimeout?N:o,f={}.toString.call(o.process)==="[object process]"?function(s){process.nextTick(function(){d(s)})}:function(){if(o.postMessage&&!o.importScripts){var s=!0,h=o.onmessage;return o.onmessage=function(){s=!1},o.postMessage("","*"),o.onmessage=h,s}}()?(Z="setImmediate$"+Math.random()+"$",o.addEventListener?o.addEventListener("message",u,!1):o.attachEvent("onmessage",u),function(s){o.postMessage(Z+s,"*")}):o.MessageChannel?((b=new MessageChannel).port1.onmessage=function(s){d(s.data)},function(s){b.port2.postMessage(s)}):m&&"onreadystatechange"in m.createElement("script")?(v=m.documentElement,function(s){var h=m.createElement("script");h.onreadystatechange=function(){d(s),h.onreadystatechange=null,v.removeChild(h),h=null},v.appendChild(h)}):function(s){setTimeout(d,0,s)},N.setImmediate=function(s){typeof s!="function"&&(s=new Function(""+s));for(var h=new Array(arguments.length-1),c=0;c"u"?a===void 0?this:a:self)}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(tpe)),o0}(function(n,e){(function(t,i){n.exports=i(npe())})(globalThis,t=>(()=>{var i={438:(o,r,f)=>{f.r(r),f.d(r,{default:()=>d});var v=f(537),b=f.n(v),Z=f(645),p=f.n(Z),y=f(806),X=f.n(y),m=new URL(f(583),f.b),N=p()(b()),G=X()(m);N.push([o.id,'@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url('+G+")}","",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r +*/var jV;function rpe(){return jV||(jV=1,function(n,e){(function(t){n.exports=t()})(function(){return function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof bs=="function"&&bs;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof bs=="function"&&bs,f=0;f>2,y=(3&v)<<4|b>>4,X=1>6:64,m=2>4,b=(15&p)<<4|(y=r.indexOf(f.charAt(m++)))>>2,Z=(3&y)<<6|(X=r.indexOf(f.charAt(m++))),d[N++]=v,y!==64&&(d[N++]=b),X!==64&&(d[N++]=Z);return d}},{"./support":30,"./utils":32}],2:[function(t,i,a){var l=t("./external"),o=t("./stream/DataWorker"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var b=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),Z=this;return b.on("end",function(){if(this.streamInfo.data_length!==Z.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),b},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,i,a){var l=t("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},a.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,i,a){var l=t("./utils"),o=function(){for(var r,f=[],v=0;v<256;v++){r=v;for(var b=0;b<8;b++)r=1&r?3988292384^r>>>1:r>>>1;f[v]=r}return f}();i.exports=function(r,f){return r!==void 0&&r.length?l.getTypeOf(r)!=="string"?function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b[m])];return-1^v}(0|f,r,r.length,0):function(v,b,Z,p){var y=o,X=p+Z;v^=-1;for(var m=p;m>>8^y[255&(v^b.charCodeAt(m))];return-1^v}(0|f,r,r.length,0):0}},{"./utils":32}],5:[function(t,i,a){a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(t,i,a){var l=null;l=typeof Promise<"u"?Promise:t("lie"),i.exports={Promise:l}},{lie:37}],7:[function(t,i,a){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=l?"uint8array":"array";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}a.magic="\b\0",r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},a.compressWorker=function(Z){return new b("Deflate",Z)},a.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,i,a){function l(y,X){var m,N="";for(m=0;m>>=8;return N}function o(y,X,m,N,G,d){var u,s,h=y.file,c=y.compression,W=d!==v.utf8encode,M=r.transformTo("string",d(h.name)),I=r.transformTo("string",v.utf8encode(h.name)),w=h.comment,C=r.transformTo("string",d(w)),x=r.transformTo("string",v.utf8encode(w)),R=I.length!==h.name.length,g=x.length!==w.length,S="",L="",V="",Y=h.dir,T=h.date,J={crc32:0,compressedSize:0,uncompressedSize:0};X&&!m||(J.crc32=y.crc32,J.compressedSize=y.compressedSize,J.uncompressedSize=y.uncompressedSize);var U=0;X&&(U|=8),W||!R&&!g||(U|=2048);var K=0,H=0;Y&&(K|=16),G==="UNIX"?(H=798,K|=function(F,O){var Q=F;return F||(Q=O?16893:33204),(65535&Q)<<16}(h.unixPermissions,Y)):(H=20,K|=function(F){return 63&(F||0)}(h.dosPermissions)),u=T.getUTCHours(),u<<=6,u|=T.getUTCMinutes(),u<<=5,u|=T.getUTCSeconds()/2,s=T.getUTCFullYear()-1980,s<<=4,s|=T.getUTCMonth()+1,s<<=5,s|=T.getUTCDate(),R&&(L=l(1,1)+l(b(M),4)+I,S+="up"+l(L.length,2)+L),g&&(V=l(1,1)+l(b(C),4)+x,S+="uc"+l(V.length,2)+V);var k="";return k+=` +\0`,k+=l(U,2),k+=c.magic,k+=l(u,2),k+=l(s,2),k+=l(J.crc32,4),k+=l(J.compressedSize,4),k+=l(J.uncompressedSize,4),k+=l(M.length,2),k+=l(S.length,2),{fileRecord:Z.LOCAL_FILE_HEADER+k+M+S,dirRecord:Z.CENTRAL_FILE_HEADER+l(H,2)+k+l(C.length,2)+"\0\0\0\0"+l(K,4)+l(N,4)+M+S+C}}var r=t("../utils"),f=t("../stream/GenericWorker"),v=t("../utf8"),b=t("../crc32"),Z=t("../signature");function p(y,X,m,N){f.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=X,this.zipPlatform=m,this.encodeFileName=N,this.streamFiles=y,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}r.inherits(p,f),p.prototype.push=function(y){var X=y.meta.percent||0,m=this.entriesCount,N=this._sources.length;this.accumulate?this.contentBuffer.push(y):(this.bytesWritten+=y.data.length,f.prototype.push.call(this,{data:y.data,meta:{currentFile:this.currentFile,percent:m?(X+100*(m-N-1))/m:100}}))},p.prototype.openedSource=function(y){this.currentSourceOffset=this.bytesWritten,this.currentFile=y.file.name;var X=this.streamFiles&&!y.file.dir;if(X){var m=o(y,X,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:m.fileRecord,meta:{percent:0}})}else this.accumulate=!0},p.prototype.closedSource=function(y){this.accumulate=!1;var X=this.streamFiles&&!y.file.dir,m=o(y,X,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(m.dirRecord),X)this.push({data:function(N){return Z.DATA_DESCRIPTOR+l(N.crc32,4)+l(N.compressedSize,4)+l(N.uncompressedSize,4)}(y),meta:{percent:100}});else for(this.push({data:m.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},p.prototype.flush=function(){for(var y=this.bytesWritten,X=0;X=this.index;f--)v=(v<<8)+this.byteAt(f);return this.index+=r,v},readString:function(r){return l.transformTo("string",this.readData(r))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var r=this.readInt(4);return new Date(Date.UTC(1980+(r>>25&127),(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(31&r)<<1))}},i.exports=o},{"../utils":32}],19:[function(t,i,a){var l=t("./Uint8ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,i,a){var l=t("./DataReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.byteAt=function(r){return this.data.charCodeAt(this.zero+r)},o.prototype.lastIndexOfSignature=function(r){return this.data.lastIndexOf(r)-this.zero},o.prototype.readAndCheckSignature=function(r){return r===this.readData(4)},o.prototype.readData=function(r){this.checkOffset(r);var f=this.data.slice(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./DataReader":18}],21:[function(t,i,a){var l=t("./ArrayReader");function o(r){l.call(this,r)}t("../utils").inherits(o,l),o.prototype.readData=function(r){if(this.checkOffset(r),r===0)return new Uint8Array(0);var f=this.data.subarray(this.zero+this.index,this.zero+this.index+r);return this.index+=r,f},i.exports=o},{"../utils":32,"./ArrayReader":17}],22:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p!=="string"||o.uint8array?p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z)):new f(Z)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":32,"./GenericWorker":28}],25:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32");function r(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(r,l),r.prototype.processChunk=function(f){this.streamInfo.crc32=o(f.data,this.streamInfo.crc32||0),this.push(f)},i.exports=r},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":32,"./GenericWorker":28}],27:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataWorker");var v=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,f.then(function(b){v.dataIsReady=!0,v.data=b,v.max=b&&b.length||0,v.type=l.getTypeOf(b),v.isPaused||v._tickAndRepeat()},function(b){v.error(b)})}l.inherits(r,o),r.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},r.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0)},r.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},r.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var f=null,v=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,v);break;case"uint8array":f=this.data.subarray(this.index,v);break;case"array":case"nodebuffer":f=this.data.slice(this.index,v)}return this.index=v,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=r},{"../utils":32,"./GenericWorker":28}],28:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(o){this.emit("data",o)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(o){this.emit("error",o)}return!0},error:function(o){return!this.isFinished&&(this.isPaused?this.generatedError=o:(this.isFinished=!0,this.emit("error",o),this.previous&&this.previous.error(o),this.cleanUp()),!0)},on:function(o,r){return this._listeners[o].push(r),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(o,r){if(this._listeners[o])for(var f=0;f "+o:o}},i.exports=l},{}],29:[function(t,i,a){var l=t("../utils"),o=t("./ConvertWorker"),r=t("./GenericWorker"),f=t("../base64"),v=t("../support"),b=t("../external"),Z=null;if(v.nodestream)try{Z=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function p(X,m){return new b.Promise(function(N,G){var d=[],u=X._internalType,s=X._outputType,h=X._mimeType;X.on("data",function(c,W){d.push(c),m&&m(W)}).on("error",function(c){d=[],G(c)}).on("end",function(){try{var c=function(W,M,I){switch(W){case"blob":return l.newBlob(l.transformTo("arraybuffer",M),I);case"base64":return f.encode(M);default:return l.transformTo(W,M)}}(s,function(W,M){var I,w=0,C=null,x=0;for(I=0;I"u")a.blob=!1;else{var l=new ArrayBuffer(0);try{a.blob=new Blob([l],{type:"application/zip"}).size===0}catch{try{var o=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);o.append(l),a.blob=o.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}},{"readable-stream":16}],31:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=252<=b?6:248<=b?5:240<=b?4:224<=b?3:192<=b?2:1;v[254]=v[254]=1;function Z(){f.call(this,"utf-8 decode"),this.leftOver=null}function p(){f.call(this,"utf-8 encode")}a.utf8encode=function(y){return o.nodebuffer?r.newBufferFrom(y,"utf-8"):function(X){var m,N,G,d,u,s=X.length,h=0;for(d=0;d>>6:(N<65536?m[u++]=224|N>>>12:(m[u++]=240|N>>>18,m[u++]=128|N>>>12&63),m[u++]=128|N>>>6&63),m[u++]=128|63&N);return m}(y)},a.utf8decode=function(y){return o.nodebuffer?l.transformTo("nodebuffer",y).toString("utf-8"):function(X){var m,N,G,d,u=X.length,s=new Array(2*u);for(m=N=0;m>10&1023,s[N++]=56320|1023&G)}return s.length!==N&&(s.subarray?s=s.subarray(0,N):s.length=N),l.applyFromCharCode(s)}(y=l.transformTo(o.uint8array?"uint8array":"array",y))},l.inherits(Z,f),Z.prototype.processChunk=function(y){var X=l.transformTo(o.uint8array?"uint8array":"array",y.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var m=X;(X=new Uint8Array(m.length+this.leftOver.length)).set(this.leftOver,0),X.set(m,this.leftOver.length)}else X=this.leftOver.concat(X);this.leftOver=null}var N=function(d,u){var s;for((u=u||d.length)>d.length&&(u=d.length),s=u-1;0<=s&&(192&d[s])==128;)s--;return s<0||s===0?u:s+v[d[s]]>u?s:u}(X),G=X;N!==X.length&&(o.uint8array?(G=X.subarray(0,N),this.leftOver=X.subarray(N,X.length)):(G=X.slice(0,N),this.leftOver=X.slice(N,X.length))),this.push({data:a.utf8decode(G),meta:y.meta})},Z.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=Z,l.inherits(p,f),p.prototype.processChunk=function(y){this.push({data:a.utf8encode(y.data),meta:y.meta})},a.Utf8EncodeWorker=p},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("./external");function v(m){return m}function b(m,N){for(var G=0;G>8;this.dir=!!(16&this.externalFileAttributes),y==0&&(this.dosPermissions=63&this.externalFileAttributes),y==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var y=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=y.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=y.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=y.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=y.readInt(4))}},readExtraFields:function(y){var X,m,N,G=y.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});y.index+4>>6:(y<65536?p[N++]=224|y>>>12:(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63),p[N++]=128|y>>>6&63),p[N++]=128|63&y);return p},a.buf2binstring=function(Z){return b(Z,Z.length)},a.binstring2buf=function(Z){for(var p=new l.Buf8(Z.length),y=0,X=p.length;y>10&1023,d[X++]=56320|1023&m)}return b(d,X)},a.utf8border=function(Z,p){var y;for((p=p||Z.length)>Z.length&&(p=Z.length),y=p-1;0<=y&&(192&Z[y])==128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":41}],43:[function(t,i,a){i.exports=function(l,o,r,f){for(var v=65535&l|0,b=l>>>16&65535|0,Z=0;r!==0;){for(r-=Z=2e3>>1:o>>>1;r[f]=o}return r}();i.exports=function(o,r,f,v){var b=l,Z=v+f;o^=-1;for(var p=v;p>>8^b[255&(o^r[p])];return-1^o}},{}],46:[function(t,i,a){var l,o=t("../utils/common"),r=t("./trees"),f=t("./adler32"),v=t("./crc32"),b=t("./messages"),Z=0,p=4,y=0,X=-2,m=-1,N=4,G=2,d=8,u=9,s=286,h=30,c=19,W=2*s+1,M=15,I=3,w=258,C=w+I+1,x=42,R=113,g=1,S=2,L=3,V=4;function Y(E,$){return E.msg=b[$],$}function T(E){return(E<<1)-(4E.avail_out&&(ae=E.avail_out),ae!==0&&(o.arraySet(E.output,$.pending_buf,$.pending_out,ae,E.next_out),E.next_out+=ae,$.pending_out+=ae,E.total_out+=ae,E.avail_out-=ae,$.pending-=ae,$.pending===0&&($.pending_out=0))}function K(E,$){r._tr_flush_block(E,0<=E.block_start?E.block_start:-1,E.strstart-E.block_start,$),E.block_start=E.strstart,U(E.strm)}function H(E,$){E.pending_buf[E.pending++]=$}function k(E,$){E.pending_buf[E.pending++]=$>>>8&255,E.pending_buf[E.pending++]=255&$}function F(E,$){var ae,le,ee=E.max_chain_length,te=E.strstart,be=E.prev_length,ne=E.nice_match,B=E.strstart>E.w_size-C?E.strstart-(E.w_size-C):0,q=E.window,ue=E.w_mask,ve=E.prev,Ge=E.strstart+w,Je=q[te+be-1],xe=q[te+be];E.prev_length>=E.good_match&&(ee>>=2),ne>E.lookahead&&(ne=E.lookahead);do if(q[(ae=$)+be]===xe&&q[ae+be-1]===Je&&q[ae]===q[te]&&q[++ae]===q[te+1]){te+=2,ae++;do;while(q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&q[++te]===q[++ae]&&teB&&--ee!=0);return be<=E.lookahead?be:E.lookahead}function O(E){var $,ae,le,ee,te,be,ne,B,q,ue,ve=E.w_size;do{if(ee=E.window_size-E.lookahead-E.strstart,E.strstart>=ve+(ve-C)){for(o.arraySet(E.window,E.window,ve,ve,0),E.match_start-=ve,E.strstart-=ve,E.block_start-=ve,$=ae=E.hash_size;le=E.head[--$],E.head[$]=ve<=le?le-ve:0,--ae;);for($=ae=ve;le=E.prev[--$],E.prev[$]=ve<=le?le-ve:0,--ae;);ee+=ve}if(E.strm.avail_in===0)break;if(be=E.strm,ne=E.window,B=E.strstart+E.lookahead,q=ee,ue=void 0,ue=be.avail_in,q=I)for(te=E.strstart-E.insert,E.ins_h=E.window[te],E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I)if(le=r._tr_tally(E,E.strstart-E.match_start,E.match_length-I),E.lookahead-=E.match_length,E.match_length<=E.max_lazy_match&&E.lookahead>=I){for(E.match_length--;E.strstart++,E.ins_h=(E.ins_h<=I&&(E.ins_h=(E.ins_h<=I&&E.match_length<=E.prev_length){for(ee=E.strstart+E.lookahead-I,le=r._tr_tally(E,E.strstart-1-E.prev_match,E.prev_length-I),E.lookahead-=E.prev_length-1,E.prev_length-=2;++E.strstart<=ee&&(E.ins_h=(E.ins_h<E.pending_buf_size-5&&(ae=E.pending_buf_size-5);;){if(E.lookahead<=1){if(O(E),E.lookahead===0&&$===Z)return g;if(E.lookahead===0)break}E.strstart+=E.lookahead,E.lookahead=0;var le=E.block_start+ae;if((E.strstart===0||E.strstart>=le)&&(E.lookahead=E.strstart-le,E.strstart=le,K(E,!1),E.strm.avail_out===0)||E.strstart-E.block_start>=E.w_size-C&&(K(E,!1),E.strm.avail_out===0))return g}return E.insert=0,$===p?(K(E,!0),E.strm.avail_out===0?L:V):(E.strstart>E.block_start&&(K(E,!1),E.strm.avail_out),g)}),new se(4,4,8,4,Q),new se(4,5,16,8,Q),new se(4,6,32,32,Q),new se(4,4,16,16,oe),new se(8,16,32,32,oe),new se(8,16,128,128,oe),new se(8,32,128,256,oe),new se(32,128,258,1024,oe),new se(32,258,258,4096,oe)],a.deflateInit=function(E,$){return _(E,$,d,15,8,0)},a.deflateInit2=_,a.deflateReset=re,a.deflateResetKeep=pe,a.deflateSetHeader=function(E,$){return E&&E.state?E.state.wrap!==2?X:(E.state.gzhead=$,y):X},a.deflate=function(E,$){var ae,le,ee,te;if(!E||!E.state||5<$||$<0)return E?Y(E,X):X;if(le=E.state,!E.output||!E.input&&E.avail_in!==0||le.status===666&&$!==p)return Y(E,E.avail_out===0?-5:X);if(le.strm=E,ae=le.last_flush,le.last_flush=$,le.status===x)if(le.wrap===2)E.adler=0,H(le,31),H(le,139),H(le,8),le.gzhead?(H(le,(le.gzhead.text?1:0)+(le.gzhead.hcrc?2:0)+(le.gzhead.extra?4:0)+(le.gzhead.name?8:0)+(le.gzhead.comment?16:0)),H(le,255&le.gzhead.time),H(le,le.gzhead.time>>8&255),H(le,le.gzhead.time>>16&255),H(le,le.gzhead.time>>24&255),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,255&le.gzhead.os),le.gzhead.extra&&le.gzhead.extra.length&&(H(le,255&le.gzhead.extra.length),H(le,le.gzhead.extra.length>>8&255)),le.gzhead.hcrc&&(E.adler=v(E.adler,le.pending_buf,le.pending,0)),le.gzindex=0,le.status=69):(H(le,0),H(le,0),H(le,0),H(le,0),H(le,0),H(le,le.level===9?2:2<=le.strategy||le.level<2?4:0),H(le,3),le.status=R);else{var be=d+(le.w_bits-8<<4)<<8;be|=(2<=le.strategy||le.level<2?0:le.level<6?1:le.level===6?2:3)<<6,le.strstart!==0&&(be|=32),be+=31-be%31,le.status=R,k(le,be),le.strstart!==0&&(k(le,E.adler>>>16),k(le,65535&E.adler)),E.adler=1}if(le.status===69)if(le.gzhead.extra){for(ee=le.pending;le.gzindex<(65535&le.gzhead.extra.length)&&(le.pending!==le.pending_buf_size||(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending!==le.pending_buf_size));)H(le,255&le.gzhead.extra[le.gzindex]),le.gzindex++;le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),le.gzindex===le.gzhead.extra.length&&(le.gzindex=0,le.status=73)}else le.status=73;if(le.status===73)if(le.gzhead.name){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.gzindex=0,le.status=91)}else le.status=91;if(le.status===91)if(le.gzhead.comment){ee=le.pending;do{if(le.pending===le.pending_buf_size&&(le.gzhead.hcrc&&le.pending>ee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),U(E),ee=le.pending,le.pending===le.pending_buf_size)){te=1;break}te=le.gzindexee&&(E.adler=v(E.adler,le.pending_buf,le.pending-ee,ee)),te===0&&(le.status=103)}else le.status=103;if(le.status===103&&(le.gzhead.hcrc?(le.pending+2>le.pending_buf_size&&U(E),le.pending+2<=le.pending_buf_size&&(H(le,255&E.adler),H(le,E.adler>>8&255),E.adler=0,le.status=R)):le.status=R),le.pending!==0){if(U(E),E.avail_out===0)return le.last_flush=-1,y}else if(E.avail_in===0&&T($)<=T(ae)&&$!==p)return Y(E,-5);if(le.status===666&&E.avail_in!==0)return Y(E,-5);if(E.avail_in!==0||le.lookahead!==0||$!==Z&&le.status!==666){var ne=le.strategy===2?function(B,q){for(var ue;;){if(B.lookahead===0&&(O(B),B.lookahead===0)){if(q===Z)return g;break}if(B.match_length=0,ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):le.strategy===3?function(B,q){for(var ue,ve,Ge,Je,xe=B.window;;){if(B.lookahead<=w){if(O(B),B.lookahead<=w&&q===Z)return g;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=I&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=I?(ue=r._tr_tally(B,1,B.match_length-I),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(ue=r._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),ue&&(K(B,!1),B.strm.avail_out===0))return g}return B.insert=0,q===p?(K(B,!0),B.strm.avail_out===0?L:V):B.last_lit&&(K(B,!1),B.strm.avail_out===0)?g:S}(le,$):l[le.level].func(le,$);if(ne!==L&&ne!==V||(le.status=666),ne===g||ne===L)return E.avail_out===0&&(le.last_flush=-1),y;if(ne===S&&($===1?r._tr_align(le):$!==5&&(r._tr_stored_block(le,0,0,!1),$===3&&(J(le.head),le.lookahead===0&&(le.strstart=0,le.block_start=0,le.insert=0))),U(E),E.avail_out===0))return le.last_flush=-1,y}return $!==p?y:le.wrap<=0?1:(le.wrap===2?(H(le,255&E.adler),H(le,E.adler>>8&255),H(le,E.adler>>16&255),H(le,E.adler>>24&255),H(le,255&E.total_in),H(le,E.total_in>>8&255),H(le,E.total_in>>16&255),H(le,E.total_in>>24&255)):(k(le,E.adler>>>16),k(le,65535&E.adler)),U(E),0=ae.w_size&&(te===0&&(J(ae.head),ae.strstart=0,ae.block_start=0,ae.insert=0),q=new o.Buf8(ae.w_size),o.arraySet(q,$,ue-ae.w_size,ae.w_size,0),$=q,ue=ae.w_size),be=E.avail_in,ne=E.next_in,B=E.input,E.avail_in=ue,E.next_in=0,E.input=$,O(ae);ae.lookahead>=I;){for(le=ae.strstart,ee=ae.lookahead-(I-1);ae.ins_h=(ae.ins_h<>>=I=M>>>24,u-=I,(I=M>>>16&255)===0)S[b++]=65535&M;else{if(!(16&I)){if(!(64&I)){M=s[(65535&M)+(d&(1<>>=I,u-=I),u<15&&(d+=g[f++]<>>=I=M>>>24,u-=I,!(16&(I=M>>>16&255))){if(!(64&I)){M=h[(65535&M)+(d&(1<>>=I,u-=I,(I=b-Z)>3,d&=(1<<(u-=w<<3))-1,l.next_in=f,l.next_out=b,l.avail_in=f>>24&255)+(x>>>8&65280)+((65280&x)<<8)+((255&x)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function u(x){var R;return x&&x.state?(R=x.state,x.total_in=x.total_out=R.total=0,x.msg="",R.wrap&&(x.adler=1&R.wrap),R.mode=X,R.last=0,R.havedict=0,R.dmax=32768,R.head=null,R.hold=0,R.bits=0,R.lencode=R.lendyn=new l.Buf32(m),R.distcode=R.distdyn=new l.Buf32(N),R.sane=1,R.back=-1,p):y}function s(x){var R;return x&&x.state?((R=x.state).wsize=0,R.whave=0,R.wnext=0,u(x)):y}function h(x,R){var g,S;return x&&x.state?(S=x.state,R<0?(g=0,R=-R):(g=1+(R>>4),R<48&&(R&=15)),R&&(R<8||15=V.wsize?(l.arraySet(V.window,R,g-V.wsize,V.wsize,0),V.wnext=0,V.whave=V.wsize):(S<(L=V.wsize-V.wnext)&&(L=S),l.arraySet(V.window,R,g-S,L,V.wnext),(S-=L)?(l.arraySet(V.window,R,g-S,S,0),V.wnext=S,V.whave=V.wsize):(V.wnext+=L,V.wnext===V.wsize&&(V.wnext=0),V.whave>>8&255,g.check=r(g.check,te,2,0),K=U=0,g.mode=2;break}if(g.flags=0,g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&U)<<8)+(U>>8))%31){x.msg="incorrect header check",g.mode=30;break}if((15&U)!=8){x.msg="unknown compression method",g.mode=30;break}if(K-=4,E=8+(15&(U>>>=4)),g.wbits===0)g.wbits=E;else if(E>g.wbits){x.msg="invalid window size",g.mode=30;break}g.dmax=1<>8&1),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=3;case 3:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>8&255,te[2]=U>>>16&255,te[3]=U>>>24&255,g.check=r(g.check,te,4,0)),K=U=0,g.mode=4;case 4:for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>8),512&g.flags&&(te[0]=255&U,te[1]=U>>>8&255,g.check=r(g.check,te,2,0)),K=U=0,g.mode=5;case 5:if(1024&g.flags){for(;K<16;){if(T===0)break e;T--,U+=S[V++]<>>8&255,g.check=r(g.check,te,2,0)),K=U=0}else g.head&&(g.head.extra=null);g.mode=6;case 6:if(1024&g.flags&&(T<(F=g.length)&&(F=T),F&&(g.head&&(E=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Array(g.head.extra_len)),l.arraySet(g.head.extra,S,V,F,E)),512&g.flags&&(g.check=r(g.check,S,F,V)),T-=F,V+=F,g.length-=F),g.length))break e;g.length=0,g.mode=7;case 7:if(2048&g.flags){if(T===0)break e;for(F=0;E=S[V+F++],g.head&&E&&g.length<65536&&(g.head.name+=String.fromCharCode(E)),E&&F>9&1,g.head.done=!0),x.adler=g.check=0,g.mode=12;break;case 10:for(;K<32;){if(T===0)break e;T--,U+=S[V++]<>>=7&K,K-=7&K,g.mode=27;break}for(;K<3;){if(T===0)break e;T--,U+=S[V++]<>>=1)){case 0:g.mode=14;break;case 1:if(w(g),g.mode=20,R!==6)break;U>>>=2,K-=2;break e;case 2:g.mode=17;break;case 3:x.msg="invalid block type",g.mode=30}U>>>=2,K-=2;break;case 14:for(U>>>=7&K,K-=7&K;K<32;){if(T===0)break e;T--,U+=S[V++]<>>16^65535)){x.msg="invalid stored block lengths",g.mode=30;break}if(g.length=65535&U,K=U=0,g.mode=15,R===6)break e;case 15:g.mode=16;case 16:if(F=g.length){if(T>>=5,K-=5,g.ndist=1+(31&U),U>>>=5,K-=5,g.ncode=4+(15&U),U>>>=4,K-=4,286>>=3,K-=3}for(;g.have<19;)g.lens[be[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,ae={bits:g.lenbits},$=v(0,g.lens,0,19,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid code lengths set",g.mode=30;break}g.have=0,g.mode=19;case 19:for(;g.have>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=oe,K-=oe,g.lens[g.have++]=he;else{if(he===16){for(le=oe+2;K>>=oe,K-=oe,g.have===0){x.msg="invalid bit length repeat",g.mode=30;break}E=g.lens[g.have-1],F=3+(3&U),U>>>=2,K-=2}else if(he===17){for(le=oe+3;K>>=oe)),U>>>=3,K-=3}else{for(le=oe+7;K>>=oe)),U>>>=7,K-=7}if(g.have+F>g.nlen+g.ndist){x.msg="invalid bit length repeat",g.mode=30;break}for(;F--;)g.lens[g.have++]=E}}if(g.mode===30)break;if(g.lens[256]===0){x.msg="invalid code -- missing end-of-block",g.mode=30;break}if(g.lenbits=9,ae={bits:g.lenbits},$=v(b,g.lens,0,g.nlen,g.lencode,0,g.work,ae),g.lenbits=ae.bits,$){x.msg="invalid literal/lengths set",g.mode=30;break}if(g.distbits=6,g.distcode=g.distdyn,ae={bits:g.distbits},$=v(Z,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,ae),g.distbits=ae.bits,$){x.msg="invalid distances set",g.mode=30;break}if(g.mode=20,R===6)break e;case 20:g.mode=21;case 21:if(6<=T&&258<=J){x.next_out=Y,x.avail_out=J,x.next_in=V,x.avail_in=T,g.hold=U,g.bits=K,f(x,k),Y=x.next_out,L=x.output,J=x.avail_out,V=x.next_in,S=x.input,T=x.avail_in,U=g.hold,K=g.bits,g.mode===12&&(g.back=-1);break}for(g.back=0;se=(ee=g.lencode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,g.length=he,se===0){g.mode=26;break}if(32&se){g.back=-1,g.mode=12;break}if(64&se){x.msg="invalid literal/length code",g.mode=30;break}g.extra=15&se,g.mode=22;case 22:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=23;case 23:for(;se=(ee=g.distcode[U&(1<>>16&255,he=65535&ee,!((oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>pe)])>>>16&255,he=65535&ee,!(pe+(oe=ee>>>24)<=K);){if(T===0)break e;T--,U+=S[V++]<>>=pe,K-=pe,g.back+=pe}if(U>>>=oe,K-=oe,g.back+=oe,64&se){x.msg="invalid distance code",g.mode=30;break}g.offset=he,g.extra=15&se,g.mode=24;case 24:if(g.extra){for(le=g.extra;K>>=g.extra,K-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){x.msg="invalid distance too far back",g.mode=30;break}g.mode=25;case 25:if(J===0)break e;if(F=k-J,g.offset>F){if((F=g.offset-F)>g.whave&&g.sane){x.msg="invalid distance too far back",g.mode=30;break}O=F>g.wnext?(F-=g.wnext,g.wsize-F):g.wnext-F,F>g.length&&(F=g.length),Q=g.window}else Q=L,O=Y-g.offset,F=g.length;for(JW?(I=O[Q+N[R]],K[H+N[R]]):(I=96,0),d=1<>Y)+(u-=d)]=M<<24|I<<16|w|0,u!==0;);for(d=1<>=1;if(d!==0?(U&=d-1,U+=d):U=0,R++,--k[x]==0){if(x===S)break;x=Z[p+N[R]]}if(L>>7)]}function H(ee,te){ee.pending_buf[ee.pending++]=255&te,ee.pending_buf[ee.pending++]=te>>>8&255}function k(ee,te,be){ee.bi_valid>G-be?(ee.bi_buf|=te<>G-ee.bi_valid,ee.bi_valid+=be-G):(ee.bi_buf|=te<>>=1,be<<=1,0<--te;);return be>>>1}function Q(ee,te,be){var ne,B,q=new Array(N+1),ue=0;for(ne=1;ne<=N;ne++)q[ne]=ue=ue+be[ne-1]<<1;for(B=0;B<=te;B++){var ve=ee[2*B+1];ve!==0&&(ee[2*B]=O(q[ve]++,ve))}}function oe(ee){var te;for(te=0;te>1;1<=be;be--)pe(ee,q,be);for(B=Ge;be=ee.heap[1],ee.heap[1]=ee.heap[ee.heap_len--],pe(ee,q,1),ne=ee.heap[1],ee.heap[--ee.heap_max]=be,ee.heap[--ee.heap_max]=ne,q[2*B]=q[2*be]+q[2*ne],ee.depth[B]=(ee.depth[be]>=ee.depth[ne]?ee.depth[be]:ee.depth[ne])+1,q[2*be+1]=q[2*ne+1]=B,ee.heap[1]=B++,pe(ee,q,1),2<=ee.heap_len;);ee.heap[--ee.heap_max]=ee.heap[1],function(xe,ke){var Pe,Be,Te,we,Se,De,me=ke.dyn_tree,Ve=ke.max_code,Me=ke.stat_desc.static_tree,Ie=ke.stat_desc.has_stree,Ze=ke.stat_desc.extra_bits,Ce=ke.stat_desc.extra_base,ye=ke.stat_desc.max_length,Ue=0;for(we=0;we<=N;we++)xe.bl_count[we]=0;for(me[2*xe.heap[xe.heap_max]+1]=0,Pe=xe.heap_max+1;Pe>=7;B>>=1)if(1&Je&&ve.dyn_ltree[2*Ge]!==0)return o;if(ve.dyn_ltree[18]!==0||ve.dyn_ltree[20]!==0||ve.dyn_ltree[26]!==0)return r;for(Ge=32;Ge>>3,(q=ee.static_len+3+7>>>3)<=B&&(B=q)):B=q=be+5,be+4<=B&&te!==-1?le(ee,te,be,ne):ee.strategy===4||q===B?(k(ee,2+(ne?1:0),3),re(ee,C,x)):(k(ee,4+(ne?1:0),3),function(ve,Ge,Je,xe){var ke;for(k(ve,Ge-257,5),k(ve,Je-1,5),k(ve,xe-4,4),ke=0;ke>>8&255,ee.pending_buf[ee.d_buf+2*ee.last_lit+1]=255&te,ee.pending_buf[ee.l_buf+ee.last_lit]=255&be,ee.last_lit++,te===0?ee.dyn_ltree[2*be]++:(ee.matches++,te--,ee.dyn_ltree[2*(g[be]+Z+1)]++,ee.dyn_dtree[2*K(te)]++),ee.last_lit===ee.lit_bufsize-1},a._tr_align=function(ee){k(ee,2,3),F(ee,u,C),function(te){te.bi_valid===16?(H(te,te.bi_buf),te.bi_buf=0,te.bi_valid=0):8<=te.bi_valid&&(te.pending_buf[te.pending++]=255&te.bi_buf,te.bi_buf>>=8,te.bi_valid-=8)}(ee)}},{"../utils/common":41}],53:[function(t,i,a){i.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,i,a){(function(l){(function(o,r){if(!o.setImmediate){var f,v,b,Z,p=1,y={},X=!1,m=o.document,N=Object.getPrototypeOf&&Object.getPrototypeOf(o);N=N&&N.setTimeout?N:o,f={}.toString.call(o.process)==="[object process]"?function(s){process.nextTick(function(){d(s)})}:function(){if(o.postMessage&&!o.importScripts){var s=!0,h=o.onmessage;return o.onmessage=function(){s=!1},o.postMessage("","*"),o.onmessage=h,s}}()?(Z="setImmediate$"+Math.random()+"$",o.addEventListener?o.addEventListener("message",u,!1):o.attachEvent("onmessage",u),function(s){o.postMessage(Z+s,"*")}):o.MessageChannel?((b=new MessageChannel).port1.onmessage=function(s){d(s.data)},function(s){b.port2.postMessage(s)}):m&&"onreadystatechange"in m.createElement("script")?(v=m.documentElement,function(s){var h=m.createElement("script");h.onreadystatechange=function(){d(s),h.onreadystatechange=null,v.removeChild(h),h=null},v.appendChild(h)}):function(s){setTimeout(d,0,s)},N.setImmediate=function(s){typeof s!="function"&&(s=new Function(""+s));for(var h=new Array(arguments.length-1),c=0;c"u"?l===void 0?this:l:self)}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(ape)),s0}(function(n,e){(function(t,i){n.exports=i(rpe())})(globalThis,t=>(()=>{var i={438:(o,r,f)=>{f.r(r),f.d(r,{default:()=>d});var v=f(537),b=f.n(v),Z=f(645),p=f.n(Z),y=f(806),X=f.n(y),m=new URL(f(583),f.b),N=p()(b()),G=X()(m);N.push([o.id,'@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url('+G+")}","",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r \r math {\r display: inline-block;\r @@ -209,49 +209,49 @@ section.${h}>article { margin-bottom: auto; } `)}renderNumbering(h,c){var W="",M=[];for(var I of h){var w=`p.${this.numberingClass(I.id,I.level)}`,C="none";if(I.bullet){let x=`--${this.className}-${I.bullet.src}`.toLowerCase();W+=this.styleToString(`${w}:before`,{content:"' '",display:"inline-block",background:`var(${x})`},I.bullet.style),this.document.loadNumberingImage(I.bullet.src).then(R=>{var g=`${this.rootSelector} { ${x}: url(${R}) }`;c.appendChild(u(g))})}else if(I.levelText){let x=this.numberingCounter(I.id,I.level);I.level>0?W+=this.styleToString(`p.${this.numberingClass(I.id,I.level-1)}`,{"counter-reset":x}):M.push(x),W+=this.styleToString(`${w}:before`,Object.assign({content:this.levelTextToContent(I.levelText,I.suff,I.id,this.numFormatToCssValue(I.format)),"counter-increment":x},I.rStyle))}else C=this.numFormatToCssValue(I.format);W+=this.styleToString(w,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":C},I.pStyle))}return M.length>0&&(W+=this.styleToString(this.rootSelector,{"counter-reset":M.join(" ")})),u(W)}renderStyles(h){var c,W="";const M=this.styleMap,I=(0,b.keyBy)(h.filter(R=>R.isDefault),R=>R.target);for(const R of h){var w=R.styles;if(R.linked){var C=R.linked&&M[R.linked];C?w=w.concat(C.styles):this.options.debug&&console.warn(`Can't find linked style ${R.linked}`)}for(const g of w){var x=`${(c=R.target)!==null&&c!==void 0?c:""}.${R.cssName}`;R.target!=g.target&&(x+=` ${g.target}`),I[R.target]==R&&(x=`.${this.className} ${R.target}, `+x),W+=this.styleToString(x,g.values)}}return u(W)}renderNotes(h,c,W){var M=h.map(w=>c[w]).filter(w=>w);if(M.length>0){var I=this.createElement("ol",null,this.renderElements(M));W.appendChild(I)}}renderElement(h){switch(h.type){case v.DomType.Paragraph:return this.renderParagraph(h);case v.DomType.BookmarkStart:return this.renderBookmarkStart(h);case v.DomType.BookmarkEnd:return null;case v.DomType.Run:return this.renderRun(h);case v.DomType.Table:return this.renderTable(h);case v.DomType.Row:return this.renderTableRow(h);case v.DomType.Cell:return this.renderTableCell(h);case v.DomType.Hyperlink:return this.renderHyperlink(h);case v.DomType.Drawing:return this.renderDrawing(h);case v.DomType.Image:return this.renderImage(h);case v.DomType.Text:case v.DomType.Text:return this.renderText(h);case v.DomType.DeletedText:return this.renderDeletedText(h);case v.DomType.Tab:return this.renderTab(h);case v.DomType.Symbol:return this.renderSymbol(h);case v.DomType.Break:return this.renderBreak(h);case v.DomType.Footer:return this.renderContainer(h,"footer");case v.DomType.Header:return this.renderContainer(h,"header");case v.DomType.Footnote:case v.DomType.Endnote:return this.renderContainer(h,"li");case v.DomType.FootnoteReference:return this.renderFootnoteReference(h);case v.DomType.EndnoteReference:return this.renderEndnoteReference(h);case v.DomType.NoBreakHyphen:return this.createElement("wbr");case v.DomType.VmlPicture:return this.renderVmlPicture(h);case v.DomType.VmlElement:return this.renderVmlElement(h);case v.DomType.MmlMath:return this.renderContainerNS(h,y,"math",{xmlns:y});case v.DomType.MmlMathParagraph:return this.renderContainer(h,"span");case v.DomType.MmlFraction:return this.renderContainerNS(h,y,"mfrac");case v.DomType.MmlNumerator:case v.DomType.MmlDenominator:return this.renderContainerNS(h,y,"mrow");case v.DomType.MmlRadical:return this.renderMmlRadical(h);case v.DomType.MmlDegree:return this.renderContainerNS(h,y,"mn");case v.DomType.MmlSuperscript:return this.renderContainerNS(h,y,"msup");case v.DomType.MmlSubscript:return this.renderContainerNS(h,y,"msub");case v.DomType.MmlBase:return this.renderContainerNS(h,y,"mrow");case v.DomType.MmlSuperArgument:case v.DomType.MmlSubArgument:return this.renderContainerNS(h,y,"mn");case v.DomType.MmlDelimiter:return this.renderMmlDelimiter(h);case v.DomType.MmlRun:return this.renderMmlRun(h);case v.DomType.MmlNary:return this.renderMmlNary(h);case v.DomType.Inserted:return this.renderInserted(h);case v.DomType.Deleted:return this.renderDeleted(h)}return null}renderChildren(h,c){return this.renderElements(h.children,c)}renderElements(h,c){if(h==null)return null;var W=h.flatMap(M=>this.renderElement(M)).filter(M=>M!=null);return c&&d(c,W),W}renderContainer(h,c,W){return this.createElement(c,W,this.renderChildren(h))}renderContainerNS(h,c,W,M){return N(c,W,M,this.renderChildren(h))}renderParagraph(h){var c,W,M,I,w=this.createElement("p");const C=this.findStyle(h.styleName);(c=h.tabs)!==null&&c!==void 0||(h.tabs=(W=C==null?void 0:C.paragraphProps)===null||W===void 0?void 0:W.tabs),this.renderClass(h,w),this.renderChildren(h,w),this.renderStyleValues(h.cssStyle,w),this.renderCommonProperties(w.style,h);const x=(M=h.numbering)!==null&&M!==void 0?M:(I=C==null?void 0:C.paragraphProps)===null||I===void 0?void 0:I.numbering;return x&&w.classList.add(this.numberingClass(x.id,x.level)),w}renderRunProperties(h,c){this.renderCommonProperties(h,c)}renderCommonProperties(h,c){c!=null&&(c.color&&(h.color=c.color),c.fontSize&&(h["font-size"]=c.fontSize))}renderHyperlink(h){var c=this.createElement("a");if(this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),h.href)c.href=h.href;else if(h.id){const W=this.document.documentPart.rels.find(M=>M.id==h.id&&M.targetMode==="External");c.href=W==null?void 0:W.target}return c}renderDrawing(h){var c=this.createElement("div");return c.style.display="inline-block",c.style.position="relative",c.style.textIndent="0px",this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),c}renderImage(h){let c=this.createElement("img");return this.renderStyleValues(h.cssStyle,c),this.document&&this.document.loadDocumentImage(h.src,this.currentPart).then(W=>{c.src=W}),c}renderText(h){return this.htmlDocument.createTextNode(h.text)}renderDeletedText(h){return this.options.renderEndnotes?this.htmlDocument.createTextNode(h.text):null}renderBreak(h){return h.break=="textWrapping"?this.createElement("br"):null}renderInserted(h){return this.options.renderChanges?this.renderContainer(h,"ins"):this.renderChildren(h)}renderDeleted(h){return this.options.renderChanges?this.renderContainer(h,"del"):null}renderSymbol(h){var c=this.createElement("span");return c.style.fontFamily=h.font,c.innerHTML=`&#x${h.char};`,c}renderFootnoteReference(h){var c=this.createElement("sup");return this.currentFootnoteIds.push(h.id),c.textContent=`${this.currentFootnoteIds.length}`,c}renderEndnoteReference(h){var c=this.createElement("sup");return this.currentEndnoteIds.push(h.id),c.textContent=`${this.currentEndnoteIds.length}`,c}renderTab(h){var c,W=this.createElement("span");if(W.innerHTML=" ",this.options.experimental){W.className=this.tabStopClass();var M=(c=function(I,w){for(var C=I.parent;C!=null&&C.type!=w;)C=C.parent;return C}(h,v.DomType.Paragraph))===null||c===void 0?void 0:c.tabs;this.currentTabs.push({stops:M,span:W})}return W}renderBookmarkStart(h){var c=this.createElement("span");return c.id=h.name,c}renderRun(h){if(h.fieldRun)return null;const c=this.createElement("span");if(h.id&&(c.id=h.id),this.renderClass(h,c),this.renderStyleValues(h.cssStyle,c),h.verticalAlign){const W=this.createElement(h.verticalAlign);this.renderChildren(h,W),c.appendChild(W)}else this.renderChildren(h,c);return c}renderTable(h){let c=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},h.columns&&c.appendChild(this.renderTableColumns(h.columns)),this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),c}renderTableColumns(h){let c=this.createElement("colgroup");for(let W of h){let M=this.createElement("col");W.width&&(M.style.width=W.width),c.appendChild(M)}return c}renderTableRow(h){let c=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),this.currentCellPosition.row++,c}renderTableCell(h){let c=this.createElement("td");const W=this.currentCellPosition.col;return h.verticalMerge?h.verticalMerge=="restart"?(this.currentVerticalMerge[W]=c,c.rowSpan=1):this.currentVerticalMerge[W]&&(this.currentVerticalMerge[W].rowSpan+=1,c.style.display="none"):this.currentVerticalMerge[W]=null,this.renderClass(h,c),this.renderChildren(h,c),this.renderStyleValues(h.cssStyle,c),h.span&&(c.colSpan=h.span),this.currentCellPosition.col+=c.colSpan,c}renderVmlPicture(h){var c=X("div");return this.renderChildren(h,c),c}renderVmlElement(h){var c,W,M=m("svg");M.setAttribute("style",h.cssStyleText);const I=m(h.tagName);return Object.entries(h.attrs).forEach(([w,C])=>I.setAttribute(w,C)),!((c=h.imageHref)===null||c===void 0)&&c.id&&((W=this.document)===null||W===void 0||W.loadDocumentImage(h.imageHref.id,this.currentPart).then(w=>I.setAttribute("href",w))),M.appendChild(I),setTimeout(()=>{const w=M.firstElementChild.getBBox();M.setAttribute("width",`${Math.ceil(w.x+w.width)}`),M.setAttribute("height",`${Math.ceil(w.y+w.height)}`)},0),M}renderMmlRadical(h){var c;const W=h.children.find(I=>I.type==v.DomType.MmlBase);if(!((c=h.props)===null||c===void 0)&&c.hideDegree)return N(y,"msqrt",null,this.renderElements([W]));const M=h.children.find(I=>I.type==v.DomType.MmlDegree);return N(y,"mroot",null,this.renderElements([W,M]))}renderMmlDelimiter(h){var c,W;const M=[];return M.push(N(y,"mo",null,[(c=h.props.beginChar)!==null&&c!==void 0?c:"("])),M.push(...this.renderElements(h.children)),M.push(N(y,"mo",null,[(W=h.props.endChar)!==null&&W!==void 0?W:")"])),N(y,"mrow",null,M)}renderMmlNary(h){var c;const W=[],M=(0,b.keyBy)(h.children,R=>R.type),I=M[v.DomType.MmlSuperArgument],w=M[v.DomType.MmlSubArgument],C=I?N(y,"mo",null,(0,b.asArray)(this.renderElement(I))):null,x=w?N(y,"mo",null,(0,b.asArray)(this.renderElement(w))):null;if(!((c=h.props)===null||c===void 0)&&c.char){const R=N(y,"mo",null,[h.props.char]);C||x?W.push(N(y,"munderover",null,[R,x,C])):C?W.push(N(y,"mover",null,[R,C])):x?W.push(N(y,"munder",null,[R,x])):W.push(R)}return W.push(...this.renderElements(M[v.DomType.MmlBase].children)),N(y,"mrow",null,W)}renderMmlRun(h){const c=N(y,"ms");return this.renderClass(h,c),this.renderStyleValues(h.cssStyle,c),this.renderChildren(h,c),c}renderStyleValues(h,c){Object.assign(c.style,h)}renderClass(h,c){h.className&&(c.className=h.className),h.styleName&&c.classList.add(this.processStyleName(h.styleName))}findStyle(h){var c;return h&&((c=this.styleMap)===null||c===void 0?void 0:c[h])}numberingClass(h,c){return`${this.className}-num-${h}-${c}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(h,c,W=null){let M=`${h} {\r `;for(const I in c)M+=` ${I}: ${c[I]};\r `;return W&&(M+=W),M+`}\r -`}numberingCounter(h,c){return`${this.className}-num-${h}-${c}`}levelTextToContent(h,c,W,M){var I;return`"${h.replace(/%\d*/g,w=>{let C=parseInt(w.substring(1),10)-1;return`"counter(${this.numberingCounter(W,C)}, ${M})"`})}${(I={tab:"\\9",space:"\\a0"}[c])!==null&&I!==void 0?I:""}"`}numFormatToCssValue(h){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[h]||h}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const h=(0,Z.computePixelToPoint)();for(let c of this.currentTabs)(0,Z.updateTabStop)(c.span,c.stops,this.defaultTabSize,h)},500))}}},630:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateTabStop=r.computePixelToPoint=void 0;const f={pos:0,leader:"none",style:"left"};function v(b){return parseFloat(b)}r.computePixelToPoint=function(b=document.body){const Z=document.createElement("div");Z.style.width="100pt",b.appendChild(Z);const p=100/Z.offsetWidth;return b.removeChild(Z),p},r.updateTabStop=function(b,Z,p,y=.75){const X=b.closest("p"),m=b.getBoundingClientRect(),N=X.getBoundingClientRect(),G=getComputedStyle(X),d=(Z==null?void 0:Z.length)>0?Z.map(x=>({pos:v(x.position),leader:x.leader,style:x.style})).sort((x,R)=>x.pos-R.pos):[f],u=d[d.length-1],s=N.width*y,h=v(p);let c=u.pos+h;if(cx.style!="clear"&&x.pos>I);if(w==null)return;let C=1;if(w.style=="right"||w.style=="center"){const x=Array.from(X.querySelectorAll(`.${b.className}`)),R=x.indexOf(b)+1,g=document.createRange();g.setStart(b,1),R{Object.defineProperty(r,"__esModule",{value:!0}),r.WmlEndnote=r.WmlFootnote=r.WmlBaseNote=void 0;const v=f(120);class b{constructor(){this.children=[],this.cssStyle={}}}r.WmlBaseNote=b,r.WmlFootnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Footnote}},r.WmlEndnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Endnote}}},735:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EndnotesPart=r.FootnotesPart=r.BaseNotePart=void 0;const v=f(530),b=f(881);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}}r.BaseNotePart=Z,r.FootnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"footnote",b.WmlFootnote)}},r.EndnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"endnote",b.WmlEndnote)}}},527:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NumberingPart=void 0;const v=f(530),b=f(682);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}parseXml(y){Object.assign(this,(0,b.parseNumberingPart)(y,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(y)}}r.NumberingPart=Z},682:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseNumberingBulletPicture=r.parseNumberingLevelOverrride=r.parseNumberingLevel=r.parseAbstractNumbering=r.parseNumbering=r.parseNumberingPart=void 0;const v=f(109),b=f(488);function Z(N,G){let d={id:G.attr(N,"numId"),overrides:[]};for(let u of G.elements(N))switch(u.localName){case"abstractNumId":d.abstractId=G.attr(u,"val");break;case"lvlOverride":d.overrides.push(X(u,G))}return d}function p(N,G){let d={id:G.attr(N,"abstractNumId"),levels:[]};for(let u of G.elements(N))switch(u.localName){case"name":d.name=G.attr(u,"val");break;case"multiLevelType":d.multiLevelType=G.attr(u,"val");break;case"numStyleLink":d.numberingStyleLink=G.attr(u,"val");break;case"styleLink":d.styleLink=G.attr(u,"val");break;case"lvl":d.levels.push(y(u,G))}return d}function y(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"start":d.start=G.attr(u,"val");break;case"lvlRestart":d.restart=G.intAttr(u,"val");break;case"numFmt":d.format=G.attr(u,"val");break;case"lvlText":d.text=G.attr(u,"val");break;case"lvlJc":d.justification=G.attr(u,"val");break;case"lvlPicBulletId":d.bulletPictureId=G.attr(u,"val");break;case"pStyle":d.paragraphStyle=G.attr(u,"val");break;case"pPr":d.paragraphProps=(0,v.parseParagraphProperties)(u,G);break;case"rPr":d.runProps=(0,b.parseRunProperties)(u,G)}return d}function X(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"startOverride":d.start=G.intAttr(u,"val");break;case"lvl":d.numberingLevel=y(u,G)}return d}function m(N,G){var d=G.element(N,"pict"),u=d&&G.element(d,"shape"),s=u&&G.element(u,"imagedata");return s?{id:G.attr(N,"numPicBulletId"),referenceId:G.attr(s,"id"),style:G.attr(u,"style")}:null}r.parseNumberingPart=function(N,G){let d={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let u of G.elements(N))switch(u.localName){case"num":d.numberings.push(Z(u,G));break;case"abstractNum":d.abstractNumberings.push(p(u,G));break;case"numPicBullet":d.bulletPictures.push(m(u,G))}return d},r.parseNumbering=Z,r.parseAbstractNumbering=p,r.parseNumberingLevel=y,r.parseNumberingLevelOverrride=X,r.parseNumberingBulletPicture=m},472:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.XmlParser=r.serializeXmlString=r.parseXmlString=void 0;const v=f(149);r.parseXmlString=function(p,y=!1){y&&(p=p.replace(/<[?].*[?]>/,""));const X=new DOMParser().parseFromString(p,"application/xml"),m=(N=X.getElementsByTagName("parsererror")[0])===null||N===void 0?void 0:N.textContent;var N;if(m)throw new Error(m);return X},r.serializeXmlString=function(p){return new XMLSerializer().serializeToString(p)};class b{elements(y,X=null){const m=[];for(let N=0,G=y.childNodes.length;N{Object.defineProperty(r,"__esModule",{value:!0}),r.SettingsPart=void 0;const v=f(530),b=f(846);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.settings=(0,b.parseSettings)(y,this._package.xmlParser)}}r.SettingsPart=Z},846:(o,r)=>{function f(v,b){var Z={defaultNoteIds:[]};for(let p of b.elements(v))switch(p.localName){case"numFmt":Z.nummeringFormat=b.attr(p,"val");break;case"footnote":case"endnote":Z.defaultNoteIds.push(b.attr(p,"id"))}return Z}Object.defineProperty(r,"__esModule",{value:!0}),r.parseNoteProperties=r.parseSettings=void 0,r.parseSettings=function(v,b){var Z={};for(let p of b.elements(v))switch(p.localName){case"defaultTabStop":Z.defaultTabStop=b.lengthAttr(p,"val");break;case"footnotePr":Z.footnoteProps=f(p,b);break;case"endnotePr":Z.endnoteProps=f(p,b);break;case"autoHyphenation":Z.autoHyphenation=b.boolAttr(p,"val")}return Z},r.parseNoteProperties=f},240:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.StylesPart=void 0;const v=f(530);class b extends v.Part{constructor(p,y,X){super(p,y),this._documentParser=X}parseXml(p){this.styles=this._documentParser.parseStylesFile(p)}}r.StylesPart=b},893:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ThemePart=void 0;const v=f(530),b=f(55);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.theme=(0,b.parseTheme)(y,this._package.xmlParser)}}r.ThemePart=Z},55:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseFontInfo=r.parseFontScheme=r.parseColorScheme=r.parseTheme=r.DmlTheme=void 0;class f{}function v(p,y){var X={name:y.attr(p,"name"),colors:{}};for(let G of y.elements(p)){var m=y.element(G,"srgbClr"),N=y.element(G,"sysClr");m?X.colors[G.localName]=y.attr(m,"val"):N&&(X.colors[G.localName]=y.attr(N,"lastClr"))}return X}function b(p,y){var X={name:y.attr(p,"name")};for(let m of y.elements(p))switch(m.localName){case"majorFont":X.majorFont=Z(m,y);break;case"minorFont":X.minorFont=Z(m,y)}return X}function Z(p,y){return{latinTypeface:y.elementAttr(p,"latin","typeface"),eaTypeface:y.elementAttr(p,"ea","typeface"),csTypeface:y.elementAttr(p,"cs","typeface")}}r.DmlTheme=f,r.parseTheme=function(p,y){var X=new f,m=y.element(p,"themeElements");for(let N of y.elements(m))switch(N.localName){case"clrScheme":X.colorScheme=v(N,y);break;case"fontScheme":X.fontScheme=b(N,y)}return X},r.parseColorScheme=v,r.parseFontScheme=b,r.parseFontInfo=Z},593:(o,r)=>{function f(v){return v&&typeof v=="object"&&!Array.isArray(v)}Object.defineProperty(r,"__esModule",{value:!0}),r.asArray=r.formatCssRules=r.parseCssRules=r.mergeDeep=r.isString=r.isObject=r.blobToBase64=r.keyBy=r.resolvePath=r.splitPath=r.escapeClassName=void 0,r.escapeClassName=function(v){return v==null?void 0:v.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},r.splitPath=function(v){let b=v.lastIndexOf("/")+1;return[b==0?"":v.substring(0,b),b==0?v:v.substring(b)]},r.resolvePath=function(v,b){try{const Z="http://docx/";return new URL(v,Z+b).toString().substring(Z.length)}catch{return`${b}${v}`}},r.keyBy=function(v,b){return v.reduce((Z,p)=>(Z[b(p)]=p,Z),{})},r.blobToBase64=function(v){return new Promise((b,Z)=>{const p=new FileReader;p.onloadend=()=>b(p.result),p.readAsDataURL(v)})},r.isObject=f,r.isString=function(v){return v&&typeof v=="string"||v instanceof String},r.mergeDeep=function v(b,...Z){var p;if(!Z.length)return b;const y=Z.shift();if(f(b)&&f(y))for(const X in y)f(y[X])?v((p=b[X])!==null&&p!==void 0?p:b[X]={},y[X]):b[X]=y[X];return v(b,...Z)},r.parseCssRules=function(v){const b={};for(const Z of v.split(";")){const[p,y]=Z.split(":");b[p]=y}return b},r.formatCssRules=function(v){return Object.entries(v).map((b,Z)=>`${b}: ${Z}`).join(";")},r.asArray=function(v){return Array.isArray(v)?v:[v]}},320:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseVmlElement=r.VmlElement=void 0;const v=f(149),b=f(120),Z=f(472);class p{constructor(){this.type=b.DomType.VmlElement,this.attrs={},this.chidren=[]}}function y(m){var N;return{stroke:Z.default.attr(m,"color"),"stroke-width":(N=Z.default.lengthAttr(m,"weight",v.LengthUsage.Emu))!==null&&N!==void 0?N:"1px"}}function X(m){return m.split(",")}r.VmlElement=p,r.parseVmlElement=function m(N){var G=new p;switch(N.localName){case"rect":G.tagName="rect",Object.assign(G.attrs,{width:"100%",height:"100%"});break;case"oval":G.tagName="ellipse",Object.assign(G.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":G.tagName="line";break;case"shape":G.tagName="g";break;default:return null}for(const d of Z.default.attrs(N))switch(d.localName){case"style":G.cssStyleText=d.value;break;case"fillcolor":G.attrs.fill=d.value;break;case"from":const[u,s]=X(d.value);Object.assign(G.attrs,{x1:u,y1:s});break;case"to":const[h,c]=X(d.value);Object.assign(G.attrs,{x2:h,y2:c})}for(const d of Z.default.elements(N))switch(d.localName){case"stroke":Object.assign(G.attrs,y(d));break;case"fill":Object.assign(G.attrs,{});break;case"imagedata":G.tagName="image",Object.assign(G.attrs,{width:"100%",height:"100%"}),G.imageHref={id:Z.default.attr(d,"id"),title:Z.default.attr(d,"title")};break;default:const u=m(d);u&&G.chidren.push(u)}return G}},213:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.deobfuscate=r.WordDocument=void 0;const v=f(461),b=f(380),Z=f(522),p=f(448),y=f(593),X=f(527),m=f(240),N=f(985),G=f(665),d=f(162),u=f(893),s=f(735),h=f(287),c=f(177),W=[{type:v.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:v.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:v.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:v.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class M{constructor(){this.parts=[],this.partsMap={}}static load(C,x,R){var g=new M;return g._options=R,g._parser=x,Z.OpenXmlPackage.load(C,R).then(S=>(g._package=S,g._package.loadRelationships())).then(S=>{g.rels=S;const L=W.map(V=>{var Y;const T=(Y=S.find(J=>J.type===V.type))!==null&&Y!==void 0?Y:V;return g.loadRelationshipPart(T.target,T.type)});return Promise.all(L)}).then(()=>g)}save(C="blob"){return this._package.save(C)}loadRelationshipPart(C,x){if(this.partsMap[C])return Promise.resolve(this.partsMap[C]);if(!this._package.get(C))return Promise.resolve(null);let R=null;switch(x){case v.RelationshipTypes.OfficeDocument:this.documentPart=R=new p.DocumentPart(this._package,C,this._parser);break;case v.RelationshipTypes.FontTable:this.fontTablePart=R=new b.FontTablePart(this._package,C);break;case v.RelationshipTypes.Numbering:this.numberingPart=R=new X.NumberingPart(this._package,C,this._parser);break;case v.RelationshipTypes.Styles:this.stylesPart=R=new m.StylesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Theme:this.themePart=R=new u.ThemePart(this._package,C);break;case v.RelationshipTypes.Footnotes:this.footnotesPart=R=new s.FootnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Endnotes:this.endnotesPart=R=new s.EndnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Footer:R=new N.FooterPart(this._package,C,this._parser);break;case v.RelationshipTypes.Header:R=new N.HeaderPart(this._package,C,this._parser);break;case v.RelationshipTypes.CoreProperties:this.corePropsPart=R=new d.CorePropsPart(this._package,C);break;case v.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=R=new G.ExtendedPropsPart(this._package,C);break;case v.RelationshipTypes.CustomProperties:R=new c.CustomPropsPart(this._package,C);break;case v.RelationshipTypes.Settings:this.settingsPart=R=new h.SettingsPart(this._package,C)}return R==null?Promise.resolve(null):(this.partsMap[C]=R,this.parts.push(R),R.load().then(()=>{if(R.rels==null||R.rels.length==0)return R;const[g]=(0,y.splitPath)(R.path),S=R.rels.map(L=>this.loadRelationshipPart((0,y.resolvePath)(L.target,g),L.type));return Promise.all(S).then(()=>R)}))}loadDocumentImage(C,x){return this.loadResource(x??this.documentPart,C,"blob").then(R=>this.blobToURL(R))}loadNumberingImage(C){return this.loadResource(this.numberingPart,C,"blob").then(x=>this.blobToURL(x))}loadFont(C,x){return this.loadResource(this.fontTablePart,C,"uint8array").then(R=>R&&this.blobToURL(new Blob([I(R,x)])))}blobToURL(C){return C?this._options.useBase64URL?(0,y.blobToBase64)(C):URL.createObjectURL(C):null}findPartByRelId(C,x=null){var R,g=((R=x.rels)!==null&&R!==void 0?R:this.rels).find(L=>L.id==C);const S=x?(0,y.splitPath)(x.path)[0]:"";return g?this.partsMap[(0,y.resolvePath)(g.target,S)]:null}getPathById(C,x){const R=C.rels.find(S=>S.id==x),[g]=(0,y.splitPath)(C.path);return R?(0,y.resolvePath)(R.target,g):null}loadResource(C,x,R){const g=this.getPathById(C,x);return g?this._package.load(g,R):Promise.resolve(null)}}function I(w,C){const x=C.replace(/{|}|-/g,""),R=new Array(16);for(let g=0;g<16;g++)R[16-g-1]=parseInt(x.substr(2*g,2),16);for(let g=0;g<32;g++)w[g]=w[g]^R[g%16];return w}r.WordDocument=M,r.deobfuscate=I},583:o=>{o.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:o=>{o.exports=t}},l={};function a(o){var r=l[o];if(r!==void 0)return r.exports;var f=l[o]={id:o,exports:{}};return i[o](f,f.exports,a),f.exports}return a.m=i,a.n=o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return a.d(r,{a:r}),r},a.d=(o,r)=>{for(var f in r)a.o(r,f)&&!a.o(o,f)&&Object.defineProperty(o,f,{enumerable:!0,get:r[f]})},a.o=(o,r)=>Object.prototype.hasOwnProperty.call(o,r),a.r=o=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},a.b=document.baseURI||self.location.href,a(667)})())})(epe);function ipe(n,e={}){return typeof n=="string"?lpe(n,e):Promise.resolve(n)}function lpe(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t)}function ape(n,e){if(!n)return e.innerHTML="",Promise.resolve();let t;return n instanceof Blob?t=n:n instanceof Response?t=n.blob():n instanceof ArrayBuffer&&(t=new Blob([n])),Qv.renderAsync(t,e)}const Yd={getData:ipe,render:ape},$u=(n,e)=>{const t=n.__vccOpts||n;for(const[i,l]of e)t[i]=l;return t},rpe=He({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null);function i(){let l=t.value;Yd.getData(n.src,n.requestOptions).then(a=>{Yd.render(a,l).then(()=>{e("rendered")}).catch(o=>{Yd.render("",l),e("error",o)})}).catch(a=>{Yd.render("",l),e("error",a)})}return Kt(()=>{n.src&&i()}),rt(()=>n.src,()=>{n.src?i():Yd.render("",t.value).then(()=>{e("rendered")})}),{rootRef:t}}}),ope={class:"vue-office-docx"},spe={class:"vue-office-docx-main",ref:"rootRef"};function cpe(n,e,t,i,l,a){return kl(),rc("div",ope,[Du("div",spe,null,512)])}const dm=$u(rpe,[["render",cpe]]);dm.install=function(n){n.component(dm.name,dm)};function upe(n){const e=Ne("url"),t=Ne(n),i=Ne(n),l=Ne([]);function a(o){let r=new FileReader;return r.onload=f=>{let v=f.target.result;i.value=v},r.readAsArrayBuffer(o),!1}return{type:e,inputSrc:t,src:i,fileList:l,beforeUpload:a}}const dpe=n=>(LU("data-v-48e1d098"),n=n(),RU(),n),hpe={class:"preview-wrapper"},fpe={class:"operate-area"},bpe=dpe(()=>Du("div",{class:"preview-wrapper-main"},null,-1)),mpe={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(n){const e=n,{type:t,inputSrc:i,src:l,fileList:a,beforeUpload:o}=upe(e.defaultSrc);return(r,f)=>{const v=ls("a-radio-button"),b=ls("a-radio-group"),Z=ls("a-input"),p=ls("a-button"),y=ls("upload-outlined"),X=ls("a-upload");return kl(),rc("div",hpe,[Du("div",fpe,[D(b,{value:mi(t),"onUpdate:value":f[0]||(f[0]=m=>$i(t)?t.value=m:null),"button-style":"solid"},{default:pa(()=>[D(v,{value:"url"},{default:pa(()=>[Fl("远程文件地址")]),_:1}),D(v,{value:"upload"},{default:pa(()=>[Fl("上传本地文件")]),_:1})]),_:1},8,["value"]),mi(t)==="url"?(kl(),Vo(Z,{key:0,value:mi(i),"onUpdate:value":f[1]||(f[1]=m=>$i(i)?i.value=m:null),placeholder:e.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):Lb("",!0),mi(t)==="url"?(kl(),Vo(p,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:f[2]||(f[2]=m=>l.value=mi(i))},{default:pa(()=>[Fl(" 预览 ")]),_:1})):Lb("",!0),mi(t)!=="url"?(kl(),Vo(X,{key:2,accept:e.accept,action:"",beforeUpload:mi(o),"file-list":[]},{default:pa(()=>[D(p,{style:{"margin-left":"10px"}},{default:pa(()=>[D(y),Fl(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):Lb("",!0)]),g0(r.$slots,"default",{src:mi(l)},void 0,!0),bpe])}}},KX=$u(mpe,[["__scopeId","data-v-48e1d098"]]),ppe={__name:"DocxDemo",setup(n){return(e,t)=>(kl(),Vo(KX,{accept:".docx",placeholder:"请输入docx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"},{default:pa(i=>[D(mi(dm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},ype=$u(ppe,[["__scopeId","data-v-03e834e4"]]);let Vp=class Bv{constructor(e,t=""){typeof e=="string"?(this.el=document.createElement(e),this.el.className=t):this.el=e,this.data={}}data(e,t){return t!==void 0?(this.data[e]=t,this):this.data[e]}on(e,t){const[i,...l]=e.split(".");let a=i;return a==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(a="DOMMouseScroll"),this.el.addEventListener(a,o=>{t(o);for(let r=0;r{this.css(o,`${e[o]}px`)}),this;const{offsetTop:t,offsetLeft:i,offsetHeight:l,offsetWidth:a}=this.el;return{top:t,left:i,height:l,width:a}}scroll(e){const{el:t}=this;return e!==void 0&&(e.left!==void 0&&(t.scrollLeft=e.left),e.top!==void 0&&(t.scrollTop=e.top)),{left:t.scrollLeft,top:t.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new Bv(this.el.parentNode)}children(...e){return arguments.length===0?this.el.childNodes:(e.forEach(t=>this.child(t)),this)}removeChild(e){this.el.removeChild(e)}child(e){let t=e;return typeof e=="string"?t=document.createTextNode(e):e instanceof Bv&&(t=e.el),this.el.appendChild(t),this}contains(e){return this.el.contains(e)}className(e){return e!==void 0?(this.el.className=e,this):this.el.className}addClass(e){return this.el.classList.add(e),this}hasClass(e){return this.el.classList.contains(e)}removeClass(e){return this.el.classList.remove(e),this}toggle(e="active"){return this.toggleClass(e)}toggleClass(e){return this.el.classList.toggle(e)}active(e=!0,t="active"){return e?this.addClass(t):this.removeClass(t),this}checked(e=!0){return this.active(e,"checked"),this}disabled(e=!0){return e?this.addClass("disabled"):this.removeClass("disabled"),this}attr(e,t){if(t!==void 0)this.el.setAttribute(e,t);else{if(typeof e=="string")return this.el.getAttribute(e);Object.keys(e).forEach(i=>{this.el.setAttribute(i,e[i])})}return this}removeAttr(e){return this.el.removeAttribute(e),this}html(e){return e!==void 0?(this.el.innerHTML=e,this):this.el.innerHTML}val(e){return e!==void 0?(this.el.value=e,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...e){return e.forEach(t=>this.el.style.removeProperty(t)),this}css(e,t){return t===void 0&&typeof e!="string"?(Object.keys(e).forEach(i=>{this.el.style[i]=e[i]}),this):t!==void 0?(this.el.style[e]=t,this):this.el.style[e]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}};const ut=(n,e="")=>new Vp(n,e),os=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function LS(n){let e="",t=n;for(;t>=os.length;)t/=os.length,t-=1,e+=os[parseInt(t,10)%os.length];const i=n%os.length;return e+=os[i],e}function Zpe(n){let e=0;for(let t=0;t="0"&&n.charAt(i)<="9"?t+=n.charAt(i):e+=n.charAt(i);return[Zpe(e),parseInt(t,10)-1]}function Io(n,e){return`${LS(n)}${e+1}`}function wd(n,e,t,i=()=>!0){if(e===0&&t===0)return n;const[l,a]=Ws(n);return i(l,a)?Io(l+e,a+t):n}class Ki{constructor(e,t,i,l,a=0,o=0){this.sri=e,this.sci=t,this.eri=i,this.eci=l,this.w=a,this.h=o}set(e,t,i,l){this.sri=e,this.sci=t,this.eri=i,this.eci=l}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...e){let[t,i]=[0,0];e.length===1?[i,t]=Ws(e[0]):e.length===2&&([t,i]=e);const{sri:l,sci:a,eri:o,eci:r}=this;return l<=t&&t<=o&&a<=i&&i<=r}each(e,t=()=>!0){const{sri:i,sci:l,eri:a,eci:o}=this;for(let r=i;r<=a;r+=1)if(t(r))for(let f=l;f<=o;f+=1)e(r,f)}contains(e){return this.sri<=e.sri&&this.sci<=e.sci&&this.eri>=e.eri&&this.eci>=e.eci}within(e){return this.sri>=e.sri&&this.sci>=e.sci&&this.eri<=e.eri&&this.eci<=e.eci}disjoint(e){return this.sri>e.eri||this.sci>e.eci||e.sri>this.eri||e.sci>this.eci}intersects(e){return this.sri<=e.eri&&this.sci<=e.eci&&e.sri<=this.eri&&e.sci<=this.eci}union(e){const{sri:t,sci:i,eri:l,eci:a}=this;return new Ki(e.sril?e.eri:l,e.eci>a?e.eci:a)}difference(e){const t=[],i=(p,y,X,m)=>{t.push(new Ki(p,y,X,m))},{sri:l,sci:a,eri:o,eci:r}=this,f=e.sri-l,v=e.sci-a,b=o-e.eri,Z=r-e.eci;return f>0?(i(l,a,e.sri-1,r),b>0?(i(e.eri+1,a,o,r),v>0&&i(e.sri,a,e.eri,e.sci-1),Z>0&&i(e.sri,e.eci+1,e.eri,r)):(v>0&&i(e.sri,a,o,e.sci-1),Z>0&&i(e.sri,e.eci+1,o,r))):b>0&&(i(e.eri+1,a,o,r),v>0&&i(l,a,e.eri,e.sci-1),Z>0&&i(l,e.eci+1,e.eri,r)),v>0?(i(l,a,o,e.sci-1),Z>0?(i(l,e.eri+1,o,r),f>0&&i(l,e.sci,e.sri-1,e.eci),b>0&&i(e.sri+1,e.sci,o,e.eci)):(f>0&&i(l,e.sci,e.sri-1,r),b>0&&i(e.sri+1,e.sci,o,r))):Z>0&&(i(o,e.eci+1,o,r),f>0&&i(l,a,e.sri-1,e.eci),b>0&&i(e.eri+1,a,o,e.eci)),t}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:e,sci:t,eri:i,eci:l}=this;let a=Io(t,e);return this.multiple()&&(a=`${a}:${Io(l,i)}`),a}clone(){const{sri:e,sci:t,eri:i,eci:l,w:a,h:o}=this;return new Ki(e,t,i,l,a,o)}equals(e){return this.eri===e.eri&&this.eci===e.eci&&this.sri===e.sri&&this.sci===e.sci}static valueOf(e){const t=e.split(":"),[i,l]=Ws(t[0]);let[a,o]=[l,i];return t.length>1&&([o,a]=Ws(t[1])),new Ki(l,i,a,o)}}let vpe=class{constructor(){this.range=new Ki(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(e,t){this.ri=e,this.ci=t}size(){return this.range.size()}};class Wpe{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class Gpe{constructor(){this.undoItems=[],this.redoItems=[]}add(e){this.undoItems.push(JSON.stringify(e)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(e,t){const{undoItems:i,redoItems:l}=this;this.canUndo()&&(l.push(JSON.stringify(e)),t(JSON.parse(i.pop())))}redo(e,t){const{undoItems:i,redoItems:l}=this;this.canRedo()&&(i.push(JSON.stringify(e)),t(JSON.parse(l.pop())))}}class Xpe{constructor(){this.range=null,this.state="clear"}copy(e){return this.range=e,this.state="copy",this}cut(e){return this.range=e,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class OV{constructor(e,t,i){this.ci=e,this.operator=t,this.value=i}set(e,t){this.operator=e,this.value=t}includes(e){const{operator:t,value:i}=this;return t==="all"?!0:t==="in"?i.includes(e):!1}vlength(){const{operator:e,value:t}=this;return e==="in"?t.length:0}getData(){const{ci:e,operator:t,value:i}=this;return{ci:e,operator:t,value:i}}}class jV{constructor(e,t){this.ci=e,this.order=t}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class Npe{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:e,filters:t,sort:i}){e!=null&&(this.ref=e,this.filters=t.map(l=>new OV(l.ci,l.operator,l.value)),i&&(this.sort=new jV(i.ci,i.order)))}getData(){if(this.active()){const{ref:e,filters:t,sort:i}=this;return{ref:e,filters:t.map(l=>l.getData()),sort:i}}return{}}addFilter(e,t,i){const l=this.getFilter(e);l==null?this.filters.push(new OV(e,t,i)):l.set(t,i)}setSort(e,t){this.sort=t?new jV(e,t):null}includes(e,t){return this.active()?this.hrange().includes(e,t):!1}getSort(e){const{sort:t}=this;return t&&t.ci===e?t:null}getFilter(e){const{filters:t}=this;for(let i=0;i!t.within(e))}getFirstIncludes(e,t){for(let i=0;it.intersects(e)))}intersects(e){for(let t=0;t{i.intersects(t)&&(t=i.union(t))}),t}add(e){this.deleteWithin(e),this._.push(e)}shift(e,t,i,l){this._.forEach(a=>{const{sri:o,sci:r,eri:f,eci:v}=a,b=a;e==="row"?o>=t?(b.sri+=i,b.eri+=i):o=t?(b.sci+=i,b.eci+=i):r{const a=l;a.within(e)&&(a.eri+=t,a.sri+=t,a.sci+=i,a.eci+=i)})}setData(e){return this._=e.map(t=>Ki.valueOf(t)),this}getData(){return this._.map(e=>e.toString())}}function Mpe(n){return JSON.parse(JSON.stringify(n))}const RS=(n={},...e)=>(e.forEach(t=>{Object.keys(t).forEach(i=>{const l=t[i];typeof l=="string"||typeof l=="number"||typeof l=="boolean"?n[i]=l:typeof l!="function"&&!Array.isArray(l)&&l instanceof Object?(n[i]=n[i]||{},RS(n[i],l)):n[i]=l})}),n);function Av(n,e){const t=Object.keys(n);if(t.length!==Object.keys(e).length)return!1;for(let i=0;it)=>{let t=0,i=0;return Object.keys(n).forEach(l=>{t+=e(n[l],l),i+=1}),[t,i]};function Ype(n,e){const t=n[`${e}`];return delete n[`${e}`],t}function wpe(n,e,t,i,l,a){let o=t,r=i,f=n;for(;fl);f+=1)r=a(f),o+=r;return[f,o-r,r]}function gpe(n,e,t){let i=0;for(let l=n;l5?r.toFixed(2):r;return r.toFixed(Math.max(i,l))}const ya={cloneDeep:Mpe,merge:(...n)=>RS({},...n),equals:Av,arrayEquals:Lpe,sum:Ipe,rangeEach:Vpe,rangeSum:gpe,rangeReduceIf:wpe,deleteProperty:Ype,numberCalc:lc};class Rpe{constructor({len:e,height:t}){this._={},this.len=e,this.height=t}getHeight(e){if(this.isHide(e))return 0;const t=this.get(e);return t&&t.height?t.height:this.height}setHeight(e,t){const i=this.getOrNew(e);i.height=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this.get(e);return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumHeight(e,t,i){return ya.rangeSum(e,t,l=>i&&i.has(l)?0:this.getHeight(l))}totalHeight(){return this.sumHeight(0,this.len)}get(e){return this._[e]}getOrNew(e){return this._[e]=this._[e]||{cells:{}},this._[e]}getCell(e,t){const i=this.get(e);return i!==void 0&&i.cells!==void 0&&i.cells[t]!==void 0?i.cells[t]:null}getCellMerge(e,t){const i=this.getCell(e,t);return i&&i.merge?i.merge:[0,0]}getCellOrNew(e,t){const i=this.getOrNew(e);return i.cells[t]=i.cells[t]||{},i.cells[t]}setCell(e,t,i,l="all"){const a=this.getOrNew(e);l==="all"?a.cells[t]=i:l==="text"?(a.cells[t]=a.cells[t]||{},a.cells[t].text=i.text):l==="format"&&(a.cells[t]=a.cells[t]||{},a.cells[t].style=i.style,i.merge&&(a.cells[t].merge=i.merge))}setCellText(e,t,i){const l=this.getCellOrNew(e,t);l.editable!==!1&&(l.text=i)}copyPaste(e,t,i,l=!1,a=()=>{}){const{sri:o,sci:r,eri:f,eci:v}=e,b=t.sri,Z=t.sci,p=t.eri,y=t.eci,[X,m]=e.size(),[N,G]=t.size();let d=!0,u=0;(p0){const{text:C}=w;let x=W-Z+(c-b)+2;if(d||(x-=u+1),C[0]==="=")w.text=C.replace(/[a-zA-Z]{1,3}\d+/g,R=>{let[g,S]=[0,0];return o===b?g=x-1:S=x-1,/^\d+$/.test(R)?R:wd(R,g,S)});else if(X<=1&&m>1&&(b>f||p1&&(Z>v||y{this.eachCells(l,a=>{let o=parseInt(l,10),r=parseInt(a,10);e.includes(l,a)&&(o=t.sri+(o-e.sri),r=t.sci+(r-e.sci)),i[o]=i[o]||{cells:{}},i[o].cells[r]=this._[l].cells[a]})}),this._=i}paste(e,t){if(e.length<=0)return;const{sri:i,sci:l}=t;e.forEach((a,o)=>{const r=i+o;a.forEach((f,v)=>{const b=l+v;this.setCellText(r,b,f)})})}insert(e,t=1){const i={};this.each((l,a)=>{let o=parseInt(l,10);o>=e&&(o+=t,this.eachCells(l,(r,f)=>{f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>wd(v,0,t,(b,Z)=>Z>=e)))})),i[o]=a}),this._=i,this.len+=t}delete(e,t){const i=t-e+1,l={};this.each((a,o)=>{const r=parseInt(a,10);rt&&(l[r-i]=o,this.eachCells(a,(f,v)=>{v.text&&v.text[0]==="="&&(v.text=v.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>wd(b,0,-i,(Z,p)=>p>t)))}))}),this._=l,this.len-=i}insertColumn(e,t=1){this.each((i,l)=>{const a={};this.eachCells(i,(o,r)=>{let f=parseInt(o,10);f>=e&&(f+=t,r.text&&r.text[0]==="="&&(r.text=r.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>wd(v,t,0,b=>b>=e)))),a[f]=r}),l.cells=a})}deleteColumn(e,t){const i=t-e+1;this.each((l,a)=>{const o={};this.eachCells(l,(r,f)=>{const v=parseInt(r,10);vt&&(o[v-i]=f,f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>wd(b,-i,0,Z=>Z>t))))}),a.cells=o})}deleteCells(e,t="all"){e.each((i,l)=>{this.deleteCell(i,l,t)})}deleteCell(e,t,i="all"){const l=this.get(e);if(l!==null){const a=this.getCell(e,t);a!==null&&a.editable!==!1&&(i==="all"?delete l.cells[t]:i==="text"?(a.text&&delete a.text,a.value&&delete a.value):i==="format"?(a.style!==void 0&&delete a.style,a.merge&&delete a.merge):i==="merge"&&a.merge&&delete a.merge)}}maxCell(){const e=Object.keys(this._),t=e[e.length-1],i=this._[t];if(i){const{cells:l}=i,a=Object.keys(l),o=a[a.length-1];return[parseInt(t,10),parseInt(o,10)]}return[0,0]}each(e){Object.entries(this._).forEach(([t,i])=>{e(t,i)})}eachCells(e,t){this._[e]&&this._[e].cells&&Object.entries(this._[e].cells).forEach(([i,l])=>{t(i,l)})}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}}class Tpe{constructor({len:e,width:t,indexWidth:i,minWidth:l}){this._={},this.len=e,this.width=t,this.indexWidth=i,this.minWidth=l}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}getWidth(e){if(this.isHide(e))return 0;const t=this._[e];return t&&t.width?t.width:this.width}getOrNew(e){return this._[e]=this._[e]||{},this._[e]}setWidth(e,t){const i=this.getOrNew(e);i.width=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this._[e];return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumWidth(e,t){return ya.rangeSum(e,t,i=>this.getWidth(i))}totalWidth(){return this.sumWidth(0,this.len)}}const xpe={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let _v=["en"];const TS={en:xpe};function UV(n,e){if(e)for(const t of _v){if(!e[t])break;let i=e[t];const l=n.match(/(?:\\.|[^.])+/g);for(let a=0;a_i(n)}function xS(n,e,t=!1){t?_v=[n]:_v.unshift(n),e&&(TS[n]=e)}const EV={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function fr(n,e,...t){let i="";return n||(i=_i(`validation.${e}`,...t)),[n,i]}class CS{constructor(e,t,i,l){this.required=t,this.value=i,this.type=e,this.operator=l,this.message=""}parseValue(e){const{type:t}=this;return t==="date"?new Date(e):t==="number"?Number(e):e}equals(e){let t=this.type===e.type&&this.required===e.required&&this.operator===e.operator;return t&&(Array.isArray(this.value)?t=ya.arrayEquals(this.value,e.value):t=this.value===e.value),t}values(){return this.value.split(",")}validate(e){const{required:t,operator:i,value:l,type:a}=this;if(t&&/^\s*$/.test(e))return fr(!1,"required");if(/^\s*$/.test(e))return[!0];if(EV[a]&&!EV[a].test(e))return fr(!1,"notMatch");if(a==="list")return fr(this.values().includes(e),"notIn");if(i){const o=this.parseValue(e);if(i==="be"){const[r,f]=l;return fr(o>=this.parseValue(r)&&o<=this.parseValue(f),"between",r,f)}if(i==="nbe"){const[r,f]=l;return fr(othis.parseValue(f),"notBetween",r,f)}if(i==="eq")return fr(o===this.parseValue(l),"equal",l);if(i==="neq")return fr(o!==this.parseValue(l),"notEqual",l);if(i==="lt")return fr(othis.parseValue(l),"greaterThan",l);if(i==="gte")return fr(o>=this.parseValue(l),"greaterThanEqual",l)}return[!0]}}class s0{constructor(e,t,i){this.refs=t,this.mode=e,this.validator=i}includes(e,t){const{refs:i}=this;for(let l=0;l{const l=Ki.valueOf(i);l.intersects(e)?l.difference(e).forEach(o=>t.push(o.toString())):t.push(i)}),this.refs=t}getData(){const{refs:e,mode:t,validator:i}=this,{type:l,required:a,operator:o,value:r}=i;return{refs:e,mode:t,type:l,required:a,operator:o,value:r}}static valueOf({refs:e,mode:t,type:i,required:l,operator:a,value:o}){return new s0(t,e,new CS(i,l,o,a))}}class Cpe{constructor(){this._=[],this.errors=new Map}getError(e,t){return this.errors.get(`${e}_${t}`)}validate(e,t,i){const l=this.get(e,t),a=`${e}_${t}`,{errors:o}=this;if(l!==null){const[r,f]=l.validator.validate(i);r?o.delete(a):o.set(a,f)}else o.delete(a);return!0}add(e,t,{type:i,required:l,value:a,operator:o}){const r=new CS(i,l,a,o),f=this.getByValidator(r);f!==null?f.addRef(t):this._.push(new s0(e,[t],r))}getByValidator(e){for(let t=0;t{t.remove(e)})}each(e){this._.forEach(t=>e(t))}getData(){return this._.filter(e=>e.refs.length>0).map(e=>e.getData())}setData(e){this._=e.map(t=>s0.valueOf(t))}}const Spe={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},zpe=41,kpe=41,KV=(n,e)=>Object.prototype.hasOwnProperty.call(n,e);function HV(n,e,t=()=>{}){const{merges:i}=this,l=e.clone(),[a,o]=n.size(),[r,f]=e.size();return a>r&&(l.eri=e.sri+a-1),o>f&&(l.eci=e.sci+o-1),i.intersects(l)?(t(_i("error.pasteForMergedCell")),!1):!0}function PV(n,e,t,i=!1){const{rows:l,merges:a}=this;(t==="all"||t==="format")&&(l.deleteCells(e,t),a.deleteWithin(e)),l.copyPaste(n,e,t,i,(o,r,f)=>{if(f&&f.merge){const[v,b]=f.merge;if(v<=0&&b<=0)return;a.add(new Ki(o,r,o+v,r+b))}})}function Fpe(n,e){const{clipboard:t,rows:i,merges:l}=this;i.cutPaste(n,e),l.move(n,e.sri-n.sri,e.sci-n.sci),t.clear()}function _c(n,e,t){const{styles:i,rows:l}=this,a=l.getCellOrNew(n,e);let o={};a.style!==void 0&&(o=ya.cloneDeep(i[a.style])),o=ya.merge(o,{border:t}),a.style=this.addStyle(o)}function Jpe({mode:n,style:e,color:t}){const{styles:i,selector:l,rows:a}=this,{sri:o,sci:r,eri:f,eci:v}=l.range,b=!this.isSignleSelected();if(!(!b&&(n==="inside"||n==="horizontal"||n==="vertical"))){if(n==="outside"&&!b)_c.call(this,o,r,{top:[e,t],bottom:[e,t],left:[e,t],right:[e,t]});else if(n==="none")l.range.each((Z,p)=>{const y=a.getCell(Z,p);if(y&&y.style!==void 0){const X=ya.cloneDeep(i[y.style]);delete X.border,y.style=this.addStyle(X)}});else if(n==="all"||n==="inside"||n==="outside"||n==="horizontal"||n==="vertical"){const Z=[];for(let p=o;p<=f;p+=1)for(let y=r;y<=v;y+=1){const X=[];for(let h=0;hZ.splice(h,1)),y>v)break;const m=a.getCell(p,y);let[N,G]=[0,0];m&&m.merge&&([N,G]=m.merge,Z.push([p,y,N,G]));const d=N>0&&p+N===f,u=G>0&&y+G===v;let s={};n==="all"?s={bottom:[e,t],top:[e,t],left:[e,t],right:[e,t]}:n==="inside"?(!u&&y0&&_c.call(this,p,y,s),y+=G}}else if(n==="top"||n==="bottom")for(let Z=r;Z<=v;Z+=1)n==="top"&&(_c.call(this,o,Z,{top:[e,t]}),Z+=a.getCellMerge(o,Z)[1]),n==="bottom"&&(_c.call(this,f,Z,{bottom:[e,t]}),Z+=a.getCellMerge(f,Z)[1]);else if(n==="left"||n==="right")for(let Z=o;Z<=f;Z+=1)n==="left"&&(_c.call(this,Z,r,{left:[e,t]}),Z+=a.getCellMerge(Z,r)[0]),n==="right"&&(_c.call(this,Z,v,{right:[e,t]}),Z+=a.getCellMerge(Z,v)[0])}}function Dpe(n,e){const{rows:t}=this,i=this.freezeTotalHeight();let l=t.height;i+t.heightn);o+=1)a.has(o)||(f=t.getHeight(o),r+=f);return r-=f,r<=0?{ri:-1,top:0,height:f}:{ri:o-1,top:r,height:f}}function Ope(n,e){const{cols:t}=this,i=this.freezeTotalWidth();let l=t.indexWidth;i+t.indexWidtht.getWidth(f));return o<=0?{ci:-1,left:0,width:t.indexWidth}:{ci:a-1,left:o,width:r}}class jpe{constructor(e,t){this.settings=ya.merge(Spe,t||{}),this.name=e||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new HX,this.rows=new Rpe(this.settings.row),this.cols=new Tpe(this.settings.col),this.validations=new Cpe,this.hyperlinks={},this.comments={},this.selector=new vpe,this.scroll=new Wpe,this.history=new Gpe,this.clipboard=new Xpe,this.autoFilter=new Npe,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(e,t,i){this.changeData(()=>{this.validations.add(e,t,i)})}removeValidation(){const{range:e}=this.selector;this.changeData(()=>{this.validations.remove(e)})}getSelectedValidator(){const{ri:e,ci:t}=this.selector,i=this.validations.get(e,t);return i?i.validator:null}getSelectedValidation(){const{ri:e,ci:t,range:i}=this.selector,l=this.validations.get(e,t),a={ref:i.toString()};return l!==null&&(a.mode=l.mode,a.validator=l.validator),a}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),e=>{this.setData(e)})}redo(){this.history.redo(this.getData(),e=>{this.setData(e)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let e="";const t=this.rows.getData();for(let i=this.selector.range.sri;i<=this.selector.range.eri;i+=1){if(KV(t,i)){for(let l=this.selector.range.sci;l<=this.selector.range.eci;l+=1)if(l>this.selector.range.sci&&(e+=" "),KV(t[i].cells,l)){const a=String(t[i].cells[l].text);a.indexOf(` -`)===-1&&a.indexOf(" ")===-1&&a.indexOf('"')===-1?e+=a:e+=`"${a}"`}}else for(let l=this.selector.range.sci;l<=this.selector.range.eci;l+=1)e+=" ";e+=` -`}navigator.clipboard.writeText(e).then(()=>{},i=>{console.log("text copy to the system clipboard error ",e,i)})}cut(){this.clipboard.cut(this.selector.range)}paste(e="all",t=()=>{}){const{clipboard:i,selector:l}=this;return i.isClear()||!HV.call(this,i.range,l.range,t)?!1:(this.changeData(()=>{i.isCopy()?PV.call(this,i.range,l.range,e):i.isCut()&&Fpe.call(this,i.range,l.range)}),!0)}pasteFromText(e){const t=e.split(`\r -`).map(a=>a.replace(/"/g,"").split(" "));t.length>0&&(t.length-=1);const{rows:i,selector:l}=this;this.changeData(()=>{i.paste(t,l.range)})}autofill(e,t,i=()=>{}){const l=this.selector.range;return HV.call(this,l,e,i)?(this.changeData(()=>{PV.call(this,l,e,t,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(e,t){const{selector:i,rows:l,cols:a,merges:o}=this;let{sri:r,sci:f,eri:v,eci:b}=i.range;const Z=i.ri,p=i.ci;let[y,X]=[e,t];return e<0&&(y=l.len-1),t<0&&(X=a.len-1),y>Z?[r,v]=[Z,y]:[r,v]=[y,Z],X>p?[f,b]=[p,X]:[f,b]=[X,p],i.range=o.union(new Ki(r,f,v,b)),i.range=o.union(i.range),i.range}calSelectedRangeByStart(e,t){const{selector:i,rows:l,cols:a,merges:o}=this;let r=o.getFirstIncludes(e,t);return r===null&&(r=new Ki(e,t,e,t),e===-1&&(r.sri=0,r.eri=l.len-1),t===-1&&(r.sci=0,r.eci=a.len-1)),i.range=r,r}setSelectedCellAttr(e,t){this.changeData(()=>{const{selector:i,styles:l,rows:a}=this;if(e==="merge")t?this.merge():this.unmerge();else if(e==="border")Jpe.call(this,t);else if(e==="formula"){const{ri:o,ci:r,range:f}=i;if(i.multiple()){const[v,b]=i.size(),{sri:Z,sci:p,eri:y,eci:X}=f;if(v>1)for(let m=p;m<=X;m+=1){const N=a.getCellOrNew(y+1,m);N.text=`=${t}(${Io(m,Z)}:${Io(m,y)})`}else if(b>1){const m=a.getCellOrNew(o,X+1);m.text=`=${t}(${Io(p,o)}:${Io(X,o)})`}}else{const v=a.getCellOrNew(o,r);v.text=`=${t}()`}}else i.range.each((o,r)=>{const f=a.getCellOrNew(o,r);let v={};if(f.style!==void 0&&(v=ya.cloneDeep(l[f.style])),e==="format")v.format=t,f.style=this.addStyle(v);else if(e==="font-bold"||e==="font-italic"||e==="font-name"||e==="font-size"){const b={};b[e.split("-")[1]]=t,v.font=Object.assign(v.font||{},b),f.style=this.addStyle(v)}else e==="strike"||e==="textwrap"||e==="underline"||e==="align"||e==="valign"||e==="color"||e==="bgcolor"?(v[e]=t,f.style=this.addStyle(v)):f[e]=t})})}setSelectedCellText(e,t="input"){const{autoFilter:i,selector:l,rows:a}=this,{ri:o,ci:r}=l;let f=o;this.unsortedRowMap.has(o)&&(f=this.unsortedRowMap.get(o));const v=a.getCell(f,r),b=v?v.text:"";if(this.setCellText(f,r,e,t),i.active()){const Z=i.getFilter(r);if(Z){const p=Z.value.findIndex(y=>y===b);p>=0&&Z.value.splice(p,1,e)}}}getSelectedCell(){const{ri:e,ci:t}=this.selector;let i=e;return this.unsortedRowMap.has(e)&&(i=this.unsortedRowMap.get(e)),this.rows.getCell(i,t)}xyInSelectedRect(e,t){const{left:i,top:l,width:a,height:o}=this.getSelectedRect(),r=e-this.cols.indexWidth,f=t-this.rows.height;return r>i&&rl&&f0&&G>b&&(X=b),N>0&&N>Z&&(m=Z),{l:b,t:Z,left:X,top:m,height:p,width:y,scroll:t}}getCellRectByXY(e,t){const{scroll:i,merges:l,rows:a,cols:o}=this;let{ri:r,top:f,height:v}=Dpe.call(this,t,i.y),{ci:b,left:Z,width:p}=Ope.call(this,e,i.x);if(b===-1&&(p=o.totalWidth()),r===-1&&(v=a.totalHeight()),r>=0||b>=0){const y=l.getFirstIncludes(r,b);y&&(r=y.sri,b=y.sci,{left:Z,top:f,width:p,height:v}=this.cellRect(r,b))}return{ri:r,ci:b,left:Z,top:f,width:p,height:v}}isSignleSelected(){const{sri:e,sci:t,eri:i,eci:l}=this.selector.range,a=this.getCell(e,t);if(a&&a.merge){const[o,r]=a.merge;if(e+o===i&&t+r===l)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:e,sci:t,eri:i,eci:l}=this.selector.range,a=this.getCell(e,t);if(a&&a.merge){const[o,r]=a.merge;if(e+o===i&&t+r===l)return!0}return!1}merge(){const{selector:e,rows:t}=this;if(this.isSignleSelected())return;const[i,l]=e.size();if(i>1||l>1){const{sri:a,sci:o}=e.range;this.changeData(()=>{const r=t.getCellOrNew(a,o);r.merge=[i-1,l-1],this.merges.add(e.range),this.rows.deleteCells(e.range),this.rows.setCell(a,o,r)})}}unmerge(){const{selector:e}=this;if(!this.isSignleSelected())return;const{sri:t,sci:i}=e.range;this.changeData(()=>{this.rows.deleteCell(t,i,"merge"),this.merges.deleteWithin(e.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:e,selector:t}=this;this.changeData(()=>{e.active()?(e.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):e.ref=t.range.toString()})}setAutoFilter(e,t,i,l){const{autoFilter:a}=this;a.addFilter(e,i,l),a.setSort(e,t),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:e,rows:t}=this;if(!e.active())return;const{sort:i}=e,{rset:l,fset:a}=e.filteredRows((f,v)=>t.getCell(f,v)),o=Array.from(a),r=Array.from(a);i&&o.sort((f,v)=>i.order==="asc"?f-v:i.order==="desc"?v-f:0),this.exceptRowSet=l,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,o.forEach((f,v)=>{this.sortedRowMap.set(r[v],f),this.unsortedRowMap.set(f,r[v])})}deleteCell(e="all"){const{selector:t}=this;this.changeData(()=>{this.rows.deleteCells(t.range,e),(e==="all"||e==="format")&&this.merges.deleteWithin(t.range)})}insert(e,t=1){this.changeData(()=>{const{sri:i,sci:l}=this.selector.range,{rows:a,merges:o,cols:r}=this;let f=i;e==="row"?a.insert(i,t):e==="column"&&(a.insertColumn(l,t),f=l,r.len+=1),o.shift(e,f,t,(v,b,Z,p)=>{const y=a.getCell(v,b);y.merge[0]+=Z,y.merge[1]+=p})})}delete(e){this.changeData(()=>{const{rows:t,merges:i,selector:l,cols:a}=this,{range:o}=l,{sri:r,sci:f,eri:v,eci:b}=l.range,[Z,p]=l.range.size();let y=r,X=Z;e==="row"?t.delete(r,v):e==="column"&&(t.deleteColumn(f,b),y=o.sci,X=p,a.len-=1),i.shift(e,y,-X,(m,N,G,d)=>{const u=t.getCell(m,N);u.merge[0]+=G,u.merge[1]+=d,u.merge[0]===0&&u.merge[1]===0&&delete u.merge})})}scrollx(e,t){const{scroll:i,freeze:l,cols:a}=this,[,o]=l,[r,f,v]=ya.rangeReduceIf(o,a.len,0,0,e,Z=>a.getWidth(Z));let b=f;e>0&&(b+=v),i.x!==b&&(i.ci=e>0?r:0,i.x=b,t())}scrolly(e,t){const{scroll:i,freeze:l,rows:a}=this,[o]=l,[r,f,v]=ya.rangeReduceIf(o,a.len,0,0,e,Z=>a.getHeight(Z));let b=f;e>0&&(b+=v),i.y!==b&&(i.ri=e>0?r:0,i.y=b,t())}cellRect(e,t){const{rows:i,cols:l}=this,a=l.sumWidth(0,t),o=i.sumHeight(0,e),r=i.getCell(e,t);let f=l.getWidth(t),v=i.getHeight(e);if(r!==null&&r.merge){const[b,Z]=r.merge;if(b>0)for(let p=1;p<=b;p+=1)v+=i.getHeight(e+p);if(Z>0)for(let p=1;p<=Z;p+=1)f+=l.getWidth(t+p)}return{left:a,top:o,width:f,height:v,cell:r}}getCell(e,t){return this.rows.getCell(e,t)}getCellTextOrDefault(e,t){const i=this.getCell(e,t);return i&&i.text?i.text:""}getCellStyle(e,t){const i=this.getCell(e,t);return i&&i.style!==void 0?this.styles[i.style]:null}getCellStyleOrDefault(e,t){const{styles:i,rows:l}=this,a=l.getCell(e,t),o=a&&a.style!==void 0?i[a.style]:{};return ya.merge(this.defaultStyle(),o)}getSelectedCellStyle(){const{ri:e,ci:t}=this.selector;return this.getCellStyleOrDefault(e,t)}setCellText(e,t,i,l){const{rows:a,history:o,validations:r}=this;l==="finished"?(a.setCellText(e,t,""),o.add(this.getData()),a.setCellText(e,t,i)):(a.setCellText(e,t,i),this.change(this.getData())),r.validate(e,t,i)}freezeIsActive(){const[e,t]=this.freeze;return e>0||t>0}setFreeze(e,t){this.changeData(()=>{this.freeze=[e,t]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(e,t){this.changeData(()=>{this.rows.setHeight(e,t)})}setColWidth(e,t){this.changeData(()=>{this.cols.setWidth(e,t)})}viewHeight(){const{view:e,showToolbar:t,showBottomBar:i}=this.settings;let l=e.height();return i&&(l-=kpe),t&&(l-=zpe),l}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[e,t]=this.freeze;return new Ki(0,0,e-1,t-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:e,cols:t}=this,[i,l]=e.maxCell(),a=e.sumHeight(0,i+1),o=t.sumWidth(0,l+1);return new Ki(0,0,i,l,o,a)}exceptRowTotalHeight(e,t){const{exceptRowSet:i,rows:l}=this,a=Array.from(i);let o=0;return a.forEach(r=>{if(rt){const f=l.getHeight(r);o+=f}}),o}viewRange(){const{scroll:e,rows:t,cols:i,freeze:l,exceptRowSet:a}=this;let{ri:o,ci:r}=e;o<=0&&([o]=l),r<=0&&([,r]=l);let[f,v]=[0,0],[b,Z]=[t.len,i.len];for(let p=o;pthis.viewHeight()));p+=1);for(let p=r;pthis.viewWidth()));p+=1);return new Ki(o,r,b,Z,f,v)}eachMergesInView(e,t){this.merges.filterIntersects(e).forEach(i=>t(i))}hideRowsOrCols(){const{rows:e,cols:t,selector:i}=this,[l,a]=i.size(),{sri:o,sci:r,eri:f,eci:v}=i.range;if(l===e.len)for(let b=r;b<=v;b+=1)t.setHide(b,!0);else if(a===t.len)for(let b=o;b<=f;b+=1)e.setHide(b,!0)}unhideRowsOrCols(e,t){this[`${e}s`].unhide(t)}rowEach(e,t,i){let l=0;const{rows:a}=this,o=this.exceptRowSet,r=[...o];let f=0;for(let v=0;v0&&(i(v,l,b),l+=b,l>this.viewHeight()))break}}colEach(e,t,i){let l=0;const{cols:a}=this;for(let o=e;o<=t;o+=1){const r=a.getWidth(o);if(r>0&&(i(o,l,r),l+=r,l>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(e){const{styles:t}=this;for(let i=0;i{if(t==="merges"||t==="rows"||t==="cols"||t==="validations")this[t].setData(e[t]);else if(t==="freeze"){const[i,l]=Ws(e[t]);this.freeze=[l,i]}else t==="autofilter"?this.autoFilter.setData(e[t]):e[t]!==void 0&&(this[t]=e[t])}),this}getData(){const{name:e,freeze:t,styles:i,merges:l,rows:a,cols:o,validations:r,autoFilter:f}=this;return{name:e,freeze:Io(t[1],t[0]),styles:i,merges:l.getData(),rows:a.getData(),cols:o.getData(),validations:r.getData(),autofilter:f.getData()}}}function va(n,e,t){n.addEventListener(e,t)}function c0(n,e,t){n.removeEventListener(e,t)}function qu(n){n.xclickoutside&&(c0(window.document.body,"click",n.xclickoutside),delete n.xclickoutside)}function Bh(n,e){n.xclickoutside=t=>{t.detail===2||n.contains(t.target)||(e?e(n):(n.hide(),qu(n)))},va(window.document.body,"click",n.xclickoutside)}function SS(n,e,t){va(n,"mousemove",e);const i=n;i.xEvtUp=l=>{c0(n,"mousemove",e),c0(n,"mouseup",n.xEvtUp),t(l)},va(n,"mouseup",n.xEvtUp)}function QV(n,e,t,i){let l="";Math.abs(n)>Math.abs(e)?(l=n>0?"right":"left",i(l,n,t)):(l=e>0?"down":"up",i(l,e,t))}function Upe(n,{move:e,end:t}){let i=0,l=0;va(n,"touchstart",a=>{const{pageX:o,pageY:r}=a.touches[0];i=o,l=r}),va(n,"touchmove",a=>{if(!e)return;const{pageX:o,pageY:r}=a.changedTouches[0],f=o-i,v=r-l;(Math.abs(f)>10||Math.abs(v)>10)&&(QV(f,v,a,e),i=o,l=r),a.preventDefault()}),va(n,"touchend",a=>{if(!t)return;const{pageX:o,pageY:r}=a.changedTouches[0],f=o-i,v=r-l;QV(f,v,a,t)})}function Epe(){const n=new Map;function e(o,r){const f=()=>{const b=n.get(o);return Array.isArray(b)&&b.push(r)||!1},v=()=>n.set(o,[].concat(r));return n.has(o)&&f()||v()}function t(o,r){const f=()=>{const v=n.get(o);for(const b of v)b.call(null,...r)};return n.has(o)&&f()}function i(o,r){const f=()=>{const v=n.get(o),b=v.indexOf(r);return b>=0&&v.splice(b,1)&&n.get(o).length===0&&n.delete(o)};return n.has(o)&&f()}function l(o,r){const f=(...v)=>{r.call(null,...v),i(o,f)};return e(o,f)}function a(){n.clear()}return{get current(){return n},on:e,once:l,fire:t,removeListener:i,removeAllListeners:a}}const gt="x-spreadsheet";class BV{constructor(e=!1,t){this.moving=!1,this.vertical=e,this.el=ut("div",`${gt}-resizer ${e?"vertical":"horizontal"}`).children(this.unhideHoverEl=ut("div",`${gt}-resizer-hover`).on("dblclick.stop",i=>this.mousedblclickHandler(i)).css("position","absolute").hide(),this.hoverEl=ut("div",`${gt}-resizer-hover`).on("mousedown.stop",i=>this.mousedownHandler(i)),this.lineEl=ut("div",`${gt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=t,this.unhideFn=()=>{}}showUnhide(e){this.unhideIndex=e,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(e,t){const{moving:i,vertical:l,hoverEl:a,lineEl:o,el:r,unhideHoverEl:f}=this;if(i)return;this.cRect=e;const{left:v,top:b,width:Z,height:p}=e;r.offset({left:l?v+Z-5:v,top:l?b:b+p-5}).show(),a.offset({width:l?5:Z,height:l?p:5}),o.offset({width:l?0:t.width,height:l?t.height:0}),f.offset({left:l?5-Z:v,top:l?b:5-p,width:l?5:Z,height:l?p:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(e){let t=e;const{el:i,lineEl:l,cRect:a,vertical:o,minDistance:r}=this;let f=o?a.width:a.height;l.show(),SS(window,v=>{this.moving=!0,t!==null&&v.buttons===1&&(o?(f+=v.movementX,f>r&&i.css("left",`${a.left+f}px`)):(f+=v.movementY,f>r&&i.css("top",`${a.top+f}px`)),t=v)},()=>{t=null,l.hide(),this.moving=!1,this.hide(),this.finishedFn&&(f{}).on("scroll.stop",t=>{const{scrollTop:i,scrollLeft:l}=t.target;this.moveFn&&this.moveFn(this.vertical?i:l,t)})}move(e){return this.el.scroll(e),this}scroll(){return this.el.scroll()}set(e,t){const i=e-1;if(t>i){const l=this.vertical?"height":"width";this.el.css(l,`${i-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(l,`${t}px`)}else this.el.hide();return this}}const Xb=2*2-1;let $v=10;class Nb{constructor(e=!1){this.useHideInput=e,this.inputChange=()=>{},this.cornerEl=ut("div",`${gt}-selector-corner`),this.areaEl=ut("div",`${gt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=ut("div",`${gt}-selector-clipboard`).hide(),this.autofillEl=ut("div",`${gt}-selector-autofill`).hide(),this.el=ut("div",`${gt}-selector`).css("z-index",`${$v}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),e&&(this.hideInput=ut("input","").on("compositionend",t=>{this.inputChange(t.target.value)}),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput))),$v+=1}setOffset(e){return this.el.offset(e).show(),this}hide(){return this.el.hide(),this}setAreaOffset(e){const{left:t,top:i,width:l,height:a}=e,o={width:l-Xb+.8,height:a-Xb+.8,left:t-.8,top:i-.8};this.areaEl.offset(o).show(),this.useHideInput&&(this.hideInputDiv.offset(o),this.hideInput.val("").focus())}setClipboardOffset(e){const{left:t,top:i,width:l,height:a}=e;this.clipboardEl.offset({left:t,top:i,width:l-5,height:a-5})}showAutofill(e){const{left:t,top:i,width:l,height:a}=e;this.autofillEl.offset({width:l-Xb,height:a-Xb,left:t,top:i}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function PX(n){const{data:e}=this,{left:t,top:i,width:l,height:a,scroll:o,l:r,t:f}=n,v=e.freezeTotalWidth(),b=e.freezeTotalHeight();let Z=t-v;v>r&&(Z-=o.x);let p=i-b;return b>f&&(p-=o.y),{left:Z,top:p,width:l,height:a}}function QX(n){const{data:e}=this,{left:t,width:i,height:l,l:a,t:o,scroll:r}=n,f=e.freezeTotalWidth();let v=t-f;return f>a&&(v-=r.x),{left:v,top:o,width:i,height:l}}function BX(n){const{data:e}=this,{top:t,width:i,height:l,l:a,t:o,scroll:r}=n,f=e.freezeTotalHeight();let v=t-f;return f>o&&(v-=r.y),{left:a,top:v,width:i,height:l}}function qv(n){const{br:e}=this;e.setAreaOffset(PX.call(this,n))}function Kpe(n){const{tl:e}=this;e.setAreaOffset(n)}function zS(n){const{t:e}=this;e.setAreaOffset(QX.call(this,n))}function kS(n){const{l:e}=this;e.setAreaOffset(BX.call(this,n))}function FS(n){const{l:e}=this;e.setClipboardOffset(BX.call(this,n))}function eW(n){const{br:e}=this;e.setClipboardOffset(PX.call(this,n))}function Hpe(n){const{tl:e}=this;e.setClipboardOffset(n)}function JS(n){const{t:e}=this;e.setClipboardOffset(QX.call(this,n))}function _V(n){qv.call(this,n),Kpe.call(this,n),zS.call(this,n),kS.call(this,n)}function $V(n){eW.call(this,n),Hpe.call(this,n),JS.call(this,n),FS.call(this,n)}class Ppe{constructor(e){this.inputChange=()=>{},this.data=e,this.br=new Nb(!0),this.t=new Nb,this.l=new Nb,this.tl=new Nb,this.br.inputChange=t=>{this.inputChange(t)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=ut("div",`${gt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,$v+=1}resetData(e){this.data=e,this.range=e.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:e,tl:t,t:i,l,br:a}=this,o=e.freezeTotalHeight(),r=e.freezeTotalWidth();o>0||r>0?(t.setOffset({width:r,height:o}),i.setOffset({left:r,height:o}),l.setOffset({top:o,width:r}),a.setOffset({left:r,top:o})):(t.hide(),i.hide(),l.hide(),a.setOffset({left:0,top:0}))}resetAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();_V.call(this,e),$V.call(this,t),this.resetOffset()}resetBRTAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();qv.call(this,e),zS.call(this,e),eW.call(this,t),JS.call(this,t),this.resetOffset()}resetBRLAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();qv.call(this,e),kS.call(this,e),eW.call(this,t),FS.call(this,t),this.resetOffset()}set(e,t,i=!0){const{data:l}=this,a=l.calSelectedRangeByStart(e,t),{sri:o,sci:r}=a;if(i){let[f,v]=[e,t];e<0&&(f=0),t<0&&(v=0),l.selector.setIndexes(f,v),this.indexes=[f,v]}this.moveIndexes=[o,r],this.range=a,this.resetAreaOffset(),this.el.show()}setEnd(e,t,i=!0){const{data:l,lastri:a,lastci:o}=this;if(i){if(e===a&&t===o)return;this.lastri=e,this.lastci=t}this.range=l.calSelectedRangeByEnd(e,t),_V.call(this,this.data.getSelectedRect())}reset(){const{eri:e,eci:t}=this.data.selector.range;this.setEnd(e,t)}showAutofill(e,t){if(e===-1&&t===-1)return;const{sri:i,sci:l,eri:a,eci:o}=this.range,[r,f]=[e,t],v=i-e,b=l-t,Z=a-e,p=o-t;if(b>0)this.arange=new Ki(i,f,a,l-1);else if(v>0)this.arange=new Ki(r,l,i-1,o);else if(p<0)this.arange=new Ki(i,o+1,a,f);else if(Z<0)this.arange=new Ki(a+1,l,r,o);else{this.arange=null;return}if(this.arange!==null){const y=this.data.getRect(this.arange);y.width+=2,y.height+=2;const{br:X,l:m,t:N,tl:G}=this;X.showAutofill(PX.call(this,y)),m.showAutofill(BX.call(this,y)),N.showAutofill(QX.call(this,y)),G.showAutofill(y)}}hideAutofill(){["br","l","t","tl"].forEach(e=>{this[e].hideAutofill()})}showClipboard(){const e=this.data.getClipboardRect();$V.call(this,e),["br","l","t","tl"].forEach(t=>{this[t].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(e=>{this[e].hideClipboard()})}}function Qpe(n){n.preventDefault(),n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=e.length-1),e[this.itemIndex].toggle())}function Bpe(n){n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>e.length-1&&(this.itemIndex=0),e[this.itemIndex].toggle())}function qV(n){n.preventDefault();const{filterItems:e}=this;e.length<=0||(n.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),e[this.itemIndex].el.click(),this.hide())}function Ape(n){const{keyCode:e}=n;switch(n.ctrlKey&&n.stopPropagation(),e){case 37:n.stopPropagation();break;case 38:Qpe.call(this,n);break;case 39:n.stopPropagation();break;case 40:Bpe.call(this,n);break;case 13:qV.call(this,n);break;case 9:qV.call(this,n);break;default:n.stopPropagation();break}}class DS{constructor(e,t,i="200px"){this.filterItems=[],this.items=e,this.el=ut("div",`${gt}-suggest`).css("width",i).hide(),this.itemClick=t,this.itemIndex=-1}setOffset(e){this.el.cssRemoveKeys("top","bottom").offset(e)}hide(){const{el:e}=this;this.filterItems=[],this.itemIndex=-1,e.hide(),qu(this.el.parent())}setItems(e){this.items=e}search(e){let{items:t}=this;if(/^\s*$/.test(e)||(t=t.filter(l=>(l.key||l).startsWith(e.toUpperCase()))),t=t.map(l=>{let{title:a}=l;a?typeof a=="function"&&(a=a()):a=l;const o=ut("div",`${gt}-item`).child(a).on("click.stop",()=>{this.itemClick(l),this.hide()});return l.label&&o.child(ut("div","label").html(l.label)),o}),this.filterItems=t,t.length<=0)return;const{el:i}=this;i.html("").children(...t).show(),Bh(i.parent(),()=>{this.hide()})}bindInputEvents(e){e.on("keydown",t=>Ape.call(this,t))}}class Jl extends Vp{constructor(e){super("div",`${gt}-icon`),this.iconNameEl=ut("div",`${gt}-icon-img ${e}`),this.child(this.iconNameEl)}setName(e){this.iconNameEl.className(`${gt}-icon-img ${e}`)}}function eL(n,e){n.setMonth(n.getMonth()+e)}function _pe(n,e){const t=new Date(n);return t.setDate(e-n.getDay()+1),t}function $pe(n,e,t){const i=new Date(n,e,1,23,59,59),l=[[],[],[],[],[],[]];for(let a=0;a<6;a+=1)for(let o=0;o<7;o+=1){const r=a*7+o,f=_pe(i,r),v=f.getMonth()!==e,b=f.getMonth()===t.getMonth()&&f.getDate()===t.getDate();l[a][o]={d:f,disabled:v,active:b}}return l}class qpe{constructor(e){this.value=e,this.cvalue=new Date(e),this.headerLeftEl=ut("div","calendar-header-left"),this.bodyEl=ut("tbody",""),this.buildAll(),this.el=ut("div","x-spreadsheet-calendar").children(ut("div","calendar-header").children(this.headerLeftEl,ut("div","calendar-header-right").children(ut("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Jl("chevron-left")),ut("a","calendar-next").on("click.stop",()=>this.next()).child(new Jl("chevron-right")))),ut("table","calendar-body").children(ut("thead","").child(ut("tr","").children(..._i("calendar.weeks").map(t=>ut("th","cell").child(t)))),this.bodyEl)),this.selectChange=()=>{}}setValue(e){this.value=e,this.cvalue=new Date(e),this.buildAll()}prev(){const{value:e}=this;eL(e,-1),this.buildAll()}next(){const{value:e}=this;eL(e,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:e}=this;this.headerLeftEl.html(`${_i("calendar.months")[e.getMonth()]} ${e.getFullYear()}`)}buildBody(){const{value:e,cvalue:t,bodyEl:i}=this,a=$pe(e.getFullYear(),e.getMonth(),t).map(o=>{const r=o.map(f=>{let v="cell";return f.disabled&&(v+=" disabled"),f.active&&(v+=" active"),ut("td","").child(ut("div",v).on("click.stop",()=>{this.selectChange(f.d)}).child(f.d.getDate().toString()))});return ut("tr","").children(...r)});i.html("").children(...a)}}class eye{constructor(){this.calendar=new qpe(new Date),this.el=ut("div",`${gt}-datepicker`).child(this.calendar.el).hide()}setValue(e){const{calendar:t}=this;return typeof e=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(e)&&t.setValue(new Date(e.replace(new RegExp("-","g"),"/"))):e instanceof Date&&t.setValue(e),this}change(e){this.calendar.selectChange=t=>{e(t),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function u0(){const{inputText:n}=this;if(!/^\s*$/.test(n)){const{textlineEl:e,textEl:t,areaOffset:i}=this,l=n.split(` -`),a=Math.max(...l.map(Z=>Z.length)),r=e.offset().width/n.length,f=(a+1)*r+5,v=this.viewFn().width-i.left-r;let b=l.length;if(f>i.width){let Z=f;f>v&&(Z=v,b+=parseInt(f/v,10),b+=f%v>0?1:0),t.css("width",`${Z}px`)}b*=this.rowHeight,b>i.height&&t.css("height",`${b}px`)}}function tye({target:n},e){const{value:t,selectionEnd:i}=n,l=`${t.slice(0,i)}${e}${t.slice(i)}`;n.value=l,n.setSelectionRange(i+1,i+1),this.inputText=l,this.textlineEl.html(l),u0.call(this)}function nye(n){const{keyCode:e,altKey:t}=n;e!==13&&e!==9&&n.stopPropagation(),e===13&&t&&(tye.call(this,n,` -`),n.stopPropagation()),e===13&&!t&&n.preventDefault()}function iye(n){const e=n.target.value,{suggest:t,textlineEl:i,validator:l}=this,{cell:a}=this;if(a!==null)if("editable"in a&&a.editable===!0||a.editable===void 0){if(this.inputText=e,l)l.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),u0.call(this),this.change("input",e)}else n.target.value=a.text;else{if(this.inputText=e,l)l.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),u0.call(this),this.change("input",e)}}function lye(n){const{el:e}=this.textEl;setTimeout(()=>{e.focus(),e.setSelectionRange(n,n)},0)}function OS(n,e){const{textEl:t,textlineEl:i}=this;t.el.blur(),t.val(n),i.html(n),lye.call(this,e)}function aye(n){const{inputText:e,validator:t}=this;let i=0;if(t&&t.type==="list")this.inputText=n,i=this.inputText.length;else{const l=e.lastIndexOf("="),a=e.substring(0,l+1);let o=e.substring(l+1);o.indexOf(")")!==-1?o=o.substring(o.indexOf(")")):o="",this.inputText=`${a+n.key}(`,i=this.inputText.length,this.inputText+=`)${o}`}OS.call(this,this.inputText,i)}function rye(){this.suggest.setItems(this.formulas)}function oye(n){let e=n.getMonth()+1,t=n.getDate();return e<10&&(e=`0${e}`),t<10&&(t=`0${t}`),`${n.getFullYear()}-${e}-${t}`}class sye{constructor(e,t,i){this.viewFn=t,this.rowHeight=i,this.formulas=e,this.suggest=new DS(e,l=>{aye.call(this,l)}),this.datepicker=new eye,this.datepicker.change(l=>{this.setText(oye(l)),this.clear()}),this.areaEl=ut("div",`${gt}-editor-area`).children(this.textEl=ut("textarea","").on("input",l=>iye.call(this,l)).on("paste.stop",()=>{}).on("keydown",l=>nye.call(this,l)),this.textlineEl=ut("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=ut("div",`${gt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(e,t){this.freeze.w=e,this.freeze.h=t}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),rye.call(this),this.datepicker.hide()}setOffset(e,t="top"){const{textEl:i,areaEl:l,suggest:a,freeze:o,el:r}=this;if(e){this.areaOffset=e;const{left:f,top:v,width:b,height:Z,l:p,t:y}=e,X={left:0,top:0};o.w>p&&o.h>y||(o.wp?X.top=o.h:o.h>y&&(X.left=o.w)),r.offset(X),l.offset({left:f-X.left-.8,top:v-X.top-.8}),i.offset({width:b-9+.8,height:Z-3+.8});const m={left:0};m[t]=Z,a.setOffset(m),a.hide()}}setCell(e,t){const{el:i,datepicker:l,suggest:a}=this;i.show(),this.cell=e;const o=e&&e.text||"";if(this.setText(o),this.validator=t,t){const{type:r}=t;r==="date"&&(l.show(),/^\s*$/.test(o)||l.setValue(o)),r==="list"&&(a.setItems(t.values()),a.search(""))}}setText(e){this.inputText=e,OS.call(this,e,e.length),u0.call(this)}}class yc extends Vp{constructor(e,t=""){super("div",`${gt}-button ${t}`),this.child(_i(`button.${e}`))}}function d0(){return window.devicePixelRatio||1}function AX(){return d0()-.5}function Rn(n){return parseInt(n*d0(),10)}function $c(n){const e=Rn(n);return e>0?e-.5:.5}class cye{constructor(e,t,i,l,a=0){this.x=e,this.y=t,this.width=i,this.height=l,this.padding=a,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:e,bottom:t,left:i,right:l}){e&&(this.borderTop=e),l&&(this.borderRight=l),t&&(this.borderBottom=t),i&&(this.borderLeft=i)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(e){const{width:t,padding:i}=this;let{x:l}=this;return e==="left"?l+=i:e==="center"?l+=t/2:e==="right"&&(l+=t-i),l}texty(e,t){const{height:i,padding:l}=this;let{y:a}=this;return e==="top"?a+=l:e==="middle"?a+=i/2-t/2:e==="bottom"&&(a+=i-l-t),a}topxys(){const{x:e,y:t,width:i}=this;return[[e,t],[e+i,t]]}rightxys(){const{x:e,y:t,width:i,height:l}=this;return[[e+i,t],[e+i,t+l]]}bottomxys(){const{x:e,y:t,width:i,height:l}=this;return[[e,t+l],[e+i,t+l]]}leftxys(){const{x:e,y:t,height:i}=this;return[[e,t],[e,t+i]]}}function tL(n,e,t,i,l,a,o){const r={x:0,y:0};n==="underline"?l==="bottom"?r.y=0:l==="top"?r.y=-(a+2):r.y=-a/2:n==="strike"&&(l==="bottom"?r.y=a/2:l==="top"&&(r.y=-(a/2+2))),i==="center"?r.x=o/2:i==="right"&&(r.x=o),this.line([e-r.x,t-r.y],[e-r.x+o,t-r.y])}class jS{constructor(e,t,i){this.el=e,this.ctx=e.getContext("2d"),this.resize(t,i),this.ctx.scale(d0(),d0())}resize(e,t){this.el.style.width=`${e}px`,this.el.style.height=`${t}px`,this.el.width=Rn(e),this.el.height=Rn(t)}clear(){const{width:e,height:t}=this.el;return this.ctx.clearRect(0,0,e,t),this}attr(e){return Object.assign(this.ctx,e),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(e,t){return this.ctx.translate(Rn(e),Rn(t)),this}scale(e,t){return this.ctx.scale(e,t),this}clearRect(e,t,i,l){return this.ctx.clearRect(e,t,i,l),this}fillRect(e,t,i,l){return this.ctx.fillRect(Rn(e)-.5,Rn(t)-.5,Rn(i),Rn(l)),this}fillText(e,t,i){return this.ctx.fillText(e,Rn(t),Rn(i)),this}text(e,t,i={},l=!0){const{ctx:a}=this,{align:o,valign:r,font:f,color:v,strike:b,underline:Z}=i,p=t.textx(o);a.save(),a.beginPath(),this.attr({textAlign:o,textBaseline:r,font:`${f.italic?"italic":""} ${f.bold?"bold":""} ${Rn(f.size)}px ${f.name}`,fillStyle:v,strokeStyle:v});const y=`${e}`.split(` -`),X=t.innerWidth(),m=[];y.forEach(d=>{const u=a.measureText(d).width;if(l&&u>Rn(X)){let s={w:0,len:0,start:0};for(let h=0;h=Rn(X)&&(m.push(d.substr(s.start,s.len)),s={w:0,len:0,start:h}),s.len+=1,s.w+=a.measureText(d[h]).width+1;s.len>0&&m.push(d.substr(s.start,s.len))}else m.push(d)});const N=(m.length-1)*(f.size+2);let G=t.texty(r,N);return m.forEach(d=>{const u=a.measureText(d).width;this.fillText(d,p,G),b&&tL.call(this,"strike",p,G,o,r,f.size,u),Z&&tL.call(this,"underline",p,G,o,r,f.size,u),G+=f.size+2}),a.restore(),this}border(e,t){const{ctx:i}=this;return i.lineWidth=AX,i.strokeStyle=t,e==="medium"?i.lineWidth=Rn(2)-.5:e==="thick"?i.lineWidth=Rn(3):e==="dashed"?i.setLineDash([Rn(3),Rn(2)]):e==="dotted"?i.setLineDash([Rn(1),Rn(1)]):e==="double"&&i.setLineDash([Rn(2),0]),this}line(...e){const{ctx:t}=this;if(e.length>1){t.beginPath();const[i,l]=e[0];t.moveTo($c(i),$c(l));for(let a=1;a{const e=[],t=[];let i=[],l=0,a="",o=1,r="";for(let f=0;f="a"&&v<="z")i.push(v.toUpperCase());else if(v>="0"&&v<="9"||v>="A"&&v<="Z"||v===".")i.push(v);else if(v==='"'){for(f+=1;n.charAt(f)!=='"';)i.push(n.charAt(f)),f+=1;t.push(`"${i.join("")}`),i=[]}else if(v==="-"&&/[+\-*/,(]/.test(r))i.push(v);else{if(v!=="("&&i.length>0&&t.push(i.join("")),v===")"){let b=e.pop();if(l===2)try{const[Z,p]=Ws(t.pop()),[y,X]=Ws(t.pop());let m=0;for(let N=y;N<=Z;N+=1)for(let G=X;G<=p;G+=1)t.push(Io(N,G)),m+=1;t.push([b,m])}catch{}else if(l===1||l===3)l===3&&t.push(a),t.push([b,o]),o=1;else for(;b!=="("&&(t.push(b),!(e.length<=0));)b=e.pop();l=0}else if(v==="="||v===">"||v==="<"){const b=n.charAt(f+1);a=v,(b==="="||b==="-")&&(a+=b,f+=1),l=3}else if(v===":")l=2;else if(v===",")l===3&&t.push(a),l=1,o+=1;else if(v==="("&&i.length>0)e.push(i.join(""));else{if(e.length>0&&(v==="+"||v==="-")){let b=e[e.length-1];if(b!=="("&&t.push(e.pop()),b==="*"||b==="/")for(;e.length>0&&(b=e[e.length-1],b!=="(");)t.push(e.pop())}else if(e.length>0){const b=e[e.length-1];(b==="*"||b==="/")&&t.push(e.pop())}e.push(v)}i=[]}r=v}}for(i.length>0&&t.push(i.join(""));e.length>0;)t.push(e.pop());return t},hye=(n,e)=>{const[t]=n;let i=n;if(t==='"')return n.substring(1);let l=1;if(t==="-"&&(i=n.substring(1),l=-1),i[0]>="0"&&i[0]<="9")return l*Number(i);const[a,o]=Ws(i);return l*e(a,o)},fye=(n,e,t,i)=>{const l=[];for(let a=0;a"||r==="<"){let f=l.pop();Number.isNaN(f)||(f=Number(f));let v=l.pop();Number.isNaN(v)||(v=Number(v));let b=!1;r==="="?b=v===f:o===">"?b=v>f:o===">="?b=v>=f:o==="<"?b=v="a"&&r<="z"||r>="A"&&r<="Z")&&i.push(o),l.push(hye(o,t)),i.pop()}}return l[0]},US=(n,e,t,i=[])=>{if(n[0]==="="){const l=dye(n.substring(1));return l.length<=0?n:fye(l,e,(a,o)=>US(t(a,o),e,t,i),i)}return n},bye={render:US},_X=[{key:"SUM",title:Hn("formula.sum"),render:n=>n.reduce((e,t)=>lc("+",e,t),0)},{key:"AVERAGE",title:Hn("formula.average"),render:n=>n.reduce((e,t)=>Number(e)+Number(t),0)/n.length},{key:"MAX",title:Hn("formula.max"),render:n=>Math.max(...n.map(e=>Number(e)))},{key:"MIN",title:Hn("formula.min"),render:n=>Math.min(...n.map(e=>Number(e)))},{key:"IF",title:Hn("formula._if"),render:([n,e,t])=>n?e:t},{key:"AND",title:Hn("formula.and"),render:n=>n.every(e=>e)},{key:"OR",title:Hn("formula.or"),render:n=>n.some(e=>e)},{key:"CONCAT",title:Hn("formula.concat"),render:n=>n.join("")}],mye=_X,ES={};_X.forEach(n=>{ES[n.key]=n});const qc=n=>n,Mb=n=>{if(/^(-?\d*.?\d*)$/.test(n)){const e=Number(n).toFixed(2).toString(),[t,...i]=e.split("\\.");return[t.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...i]}return n},zd=[{key:"normal",title:Hn("format.normal"),type:"string",render:qc},{key:"text",title:Hn("format.text"),type:"string",render:qc},{key:"number",title:Hn("format.number"),type:"number",label:"1,000.12",render:Mb},{key:"percent",title:Hn("format.percent"),type:"number",label:"10.12%",render:n=>`${n}%`},{key:"rmb",title:Hn("format.rmb"),type:"number",label:"¥10.00",render:n=>`¥${Mb(n)}`},{key:"usd",title:Hn("format.usd"),type:"number",label:"$10.00",render:n=>`$${Mb(n)}`},{key:"eur",title:Hn("format.eur"),type:"number",label:"€10.00",render:n=>`€${Mb(n)}`},{key:"date",title:Hn("format.date"),type:"date",label:"26/09/2008",render:qc},{key:"time",title:Hn("format.time"),type:"date",label:"15:59:00",render:qc},{key:"datetime",title:Hn("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:qc},{key:"duration",title:Hn("format.duration"),type:"date",label:"24:01:00",render:qc}],KS={};zd.forEach(n=>{KS[n.key]=n});const pye=5,yye={fillStyle:"#f4f5f8"},Zye={fillStyle:"#fff",lineWidth:AX,strokeStyle:"#e6e6e6"};function vye(){return{textAlign:"center",textBaseline:"middle",font:`500 ${Rn(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:AX(),strokeStyle:"#e6e6e6"}}function HS(n,e,t,i=0){const{left:l,top:a,width:o,height:r}=n.cellRect(e,t);return new cye(l,a+i,o,r,pye)}function h0(n,e,t,i,l=0){const{sortedRowMap:a,rows:o,cols:r}=e;if(o.isHide(t)||r.isHide(i))return;let f=t;a.has(t)&&(f=a.get(t));const v=e.getCell(f,i);if(v===null)return;let b=!1;"editable"in v&&v.editable===!1&&(b=!0);const Z=e.getCellStyleOrDefault(f,i),p=HS(e,t,i,l);p.bgcolor=Z.bgcolor,Z.border!==void 0&&(p.setBorders(Z.border),n.strokeBorders(p)),n.rect(p,()=>{let y="";e.settings.evalPaused?y=v.text||"":y=bye.render(v.text||"",ES,(N,G)=>e.getCellTextOrDefault(G,N)),Z.format&&(y=KS[Z.format].render(y));const X=Object.assign({},Z.font);X.size=uye(X.size),n.text(y,p,{align:Z.align,valign:Z.valign,font:X,color:Z.color,strike:Z.strike,underline:Z.underline},Z.textwrap),e.validations.getError(t,i)&&n.error(p),b&&n.frozen(p)})}function Wye(n){const{data:e,draw:t}=this;if(n){const{autoFilter:i}=e;if(!i.active())return;const l=i.hrange();n.intersects(l)&&l.each((a,o)=>{const r=HS(e,a,o);t.dropdown(r)})}}function Ib(n,e,t,i,l){const{draw:a,data:o}=this;a.save(),a.translate(e,t).translate(i,l);const{exceptRowSet:r}=o,f=Z=>{const p=r.has(Z);if(p){const y=o.rows.getHeight(Z);a.translate(0,-y)}return!p},v=o.exceptRowTotalHeight(n.sri,n.eri);a.save(),a.translate(0,-v),n.each((Z,p)=>{h0(a,o,Z,p)},Z=>f(Z)),a.restore();const b=new Set;a.save(),a.translate(0,-v),o.eachMergesInView(n,({sri:Z,sci:p,eri:y})=>{if(!r.has(Z))h0(a,o,Z,p);else if(!b.has(Z)){b.add(Z);const X=o.rows.sumHeight(Z,y+1);a.translate(0,-X)}}),a.restore(),Wye.call(this,n),a.restore()}function iL(n,e,t,i){const{draw:l}=this;l.save(),l.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(n,e,t,i),l.restore()}function Yb(n,e,t,i,l,a){const{draw:o,data:r}=this,f=e.h,v=e.w,b=a+i,Z=l+t;o.save(),o.attr(yye),(n==="all"||n==="left")&&o.fillRect(0,b,t,f),(n==="all"||n==="top")&&o.fillRect(Z,0,v,i);const{sri:p,sci:y,eri:X,eci:m}=r.selector.range;o.attr(vye()),(n==="all"||n==="left")&&(r.rowEach(e.sri,e.eri,(N,G,d)=>{const u=b+G,s=N;o.line([0,u],[t,u]),p<=s&&s0&&r.rows.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([5,u+5],[t-5,u+5]),o.restore())}),o.line([0,f+b],[t,f+b]),o.line([t,b],[t,f+b])),(n==="all"||n==="top")&&(r.colEach(e.sci,e.eci,(N,G,d)=>{const u=Z+G,s=N;o.line([u,0],[u,i]),y<=s&&s0&&r.cols.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([u+5,5],[u+5,i-5]),o.restore())}),o.line([v+Z,0],[v+Z,i]),o.line([0,i],[v+Z,i])),o.restore()}function Gye(n,e){const{draw:t}=this;t.save(),t.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,n,e),t.restore()}function wb({sri:n,sci:e,eri:t,eci:i,w:l,h:a},o,r,f,v){const{draw:b,data:Z}=this,{settings:p}=Z;if(b.save(),b.attr(Zye).translate(o+f,r+v),!p.showGrid){b.restore();return}Z.rowEach(n,t,(y,X,m)=>{y!==n&&b.line([0,X],[l,X]),y===t&&b.line([0,X+m],[l,X+m])}),Z.colEach(e,i,(y,X,m)=>{y!==e&&b.line([X,0],[X,a]),y===i&&b.line([X+m,0],[X+m,a])}),b.restore()}function Xye(n,e,t,i){const{draw:l,data:a}=this,o=a.viewWidth()-n,r=a.viewHeight()-e;l.save().translate(n,e).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),l.line([0,i],[o,i]),l.line([t,0],[t,r]),l.restore()}class Nye{constructor(e,t){this.el=e,this.draw=new jS(e,t.viewWidth(),t.viewHeight()),this.data=t}resetData(e){this.data=e,this.render()}render(){const{data:e}=this,{rows:t,cols:i}=e,l=i.indexWidth,a=t.height;this.draw.resize(e.viewWidth(),e.viewHeight()),this.clear();const o=e.viewRange(),r=e.freezeTotalWidth(),f=e.freezeTotalHeight(),{x:v,y:b}=e.scroll;wb.call(this,o,l,a,r,f),Ib.call(this,o,l,a,-v,-b),Yb.call(this,"all",o,l,a,r,f),Gye.call(this,l,a);const[Z,p]=e.freeze;if(Z>0||p>0){if(Z>0){const X=o.clone();X.sri=0,X.eri=Z-1,X.h=f,wb.call(this,X,l,a,r,0),Ib.call(this,X,l,a,-v,0),Yb.call(this,"top",X,l,a,r,0)}if(p>0){const X=o.clone();X.sci=0,X.eci=p-1,X.w=r,wb.call(this,X,l,a,0,f),Yb.call(this,"left",X,l,a,0,f),Ib.call(this,X,l,a,0,-b)}const y=e.freezeViewRange();wb.call(this,y,l,a,0,0),Yb.call(this,"all",y,l,a,0,0),Ib.call(this,y,l,a,0,0),Xye.call(this,l,a,r,f)}}clear(){this.draw.clear()}}const hm=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],nW=["landscape","portrait"];function f0(n){return parseInt(96*n,10)}function lL(n){n==="cancel"?this.el.hide():this.toPrint()}function Mye(n){const{paper:e}=this,{value:t}=n.target,i=hm[t];e.w=f0(i[1]),e.h=f0(i[2]),this.preview()}function Iye(n){const{paper:e}=this,{value:t}=n.target,i=nW[t];e.orientation=i,this.preview()}let Yye=class{constructor(e){this.paper={w:f0(hm[0][1]),h:f0(hm[0][2]),padding:50,orientation:nW[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=e,this.el=ut("div",`${gt}-print`).children(ut("div",`${gt}-print-bar`).children(ut("div","-title").child("Print settings"),ut("div","-right").children(ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",lL.bind(this,"cancel")),new yc("next","primary").on("click",lL.bind(this,"next"))))),ut("div",`${gt}-print-content`).children(this.contentEl=ut("div","-content"),ut("div","-sider").child(ut("form","").children(ut("fieldset","").children(ut("label","").child(`${_i("print.size")}`),ut("select","").children(...hm.map((t,i)=>ut("option","").attr("value",i).child(`${t[0]} ( ${t[1]}''x${t[2]}'' )`))).on("change",Mye.bind(this))),ut("fieldset","").children(ut("label","").child(`${_i("print.orientation")}`),ut("select","").children(...nW.map((t,i)=>ut("option","").attr("value",i).child(`${_i("print.orientations")[i]}`))).on("change",Iye.bind(this))))))).hide()}resetData(e){this.data=e}preview(){const{data:e,paper:t}=this,{width:i,height:l,padding:a}=t,o=i-a*2,r=l-a*2,f=e.contentRange(),v=parseInt(f.h/r,10)+1,b=o/f.w;let Z=a;const p=a;b>1&&(Z+=(o-f.w)/2);let y=0,X=0;this.contentEl.html(""),this.canvases=[];const m={sri:0,sci:0,eri:0,eci:0};for(let N=0;N{h0(h,e,W,M,c)}),h.restore(),m.sri=m.eri,m.sci=m.eci,X+=d,this.contentEl.child(ut("div",`${gt}-canvas-card-wraper`).child(u.child(s)))}this.el.show()}toPrint(){this.el.hide();const{paper:e}=this,t=ut("iframe","").hide(),{el:i}=t;window.document.body.appendChild(i);const{contentWindow:l}=i,a=l.document,o=document.createElement("style");o.innerHTML=` +`}numberingCounter(h,c){return`${this.className}-num-${h}-${c}`}levelTextToContent(h,c,W,M){var I;return`"${h.replace(/%\d*/g,w=>{let C=parseInt(w.substring(1),10)-1;return`"counter(${this.numberingCounter(W,C)}, ${M})"`})}${(I={tab:"\\9",space:"\\a0"}[c])!==null&&I!==void 0?I:""}"`}numFormatToCssValue(h){return{none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman"}[h]||h}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const h=(0,Z.computePixelToPoint)();for(let c of this.currentTabs)(0,Z.updateTabStop)(c.span,c.stops,this.defaultTabSize,h)},500))}}},630:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.updateTabStop=r.computePixelToPoint=void 0;const f={pos:0,leader:"none",style:"left"};function v(b){return parseFloat(b)}r.computePixelToPoint=function(b=document.body){const Z=document.createElement("div");Z.style.width="100pt",b.appendChild(Z);const p=100/Z.offsetWidth;return b.removeChild(Z),p},r.updateTabStop=function(b,Z,p,y=.75){const X=b.closest("p"),m=b.getBoundingClientRect(),N=X.getBoundingClientRect(),G=getComputedStyle(X),d=(Z==null?void 0:Z.length)>0?Z.map(x=>({pos:v(x.position),leader:x.leader,style:x.style})).sort((x,R)=>x.pos-R.pos):[f],u=d[d.length-1],s=N.width*y,h=v(p);let c=u.pos+h;if(cx.style!="clear"&&x.pos>I);if(w==null)return;let C=1;if(w.style=="right"||w.style=="center"){const x=Array.from(X.querySelectorAll(`.${b.className}`)),R=x.indexOf(b)+1,g=document.createRange();g.setStart(b,1),R{Object.defineProperty(r,"__esModule",{value:!0}),r.WmlEndnote=r.WmlFootnote=r.WmlBaseNote=void 0;const v=f(120);class b{constructor(){this.children=[],this.cssStyle={}}}r.WmlBaseNote=b,r.WmlFootnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Footnote}},r.WmlEndnote=class extends b{constructor(){super(...arguments),this.type=v.DomType.Endnote}}},735:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.EndnotesPart=r.FootnotesPart=r.BaseNotePart=void 0;const v=f(530),b=f(881);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}}r.BaseNotePart=Z,r.FootnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"footnote",b.WmlFootnote)}},r.EndnotesPart=class extends Z{constructor(p,y,X){super(p,y,X)}parseXml(p){this.notes=this._documentParser.parseNotes(p,"endnote",b.WmlEndnote)}}},527:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.NumberingPart=void 0;const v=f(530),b=f(682);class Z extends v.Part{constructor(y,X,m){super(y,X),this._documentParser=m}parseXml(y){Object.assign(this,(0,b.parseNumberingPart)(y,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(y)}}r.NumberingPart=Z},682:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseNumberingBulletPicture=r.parseNumberingLevelOverrride=r.parseNumberingLevel=r.parseAbstractNumbering=r.parseNumbering=r.parseNumberingPart=void 0;const v=f(109),b=f(488);function Z(N,G){let d={id:G.attr(N,"numId"),overrides:[]};for(let u of G.elements(N))switch(u.localName){case"abstractNumId":d.abstractId=G.attr(u,"val");break;case"lvlOverride":d.overrides.push(X(u,G))}return d}function p(N,G){let d={id:G.attr(N,"abstractNumId"),levels:[]};for(let u of G.elements(N))switch(u.localName){case"name":d.name=G.attr(u,"val");break;case"multiLevelType":d.multiLevelType=G.attr(u,"val");break;case"numStyleLink":d.numberingStyleLink=G.attr(u,"val");break;case"styleLink":d.styleLink=G.attr(u,"val");break;case"lvl":d.levels.push(y(u,G))}return d}function y(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"start":d.start=G.attr(u,"val");break;case"lvlRestart":d.restart=G.intAttr(u,"val");break;case"numFmt":d.format=G.attr(u,"val");break;case"lvlText":d.text=G.attr(u,"val");break;case"lvlJc":d.justification=G.attr(u,"val");break;case"lvlPicBulletId":d.bulletPictureId=G.attr(u,"val");break;case"pStyle":d.paragraphStyle=G.attr(u,"val");break;case"pPr":d.paragraphProps=(0,v.parseParagraphProperties)(u,G);break;case"rPr":d.runProps=(0,b.parseRunProperties)(u,G)}return d}function X(N,G){let d={level:G.intAttr(N,"ilvl")};for(let u of G.elements(N))switch(u.localName){case"startOverride":d.start=G.intAttr(u,"val");break;case"lvl":d.numberingLevel=y(u,G)}return d}function m(N,G){var d=G.element(N,"pict"),u=d&&G.element(d,"shape"),s=u&&G.element(u,"imagedata");return s?{id:G.attr(N,"numPicBulletId"),referenceId:G.attr(s,"id"),style:G.attr(u,"style")}:null}r.parseNumberingPart=function(N,G){let d={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let u of G.elements(N))switch(u.localName){case"num":d.numberings.push(Z(u,G));break;case"abstractNum":d.abstractNumberings.push(p(u,G));break;case"numPicBullet":d.bulletPictures.push(m(u,G))}return d},r.parseNumbering=Z,r.parseAbstractNumbering=p,r.parseNumberingLevel=y,r.parseNumberingLevelOverrride=X,r.parseNumberingBulletPicture=m},472:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.XmlParser=r.serializeXmlString=r.parseXmlString=void 0;const v=f(149);r.parseXmlString=function(p,y=!1){y&&(p=p.replace(/<[?].*[?]>/,""));const X=new DOMParser().parseFromString(p,"application/xml"),m=(N=X.getElementsByTagName("parsererror")[0])===null||N===void 0?void 0:N.textContent;var N;if(m)throw new Error(m);return X},r.serializeXmlString=function(p){return new XMLSerializer().serializeToString(p)};class b{elements(y,X=null){const m=[];for(let N=0,G=y.childNodes.length;N{Object.defineProperty(r,"__esModule",{value:!0}),r.SettingsPart=void 0;const v=f(530),b=f(846);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.settings=(0,b.parseSettings)(y,this._package.xmlParser)}}r.SettingsPart=Z},846:(o,r)=>{function f(v,b){var Z={defaultNoteIds:[]};for(let p of b.elements(v))switch(p.localName){case"numFmt":Z.nummeringFormat=b.attr(p,"val");break;case"footnote":case"endnote":Z.defaultNoteIds.push(b.attr(p,"id"))}return Z}Object.defineProperty(r,"__esModule",{value:!0}),r.parseNoteProperties=r.parseSettings=void 0,r.parseSettings=function(v,b){var Z={};for(let p of b.elements(v))switch(p.localName){case"defaultTabStop":Z.defaultTabStop=b.lengthAttr(p,"val");break;case"footnotePr":Z.footnoteProps=f(p,b);break;case"endnotePr":Z.endnoteProps=f(p,b);break;case"autoHyphenation":Z.autoHyphenation=b.boolAttr(p,"val")}return Z},r.parseNoteProperties=f},240:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.StylesPart=void 0;const v=f(530);class b extends v.Part{constructor(p,y,X){super(p,y),this._documentParser=X}parseXml(p){this.styles=this._documentParser.parseStylesFile(p)}}r.StylesPart=b},893:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.ThemePart=void 0;const v=f(530),b=f(55);class Z extends v.Part{constructor(y,X){super(y,X)}parseXml(y){this.theme=(0,b.parseTheme)(y,this._package.xmlParser)}}r.ThemePart=Z},55:(o,r)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseFontInfo=r.parseFontScheme=r.parseColorScheme=r.parseTheme=r.DmlTheme=void 0;class f{}function v(p,y){var X={name:y.attr(p,"name"),colors:{}};for(let G of y.elements(p)){var m=y.element(G,"srgbClr"),N=y.element(G,"sysClr");m?X.colors[G.localName]=y.attr(m,"val"):N&&(X.colors[G.localName]=y.attr(N,"lastClr"))}return X}function b(p,y){var X={name:y.attr(p,"name")};for(let m of y.elements(p))switch(m.localName){case"majorFont":X.majorFont=Z(m,y);break;case"minorFont":X.minorFont=Z(m,y)}return X}function Z(p,y){return{latinTypeface:y.elementAttr(p,"latin","typeface"),eaTypeface:y.elementAttr(p,"ea","typeface"),csTypeface:y.elementAttr(p,"cs","typeface")}}r.DmlTheme=f,r.parseTheme=function(p,y){var X=new f,m=y.element(p,"themeElements");for(let N of y.elements(m))switch(N.localName){case"clrScheme":X.colorScheme=v(N,y);break;case"fontScheme":X.fontScheme=b(N,y)}return X},r.parseColorScheme=v,r.parseFontScheme=b,r.parseFontInfo=Z},593:(o,r)=>{function f(v){return v&&typeof v=="object"&&!Array.isArray(v)}Object.defineProperty(r,"__esModule",{value:!0}),r.asArray=r.formatCssRules=r.parseCssRules=r.mergeDeep=r.isString=r.isObject=r.blobToBase64=r.keyBy=r.resolvePath=r.splitPath=r.escapeClassName=void 0,r.escapeClassName=function(v){return v==null?void 0:v.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},r.splitPath=function(v){let b=v.lastIndexOf("/")+1;return[b==0?"":v.substring(0,b),b==0?v:v.substring(b)]},r.resolvePath=function(v,b){try{const Z="http://docx/";return new URL(v,Z+b).toString().substring(Z.length)}catch{return`${b}${v}`}},r.keyBy=function(v,b){return v.reduce((Z,p)=>(Z[b(p)]=p,Z),{})},r.blobToBase64=function(v){return new Promise((b,Z)=>{const p=new FileReader;p.onloadend=()=>b(p.result),p.readAsDataURL(v)})},r.isObject=f,r.isString=function(v){return v&&typeof v=="string"||v instanceof String},r.mergeDeep=function v(b,...Z){var p;if(!Z.length)return b;const y=Z.shift();if(f(b)&&f(y))for(const X in y)f(y[X])?v((p=b[X])!==null&&p!==void 0?p:b[X]={},y[X]):b[X]=y[X];return v(b,...Z)},r.parseCssRules=function(v){const b={};for(const Z of v.split(";")){const[p,y]=Z.split(":");b[p]=y}return b},r.formatCssRules=function(v){return Object.entries(v).map((b,Z)=>`${b}: ${Z}`).join(";")},r.asArray=function(v){return Array.isArray(v)?v:[v]}},320:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.parseVmlElement=r.VmlElement=void 0;const v=f(149),b=f(120),Z=f(472);class p{constructor(){this.type=b.DomType.VmlElement,this.attrs={},this.chidren=[]}}function y(m){var N;return{stroke:Z.default.attr(m,"color"),"stroke-width":(N=Z.default.lengthAttr(m,"weight",v.LengthUsage.Emu))!==null&&N!==void 0?N:"1px"}}function X(m){return m.split(",")}r.VmlElement=p,r.parseVmlElement=function m(N){var G=new p;switch(N.localName){case"rect":G.tagName="rect",Object.assign(G.attrs,{width:"100%",height:"100%"});break;case"oval":G.tagName="ellipse",Object.assign(G.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":G.tagName="line";break;case"shape":G.tagName="g";break;default:return null}for(const d of Z.default.attrs(N))switch(d.localName){case"style":G.cssStyleText=d.value;break;case"fillcolor":G.attrs.fill=d.value;break;case"from":const[u,s]=X(d.value);Object.assign(G.attrs,{x1:u,y1:s});break;case"to":const[h,c]=X(d.value);Object.assign(G.attrs,{x2:h,y2:c})}for(const d of Z.default.elements(N))switch(d.localName){case"stroke":Object.assign(G.attrs,y(d));break;case"fill":Object.assign(G.attrs,{});break;case"imagedata":G.tagName="image",Object.assign(G.attrs,{width:"100%",height:"100%"}),G.imageHref={id:Z.default.attr(d,"id"),title:Z.default.attr(d,"title")};break;default:const u=m(d);u&&G.chidren.push(u)}return G}},213:(o,r,f)=>{Object.defineProperty(r,"__esModule",{value:!0}),r.deobfuscate=r.WordDocument=void 0;const v=f(461),b=f(380),Z=f(522),p=f(448),y=f(593),X=f(527),m=f(240),N=f(985),G=f(665),d=f(162),u=f(893),s=f(735),h=f(287),c=f(177),W=[{type:v.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:v.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:v.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:v.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class M{constructor(){this.parts=[],this.partsMap={}}static load(C,x,R){var g=new M;return g._options=R,g._parser=x,Z.OpenXmlPackage.load(C,R).then(S=>(g._package=S,g._package.loadRelationships())).then(S=>{g.rels=S;const L=W.map(V=>{var Y;const T=(Y=S.find(J=>J.type===V.type))!==null&&Y!==void 0?Y:V;return g.loadRelationshipPart(T.target,T.type)});return Promise.all(L)}).then(()=>g)}save(C="blob"){return this._package.save(C)}loadRelationshipPart(C,x){if(this.partsMap[C])return Promise.resolve(this.partsMap[C]);if(!this._package.get(C))return Promise.resolve(null);let R=null;switch(x){case v.RelationshipTypes.OfficeDocument:this.documentPart=R=new p.DocumentPart(this._package,C,this._parser);break;case v.RelationshipTypes.FontTable:this.fontTablePart=R=new b.FontTablePart(this._package,C);break;case v.RelationshipTypes.Numbering:this.numberingPart=R=new X.NumberingPart(this._package,C,this._parser);break;case v.RelationshipTypes.Styles:this.stylesPart=R=new m.StylesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Theme:this.themePart=R=new u.ThemePart(this._package,C);break;case v.RelationshipTypes.Footnotes:this.footnotesPart=R=new s.FootnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Endnotes:this.endnotesPart=R=new s.EndnotesPart(this._package,C,this._parser);break;case v.RelationshipTypes.Footer:R=new N.FooterPart(this._package,C,this._parser);break;case v.RelationshipTypes.Header:R=new N.HeaderPart(this._package,C,this._parser);break;case v.RelationshipTypes.CoreProperties:this.corePropsPart=R=new d.CorePropsPart(this._package,C);break;case v.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=R=new G.ExtendedPropsPart(this._package,C);break;case v.RelationshipTypes.CustomProperties:R=new c.CustomPropsPart(this._package,C);break;case v.RelationshipTypes.Settings:this.settingsPart=R=new h.SettingsPart(this._package,C)}return R==null?Promise.resolve(null):(this.partsMap[C]=R,this.parts.push(R),R.load().then(()=>{if(R.rels==null||R.rels.length==0)return R;const[g]=(0,y.splitPath)(R.path),S=R.rels.map(L=>this.loadRelationshipPart((0,y.resolvePath)(L.target,g),L.type));return Promise.all(S).then(()=>R)}))}loadDocumentImage(C,x){return this.loadResource(x??this.documentPart,C,"blob").then(R=>this.blobToURL(R))}loadNumberingImage(C){return this.loadResource(this.numberingPart,C,"blob").then(x=>this.blobToURL(x))}loadFont(C,x){return this.loadResource(this.fontTablePart,C,"uint8array").then(R=>R&&this.blobToURL(new Blob([I(R,x)])))}blobToURL(C){return C?this._options.useBase64URL?(0,y.blobToBase64)(C):URL.createObjectURL(C):null}findPartByRelId(C,x=null){var R,g=((R=x.rels)!==null&&R!==void 0?R:this.rels).find(L=>L.id==C);const S=x?(0,y.splitPath)(x.path)[0]:"";return g?this.partsMap[(0,y.resolvePath)(g.target,S)]:null}getPathById(C,x){const R=C.rels.find(S=>S.id==x),[g]=(0,y.splitPath)(C.path);return R?(0,y.resolvePath)(R.target,g):null}loadResource(C,x,R){const g=this.getPathById(C,x);return g?this._package.load(g,R):Promise.resolve(null)}}function I(w,C){const x=C.replace(/{|}|-/g,""),R=new Array(16);for(let g=0;g<16;g++)R[16-g-1]=parseInt(x.substr(2*g,2),16);for(let g=0;g<32;g++)w[g]=w[g]^R[g%16];return w}r.WordDocument=M,r.deobfuscate=I},583:o=>{o.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:o=>{o.exports=t}},a={};function l(o){var r=a[o];if(r!==void 0)return r.exports;var f=a[o]={id:o,exports:{}};return i[o](f,f.exports,l),f.exports}return l.m=i,l.n=o=>{var r=o&&o.__esModule?()=>o.default:()=>o;return l.d(r,{a:r}),r},l.d=(o,r)=>{for(var f in r)l.o(r,f)&&!l.o(o,f)&&Object.defineProperty(o,f,{enumerable:!0,get:r[f]})},l.o=(o,r)=>Object.prototype.hasOwnProperty.call(o,r),l.r=o=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},l.b=document.baseURI||self.location.href,l(667)})())})(lpe);function ope(n,e={}){return typeof n=="string"?spe(n,e):Promise.resolve(n)}function spe(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t)}function cpe(n,e){if(!n)return e.innerHTML="",Promise.resolve();let t;return n instanceof Blob?t=n:n instanceof Response?t=n.blob():n instanceof ArrayBuffer&&(t=new Blob([n])),Av.renderAsync(t,e)}const Yd={getData:ope,render:cpe},$u=(n,e)=>{const t=n.__vccOpts||n;for(const[i,a]of e)t[i]=a;return t},upe=He({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null);function i(){let a=t.value;Yd.getData(n.src,n.requestOptions).then(l=>{Yd.render(l,a).then(()=>{e("rendered")}).catch(o=>{Yd.render("",a),e("error",o)})}).catch(l=>{Yd.render("",a),e("error",l)})}return Kt(()=>{n.src&&i()}),rt(()=>n.src,()=>{n.src?i():Yd.render("",t.value).then(()=>{e("rendered")})}),{rootRef:t}}}),dpe={class:"vue-office-docx"},hpe={class:"vue-office-docx-main",ref:"rootRef"};function fpe(n,e,t,i,a,l){return kl(),rc("div",dpe,[Du("div",hpe,null,512)])}const hm=$u(upe,[["render",fpe]]);hm.install=function(n){n.component(hm.name,hm)};function bpe(n){const e=Ne("url"),t=Ne(n),i=Ne(n),a=Ne([]);function l(o){let r=new FileReader;return r.onload=f=>{let v=f.target.result;i.value=v},r.readAsArrayBuffer(o),!1}return{type:e,inputSrc:t,src:i,fileList:a,beforeUpload:l}}const mpe=n=>(CU("data-v-48e1d098"),n=n(),SU(),n),ppe={class:"preview-wrapper"},ype={class:"operate-area"},Zpe=mpe(()=>Du("div",{class:"preview-wrapper-main"},null,-1)),vpe={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(n){const e=n,{type:t,inputSrc:i,src:a,fileList:l,beforeUpload:o}=bpe(e.defaultSrc);return(r,f)=>{const v=ls("a-radio-button"),b=ls("a-radio-group"),Z=ls("a-input"),p=ls("a-button"),y=ls("upload-outlined"),X=ls("a-upload");return kl(),rc("div",ppe,[Du("div",ype,[D(b,{value:mi(t),"onUpdate:value":f[0]||(f[0]=m=>$i(t)?t.value=m:null),"button-style":"solid"},{default:pa(()=>[D(v,{value:"url"},{default:pa(()=>[Fl("远程文件地址")]),_:1}),D(v,{value:"upload"},{default:pa(()=>[Fl("上传本地文件")]),_:1})]),_:1},8,["value"]),mi(t)==="url"?(kl(),Vo(Z,{key:0,value:mi(i),"onUpdate:value":f[1]||(f[1]=m=>$i(i)?i.value=m:null),placeholder:e.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):Rb("",!0),mi(t)==="url"?(kl(),Vo(p,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:f[2]||(f[2]=m=>a.value=mi(i))},{default:pa(()=>[Fl(" 预览 ")]),_:1})):Rb("",!0),mi(t)!=="url"?(kl(),Vo(X,{key:2,accept:e.accept,action:"",beforeUpload:mi(o),"file-list":[]},{default:pa(()=>[D(p,{style:{"margin-left":"10px"}},{default:pa(()=>[D(y),Fl(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):Rb("",!0)]),g0(r.$slots,"default",{src:mi(a)},void 0,!0),Zpe])}}},PX=$u(vpe,[["__scopeId","data-v-48e1d098"]]),Wpe={__name:"DocxDemo",setup(n){return(e,t)=>(kl(),Vo(PX,{accept:".docx",placeholder:"请输入docx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"},{default:pa(i=>[D(mi(hm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},Gpe=$u(Wpe,[["__scopeId","data-v-03e834e4"]]);let Vp=class _v{constructor(e,t=""){typeof e=="string"?(this.el=document.createElement(e),this.el.className=t):this.el=e,this.data={}}data(e,t){return t!==void 0?(this.data[e]=t,this):this.data[e]}on(e,t){const[i,...a]=e.split(".");let l=i;return l==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(l="DOMMouseScroll"),this.el.addEventListener(l,o=>{t(o);for(let r=0;r{this.css(o,`${e[o]}px`)}),this;const{offsetTop:t,offsetLeft:i,offsetHeight:a,offsetWidth:l}=this.el;return{top:t,left:i,height:a,width:l}}scroll(e){const{el:t}=this;return e!==void 0&&(e.left!==void 0&&(t.scrollLeft=e.left),e.top!==void 0&&(t.scrollTop=e.top)),{left:t.scrollLeft,top:t.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new _v(this.el.parentNode)}children(...e){return arguments.length===0?this.el.childNodes:(e.forEach(t=>this.child(t)),this)}removeChild(e){this.el.removeChild(e)}child(e){let t=e;return typeof e=="string"?t=document.createTextNode(e):e instanceof _v&&(t=e.el),this.el.appendChild(t),this}contains(e){return this.el.contains(e)}className(e){return e!==void 0?(this.el.className=e,this):this.el.className}addClass(e){return this.el.classList.add(e),this}hasClass(e){return this.el.classList.contains(e)}removeClass(e){return this.el.classList.remove(e),this}toggle(e="active"){return this.toggleClass(e)}toggleClass(e){return this.el.classList.toggle(e)}active(e=!0,t="active"){return e?this.addClass(t):this.removeClass(t),this}checked(e=!0){return this.active(e,"checked"),this}disabled(e=!0){return e?this.addClass("disabled"):this.removeClass("disabled"),this}attr(e,t){if(t!==void 0)this.el.setAttribute(e,t);else{if(typeof e=="string")return this.el.getAttribute(e);Object.keys(e).forEach(i=>{this.el.setAttribute(i,e[i])})}return this}removeAttr(e){return this.el.removeAttribute(e),this}html(e){return e!==void 0?(this.el.innerHTML=e,this):this.el.innerHTML}val(e){return e!==void 0?(this.el.value=e,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...e){return e.forEach(t=>this.el.style.removeProperty(t)),this}css(e,t){return t===void 0&&typeof e!="string"?(Object.keys(e).forEach(i=>{this.el.style[i]=e[i]}),this):t!==void 0?(this.el.style[e]=t,this):this.el.style[e]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}};const ut=(n,e="")=>new Vp(n,e),os=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function TS(n){let e="",t=n;for(;t>=os.length;)t/=os.length,t-=1,e+=os[parseInt(t,10)%os.length];const i=n%os.length;return e+=os[i],e}function Xpe(n){let e=0;for(let t=0;t="0"&&n.charAt(i)<="9"?t+=n.charAt(i):e+=n.charAt(i);return[Xpe(e),parseInt(t,10)-1]}function Io(n,e){return`${TS(n)}${e+1}`}function wd(n,e,t,i=()=>!0){if(e===0&&t===0)return n;const[a,l]=Ws(n);return i(a,l)?Io(a+e,l+t):n}class Ki{constructor(e,t,i,a,l=0,o=0){this.sri=e,this.sci=t,this.eri=i,this.eci=a,this.w=l,this.h=o}set(e,t,i,a){this.sri=e,this.sci=t,this.eri=i,this.eci=a}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...e){let[t,i]=[0,0];e.length===1?[i,t]=Ws(e[0]):e.length===2&&([t,i]=e);const{sri:a,sci:l,eri:o,eci:r}=this;return a<=t&&t<=o&&l<=i&&i<=r}each(e,t=()=>!0){const{sri:i,sci:a,eri:l,eci:o}=this;for(let r=i;r<=l;r+=1)if(t(r))for(let f=a;f<=o;f+=1)e(r,f)}contains(e){return this.sri<=e.sri&&this.sci<=e.sci&&this.eri>=e.eri&&this.eci>=e.eci}within(e){return this.sri>=e.sri&&this.sci>=e.sci&&this.eri<=e.eri&&this.eci<=e.eci}disjoint(e){return this.sri>e.eri||this.sci>e.eci||e.sri>this.eri||e.sci>this.eci}intersects(e){return this.sri<=e.eri&&this.sci<=e.eci&&e.sri<=this.eri&&e.sci<=this.eci}union(e){const{sri:t,sci:i,eri:a,eci:l}=this;return new Ki(e.sria?e.eri:a,e.eci>l?e.eci:l)}difference(e){const t=[],i=(p,y,X,m)=>{t.push(new Ki(p,y,X,m))},{sri:a,sci:l,eri:o,eci:r}=this,f=e.sri-a,v=e.sci-l,b=o-e.eri,Z=r-e.eci;return f>0?(i(a,l,e.sri-1,r),b>0?(i(e.eri+1,l,o,r),v>0&&i(e.sri,l,e.eri,e.sci-1),Z>0&&i(e.sri,e.eci+1,e.eri,r)):(v>0&&i(e.sri,l,o,e.sci-1),Z>0&&i(e.sri,e.eci+1,o,r))):b>0&&(i(e.eri+1,l,o,r),v>0&&i(a,l,e.eri,e.sci-1),Z>0&&i(a,e.eci+1,e.eri,r)),v>0?(i(a,l,o,e.sci-1),Z>0?(i(a,e.eri+1,o,r),f>0&&i(a,e.sci,e.sri-1,e.eci),b>0&&i(e.sri+1,e.sci,o,e.eci)):(f>0&&i(a,e.sci,e.sri-1,r),b>0&&i(e.sri+1,e.sci,o,r))):Z>0&&(i(o,e.eci+1,o,r),f>0&&i(a,l,e.sri-1,e.eci),b>0&&i(e.eri+1,l,o,e.eci)),t}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:e,sci:t,eri:i,eci:a}=this;let l=Io(t,e);return this.multiple()&&(l=`${l}:${Io(a,i)}`),l}clone(){const{sri:e,sci:t,eri:i,eci:a,w:l,h:o}=this;return new Ki(e,t,i,a,l,o)}equals(e){return this.eri===e.eri&&this.eci===e.eci&&this.sri===e.sri&&this.sci===e.sci}static valueOf(e){const t=e.split(":"),[i,a]=Ws(t[0]);let[l,o]=[a,i];return t.length>1&&([o,l]=Ws(t[1])),new Ki(a,i,l,o)}}let Npe=class{constructor(){this.range=new Ki(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(e,t){this.ri=e,this.ci=t}size(){return this.range.size()}};class Mpe{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class Ipe{constructor(){this.undoItems=[],this.redoItems=[]}add(e){this.undoItems.push(JSON.stringify(e)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(e,t){const{undoItems:i,redoItems:a}=this;this.canUndo()&&(a.push(JSON.stringify(e)),t(JSON.parse(i.pop())))}redo(e,t){const{undoItems:i,redoItems:a}=this;this.canRedo()&&(i.push(JSON.stringify(e)),t(JSON.parse(a.pop())))}}class Ype{constructor(){this.range=null,this.state="clear"}copy(e){return this.range=e,this.state="copy",this}cut(e){return this.range=e,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class UV{constructor(e,t,i){this.ci=e,this.operator=t,this.value=i}set(e,t){this.operator=e,this.value=t}includes(e){const{operator:t,value:i}=this;return t==="all"?!0:t==="in"?i.includes(e):!1}vlength(){const{operator:e,value:t}=this;return e==="in"?t.length:0}getData(){const{ci:e,operator:t,value:i}=this;return{ci:e,operator:t,value:i}}}class EV{constructor(e,t){this.ci=e,this.order=t}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class wpe{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:e,filters:t,sort:i}){e!=null&&(this.ref=e,this.filters=t.map(a=>new UV(a.ci,a.operator,a.value)),i&&(this.sort=new EV(i.ci,i.order)))}getData(){if(this.active()){const{ref:e,filters:t,sort:i}=this;return{ref:e,filters:t.map(a=>a.getData()),sort:i}}return{}}addFilter(e,t,i){const a=this.getFilter(e);a==null?this.filters.push(new UV(e,t,i)):a.set(t,i)}setSort(e,t){this.sort=t?new EV(e,t):null}includes(e,t){return this.active()?this.hrange().includes(e,t):!1}getSort(e){const{sort:t}=this;return t&&t.ci===e?t:null}getFilter(e){const{filters:t}=this;for(let i=0;i!t.within(e))}getFirstIncludes(e,t){for(let i=0;it.intersects(e)))}intersects(e){for(let t=0;t{i.intersects(t)&&(t=i.union(t))}),t}add(e){this.deleteWithin(e),this._.push(e)}shift(e,t,i,a){this._.forEach(l=>{const{sri:o,sci:r,eri:f,eci:v}=l,b=l;e==="row"?o>=t?(b.sri+=i,b.eri+=i):o=t?(b.sci+=i,b.eci+=i):r{const l=a;l.within(e)&&(l.eri+=t,l.sri+=t,l.sci+=i,l.eci+=i)})}setData(e){return this._=e.map(t=>Ki.valueOf(t)),this}getData(){return this._.map(e=>e.toString())}}function gpe(n){return JSON.parse(JSON.stringify(n))}const xS=(n={},...e)=>(e.forEach(t=>{Object.keys(t).forEach(i=>{const a=t[i];typeof a=="string"||typeof a=="number"||typeof a=="boolean"?n[i]=a:typeof a!="function"&&!Array.isArray(a)&&a instanceof Object?(n[i]=n[i]||{},xS(n[i],a)):n[i]=a})}),n);function $v(n,e){const t=Object.keys(n);if(t.length!==Object.keys(e).length)return!1;for(let i=0;it)=>{let t=0,i=0;return Object.keys(n).forEach(a=>{t+=e(n[a],a),i+=1}),[t,i]};function Lpe(n,e){const t=n[`${e}`];return delete n[`${e}`],t}function Rpe(n,e,t,i,a,l){let o=t,r=i,f=n;for(;fa);f+=1)r=l(f),o+=r;return[f,o-r,r]}function Tpe(n,e,t){let i=0;for(let a=n;a5?r.toFixed(2):r;return r.toFixed(Math.max(i,a))}const ya={cloneDeep:gpe,merge:(...n)=>xS({},...n),equals:$v,arrayEquals:Cpe,sum:Vpe,rangeEach:xpe,rangeSum:Tpe,rangeReduceIf:Rpe,deleteProperty:Lpe,numberCalc:lc};class Spe{constructor({len:e,height:t}){this._={},this.len=e,this.height=t}getHeight(e){if(this.isHide(e))return 0;const t=this.get(e);return t&&t.height?t.height:this.height}setHeight(e,t){const i=this.getOrNew(e);i.height=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this.get(e);return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumHeight(e,t,i){return ya.rangeSum(e,t,a=>i&&i.has(a)?0:this.getHeight(a))}totalHeight(){return this.sumHeight(0,this.len)}get(e){return this._[e]}getOrNew(e){return this._[e]=this._[e]||{cells:{}},this._[e]}getCell(e,t){const i=this.get(e);return i!==void 0&&i.cells!==void 0&&i.cells[t]!==void 0?i.cells[t]:null}getCellMerge(e,t){const i=this.getCell(e,t);return i&&i.merge?i.merge:[0,0]}getCellOrNew(e,t){const i=this.getOrNew(e);return i.cells[t]=i.cells[t]||{},i.cells[t]}setCell(e,t,i,a="all"){const l=this.getOrNew(e);a==="all"?l.cells[t]=i:a==="text"?(l.cells[t]=l.cells[t]||{},l.cells[t].text=i.text):a==="format"&&(l.cells[t]=l.cells[t]||{},l.cells[t].style=i.style,i.merge&&(l.cells[t].merge=i.merge))}setCellText(e,t,i){const a=this.getCellOrNew(e,t);a.editable!==!1&&(a.text=i)}copyPaste(e,t,i,a=!1,l=()=>{}){const{sri:o,sci:r,eri:f,eci:v}=e,b=t.sri,Z=t.sci,p=t.eri,y=t.eci,[X,m]=e.size(),[N,G]=t.size();let d=!0,u=0;(p0){const{text:C}=w;let x=W-Z+(c-b)+2;if(d||(x-=u+1),C[0]==="=")w.text=C.replace(/[a-zA-Z]{1,3}\d+/g,R=>{let[g,S]=[0,0];return o===b?g=x-1:S=x-1,/^\d+$/.test(R)?R:wd(R,g,S)});else if(X<=1&&m>1&&(b>f||p1&&(Z>v||y{this.eachCells(a,l=>{let o=parseInt(a,10),r=parseInt(l,10);e.includes(a,l)&&(o=t.sri+(o-e.sri),r=t.sci+(r-e.sci)),i[o]=i[o]||{cells:{}},i[o].cells[r]=this._[a].cells[l]})}),this._=i}paste(e,t){if(e.length<=0)return;const{sri:i,sci:a}=t;e.forEach((l,o)=>{const r=i+o;l.forEach((f,v)=>{const b=a+v;this.setCellText(r,b,f)})})}insert(e,t=1){const i={};this.each((a,l)=>{let o=parseInt(a,10);o>=e&&(o+=t,this.eachCells(a,(r,f)=>{f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>wd(v,0,t,(b,Z)=>Z>=e)))})),i[o]=l}),this._=i,this.len+=t}delete(e,t){const i=t-e+1,a={};this.each((l,o)=>{const r=parseInt(l,10);rt&&(a[r-i]=o,this.eachCells(l,(f,v)=>{v.text&&v.text[0]==="="&&(v.text=v.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>wd(b,0,-i,(Z,p)=>p>t)))}))}),this._=a,this.len-=i}insertColumn(e,t=1){this.each((i,a)=>{const l={};this.eachCells(i,(o,r)=>{let f=parseInt(o,10);f>=e&&(f+=t,r.text&&r.text[0]==="="&&(r.text=r.text.replace(/[a-zA-Z]{1,3}\d+/g,v=>wd(v,t,0,b=>b>=e)))),l[f]=r}),a.cells=l})}deleteColumn(e,t){const i=t-e+1;this.each((a,l)=>{const o={};this.eachCells(a,(r,f)=>{const v=parseInt(r,10);vt&&(o[v-i]=f,f.text&&f.text[0]==="="&&(f.text=f.text.replace(/[a-zA-Z]{1,3}\d+/g,b=>wd(b,-i,0,Z=>Z>t))))}),l.cells=o})}deleteCells(e,t="all"){e.each((i,a)=>{this.deleteCell(i,a,t)})}deleteCell(e,t,i="all"){const a=this.get(e);if(a!==null){const l=this.getCell(e,t);l!==null&&l.editable!==!1&&(i==="all"?delete a.cells[t]:i==="text"?(l.text&&delete l.text,l.value&&delete l.value):i==="format"?(l.style!==void 0&&delete l.style,l.merge&&delete l.merge):i==="merge"&&l.merge&&delete l.merge)}}maxCell(){const e=Object.keys(this._),t=e[e.length-1],i=this._[t];if(i){const{cells:a}=i,l=Object.keys(a),o=l[l.length-1];return[parseInt(t,10),parseInt(o,10)]}return[0,0]}each(e){Object.entries(this._).forEach(([t,i])=>{e(t,i)})}eachCells(e,t){this._[e]&&this._[e].cells&&Object.entries(this._[e].cells).forEach(([i,a])=>{t(i,a)})}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}}class zpe{constructor({len:e,width:t,indexWidth:i,minWidth:a}){this._={},this.len=e,this.width=t,this.indexWidth=i,this.minWidth=a}setData(e){e.len&&(this.len=e.len,delete e.len),this._=e}getData(){const{len:e}=this;return Object.assign({len:e},this._)}getWidth(e){if(this.isHide(e))return 0;const t=this._[e];return t&&t.width?t.width:this.width}getOrNew(e){return this._[e]=this._[e]||{},this._[e]}setWidth(e,t){const i=this.getOrNew(e);i.width=t}unhide(e){let t=e;for(;t>0&&(t-=1,this.isHide(t));)this.setHide(t,!1)}isHide(e){const t=this._[e];return t&&t.hide}setHide(e,t){const i=this.getOrNew(e);t===!0?i.hide=!0:delete i.hide}setStyle(e,t){const i=this.getOrNew(e);i.style=t}sumWidth(e,t){return ya.rangeSum(e,t,i=>this.getWidth(i))}totalWidth(){return this.sumWidth(0,this.len)}}const kpe={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let qv=["en"];const CS={en:kpe};function KV(n,e){if(e)for(const t of qv){if(!e[t])break;let i=e[t];const a=n.match(/(?:\\.|[^.])+/g);for(let l=0;l_i(n)}function SS(n,e,t=!1){t?qv=[n]:qv.unshift(n),e&&(CS[n]=e)}const HV={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function fr(n,e,...t){let i="";return n||(i=_i(`validation.${e}`,...t)),[n,i]}class zS{constructor(e,t,i,a){this.required=t,this.value=i,this.type=e,this.operator=a,this.message=""}parseValue(e){const{type:t}=this;return t==="date"?new Date(e):t==="number"?Number(e):e}equals(e){let t=this.type===e.type&&this.required===e.required&&this.operator===e.operator;return t&&(Array.isArray(this.value)?t=ya.arrayEquals(this.value,e.value):t=this.value===e.value),t}values(){return this.value.split(",")}validate(e){const{required:t,operator:i,value:a,type:l}=this;if(t&&/^\s*$/.test(e))return fr(!1,"required");if(/^\s*$/.test(e))return[!0];if(HV[l]&&!HV[l].test(e))return fr(!1,"notMatch");if(l==="list")return fr(this.values().includes(e),"notIn");if(i){const o=this.parseValue(e);if(i==="be"){const[r,f]=a;return fr(o>=this.parseValue(r)&&o<=this.parseValue(f),"between",r,f)}if(i==="nbe"){const[r,f]=a;return fr(othis.parseValue(f),"notBetween",r,f)}if(i==="eq")return fr(o===this.parseValue(a),"equal",a);if(i==="neq")return fr(o!==this.parseValue(a),"notEqual",a);if(i==="lt")return fr(othis.parseValue(a),"greaterThan",a);if(i==="gte")return fr(o>=this.parseValue(a),"greaterThanEqual",a)}return[!0]}}class c0{constructor(e,t,i){this.refs=t,this.mode=e,this.validator=i}includes(e,t){const{refs:i}=this;for(let a=0;a{const a=Ki.valueOf(i);a.intersects(e)?a.difference(e).forEach(o=>t.push(o.toString())):t.push(i)}),this.refs=t}getData(){const{refs:e,mode:t,validator:i}=this,{type:a,required:l,operator:o,value:r}=i;return{refs:e,mode:t,type:a,required:l,operator:o,value:r}}static valueOf({refs:e,mode:t,type:i,required:a,operator:l,value:o}){return new c0(t,e,new zS(i,a,o,l))}}class Fpe{constructor(){this._=[],this.errors=new Map}getError(e,t){return this.errors.get(`${e}_${t}`)}validate(e,t,i){const a=this.get(e,t),l=`${e}_${t}`,{errors:o}=this;if(a!==null){const[r,f]=a.validator.validate(i);r?o.delete(l):o.set(l,f)}else o.delete(l);return!0}add(e,t,{type:i,required:a,value:l,operator:o}){const r=new zS(i,a,l,o),f=this.getByValidator(r);f!==null?f.addRef(t):this._.push(new c0(e,[t],r))}getByValidator(e){for(let t=0;t{t.remove(e)})}each(e){this._.forEach(t=>e(t))}getData(){return this._.filter(e=>e.refs.length>0).map(e=>e.getData())}setData(e){this._=e.map(t=>c0.valueOf(t))}}const Jpe={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},Dpe=41,Ope=41,PV=(n,e)=>Object.prototype.hasOwnProperty.call(n,e);function QV(n,e,t=()=>{}){const{merges:i}=this,a=e.clone(),[l,o]=n.size(),[r,f]=e.size();return l>r&&(a.eri=e.sri+l-1),o>f&&(a.eci=e.sci+o-1),i.intersects(a)?(t(_i("error.pasteForMergedCell")),!1):!0}function BV(n,e,t,i=!1){const{rows:a,merges:l}=this;(t==="all"||t==="format")&&(a.deleteCells(e,t),l.deleteWithin(e)),a.copyPaste(n,e,t,i,(o,r,f)=>{if(f&&f.merge){const[v,b]=f.merge;if(v<=0&&b<=0)return;l.add(new Ki(o,r,o+v,r+b))}})}function jpe(n,e){const{clipboard:t,rows:i,merges:a}=this;i.cutPaste(n,e),a.move(n,e.sri-n.sri,e.sci-n.sci),t.clear()}function _c(n,e,t){const{styles:i,rows:a}=this,l=a.getCellOrNew(n,e);let o={};l.style!==void 0&&(o=ya.cloneDeep(i[l.style])),o=ya.merge(o,{border:t}),l.style=this.addStyle(o)}function Upe({mode:n,style:e,color:t}){const{styles:i,selector:a,rows:l}=this,{sri:o,sci:r,eri:f,eci:v}=a.range,b=!this.isSignleSelected();if(!(!b&&(n==="inside"||n==="horizontal"||n==="vertical"))){if(n==="outside"&&!b)_c.call(this,o,r,{top:[e,t],bottom:[e,t],left:[e,t],right:[e,t]});else if(n==="none")a.range.each((Z,p)=>{const y=l.getCell(Z,p);if(y&&y.style!==void 0){const X=ya.cloneDeep(i[y.style]);delete X.border,y.style=this.addStyle(X)}});else if(n==="all"||n==="inside"||n==="outside"||n==="horizontal"||n==="vertical"){const Z=[];for(let p=o;p<=f;p+=1)for(let y=r;y<=v;y+=1){const X=[];for(let h=0;hZ.splice(h,1)),y>v)break;const m=l.getCell(p,y);let[N,G]=[0,0];m&&m.merge&&([N,G]=m.merge,Z.push([p,y,N,G]));const d=N>0&&p+N===f,u=G>0&&y+G===v;let s={};n==="all"?s={bottom:[e,t],top:[e,t],left:[e,t],right:[e,t]}:n==="inside"?(!u&&y0&&_c.call(this,p,y,s),y+=G}}else if(n==="top"||n==="bottom")for(let Z=r;Z<=v;Z+=1)n==="top"&&(_c.call(this,o,Z,{top:[e,t]}),Z+=l.getCellMerge(o,Z)[1]),n==="bottom"&&(_c.call(this,f,Z,{bottom:[e,t]}),Z+=l.getCellMerge(f,Z)[1]);else if(n==="left"||n==="right")for(let Z=o;Z<=f;Z+=1)n==="left"&&(_c.call(this,Z,r,{left:[e,t]}),Z+=l.getCellMerge(Z,r)[0]),n==="right"&&(_c.call(this,Z,v,{right:[e,t]}),Z+=l.getCellMerge(Z,v)[0])}}function Epe(n,e){const{rows:t}=this,i=this.freezeTotalHeight();let a=t.height;i+t.heightn);o+=1)l.has(o)||(f=t.getHeight(o),r+=f);return r-=f,r<=0?{ri:-1,top:0,height:f}:{ri:o-1,top:r,height:f}}function Kpe(n,e){const{cols:t}=this,i=this.freezeTotalWidth();let a=t.indexWidth;i+t.indexWidtht.getWidth(f));return o<=0?{ci:-1,left:0,width:t.indexWidth}:{ci:l-1,left:o,width:r}}class Hpe{constructor(e,t){this.settings=ya.merge(Jpe,t||{}),this.name=e||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new QX,this.rows=new Spe(this.settings.row),this.cols=new zpe(this.settings.col),this.validations=new Fpe,this.hyperlinks={},this.comments={},this.selector=new Npe,this.scroll=new Mpe,this.history=new Ipe,this.clipboard=new Ype,this.autoFilter=new wpe,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(e,t,i){this.changeData(()=>{this.validations.add(e,t,i)})}removeValidation(){const{range:e}=this.selector;this.changeData(()=>{this.validations.remove(e)})}getSelectedValidator(){const{ri:e,ci:t}=this.selector,i=this.validations.get(e,t);return i?i.validator:null}getSelectedValidation(){const{ri:e,ci:t,range:i}=this.selector,a=this.validations.get(e,t),l={ref:i.toString()};return a!==null&&(l.mode=a.mode,l.validator=a.validator),l}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),e=>{this.setData(e)})}redo(){this.history.redo(this.getData(),e=>{this.setData(e)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let e="";const t=this.rows.getData();for(let i=this.selector.range.sri;i<=this.selector.range.eri;i+=1){if(PV(t,i)){for(let a=this.selector.range.sci;a<=this.selector.range.eci;a+=1)if(a>this.selector.range.sci&&(e+=" "),PV(t[i].cells,a)){const l=String(t[i].cells[a].text);l.indexOf(` +`)===-1&&l.indexOf(" ")===-1&&l.indexOf('"')===-1?e+=l:e+=`"${l}"`}}else for(let a=this.selector.range.sci;a<=this.selector.range.eci;a+=1)e+=" ";e+=` +`}navigator.clipboard.writeText(e).then(()=>{},i=>{console.log("text copy to the system clipboard error ",e,i)})}cut(){this.clipboard.cut(this.selector.range)}paste(e="all",t=()=>{}){const{clipboard:i,selector:a}=this;return i.isClear()||!QV.call(this,i.range,a.range,t)?!1:(this.changeData(()=>{i.isCopy()?BV.call(this,i.range,a.range,e):i.isCut()&&jpe.call(this,i.range,a.range)}),!0)}pasteFromText(e){const t=e.split(`\r +`).map(l=>l.replace(/"/g,"").split(" "));t.length>0&&(t.length-=1);const{rows:i,selector:a}=this;this.changeData(()=>{i.paste(t,a.range)})}autofill(e,t,i=()=>{}){const a=this.selector.range;return QV.call(this,a,e,i)?(this.changeData(()=>{BV.call(this,a,e,t,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let{sri:r,sci:f,eri:v,eci:b}=i.range;const Z=i.ri,p=i.ci;let[y,X]=[e,t];return e<0&&(y=a.len-1),t<0&&(X=l.len-1),y>Z?[r,v]=[Z,y]:[r,v]=[y,Z],X>p?[f,b]=[p,X]:[f,b]=[X,p],i.range=o.union(new Ki(r,f,v,b)),i.range=o.union(i.range),i.range}calSelectedRangeByStart(e,t){const{selector:i,rows:a,cols:l,merges:o}=this;let r=o.getFirstIncludes(e,t);return r===null&&(r=new Ki(e,t,e,t),e===-1&&(r.sri=0,r.eri=a.len-1),t===-1&&(r.sci=0,r.eci=l.len-1)),i.range=r,r}setSelectedCellAttr(e,t){this.changeData(()=>{const{selector:i,styles:a,rows:l}=this;if(e==="merge")t?this.merge():this.unmerge();else if(e==="border")Upe.call(this,t);else if(e==="formula"){const{ri:o,ci:r,range:f}=i;if(i.multiple()){const[v,b]=i.size(),{sri:Z,sci:p,eri:y,eci:X}=f;if(v>1)for(let m=p;m<=X;m+=1){const N=l.getCellOrNew(y+1,m);N.text=`=${t}(${Io(m,Z)}:${Io(m,y)})`}else if(b>1){const m=l.getCellOrNew(o,X+1);m.text=`=${t}(${Io(p,o)}:${Io(X,o)})`}}else{const v=l.getCellOrNew(o,r);v.text=`=${t}()`}}else i.range.each((o,r)=>{const f=l.getCellOrNew(o,r);let v={};if(f.style!==void 0&&(v=ya.cloneDeep(a[f.style])),e==="format")v.format=t,f.style=this.addStyle(v);else if(e==="font-bold"||e==="font-italic"||e==="font-name"||e==="font-size"){const b={};b[e.split("-")[1]]=t,v.font=Object.assign(v.font||{},b),f.style=this.addStyle(v)}else e==="strike"||e==="textwrap"||e==="underline"||e==="align"||e==="valign"||e==="color"||e==="bgcolor"?(v[e]=t,f.style=this.addStyle(v)):f[e]=t})})}setSelectedCellText(e,t="input"){const{autoFilter:i,selector:a,rows:l}=this,{ri:o,ci:r}=a;let f=o;this.unsortedRowMap.has(o)&&(f=this.unsortedRowMap.get(o));const v=l.getCell(f,r),b=v?v.text:"";if(this.setCellText(f,r,e,t),i.active()){const Z=i.getFilter(r);if(Z){const p=Z.value.findIndex(y=>y===b);p>=0&&Z.value.splice(p,1,e)}}}getSelectedCell(){const{ri:e,ci:t}=this.selector;let i=e;return this.unsortedRowMap.has(e)&&(i=this.unsortedRowMap.get(e)),this.rows.getCell(i,t)}xyInSelectedRect(e,t){const{left:i,top:a,width:l,height:o}=this.getSelectedRect(),r=e-this.cols.indexWidth,f=t-this.rows.height;return r>i&&ra&&f0&&G>b&&(X=b),N>0&&N>Z&&(m=Z),{l:b,t:Z,left:X,top:m,height:p,width:y,scroll:t}}getCellRectByXY(e,t){const{scroll:i,merges:a,rows:l,cols:o}=this;let{ri:r,top:f,height:v}=Epe.call(this,t,i.y),{ci:b,left:Z,width:p}=Kpe.call(this,e,i.x);if(b===-1&&(p=o.totalWidth()),r===-1&&(v=l.totalHeight()),r>=0||b>=0){const y=a.getFirstIncludes(r,b);y&&(r=y.sri,b=y.sci,{left:Z,top:f,width:p,height:v}=this.cellRect(r,b))}return{ri:r,ci:b,left:Z,top:f,width:p,height:v}}isSignleSelected(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:e,sci:t,eri:i,eci:a}=this.selector.range,l=this.getCell(e,t);if(l&&l.merge){const[o,r]=l.merge;if(e+o===i&&t+r===a)return!0}return!1}merge(){const{selector:e,rows:t}=this;if(this.isSignleSelected())return;const[i,a]=e.size();if(i>1||a>1){const{sri:l,sci:o}=e.range;this.changeData(()=>{const r=t.getCellOrNew(l,o);r.merge=[i-1,a-1],this.merges.add(e.range),this.rows.deleteCells(e.range),this.rows.setCell(l,o,r)})}}unmerge(){const{selector:e}=this;if(!this.isSignleSelected())return;const{sri:t,sci:i}=e.range;this.changeData(()=>{this.rows.deleteCell(t,i,"merge"),this.merges.deleteWithin(e.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:e,selector:t}=this;this.changeData(()=>{e.active()?(e.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):e.ref=t.range.toString()})}setAutoFilter(e,t,i,a){const{autoFilter:l}=this;l.addFilter(e,i,a),l.setSort(e,t),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:e,rows:t}=this;if(!e.active())return;const{sort:i}=e,{rset:a,fset:l}=e.filteredRows((f,v)=>t.getCell(f,v)),o=Array.from(l),r=Array.from(l);i&&o.sort((f,v)=>i.order==="asc"?f-v:i.order==="desc"?v-f:0),this.exceptRowSet=a,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,o.forEach((f,v)=>{this.sortedRowMap.set(r[v],f),this.unsortedRowMap.set(f,r[v])})}deleteCell(e="all"){const{selector:t}=this;this.changeData(()=>{this.rows.deleteCells(t.range,e),(e==="all"||e==="format")&&this.merges.deleteWithin(t.range)})}insert(e,t=1){this.changeData(()=>{const{sri:i,sci:a}=this.selector.range,{rows:l,merges:o,cols:r}=this;let f=i;e==="row"?l.insert(i,t):e==="column"&&(l.insertColumn(a,t),f=a,r.len+=1),o.shift(e,f,t,(v,b,Z,p)=>{const y=l.getCell(v,b);y.merge[0]+=Z,y.merge[1]+=p})})}delete(e){this.changeData(()=>{const{rows:t,merges:i,selector:a,cols:l}=this,{range:o}=a,{sri:r,sci:f,eri:v,eci:b}=a.range,[Z,p]=a.range.size();let y=r,X=Z;e==="row"?t.delete(r,v):e==="column"&&(t.deleteColumn(f,b),y=o.sci,X=p,l.len-=1),i.shift(e,y,-X,(m,N,G,d)=>{const u=t.getCell(m,N);u.merge[0]+=G,u.merge[1]+=d,u.merge[0]===0&&u.merge[1]===0&&delete u.merge})})}scrollx(e,t){const{scroll:i,freeze:a,cols:l}=this,[,o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getWidth(Z));let b=f;e>0&&(b+=v),i.x!==b&&(i.ci=e>0?r:0,i.x=b,t())}scrolly(e,t){const{scroll:i,freeze:a,rows:l}=this,[o]=a,[r,f,v]=ya.rangeReduceIf(o,l.len,0,0,e,Z=>l.getHeight(Z));let b=f;e>0&&(b+=v),i.y!==b&&(i.ri=e>0?r:0,i.y=b,t())}cellRect(e,t){const{rows:i,cols:a}=this,l=a.sumWidth(0,t),o=i.sumHeight(0,e),r=i.getCell(e,t);let f=a.getWidth(t),v=i.getHeight(e);if(r!==null&&r.merge){const[b,Z]=r.merge;if(b>0)for(let p=1;p<=b;p+=1)v+=i.getHeight(e+p);if(Z>0)for(let p=1;p<=Z;p+=1)f+=a.getWidth(t+p)}return{left:l,top:o,width:f,height:v,cell:r}}getCell(e,t){return this.rows.getCell(e,t)}getCellTextOrDefault(e,t){const i=this.getCell(e,t);return i&&i.text?i.text:""}getCellStyle(e,t){const i=this.getCell(e,t);return i&&i.style!==void 0?this.styles[i.style]:null}getCellStyleOrDefault(e,t){const{styles:i,rows:a}=this,l=a.getCell(e,t),o=l&&l.style!==void 0?i[l.style]:{};return ya.merge(this.defaultStyle(),o)}getSelectedCellStyle(){const{ri:e,ci:t}=this.selector;return this.getCellStyleOrDefault(e,t)}setCellText(e,t,i,a){const{rows:l,history:o,validations:r}=this;a==="finished"?(l.setCellText(e,t,""),o.add(this.getData()),l.setCellText(e,t,i)):(l.setCellText(e,t,i),this.change(this.getData())),r.validate(e,t,i)}freezeIsActive(){const[e,t]=this.freeze;return e>0||t>0}setFreeze(e,t){this.changeData(()=>{this.freeze=[e,t]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(e,t){this.changeData(()=>{this.rows.setHeight(e,t)})}setColWidth(e,t){this.changeData(()=>{this.cols.setWidth(e,t)})}viewHeight(){const{view:e,showToolbar:t,showBottomBar:i}=this.settings;let a=e.height();return i&&(a-=Ope),t&&(a-=Dpe),a}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[e,t]=this.freeze;return new Ki(0,0,e-1,t-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:e,cols:t}=this,[i,a]=e.maxCell(),l=e.sumHeight(0,i+1),o=t.sumWidth(0,a+1);return new Ki(0,0,i,a,o,l)}exceptRowTotalHeight(e,t){const{exceptRowSet:i,rows:a}=this,l=Array.from(i);let o=0;return l.forEach(r=>{if(rt){const f=a.getHeight(r);o+=f}}),o}viewRange(){const{scroll:e,rows:t,cols:i,freeze:a,exceptRowSet:l}=this;let{ri:o,ci:r}=e;o<=0&&([o]=a),r<=0&&([,r]=a);let[f,v]=[0,0],[b,Z]=[t.len,i.len];for(let p=o;pthis.viewHeight()));p+=1);for(let p=r;pthis.viewWidth()));p+=1);return new Ki(o,r,b,Z,f,v)}eachMergesInView(e,t){this.merges.filterIntersects(e).forEach(i=>t(i))}hideRowsOrCols(){const{rows:e,cols:t,selector:i}=this,[a,l]=i.size(),{sri:o,sci:r,eri:f,eci:v}=i.range;if(a===e.len)for(let b=r;b<=v;b+=1)t.setHide(b,!0);else if(l===t.len)for(let b=o;b<=f;b+=1)e.setHide(b,!0)}unhideRowsOrCols(e,t){this[`${e}s`].unhide(t)}rowEach(e,t,i){let a=0;const{rows:l}=this,o=this.exceptRowSet,r=[...o];let f=0;for(let v=0;v0&&(i(v,a,b),a+=b,a>this.viewHeight()))break}}colEach(e,t,i){let a=0;const{cols:l}=this;for(let o=e;o<=t;o+=1){const r=l.getWidth(o);if(r>0&&(i(o,a,r),a+=r,a>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(e){const{styles:t}=this;for(let i=0;i{if(t==="merges"||t==="rows"||t==="cols"||t==="validations")this[t].setData(e[t]);else if(t==="freeze"){const[i,a]=Ws(e[t]);this.freeze=[a,i]}else t==="autofilter"?this.autoFilter.setData(e[t]):e[t]!==void 0&&(this[t]=e[t])}),this}getData(){const{name:e,freeze:t,styles:i,merges:a,rows:l,cols:o,validations:r,autoFilter:f}=this;return{name:e,freeze:Io(t[1],t[0]),styles:i,merges:a.getData(),rows:l.getData(),cols:o.getData(),validations:r.getData(),autofilter:f.getData()}}}function va(n,e,t){n.addEventListener(e,t)}function u0(n,e,t){n.removeEventListener(e,t)}function qu(n){n.xclickoutside&&(u0(window.document.body,"click",n.xclickoutside),delete n.xclickoutside)}function Ah(n,e){n.xclickoutside=t=>{t.detail===2||n.contains(t.target)||(e?e(n):(n.hide(),qu(n)))},va(window.document.body,"click",n.xclickoutside)}function kS(n,e,t){va(n,"mousemove",e);const i=n;i.xEvtUp=a=>{u0(n,"mousemove",e),u0(n,"mouseup",n.xEvtUp),t(a)},va(n,"mouseup",n.xEvtUp)}function AV(n,e,t,i){let a="";Math.abs(n)>Math.abs(e)?(a=n>0?"right":"left",i(a,n,t)):(a=e>0?"down":"up",i(a,e,t))}function Ppe(n,{move:e,end:t}){let i=0,a=0;va(n,"touchstart",l=>{const{pageX:o,pageY:r}=l.touches[0];i=o,a=r}),va(n,"touchmove",l=>{if(!e)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;(Math.abs(f)>10||Math.abs(v)>10)&&(AV(f,v,l,e),i=o,a=r),l.preventDefault()}),va(n,"touchend",l=>{if(!t)return;const{pageX:o,pageY:r}=l.changedTouches[0],f=o-i,v=r-a;AV(f,v,l,t)})}function Qpe(){const n=new Map;function e(o,r){const f=()=>{const b=n.get(o);return Array.isArray(b)&&b.push(r)||!1},v=()=>n.set(o,[].concat(r));return n.has(o)&&f()||v()}function t(o,r){const f=()=>{const v=n.get(o);for(const b of v)b.call(null,...r)};return n.has(o)&&f()}function i(o,r){const f=()=>{const v=n.get(o),b=v.indexOf(r);return b>=0&&v.splice(b,1)&&n.get(o).length===0&&n.delete(o)};return n.has(o)&&f()}function a(o,r){const f=(...v)=>{r.call(null,...v),i(o,f)};return e(o,f)}function l(){n.clear()}return{get current(){return n},on:e,once:a,fire:t,removeListener:i,removeAllListeners:l}}const gt="x-spreadsheet";class _V{constructor(e=!1,t){this.moving=!1,this.vertical=e,this.el=ut("div",`${gt}-resizer ${e?"vertical":"horizontal"}`).children(this.unhideHoverEl=ut("div",`${gt}-resizer-hover`).on("dblclick.stop",i=>this.mousedblclickHandler(i)).css("position","absolute").hide(),this.hoverEl=ut("div",`${gt}-resizer-hover`).on("mousedown.stop",i=>this.mousedownHandler(i)),this.lineEl=ut("div",`${gt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=t,this.unhideFn=()=>{}}showUnhide(e){this.unhideIndex=e,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(e,t){const{moving:i,vertical:a,hoverEl:l,lineEl:o,el:r,unhideHoverEl:f}=this;if(i)return;this.cRect=e;const{left:v,top:b,width:Z,height:p}=e;r.offset({left:a?v+Z-5:v,top:a?b:b+p-5}).show(),l.offset({width:a?5:Z,height:a?p:5}),o.offset({width:a?0:t.width,height:a?t.height:0}),f.offset({left:a?5-Z:v,top:a?b:5-p,width:a?5:Z,height:a?p:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(e){let t=e;const{el:i,lineEl:a,cRect:l,vertical:o,minDistance:r}=this;let f=o?l.width:l.height;a.show(),kS(window,v=>{this.moving=!0,t!==null&&v.buttons===1&&(o?(f+=v.movementX,f>r&&i.css("left",`${l.left+f}px`)):(f+=v.movementY,f>r&&i.css("top",`${l.top+f}px`)),t=v)},()=>{t=null,a.hide(),this.moving=!1,this.hide(),this.finishedFn&&(f{}).on("scroll.stop",t=>{const{scrollTop:i,scrollLeft:a}=t.target;this.moveFn&&this.moveFn(this.vertical?i:a,t)})}move(e){return this.el.scroll(e),this}scroll(){return this.el.scroll()}set(e,t){const i=e-1;if(t>i){const a=this.vertical?"height":"width";this.el.css(a,`${i-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(a,`${t}px`)}else this.el.hide();return this}}const Nb=2*2-1;let eW=10;class Mb{constructor(e=!1){this.useHideInput=e,this.inputChange=()=>{},this.cornerEl=ut("div",`${gt}-selector-corner`),this.areaEl=ut("div",`${gt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=ut("div",`${gt}-selector-clipboard`).hide(),this.autofillEl=ut("div",`${gt}-selector-autofill`).hide(),this.el=ut("div",`${gt}-selector`).css("z-index",`${eW}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),e&&(this.hideInput=ut("input","").on("compositionend",t=>{this.inputChange(t.target.value)}),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=ut("div","hide-input").child(this.hideInput))),eW+=1}setOffset(e){return this.el.offset(e).show(),this}hide(){return this.el.hide(),this}setAreaOffset(e){const{left:t,top:i,width:a,height:l}=e,o={width:a-Nb+.8,height:l-Nb+.8,left:t-.8,top:i-.8};this.areaEl.offset(o).show(),this.useHideInput&&(this.hideInputDiv.offset(o),this.hideInput.val("").focus())}setClipboardOffset(e){const{left:t,top:i,width:a,height:l}=e;this.clipboardEl.offset({left:t,top:i,width:a-5,height:l-5})}showAutofill(e){const{left:t,top:i,width:a,height:l}=e;this.autofillEl.offset({width:a-Nb,height:l-Nb,left:t,top:i}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function BX(n){const{data:e}=this,{left:t,top:i,width:a,height:l,scroll:o,l:r,t:f}=n,v=e.freezeTotalWidth(),b=e.freezeTotalHeight();let Z=t-v;v>r&&(Z-=o.x);let p=i-b;return b>f&&(p-=o.y),{left:Z,top:p,width:a,height:l}}function AX(n){const{data:e}=this,{left:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalWidth();let v=t-f;return f>l&&(v-=r.x),{left:v,top:o,width:i,height:a}}function _X(n){const{data:e}=this,{top:t,width:i,height:a,l,t:o,scroll:r}=n,f=e.freezeTotalHeight();let v=t-f;return f>o&&(v-=r.y),{left:l,top:v,width:i,height:a}}function tW(n){const{br:e}=this;e.setAreaOffset(BX.call(this,n))}function Bpe(n){const{tl:e}=this;e.setAreaOffset(n)}function FS(n){const{t:e}=this;e.setAreaOffset(AX.call(this,n))}function JS(n){const{l:e}=this;e.setAreaOffset(_X.call(this,n))}function DS(n){const{l:e}=this;e.setClipboardOffset(_X.call(this,n))}function nW(n){const{br:e}=this;e.setClipboardOffset(BX.call(this,n))}function Ape(n){const{tl:e}=this;e.setClipboardOffset(n)}function OS(n){const{t:e}=this;e.setClipboardOffset(AX.call(this,n))}function qV(n){tW.call(this,n),Bpe.call(this,n),FS.call(this,n),JS.call(this,n)}function eL(n){nW.call(this,n),Ape.call(this,n),OS.call(this,n),DS.call(this,n)}class _pe{constructor(e){this.inputChange=()=>{},this.data=e,this.br=new Mb(!0),this.t=new Mb,this.l=new Mb,this.tl=new Mb,this.br.inputChange=t=>{this.inputChange(t)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=ut("div",`${gt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,eW+=1}resetData(e){this.data=e,this.range=e.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:e,tl:t,t:i,l:a,br:l}=this,o=e.freezeTotalHeight(),r=e.freezeTotalWidth();o>0||r>0?(t.setOffset({width:r,height:o}),i.setOffset({left:r,height:o}),a.setOffset({top:o,width:r}),l.setOffset({left:r,top:o})):(t.hide(),i.hide(),a.hide(),l.setOffset({left:0,top:0}))}resetAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();qV.call(this,e),eL.call(this,t),this.resetOffset()}resetBRTAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();tW.call(this,e),FS.call(this,e),nW.call(this,t),OS.call(this,t),this.resetOffset()}resetBRLAreaOffset(){const e=this.data.getSelectedRect(),t=this.data.getClipboardRect();tW.call(this,e),JS.call(this,e),nW.call(this,t),DS.call(this,t),this.resetOffset()}set(e,t,i=!0){const{data:a}=this,l=a.calSelectedRangeByStart(e,t),{sri:o,sci:r}=l;if(i){let[f,v]=[e,t];e<0&&(f=0),t<0&&(v=0),a.selector.setIndexes(f,v),this.indexes=[f,v]}this.moveIndexes=[o,r],this.range=l,this.resetAreaOffset(),this.el.show()}setEnd(e,t,i=!0){const{data:a,lastri:l,lastci:o}=this;if(i){if(e===l&&t===o)return;this.lastri=e,this.lastci=t}this.range=a.calSelectedRangeByEnd(e,t),qV.call(this,this.data.getSelectedRect())}reset(){const{eri:e,eci:t}=this.data.selector.range;this.setEnd(e,t)}showAutofill(e,t){if(e===-1&&t===-1)return;const{sri:i,sci:a,eri:l,eci:o}=this.range,[r,f]=[e,t],v=i-e,b=a-t,Z=l-e,p=o-t;if(b>0)this.arange=new Ki(i,f,l,a-1);else if(v>0)this.arange=new Ki(r,a,i-1,o);else if(p<0)this.arange=new Ki(i,o+1,l,f);else if(Z<0)this.arange=new Ki(l+1,a,r,o);else{this.arange=null;return}if(this.arange!==null){const y=this.data.getRect(this.arange);y.width+=2,y.height+=2;const{br:X,l:m,t:N,tl:G}=this;X.showAutofill(BX.call(this,y)),m.showAutofill(_X.call(this,y)),N.showAutofill(AX.call(this,y)),G.showAutofill(y)}}hideAutofill(){["br","l","t","tl"].forEach(e=>{this[e].hideAutofill()})}showClipboard(){const e=this.data.getClipboardRect();eL.call(this,e),["br","l","t","tl"].forEach(t=>{this[t].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(e=>{this[e].hideClipboard()})}}function $pe(n){n.preventDefault(),n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=e.length-1),e[this.itemIndex].toggle())}function qpe(n){n.stopPropagation();const{filterItems:e}=this;e.length<=0||(this.itemIndex>=0&&e[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>e.length-1&&(this.itemIndex=0),e[this.itemIndex].toggle())}function tL(n){n.preventDefault();const{filterItems:e}=this;e.length<=0||(n.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),e[this.itemIndex].el.click(),this.hide())}function eye(n){const{keyCode:e}=n;switch(n.ctrlKey&&n.stopPropagation(),e){case 37:n.stopPropagation();break;case 38:$pe.call(this,n);break;case 39:n.stopPropagation();break;case 40:qpe.call(this,n);break;case 13:tL.call(this,n);break;case 9:tL.call(this,n);break;default:n.stopPropagation();break}}class jS{constructor(e,t,i="200px"){this.filterItems=[],this.items=e,this.el=ut("div",`${gt}-suggest`).css("width",i).hide(),this.itemClick=t,this.itemIndex=-1}setOffset(e){this.el.cssRemoveKeys("top","bottom").offset(e)}hide(){const{el:e}=this;this.filterItems=[],this.itemIndex=-1,e.hide(),qu(this.el.parent())}setItems(e){this.items=e}search(e){let{items:t}=this;if(/^\s*$/.test(e)||(t=t.filter(a=>(a.key||a).startsWith(e.toUpperCase()))),t=t.map(a=>{let{title:l}=a;l?typeof l=="function"&&(l=l()):l=a;const o=ut("div",`${gt}-item`).child(l).on("click.stop",()=>{this.itemClick(a),this.hide()});return a.label&&o.child(ut("div","label").html(a.label)),o}),this.filterItems=t,t.length<=0)return;const{el:i}=this;i.html("").children(...t).show(),Ah(i.parent(),()=>{this.hide()})}bindInputEvents(e){e.on("keydown",t=>eye.call(this,t))}}class Jl extends Vp{constructor(e){super("div",`${gt}-icon`),this.iconNameEl=ut("div",`${gt}-icon-img ${e}`),this.child(this.iconNameEl)}setName(e){this.iconNameEl.className(`${gt}-icon-img ${e}`)}}function nL(n,e){n.setMonth(n.getMonth()+e)}function tye(n,e){const t=new Date(n);return t.setDate(e-n.getDay()+1),t}function nye(n,e,t){const i=new Date(n,e,1,23,59,59),a=[[],[],[],[],[],[]];for(let l=0;l<6;l+=1)for(let o=0;o<7;o+=1){const r=l*7+o,f=tye(i,r),v=f.getMonth()!==e,b=f.getMonth()===t.getMonth()&&f.getDate()===t.getDate();a[l][o]={d:f,disabled:v,active:b}}return a}class iye{constructor(e){this.value=e,this.cvalue=new Date(e),this.headerLeftEl=ut("div","calendar-header-left"),this.bodyEl=ut("tbody",""),this.buildAll(),this.el=ut("div","x-spreadsheet-calendar").children(ut("div","calendar-header").children(this.headerLeftEl,ut("div","calendar-header-right").children(ut("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Jl("chevron-left")),ut("a","calendar-next").on("click.stop",()=>this.next()).child(new Jl("chevron-right")))),ut("table","calendar-body").children(ut("thead","").child(ut("tr","").children(..._i("calendar.weeks").map(t=>ut("th","cell").child(t)))),this.bodyEl)),this.selectChange=()=>{}}setValue(e){this.value=e,this.cvalue=new Date(e),this.buildAll()}prev(){const{value:e}=this;nL(e,-1),this.buildAll()}next(){const{value:e}=this;nL(e,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:e}=this;this.headerLeftEl.html(`${_i("calendar.months")[e.getMonth()]} ${e.getFullYear()}`)}buildBody(){const{value:e,cvalue:t,bodyEl:i}=this,l=nye(e.getFullYear(),e.getMonth(),t).map(o=>{const r=o.map(f=>{let v="cell";return f.disabled&&(v+=" disabled"),f.active&&(v+=" active"),ut("td","").child(ut("div",v).on("click.stop",()=>{this.selectChange(f.d)}).child(f.d.getDate().toString()))});return ut("tr","").children(...r)});i.html("").children(...l)}}class lye{constructor(){this.calendar=new iye(new Date),this.el=ut("div",`${gt}-datepicker`).child(this.calendar.el).hide()}setValue(e){const{calendar:t}=this;return typeof e=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(e)&&t.setValue(new Date(e.replace(new RegExp("-","g"),"/"))):e instanceof Date&&t.setValue(e),this}change(e){this.calendar.selectChange=t=>{e(t),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function d0(){const{inputText:n}=this;if(!/^\s*$/.test(n)){const{textlineEl:e,textEl:t,areaOffset:i}=this,a=n.split(` +`),l=Math.max(...a.map(Z=>Z.length)),r=e.offset().width/n.length,f=(l+1)*r+5,v=this.viewFn().width-i.left-r;let b=a.length;if(f>i.width){let Z=f;f>v&&(Z=v,b+=parseInt(f/v,10),b+=f%v>0?1:0),t.css("width",`${Z}px`)}b*=this.rowHeight,b>i.height&&t.css("height",`${b}px`)}}function aye({target:n},e){const{value:t,selectionEnd:i}=n,a=`${t.slice(0,i)}${e}${t.slice(i)}`;n.value=a,n.setSelectionRange(i+1,i+1),this.inputText=a,this.textlineEl.html(a),d0.call(this)}function rye(n){const{keyCode:e,altKey:t}=n;e!==13&&e!==9&&n.stopPropagation(),e===13&&t&&(aye.call(this,n,` +`),n.stopPropagation()),e===13&&!t&&n.preventDefault()}function oye(n){const e=n.target.value,{suggest:t,textlineEl:i,validator:a}=this,{cell:l}=this;if(l!==null)if("editable"in l&&l.editable===!0||l.editable===void 0){if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),d0.call(this),this.change("input",e)}else n.target.value=l.text;else{if(this.inputText=e,a)a.type==="list"?t.search(e):t.hide();else{const o=e.lastIndexOf("=");o!==-1?t.search(e.substring(o+1)):t.hide()}i.html(e),d0.call(this),this.change("input",e)}}function sye(n){const{el:e}=this.textEl;setTimeout(()=>{e.focus(),e.setSelectionRange(n,n)},0)}function US(n,e){const{textEl:t,textlineEl:i}=this;t.el.blur(),t.val(n),i.html(n),sye.call(this,e)}function cye(n){const{inputText:e,validator:t}=this;let i=0;if(t&&t.type==="list")this.inputText=n,i=this.inputText.length;else{const a=e.lastIndexOf("="),l=e.substring(0,a+1);let o=e.substring(a+1);o.indexOf(")")!==-1?o=o.substring(o.indexOf(")")):o="",this.inputText=`${l+n.key}(`,i=this.inputText.length,this.inputText+=`)${o}`}US.call(this,this.inputText,i)}function uye(){this.suggest.setItems(this.formulas)}function dye(n){let e=n.getMonth()+1,t=n.getDate();return e<10&&(e=`0${e}`),t<10&&(t=`0${t}`),`${n.getFullYear()}-${e}-${t}`}class hye{constructor(e,t,i){this.viewFn=t,this.rowHeight=i,this.formulas=e,this.suggest=new jS(e,a=>{cye.call(this,a)}),this.datepicker=new lye,this.datepicker.change(a=>{this.setText(dye(a)),this.clear()}),this.areaEl=ut("div",`${gt}-editor-area`).children(this.textEl=ut("textarea","").on("input",a=>oye.call(this,a)).on("paste.stop",()=>{}).on("keydown",a=>rye.call(this,a)),this.textlineEl=ut("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=ut("div",`${gt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(e,t){this.freeze.w=e,this.freeze.h=t}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),uye.call(this),this.datepicker.hide()}setOffset(e,t="top"){const{textEl:i,areaEl:a,suggest:l,freeze:o,el:r}=this;if(e){this.areaOffset=e;const{left:f,top:v,width:b,height:Z,l:p,t:y}=e,X={left:0,top:0};o.w>p&&o.h>y||(o.wp?X.top=o.h:o.h>y&&(X.left=o.w)),r.offset(X),a.offset({left:f-X.left-.8,top:v-X.top-.8}),i.offset({width:b-9+.8,height:Z-3+.8});const m={left:0};m[t]=Z,l.setOffset(m),l.hide()}}setCell(e,t){const{el:i,datepicker:a,suggest:l}=this;i.show(),this.cell=e;const o=e&&e.text||"";if(this.setText(o),this.validator=t,t){const{type:r}=t;r==="date"&&(a.show(),/^\s*$/.test(o)||a.setValue(o)),r==="list"&&(l.setItems(t.values()),l.search(""))}}setText(e){this.inputText=e,US.call(this,e,e.length),d0.call(this)}}class yc extends Vp{constructor(e,t=""){super("div",`${gt}-button ${t}`),this.child(_i(`button.${e}`))}}function h0(){return window.devicePixelRatio||1}function $X(){return h0()-.5}function Rn(n){return parseInt(n*h0(),10)}function $c(n){const e=Rn(n);return e>0?e-.5:.5}class fye{constructor(e,t,i,a,l=0){this.x=e,this.y=t,this.width=i,this.height=a,this.padding=l,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:e,bottom:t,left:i,right:a}){e&&(this.borderTop=e),a&&(this.borderRight=a),t&&(this.borderBottom=t),i&&(this.borderLeft=i)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(e){const{width:t,padding:i}=this;let{x:a}=this;return e==="left"?a+=i:e==="center"?a+=t/2:e==="right"&&(a+=t-i),a}texty(e,t){const{height:i,padding:a}=this;let{y:l}=this;return e==="top"?l+=a:e==="middle"?l+=i/2-t/2:e==="bottom"&&(l+=i-a-t),l}topxys(){const{x:e,y:t,width:i}=this;return[[e,t],[e+i,t]]}rightxys(){const{x:e,y:t,width:i,height:a}=this;return[[e+i,t],[e+i,t+a]]}bottomxys(){const{x:e,y:t,width:i,height:a}=this;return[[e,t+a],[e+i,t+a]]}leftxys(){const{x:e,y:t,height:i}=this;return[[e,t],[e,t+i]]}}function iL(n,e,t,i,a,l,o){const r={x:0,y:0};n==="underline"?a==="bottom"?r.y=0:a==="top"?r.y=-(l+2):r.y=-l/2:n==="strike"&&(a==="bottom"?r.y=l/2:a==="top"&&(r.y=-(l/2+2))),i==="center"?r.x=o/2:i==="right"&&(r.x=o),this.line([e-r.x,t-r.y],[e-r.x+o,t-r.y])}class ES{constructor(e,t,i){this.el=e,this.ctx=e.getContext("2d"),this.resize(t,i),this.ctx.scale(h0(),h0())}resize(e,t){this.el.style.width=`${e}px`,this.el.style.height=`${t}px`,this.el.width=Rn(e),this.el.height=Rn(t)}clear(){const{width:e,height:t}=this.el;return this.ctx.clearRect(0,0,e,t),this}attr(e){return Object.assign(this.ctx,e),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(e,t){return this.ctx.translate(Rn(e),Rn(t)),this}scale(e,t){return this.ctx.scale(e,t),this}clearRect(e,t,i,a){return this.ctx.clearRect(e,t,i,a),this}fillRect(e,t,i,a){return this.ctx.fillRect(Rn(e)-.5,Rn(t)-.5,Rn(i),Rn(a)),this}fillText(e,t,i){return this.ctx.fillText(e,Rn(t),Rn(i)),this}text(e,t,i={},a=!0){const{ctx:l}=this,{align:o,valign:r,font:f,color:v,strike:b,underline:Z}=i,p=t.textx(o);l.save(),l.beginPath(),this.attr({textAlign:o,textBaseline:r,font:`${f.italic?"italic":""} ${f.bold?"bold":""} ${Rn(f.size)}px ${f.name}`,fillStyle:v,strokeStyle:v});const y=`${e}`.split(` +`),X=t.innerWidth(),m=[];y.forEach(d=>{const u=l.measureText(d).width;if(a&&u>Rn(X)){let s={w:0,len:0,start:0};for(let h=0;h=Rn(X)&&(m.push(d.substr(s.start,s.len)),s={w:0,len:0,start:h}),s.len+=1,s.w+=l.measureText(d[h]).width+1;s.len>0&&m.push(d.substr(s.start,s.len))}else m.push(d)});const N=(m.length-1)*(f.size+2);let G=t.texty(r,N);return m.forEach(d=>{const u=l.measureText(d).width;this.fillText(d,p,G),b&&iL.call(this,"strike",p,G,o,r,f.size,u),Z&&iL.call(this,"underline",p,G,o,r,f.size,u),G+=f.size+2}),l.restore(),this}border(e,t){const{ctx:i}=this;return i.lineWidth=$X,i.strokeStyle=t,e==="medium"?i.lineWidth=Rn(2)-.5:e==="thick"?i.lineWidth=Rn(3):e==="dashed"?i.setLineDash([Rn(3),Rn(2)]):e==="dotted"?i.setLineDash([Rn(1),Rn(1)]):e==="double"&&i.setLineDash([Rn(2),0]),this}line(...e){const{ctx:t}=this;if(e.length>1){t.beginPath();const[i,a]=e[0];t.moveTo($c(i),$c(a));for(let l=1;l{const e=[],t=[];let i=[],a=0,l="",o=1,r="";for(let f=0;f="a"&&v<="z")i.push(v.toUpperCase());else if(v>="0"&&v<="9"||v>="A"&&v<="Z"||v===".")i.push(v);else if(v==='"'){for(f+=1;n.charAt(f)!=='"';)i.push(n.charAt(f)),f+=1;t.push(`"${i.join("")}`),i=[]}else if(v==="-"&&/[+\-*/,(]/.test(r))i.push(v);else{if(v!=="("&&i.length>0&&t.push(i.join("")),v===")"){let b=e.pop();if(a===2)try{const[Z,p]=Ws(t.pop()),[y,X]=Ws(t.pop());let m=0;for(let N=y;N<=Z;N+=1)for(let G=X;G<=p;G+=1)t.push(Io(N,G)),m+=1;t.push([b,m])}catch{}else if(a===1||a===3)a===3&&t.push(l),t.push([b,o]),o=1;else for(;b!=="("&&(t.push(b),!(e.length<=0));)b=e.pop();a=0}else if(v==="="||v===">"||v==="<"){const b=n.charAt(f+1);l=v,(b==="="||b==="-")&&(l+=b,f+=1),a=3}else if(v===":")a=2;else if(v===",")a===3&&t.push(l),a=1,o+=1;else if(v==="("&&i.length>0)e.push(i.join(""));else{if(e.length>0&&(v==="+"||v==="-")){let b=e[e.length-1];if(b!=="("&&t.push(e.pop()),b==="*"||b==="/")for(;e.length>0&&(b=e[e.length-1],b!=="(");)t.push(e.pop())}else if(e.length>0){const b=e[e.length-1];(b==="*"||b==="/")&&t.push(e.pop())}e.push(v)}i=[]}r=v}}for(i.length>0&&t.push(i.join(""));e.length>0;)t.push(e.pop());return t},pye=(n,e)=>{const[t]=n;let i=n;if(t==='"')return n.substring(1);let a=1;if(t==="-"&&(i=n.substring(1),a=-1),i[0]>="0"&&i[0]<="9")return a*Number(i);const[l,o]=Ws(i);return a*e(l,o)},yye=(n,e,t,i)=>{const a=[];for(let l=0;l"||r==="<"){let f=a.pop();Number.isNaN(f)||(f=Number(f));let v=a.pop();Number.isNaN(v)||(v=Number(v));let b=!1;r==="="?b=v===f:o===">"?b=v>f:o===">="?b=v>=f:o==="<"?b=v="a"&&r<="z"||r>="A"&&r<="Z")&&i.push(o),a.push(pye(o,t)),i.pop()}}return a[0]},KS=(n,e,t,i=[])=>{if(n[0]==="="){const a=mye(n.substring(1));return a.length<=0?n:yye(a,e,(l,o)=>KS(t(l,o),e,t,i),i)}return n},Zye={render:KS},qX=[{key:"SUM",title:Hn("formula.sum"),render:n=>n.reduce((e,t)=>lc("+",e,t),0)},{key:"AVERAGE",title:Hn("formula.average"),render:n=>n.reduce((e,t)=>Number(e)+Number(t),0)/n.length},{key:"MAX",title:Hn("formula.max"),render:n=>Math.max(...n.map(e=>Number(e)))},{key:"MIN",title:Hn("formula.min"),render:n=>Math.min(...n.map(e=>Number(e)))},{key:"IF",title:Hn("formula._if"),render:([n,e,t])=>n?e:t},{key:"AND",title:Hn("formula.and"),render:n=>n.every(e=>e)},{key:"OR",title:Hn("formula.or"),render:n=>n.some(e=>e)},{key:"CONCAT",title:Hn("formula.concat"),render:n=>n.join("")}],vye=qX,HS={};qX.forEach(n=>{HS[n.key]=n});const qc=n=>n,Ib=n=>{if(/^(-?\d*.?\d*)$/.test(n)){const e=Number(n).toFixed(2).toString(),[t,...i]=e.split("\\.");return[t.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...i]}return n},zd=[{key:"normal",title:Hn("format.normal"),type:"string",render:qc},{key:"text",title:Hn("format.text"),type:"string",render:qc},{key:"number",title:Hn("format.number"),type:"number",label:"1,000.12",render:Ib},{key:"percent",title:Hn("format.percent"),type:"number",label:"10.12%",render:n=>`${n}%`},{key:"rmb",title:Hn("format.rmb"),type:"number",label:"¥10.00",render:n=>`¥${Ib(n)}`},{key:"usd",title:Hn("format.usd"),type:"number",label:"$10.00",render:n=>`$${Ib(n)}`},{key:"eur",title:Hn("format.eur"),type:"number",label:"€10.00",render:n=>`€${Ib(n)}`},{key:"date",title:Hn("format.date"),type:"date",label:"26/09/2008",render:qc},{key:"time",title:Hn("format.time"),type:"date",label:"15:59:00",render:qc},{key:"datetime",title:Hn("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:qc},{key:"duration",title:Hn("format.duration"),type:"date",label:"24:01:00",render:qc}],PS={};zd.forEach(n=>{PS[n.key]=n});const Wye=5,Gye={fillStyle:"#f4f5f8"},Xye={fillStyle:"#fff",lineWidth:$X,strokeStyle:"#e6e6e6"};function Nye(){return{textAlign:"center",textBaseline:"middle",font:`500 ${Rn(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:$X(),strokeStyle:"#e6e6e6"}}function QS(n,e,t,i=0){const{left:a,top:l,width:o,height:r}=n.cellRect(e,t);return new fye(a,l+i,o,r,Wye)}function f0(n,e,t,i,a=0){const{sortedRowMap:l,rows:o,cols:r}=e;if(o.isHide(t)||r.isHide(i))return;let f=t;l.has(t)&&(f=l.get(t));const v=e.getCell(f,i);if(v===null)return;let b=!1;"editable"in v&&v.editable===!1&&(b=!0);const Z=e.getCellStyleOrDefault(f,i),p=QS(e,t,i,a);p.bgcolor=Z.bgcolor,Z.border!==void 0&&(p.setBorders(Z.border),n.strokeBorders(p)),n.rect(p,()=>{let y="";e.settings.evalPaused?y=v.text||"":y=Zye.render(v.text||"",HS,(N,G)=>e.getCellTextOrDefault(G,N)),Z.format&&(y=PS[Z.format].render(y));const X=Object.assign({},Z.font);X.size=bye(X.size),n.text(y,p,{align:Z.align,valign:Z.valign,font:X,color:Z.color,strike:Z.strike,underline:Z.underline},Z.textwrap),e.validations.getError(t,i)&&n.error(p),b&&n.frozen(p)})}function Mye(n){const{data:e,draw:t}=this;if(n){const{autoFilter:i}=e;if(!i.active())return;const a=i.hrange();n.intersects(a)&&a.each((l,o)=>{const r=QS(e,l,o);t.dropdown(r)})}}function Yb(n,e,t,i,a){const{draw:l,data:o}=this;l.save(),l.translate(e,t).translate(i,a);const{exceptRowSet:r}=o,f=Z=>{const p=r.has(Z);if(p){const y=o.rows.getHeight(Z);l.translate(0,-y)}return!p},v=o.exceptRowTotalHeight(n.sri,n.eri);l.save(),l.translate(0,-v),n.each((Z,p)=>{f0(l,o,Z,p)},Z=>f(Z)),l.restore();const b=new Set;l.save(),l.translate(0,-v),o.eachMergesInView(n,({sri:Z,sci:p,eri:y})=>{if(!r.has(Z))f0(l,o,Z,p);else if(!b.has(Z)){b.add(Z);const X=o.rows.sumHeight(Z,y+1);l.translate(0,-X)}}),l.restore(),Mye.call(this,n),l.restore()}function aL(n,e,t,i){const{draw:a}=this;a.save(),a.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(n,e,t,i),a.restore()}function wb(n,e,t,i,a,l){const{draw:o,data:r}=this,f=e.h,v=e.w,b=l+i,Z=a+t;o.save(),o.attr(Gye),(n==="all"||n==="left")&&o.fillRect(0,b,t,f),(n==="all"||n==="top")&&o.fillRect(Z,0,v,i);const{sri:p,sci:y,eri:X,eci:m}=r.selector.range;o.attr(Nye()),(n==="all"||n==="left")&&(r.rowEach(e.sri,e.eri,(N,G,d)=>{const u=b+G,s=N;o.line([0,u],[t,u]),p<=s&&s0&&r.rows.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([5,u+5],[t-5,u+5]),o.restore())}),o.line([0,f+b],[t,f+b]),o.line([t,b],[t,f+b])),(n==="all"||n==="top")&&(r.colEach(e.sci,e.eci,(N,G,d)=>{const u=Z+G,s=N;o.line([u,0],[u,i]),y<=s&&s0&&r.cols.isHide(N-1)&&(o.save(),o.attr({strokeStyle:"#c6c6c6"}),o.line([u+5,5],[u+5,i-5]),o.restore())}),o.line([v+Z,0],[v+Z,i]),o.line([0,i],[v+Z,i])),o.restore()}function Iye(n,e){const{draw:t}=this;t.save(),t.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,n,e),t.restore()}function gb({sri:n,sci:e,eri:t,eci:i,w:a,h:l},o,r,f,v){const{draw:b,data:Z}=this,{settings:p}=Z;if(b.save(),b.attr(Xye).translate(o+f,r+v),!p.showGrid){b.restore();return}Z.rowEach(n,t,(y,X,m)=>{y!==n&&b.line([0,X],[a,X]),y===t&&b.line([0,X+m],[a,X+m])}),Z.colEach(e,i,(y,X,m)=>{y!==e&&b.line([X,0],[X,l]),y===i&&b.line([X+m,0],[X+m,l])}),b.restore()}function Yye(n,e,t,i){const{draw:a,data:l}=this,o=l.viewWidth()-n,r=l.viewHeight()-e;a.save().translate(n,e).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),a.line([0,i],[o,i]),a.line([t,0],[t,r]),a.restore()}class wye{constructor(e,t){this.el=e,this.draw=new ES(e,t.viewWidth(),t.viewHeight()),this.data=t}resetData(e){this.data=e,this.render()}render(){const{data:e}=this,{rows:t,cols:i}=e,a=i.indexWidth,l=t.height;this.draw.resize(e.viewWidth(),e.viewHeight()),this.clear();const o=e.viewRange(),r=e.freezeTotalWidth(),f=e.freezeTotalHeight(),{x:v,y:b}=e.scroll;gb.call(this,o,a,l,r,f),Yb.call(this,o,a,l,-v,-b),wb.call(this,"all",o,a,l,r,f),Iye.call(this,a,l);const[Z,p]=e.freeze;if(Z>0||p>0){if(Z>0){const X=o.clone();X.sri=0,X.eri=Z-1,X.h=f,gb.call(this,X,a,l,r,0),Yb.call(this,X,a,l,-v,0),wb.call(this,"top",X,a,l,r,0)}if(p>0){const X=o.clone();X.sci=0,X.eci=p-1,X.w=r,gb.call(this,X,a,l,0,f),wb.call(this,"left",X,a,l,0,f),Yb.call(this,X,a,l,0,-b)}const y=e.freezeViewRange();gb.call(this,y,a,l,0,0),wb.call(this,"all",y,a,l,0,0),Yb.call(this,y,a,l,0,0),Yye.call(this,a,l,r,f)}}clear(){this.draw.clear()}}const fm=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],lW=["landscape","portrait"];function b0(n){return parseInt(96*n,10)}function rL(n){n==="cancel"?this.el.hide():this.toPrint()}function gye(n){const{paper:e}=this,{value:t}=n.target,i=fm[t];e.w=b0(i[1]),e.h=b0(i[2]),this.preview()}function Vye(n){const{paper:e}=this,{value:t}=n.target,i=lW[t];e.orientation=i,this.preview()}let Lye=class{constructor(e){this.paper={w:b0(fm[0][1]),h:b0(fm[0][2]),padding:50,orientation:lW[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=e,this.el=ut("div",`${gt}-print`).children(ut("div",`${gt}-print-bar`).children(ut("div","-title").child("Print settings"),ut("div","-right").children(ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",rL.bind(this,"cancel")),new yc("next","primary").on("click",rL.bind(this,"next"))))),ut("div",`${gt}-print-content`).children(this.contentEl=ut("div","-content"),ut("div","-sider").child(ut("form","").children(ut("fieldset","").children(ut("label","").child(`${_i("print.size")}`),ut("select","").children(...fm.map((t,i)=>ut("option","").attr("value",i).child(`${t[0]} ( ${t[1]}''x${t[2]}'' )`))).on("change",gye.bind(this))),ut("fieldset","").children(ut("label","").child(`${_i("print.orientation")}`),ut("select","").children(...lW.map((t,i)=>ut("option","").attr("value",i).child(`${_i("print.orientations")[i]}`))).on("change",Vye.bind(this))))))).hide()}resetData(e){this.data=e}preview(){const{data:e,paper:t}=this,{width:i,height:a,padding:l}=t,o=i-l*2,r=a-l*2,f=e.contentRange(),v=parseInt(f.h/r,10)+1,b=o/f.w;let Z=l;const p=l;b>1&&(Z+=(o-f.w)/2);let y=0,X=0;this.contentEl.html(""),this.canvases=[];const m={sri:0,sci:0,eri:0,eci:0};for(let N=0;N{f0(h,e,W,M,c)}),h.restore(),m.sri=m.eri,m.sci=m.eci,X+=d,this.contentEl.child(ut("div",`${gt}-canvas-card-wraper`).child(u.child(s)))}this.el.show()}toPrint(){this.el.hide();const{paper:e}=this,t=ut("iframe","").hide(),{el:i}=t;window.document.body.appendChild(i);const{contentWindow:a}=i,l=a.document,o=document.createElement("style");o.innerHTML=` @page { size: ${e.width}px ${e.height}px; }; canvas { page-break-before: auto; page-break-after: always; image-rendering: pixelated; }; - `,a.head.appendChild(o),this.canvases.forEach(r=>{const f=r.cloneNode(!1);f.getContext("2d").drawImage(r,0,0),a.body.appendChild(f)}),l.print()}};const wye=[{key:"copy",title:Hn("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Hn("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Hn("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Hn("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Hn("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Hn("contextmenu.insertRow")},{key:"insert-column",title:Hn("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Hn("contextmenu.deleteRow")},{key:"delete-column",title:Hn("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Hn("contextmenu.deleteCellText")},{key:"hide",title:Hn("contextmenu.hide")},{key:"divider"},{key:"validation",title:Hn("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Hn("contextmenu.cellprintable")},{key:"cell-non-printable",title:Hn("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Hn("contextmenu.celleditable")},{key:"cell-non-editable",title:Hn("contextmenu.cellnoneditable")}];function gye(n){return n.key==="divider"?ut("div",`${gt}-item divider`):ut("div",`${gt}-item`).on("click",()=>{this.itemClick(n.key),this.hide()}).children(n.title(),ut("div","label").child(n.label||""))}function Vye(){return wye.map(n=>gye.call(this,n))}let Lye=class{constructor(e,t=!1){this.menuItems=Vye.call(this),this.el=ut("div",`${gt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=e,this.itemClick=()=>{},this.isHide=t,this.setMode("range")}setMode(e){const t=this.menuItems[12];e==="row-col"?t.show():t.hide()}hide(){const{el:e}=this;e.hide(),qu(e)}setPosition(e,t){if(this.isHide)return;const{el:i}=this,{width:l}=i.show().offset(),a=this.viewFn(),o=a.height/2;let r=e;a.width-e<=l&&(r-=l),i.css("left",`${r}px`),t>o?i.css("bottom",`${a.height-t}px`).css("max-height",`${t}px`).css("top","auto"):i.css("top",`${t}px`).css("max-height",`${a.height-t}px`).css("bottom","auto"),Bh(i)}};function Rye(n,e){if(e.classList.contains("active"))return;const{left:t,top:i,width:l,height:a}=e.getBoundingClientRect(),o=ut("div",`${gt}-tooltip`).html(n).show();document.body.appendChild(o.el);const r=o.box();o.css("left",`${t+l/2-r.width/2}px`).css("top",`${i+a+2}px`),va(e,"mouseleave",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)}),va(e,"click",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)})}class $X{constructor(e,t,i){this.tip=_i(`toolbar.${e.replace(/-[a-z]/g,l=>l[1].toUpperCase())}`),t&&(this.tip+=` (${t})`),this.tag=e,this.shortcut=t,this.value=i,this.el=this.element(),this.change=()=>{}}element(){const{tip:e}=this;return ut("div",`${gt}-toolbar-btn`).on("mouseenter",t=>{Rye(e,t.target)}).attr("data-tooltip",e)}setState(){}}class $r extends $X{dropdown(){}getValue(e){return e}element(){const{tag:e}=this;return this.dd=this.dropdown(),this.dd.change=t=>this.change(e,this.getValue(t)),super.element().child(this.dd)}setState(e){e&&(this.value=e,this.dd.setTitle(e))}}class qr extends Vp{constructor(e,t,i,l,...a){super("div",`${gt}-dropdown ${l}`),this.title=e,this.change=()=>{},this.headerClick=()=>{},typeof e=="string"?this.title=ut("div",`${gt}-dropdown-title`).child(e):i&&this.title.addClass("arrow-left"),this.contentEl=ut("div",`${gt}-dropdown-content`).css("width",t).hide(),this.setContentChildren(...a),this.headerEl=ut("div",`${gt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,i?ut("div",`${gt}-icon arrow-right`).child(ut("div",`${gt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...e){this.contentEl.html(""),e.length>0&&this.contentEl.children(...e)}setTitle(e){this.title.html(e),this.hide()}show(){const{contentEl:e}=this;e.show(),this.parent().active(),Bh(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),qu(this.parent())}}function Tye(n){return ut("div",`${gt}-item`).child(new Jl(n))}class PS extends qr{constructor(e,t){const i=new Jl(`align-${t}`),l=e.map(a=>Tye(`align-${a}`).on("click",()=>{this.setTitle(a),this.change(a)}));super(i,"auto",!0,"bottom-left",...l)}setTitle(e){this.title.setName(`align-${e}`),this.hide()}}class xye extends $r{constructor(e){super("align","",e)}dropdown(){const{value:e}=this;return new PS(["left","center","right"],e)}}class Cye extends $r{constructor(e){super("valign","",e)}dropdown(){const{value:e}=this;return new PS(["top","middle","bottom"],e)}}class ko extends $X{element(){const{tag:e}=this;return super.element().child(new Jl(e)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(e){this.el.active(e)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class Sye extends ko{constructor(){super("autofilter")}setState(){}}class zye extends ko{constructor(){super("font-bold","Ctrl+B")}}class kye extends ko{constructor(){super("font-italic","Ctrl+I")}}class Fye extends ko{constructor(){super("strike","Ctrl+U")}}class Jye extends ko{constructor(){super("underline","Ctrl+U")}}const Dye=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],Oye=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],jye=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function BZ(n){return ut("td","").child(ut("div",`${gt}-color-palette-cell`).on("click.stop",()=>this.change(n)).css("background-color",n))}class Uye{constructor(){this.el=ut("div",`${gt}-color-palette`),this.change=()=>{};const e=ut("table","").children(ut("tbody","").children(ut("tr",`${gt}-theme-color-placeholders`).children(...Dye.map(t=>BZ.call(this,t))),...Oye.map(t=>ut("tr",`${gt}-theme-colors`).children(...t.map(i=>BZ.call(this,i)))),ut("tr",`${gt}-standard-colors`).children(...jye.map(t=>BZ.call(this,t)))));this.el.child(e)}}class qX extends qr{constructor(e,t){const i=new Jl(e).css("height","16px").css("border-bottom",`3px solid ${t}`),l=new Uye;l.change=a=>{this.setTitle(a),this.change(a)},super(i,"auto",!1,"bottom-left",l.el)}setTitle(e){this.title.css("border-color",e),this.hide()}}const Eye=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class Kye extends qr{constructor(e){const t=new Jl("line-type");let i=0;const l=Eye.map((a,o)=>ut("div",`${gt}-item state ${e===a[0]?"checked":""}`).on("click",()=>{l[i].toggle("checked"),l[o].toggle("checked"),i=o,this.hide(),this.change(a)}).child(ut("div",`${gt}-line-type`).html(a[1])));super(t,"auto",!1,"bottom-left",...l)}}function aL(...n){return ut("table","").child(ut("tbody","").children(...n))}function rL(n){return ut("td","").child(ut("div",`${gt}-border-palette-cell`).child(new Jl(`border-${n}`)).on("click",()=>{this.mode=n;const{mode:e,style:t,color:i}=this;this.change({mode:e,style:t,color:i})}))}class Hye{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new qX("line-color",this.color),this.ddColor.change=t=>{this.color=t},this.ddType=new Kye(this.style),this.ddType.change=([t])=>{this.style=t},this.el=ut("div",`${gt}-border-palette`);const e=aL(ut("tr","").children(ut("td",`${gt}-border-palette-left`).child(aL(ut("tr","").children(...["all","inside","horizontal","vertical","outside"].map(t=>rL.call(this,t))),ut("tr","").children(...["left","top","right","bottom","none"].map(t=>rL.call(this,t))))),ut("td",`${gt}-border-palette-right`).children(ut("div",`${gt}-toolbar-btn`).child(this.ddColor.el),ut("div",`${gt}-toolbar-btn`).child(this.ddType.el))));this.el.child(e)}}class Pye extends qr{constructor(){const e=new Jl("border-all"),t=new Hye;t.change=i=>{this.change(i),this.hide()},super(e,"auto",!1,"bottom-left",t.el)}}class Qye extends $r{constructor(){super("border")}dropdown(){return new Pye}}class Lp extends $X{element(){return super.element().child(new Jl(this.tag)).on("click",()=>this.change(this.tag))}setState(e){this.el.disabled(e)}}class Bye extends Lp{constructor(){super("clearformat")}}class Aye extends ko{constructor(){super("paintformat")}setState(){}}class _ye extends $r{constructor(e){super("color",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new qX(e,t)}}class $ye extends $r{constructor(e){super("bgcolor",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new qX(e,t)}}class qye extends qr{constructor(){const e=tW.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(`${t.pt}`),this.change(t)}).child(`${t.pt}`));super("10","60px",!0,"bottom-left",...e)}}let eZe=class extends $r{constructor(){super("font-size")}getValue(e){return e.pt}dropdown(){return new qye}};class tZe extends qr{constructor(){const e=nL.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(t.title),this.change(t)}).child(t.title));super(nL[0].title,"160px",!0,"bottom-left",...e)}}class nZe extends $r{constructor(){super("font-name")}getValue(e){return e.key}dropdown(){return new tZe}}class iZe extends qr{constructor(){let e=zd.slice(0);e.splice(2,0,{key:"divider"}),e.splice(8,0,{key:"divider"}),e=e.map(t=>{const i=ut("div",`${gt}-item`);return t.key==="divider"?i.addClass("divider"):(i.child(t.title()).on("click",()=>{this.setTitle(t.title()),this.change(t)}),t.label&&i.child(ut("div","label").html(t.label))),i}),super("Normal","220px",!0,"bottom-left",...e)}setTitle(e){for(let t=0;tut("div",`${gt}-item`).on("click",()=>{this.hide(),this.change(t)}).child(t.key));super(new Jl("formula"),"180px",!0,"bottom-left",...e)}}class rZe extends $r{constructor(){super("formula")}getValue(e){return e.key}dropdown(){return new aZe}}class oZe extends ko{constructor(){super("freeze")}}class sZe extends ko{constructor(){super("merge")}setState(e,t){this.el.active(e).disabled(t)}}class cZe extends Lp{constructor(){super("redo","Ctrl+Y")}}class uZe extends Lp{constructor(){super("undo","Ctrl+Z")}}class dZe extends Lp{constructor(){super("print","Ctrl+P")}}class hZe extends ko{constructor(){super("textwrap")}}let fZe=class extends qr{constructor(){const e=new Jl("ellipsis"),t=ut("div",`${gt}-toolbar-more`);super(e,"auto",!1,"bottom-right",t),this.moreBtns=t,this.contentEl.css("max-width","420px")}};class bZe extends $r{constructor(){super("more"),this.el.hide()}dropdown(){return new fZe}show(){this.el.show()}hide(){this.el.hide()}}function eu(){return ut("div",`${gt}-toolbar-divider`)}function mZe(){this.btns2=[],this.items.forEach(n=>{if(Array.isArray(n))n.forEach(({el:e})=>{const t=e.box(),{marginLeft:i,marginRight:l}=e.computedStyle();this.btns2.push([e,t.width+parseInt(i,10)+parseInt(l,10)])});else{const e=n.box(),{marginLeft:t,marginRight:i}=n.computedStyle();this.btns2.push([n,e.width+parseInt(t,10)+parseInt(i,10)])}})}function oL(){const{el:n,btns:e,moreEl:t,btns2:i}=this,{moreBtns:l,contentEl:a}=t.dd;n.css("width",`${this.widthFn()-60}px`);const o=n.box();let r=160,f=12;const v=[],b=[];i.forEach(([Z,p],y)=>{r+=p,y===i.length-1||r0?t.show():t.hide()}class pZe{constructor(e,t,i=!1){this.data=e,this.change=()=>{},this.widthFn=t,this.isHide=i;const l=e.defaultStyle();this.items=[[this.undoEl=new uZe,this.redoEl=new cZe,new dZe,this.paintformatEl=new Aye,this.clearformatEl=new Bye],eu(),[this.formatEl=new lZe],eu(),[this.fontEl=new nZe,this.fontSizeEl=new eZe],eu(),[this.boldEl=new zye,this.italicEl=new kye,this.underlineEl=new Jye,this.strikeEl=new Fye,this.textColorEl=new _ye(l.color)],eu(),[this.fillColorEl=new $ye(l.bgcolor),this.borderEl=new Qye,this.mergeEl=new sZe],eu(),[this.alignEl=new xye(l.align),this.valignEl=new Cye(l.valign),this.textwrapEl=new hZe],eu(),[this.freezeEl=new oZe,this.autofilterEl=new Sye,this.formulaEl=new rZe,this.moreEl=new bZe]],this.el=ut("div",`${gt}-toolbar`),this.btns=ut("div",`${gt}-toolbar-btns`),this.items.forEach(a=>{Array.isArray(a)?a.forEach(o=>{this.btns.child(o.el),o.change=(...r)=>{this.change(...r)}}):this.btns.child(a.el)}),this.el.child(this.btns),i?this.el.hide():(this.reset(),setTimeout(()=>{mZe.call(this),oL.call(this)},0),va(window,"resize",()=>{oL.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(e){this[`${e}El`].click()}resetData(e){this.data=e,this.reset()}reset(){if(this.isHide)return;const{data:e}=this,t=e.getSelectedCellStyle();this.undoEl.setState(!e.canUndo()),this.redoEl.setState(!e.canRedo()),this.mergeEl.setState(e.canUnmerge(),!e.selector.multiple()),this.autofilterEl.setState(!e.canAutofilter());const{font:i,format:l}=t;this.formatEl.setState(l),this.fontEl.setState(i.name),this.fontSizeEl.setState(i.size),this.boldEl.setState(i.bold),this.italicEl.setState(i.italic),this.underlineEl.setState(t.underline),this.strikeEl.setState(t.strike),this.textColorEl.setState(t.color),this.fillColorEl.setState(t.bgcolor),this.alignEl.setState(t.align),this.valignEl.setState(t.valign),this.textwrapEl.setState(t.textwrap),this.freezeEl.setState(e.freezeIsActive())}}class yZe{constructor(e,t,i="600px"){this.title=e,this.el=ut("div",`${gt}-modal`).css("width",i).children(ut("div",`${gt}-modal-header`).children(new Jl("close").on("click.stop",()=>this.hide()),this.title),ut("div",`${gt}-modal-content`).children(...t)).hide()}show(){this.dimmer=ut("div",`${gt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:e,height:t}=this.el.show().box(),{clientHeight:i,clientWidth:l}=document.documentElement;this.el.offset({left:(l-e)/2,top:(i-t)/3}),window.xkeydownEsc=a=>{a.keyCode===27&&this.hide()},va(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),c0(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class ou{constructor(e,t){this.vchange=()=>{},this.el=ut("div",`${gt}-form-input`),this.input=ut("input","").css("width",e).on("input",i=>this.vchange(i)).attr("placeholder",t),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(e){this.input.attr("placeholder",e)}val(e){return this.input.val(e)}}class AZ{constructor(e,t,i,l=o=>o,a=()=>{}){this.key=e,this.getTitle=l,this.vchange=()=>{},this.el=ut("div",`${gt}-form-select`),this.suggest=new DS(t.map(o=>({key:o,title:this.getTitle(o)})),o=>{this.itemClick(o.key),a(o.key),this.vchange(o.key)},i,this.el),this.el.children(this.itemEl=ut("div","input-text").html(this.getTitle(e)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(e){this.key=e,this.itemEl.html(this.getTitle(e))}val(e){return e!==void 0?(this.key=e,this.itemEl.html(this.getTitle(e)),this):this.key}}const ZZe={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class es{constructor(e,t,i,l){this.label="",this.rule=t,i&&(this.label=ut("label","label").css("width",`${l}px`).html(i)),this.tip=ut("div","tip").child("tip").hide(),this.input=e,this.input.vchange=()=>this.validate(),this.el=ut("div",`${gt}-form-field`).children(this.label,e.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(e){return this.input.val(e)}hint(e){this.input.hint(e)}validate(){const{input:e,rule:t,tip:i,el:l}=this,a=e.val();return t.required&&/^\s*$/.test(a)?(i.html(_i("validation.required")),l.addClass("error"),!1):(t.type||t.pattern)&&!(t.pattern||ZZe[t.type]).test(a)?(i.html(_i("validation.notMatch")),l.addClass("error"),!1):(l.removeClass("error"),!0)}}const sL=100;class vZe extends yZe{constructor(){const e=new es(new AZ("cell",["cell"],"100%",v=>_i(`dataValidation.modeType.${v}`)),{required:!0},`${_i("dataValidation.range")}:`,sL),t=new es(new ou("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),i=new es(new AZ("list",["list","number","date","phone","email"],"100%",v=>_i(`dataValidation.type.${v}`),v=>this.criteriaSelected(v)),{required:!0},`${_i("dataValidation.criteria")}:`,sL),l=new es(new AZ("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",v=>_i(`dataValidation.operator.${v}`),v=>this.criteriaOperatorSelected(v)),{required:!0}).hide(),a=new es(new ou("70px","10"),{required:!0}).hide(),o=new es(new ou("70px","100"),{required:!0,type:"number"}).hide(),r=new es(new ou("120px","a,b,c"),{required:!0}),f=new es(new ou("70px","10"),{required:!0,type:"number"}).hide();super(_i("contextmenu.validation"),[ut("div",`${gt}-form-fields`).children(e.el,t.el),ut("div",`${gt}-form-fields`).children(i.el,l.el,a.el,o.el,f.el,r.el),ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",()=>this.btnClick("cancel")),new yc("remove").on("click",()=>this.btnClick("remove")),new yc("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=e,this.rf=t,this.cf=i,this.of=l,this.minvf=a,this.maxvf=o,this.vf=f,this.svf=r,this.change=()=>{}}showVf(e){const t=e==="date"?"2018-11-12":"10",{vf:i}=this;i.input.hint(t),i.show()}criteriaSelected(e){const{of:t,minvf:i,maxvf:l,vf:a,svf:o}=this;e==="date"||e==="number"?(t.show(),i.rule.type=e,l.rule.type=e,e==="date"?(i.hint("2018-11-12"),l.hint("2019-11-12")):(i.hint("10"),l.hint("100")),i.show(),l.show(),a.hide(),o.hide()):(e==="list"?o.show():o.hide(),a.hide(),t.hide(),i.hide(),l.hide())}criteriaOperatorSelected(e){if(!e)return;const{minvf:t,maxvf:i,vf:l}=this;if(e==="be"||e==="nbe")t.show(),i.show(),l.hide();else{const a=this.cf.val();l.rule.type=a,a==="date"?l.hint("2018-11-12"):l.hint("10"),l.show(),t.hide(),i.hide()}}btnClick(e){if(e==="cancel")this.hide();else if(e==="remove")this.change("remove"),this.hide();else if(e==="save"){const t=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let f=0;fthis.itemClick(n))}function WZe(n){const{filterbEl:e,filterValues:t}=this;e.html(""),Object.keys(n).forEach((l,a)=>{const o=n[l],r=t.includes(l)?"checked":"";e.child(ut("div",`${gt}-item state ${r}`).on("click.stop",()=>this.filterClick(a,l)).children(l===""?_i("filter.empty"):l,ut("div","label").html(`(${o})`)))})}function uL(){const{filterhEl:n,filterValues:e,values:t}=this;n.html(`${e.length} / ${t.length}`),n.checked(e.length===t.length)}class GZe{constructor(){this.filterbEl=ut("div",`${gt}-body`),this.filterhEl=ut("div",`${gt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=ut("div",`${gt}-sort-filter`).children(this.sortAscEl=cL.call(this,"asc"),this.sortDescEl=cL.call(this,"desc"),QS("divider"),ut("div",`${gt}-filter`).children(this.filterhEl,this.filterbEl),ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",()=>this.btnClick("cancel")),new yc("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(e){if(e==="ok"){const{ci:t,sort:i,filterValues:l}=this;this.ok&&this.ok(t,i,"in",l)}this.hide()}itemClick(e){this.sort=e;const{sortAscEl:t,sortDescEl:i}=this;t.checked(e==="asc"),i.checked(e==="desc")}filterClick(e,t){const{filterbEl:i,filterValues:l,values:a}=this,o=i.children();t==="all"?o.length===l.length?(this.filterValues=[],o.forEach(r=>ut(r).checked(!1))):(this.filterValues=Array.from(a),o.forEach(r=>ut(r).checked(!0))):ut(o[e]).toggle("checked")?l.push(t):l.splice(l.findIndex(f=>f===t),1),uL.call(this)}set(e,t,i,l){this.ci=e;const{sortAscEl:a,sortDescEl:o}=this;l!==null?(this.sort=l.order,a.checked(l.asc()),o.checked(l.desc())):(this.sortDesc=null,a.checked(!1),o.checked(!1)),this.values=Object.keys(t),this.filterValues=i?Array.from(i.value):Object.keys(t),WZe.call(this,t,i),uL.call(this)}setOffset(e){this.el.offset(e).show();let t=1;Bh(this.el,()=>{t<=0&&this.hide(),t-=1})}show(){this.el.show()}hide(){this.el.hide(),qu(this.el)}}function BS(n,e){const t=ut("div",`${gt}-toast`),i=ut("div",`${gt}-dimmer active`),l=()=>{document.body.removeChild(t.el),document.body.removeChild(i.el)};t.children(ut("div",`${gt}-toast-header`).children(new Jl("close").on("click.stop",()=>l()),n),ut("div",`${gt}-toast-content`).html(e)),document.body.appendChild(t.el),document.body.appendChild(i.el);const{width:a,height:o}=t.box(),{clientHeight:r,clientWidth:f}=document.documentElement;t.offset({left:(f-a)/2,top:(r-o)/3})}function _Z(n,e){let t;return(...i)=>{const l=this,a=i;t||(t=setTimeout(()=>{t=null,n.apply(l,a)},e))}}function XZe(){const{data:n,verticalScrollbar:e,horizontalScrollbar:t}=this,{l:i,t:l,left:a,top:o,width:r,height:f}=n.getSelectedRect(),v=this.getTableOffset();if(Math.abs(a)+r>v.width)t.move({left:i+r-v.width});else{const b=n.freezeTotalWidth();av.height)e.move({top:l+f-v.height-1});else{const b=n.freezeTotalHeight();o0&&(r-=1):e==="right"?(v!==r&&(r=v),r0&&(o-=1):e==="down"?(f!==o&&(o=f),of.indexWidth&&t>r.height){i.hide(),l.hide();return}const v=a.box(),b=o.getCellRectByXY(n.offsetX,n.offsetY);b.ri>=0&&b.ci===-1?(b.width=f.indexWidth,i.show(b,{width:v.width}),r.isHide(b.ri-1)?i.showUnhide(b.ri):i.hideUnhide()):i.hide(),b.ri===-1&&b.ci>=0?(b.height=r.height,l.show(b,{height:v.height}),f.isHide(b.ci-1)?l.showUnhide(b.ci):l.hideUnhide()):l.hide()}function MZe(n){const{verticalScrollbar:e,horizontalScrollbar:t,data:i}=this,{top:l}=e.scroll(),{left:a}=t.scroll(),{rows:o,cols:r}=i,{deltaY:f,deltaX:v}=n,b=(N,G)=>{let d=N,u=0;do u=G(d),d+=1;while(u<=0);return u},Z=N=>{if(N>0){const G=i.scroll.ri+1;if(Go.getHeight(u));e.move({top:l+d-1})}}else{const G=i.scroll.ri-1;if(G>=0){const d=b(G,u=>o.getHeight(u));e.move({top:G===0?0:l-d})}}},p=N=>{if(N>0){const G=i.scroll.ci+1;if(Gr.getWidth(u));t.move({left:a+d-1})}}else{const G=i.scroll.ci-1;if(G>=0){const d=b(G,u=>r.getWidth(u));t.move({left:G===0?0:a-d})}}},y=Math.abs(f),X=Math.abs(v),m=Math.max(y,X);/Firefox/i.test(window.navigator.userAgent)&&_Z(Z(n.detail),50),m===X&&_Z(p(v),50),m===y&&_Z(Z(f),50)}function IZe(n,e){const{verticalScrollbar:t,horizontalScrollbar:i}=this,{top:l}=t.scroll(),{left:a}=i.scroll();n==="left"||n==="right"?i.move({left:a-e}):(n==="up"||n==="down")&&t.move({top:l-e})}function eN(){const{data:n,verticalScrollbar:e}=this,{height:t}=this.getTableOffset(),i=n.exceptRowTotalHeight(0,-1);e.set(t,n.rows.totalHeight()-i)}function tN(){const{data:n,horizontalScrollbar:e}=this,{width:t}=this.getTableOffset();n&&e.set(t,n.cols.totalWidth())}function YZe(){const{selector:n,data:e,editor:t}=this,[i,l]=e.freeze;if(i>0||l>0){const a=e.freezeTotalWidth(),o=e.freezeTotalHeight();t.setFreezeLengths(a,o)}n.resetAreaOffset()}function Za(){const{tableEl:n,overlayerEl:e,overlayerCEl:t,table:i,toolbar:l,selector:a,el:o}=this,r=this.getTableOffset(),f=this.getRect();n.attr(f),e.offset(f),t.offset(r),o.css("width",`${f.width}px`),eN.call(this),tN.call(this),YZe.call(this),i.render(),l.reset(),a.reset()}function Ah(){const{data:n,selector:e}=this;n.clearClipboard(),e.hideClipboard()}function iW(){const{data:n,selector:e}=this;n.copy(),n.copyToSystemClipboard(),e.showClipboard()}function dL(){const{data:n,selector:e}=this;n.cut(),e.showClipboard()}function kd(n,e){const{data:t}=this;if(t.settings.mode!=="read"){if(t.paste(n,i=>BS("Tip",i)))Za.call(this);else if(e){const i=e.clipboardData.getData("text/plain");this.data.pasteFromText(i),Za.call(this)}}}function wZe(){this.data.hideRowsOrCols(),Za.call(this)}function hL(n,e){this.data.unhideRowsOrCols(n,e),Za.call(this)}function gZe(){const{data:n}=this;n.autofilter(),Za.call(this)}function VZe(){const{toolbar:n}=this;n.paintformatActive()&&(kd.call(this,"format"),Ah.call(this),n.paintformatToggle())}function fL(n){const{selector:e,data:t,table:i,sortFilter:l}=this,{offsetX:a,offsetY:o}=n,r=n.target.className===`${gt}-selector-corner`,f=t.getCellRectByXY(a,o),{left:v,top:b,width:Z,height:p}=f;let{ri:y,ci:X}=f;const{autoFilter:m}=t;if(m.includes(y,X)&&v+Z-20t.rows.getCell(G,d));l.hide(),l.set(X,N,m.getFilter(X),m.getSort(X)),l.setOffset({left:v,top:b+p+2});return}n.shiftKey||(r?e.showAutofill(y,X):Zc.call(this,!1,y,X),SS(window,N=>{({ri:y,ci:X}=t.getCellRectByXY(N.offsetX,N.offsetY)),r?e.showAutofill(y,X):N.buttons===1&&!N.shiftKey&&Zc.call(this,!0,y,X,!0,!0)},()=>{r&&e.arange&&t.settings.mode!=="read"&&t.autofill(e.arange,"all",N=>BS("Tip",N))&&i.render(),e.hideAutofill(),VZe.call(this)})),!r&&n.buttons===1&&n.shiftKey&&Zc.call(this,!0,y,X)}function _h(){const{editor:n,data:e}=this,t=e.getSelectedRect(),i=this.getTableOffset();let l="top";t.top>i.height/2&&(l="bottom"),n.setOffset(t,l)}function Fd(){const{editor:n,data:e}=this;e.settings.mode!=="read"&&(_h.call(this),n.setCell(e.getSelectedCell(),e.getSelectedValidator()),Ah.call(this))}function LZe(n){const{data:e,table:t,selector:i}=this;e.scrolly(n,()=>{i.resetBRLAreaOffset(),_h.call(this),t.render()})}function RZe(n){const{data:e,table:t,selector:i}=this;e.scrollx(n,()=>{i.resetBRTAreaOffset(),_h.call(this),t.render()})}function TZe(n,e){const{ri:t}=n,{table:i,selector:l,data:a}=this;a.rows.setHeight(t,e),i.render(),l.resetAreaOffset(),eN.call(this),_h.call(this)}function xZe(n,e){const{ci:t}=n,{table:i,selector:l,data:a}=this;a.cols.setWidth(t,e),i.render(),l.resetAreaOffset(),tN.call(this),_h.call(this)}function $Z(n,e="finished"){const{data:t,table:i}=this;if(t.settings.mode==="read")return;t.setSelectedCellText(n,e);const{ri:l,ci:a}=t.selector;e==="finished"?i.render():this.trigger("cell-edited",n,l,a)}function fm(n){const{data:e}=this;e.settings.mode!=="read"&&(n==="insert-row"?e.insert("row"):n==="delete-row"?e.delete("row"):n==="insert-column"?e.insert("column"):n==="delete-column"?e.delete("column"):n==="delete-cell"?e.deleteCell():n==="delete-cell-format"?e.deleteCell("format"):n==="delete-cell-text"?e.deleteCell("text"):n==="cell-printable"?e.setSelectedCellAttr("printable",!0):n==="cell-non-printable"?e.setSelectedCellAttr("printable",!1):n==="cell-editable"?e.setSelectedCellAttr("editable",!0):n==="cell-non-editable"&&e.setSelectedCellAttr("editable",!1),Ah.call(this),Za.call(this))}function CZe(n,e){const{data:t}=this;if(n==="undo")this.undo();else if(n==="redo")this.redo();else if(n==="print")this.print.preview();else if(n==="paintformat")e===!0?iW.call(this):Ah.call(this);else if(n==="clearformat")fm.call(this,"delete-cell-format");else if(n!=="link"){if(n!=="chart")if(n==="autofilter")gZe.call(this);else if(n==="freeze")if(e){const{ri:i,ci:l}=t.selector;this.freeze(i,l)}else this.freeze(0,0);else t.setSelectedCellAttr(n,e),n==="formula"&&!t.selector.multiple()&&Fd.call(this),Za.call(this)}}function SZe(n,e,t,i){this.data.setAutoFilter(n,e,t,i),Za.call(this)}function zZe(){const{selector:n,overlayerEl:e,rowResizer:t,colResizer:i,verticalScrollbar:l,horizontalScrollbar:a,editor:o,contextMenu:r,toolbar:f,modalValidation:v,sortFilter:b}=this;e.on("mousemove",Z=>{NZe.call(this,Z)}).on("mousedown",Z=>{o.clear(),r.hide(),Z.buttons===2?(this.data.xyInSelectedRect(Z.offsetX,Z.offsetY)||fL.call(this,Z),r.setPosition(Z.offsetX,Z.offsetY),Z.stopPropagation()):Z.detail===2?Fd.call(this):fL.call(this,Z)}).on("mousewheel.stop",Z=>{MZe.call(this,Z)}).on("mouseout",Z=>{const{offsetX:p,offsetY:y}=Z;y<=0&&i.hide(),p<=0&&t.hide()}),n.inputChange=Z=>{$Z.call(this,Z,"input"),Fd.call(this)},Upe(e.el,{move:(Z,p)=>{IZe.call(this,Z,p)}}),f.change=(Z,p)=>CZe.call(this,Z,p),b.ok=(Z,p,y,X)=>SZe.call(this,Z,p,y,X),t.finishedFn=(Z,p)=>{TZe.call(this,Z,p)},i.finishedFn=(Z,p)=>{xZe.call(this,Z,p)},t.unhideFn=Z=>{hL.call(this,"row",Z)},i.unhideFn=Z=>{hL.call(this,"col",Z)},l.moveFn=(Z,p)=>{LZe.call(this,Z,p)},a.moveFn=(Z,p)=>{RZe.call(this,Z,p)},o.change=(Z,p)=>{$Z.call(this,p,Z)},v.change=(Z,...p)=>{Z==="save"?this.data.addValidation(...p):this.data.removeValidation()},r.itemClick=Z=>{Z==="validation"?v.setValue(this.data.getSelectedValidation()):Z==="copy"?iW.call(this):Z==="cut"?dL.call(this):Z==="paste"?kd.call(this,"all"):Z==="paste-value"?kd.call(this,"text"):Z==="paste-format"?kd.call(this,"format"):Z==="hide"?wZe.call(this):fm.call(this,Z)},va(window,"resize",()=>{this.reload()}),va(window,"click",Z=>{this.focusing=e.contains(Z.target)}),va(window,"paste",Z=>{this.focusing&&(kd.call(this,"all",Z),Z.preventDefault())}),va(window,"keydown",Z=>{if(!this.focusing)return;const p=Z.keyCode||Z.which,{key:y,ctrlKey:X,shiftKey:m,metaKey:N}=Z;if(X||N)switch(p){case 90:this.undo(),Z.preventDefault();break;case 89:this.redo(),Z.preventDefault();break;case 67:iW.call(this),Z.preventDefault();break;case 88:dL.call(this),Z.preventDefault();break;case 85:f.trigger("underline"),Z.preventDefault();break;case 86:break;case 37:Fr.call(this,m,"row-first"),Z.preventDefault();break;case 38:Fr.call(this,m,"col-first"),Z.preventDefault();break;case 39:Fr.call(this,m,"row-last"),Z.preventDefault();break;case 40:Fr.call(this,m,"col-last"),Z.preventDefault();break;case 32:Zc.call(this,!1,-1,this.data.selector.ci,!1),Z.preventDefault();break;case 66:f.trigger("bold");break;case 73:f.trigger("italic");break}else{switch(p){case 32:m&&Zc.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:r.hide(),Ah.call(this);break;case 37:Fr.call(this,m,"left"),Z.preventDefault();break;case 38:Fr.call(this,m,"up"),Z.preventDefault();break;case 39:Fr.call(this,m,"right"),Z.preventDefault();break;case 40:Fr.call(this,m,"down"),Z.preventDefault();break;case 9:o.clear(),Fr.call(this,!1,m?"left":"right"),Z.preventDefault();break;case 13:o.clear(),Fr.call(this,!1,m?"up":"down"),Z.preventDefault();break;case 8:fm.call(this,"delete-cell-text"),Z.preventDefault();break}y==="Delete"?(fm.call(this,"delete-cell-text"),Z.preventDefault()):p>=65&&p<=90||p>=48&&p<=57||p>=96&&p<=105||Z.key==="="?($Z.call(this,Z.key,"input"),Fd.call(this)):p===113&&Fd.call(this)}})}class kZe{constructor(e,t){this.eventMap=Epe();const{view:i,showToolbar:l,showContextmenu:a}=t.settings;this.el=ut("div",`${gt}-sheet`),this.toolbar=new pZe(t,i.width,!l),this.print=new Yye(t),e.children(this.toolbar.el,this.el,this.print.el),this.data=t,this.tableEl=ut("canvas",`${gt}-table`),this.rowResizer=new BV(!1,t.rows.height),this.colResizer=new BV(!0,t.cols.minWidth),this.verticalScrollbar=new AV(!0),this.horizontalScrollbar=new AV(!1),this.editor=new sye(mye,()=>this.getTableOffset(),t.rows.height),this.modalValidation=new vZe,this.contextMenu=new Lye(()=>this.getRect(),!a),this.selector=new Ppe(t),this.overlayerCEl=ut("div",`${gt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=ut("div",`${gt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new GZe,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new Nye(this.tableEl.el,t),zZe.call(this),Za.call(this),Zc.call(this,!1,0,0)}on(e,t){return this.eventMap.on(e,t),this}trigger(e,...t){const{eventMap:i}=this;i.fire(e,t)}resetData(e){this.editor.clear(),this.data=e,eN.call(this),tN.call(this),this.toolbar.resetData(e),this.print.resetData(e),this.selector.resetData(e),this.table.resetData(e)}loadData(e){return this.data.setData(e),Za.call(this),this}freeze(e,t){const{data:i}=this;return i.setFreeze(e,t),Za.call(this),this}undo(){this.data.undo(),Za.call(this)}redo(){this.data.redo(),Za.call(this)}reload(){return Za.call(this),this}getRect(){const{data:e}=this;return{width:e.viewWidth(),height:e.viewHeight()}}getTableOffset(){const{rows:e,cols:t}=this.data,{width:i,height:l}=this.getRect();return{width:i-t.indexWidth,height:l-e.height,left:t.indexWidth,top:e.height}}}class FZe extends qr{constructor(e){const t=new Jl("ellipsis");super(t,"auto",!1,"top-left"),this.contentClick=e}reset(e){const t=e.map((i,l)=>ut("div",`${gt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(l),this.hide()}).child(i));this.setContentChildren(...t)}setTitle(){}}const JZe=[{key:"delete",title:Hn("contextmenu.deleteSheet")}];function DZe(n){return ut("div",`${gt}-item`).child(n.title()).on("click",()=>{this.itemClick(n.key),this.hide()})}function OZe(){return JZe.map(n=>DZe.call(this,n))}class jZe{constructor(){this.el=ut("div",`${gt}-contextmenu`).css("width","160px").children(...OZe.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:e}=this;e.hide(),qu(e)}setOffset(e){const{el:t}=this;t.offset(e),t.show(),Bh(t)}}class UZe{constructor(e=()=>{},t=()=>{},i=()=>{},l=()=>{}){this.swapFunc=t,this.updateFunc=l,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new FZe(a=>{this.clickSwap2(this.items[a])}),this.contextMenu=new jZe,this.contextMenu.itemClick=i,this.el=ut("div",`${gt}-bottombar`).children(this.contextMenu.el,this.menuEl=ut("ul",`${gt}-menu`).child(ut("li","").children(new Jl("add").on("click",()=>{e()}),ut("span","").child(this.moreEl))))}addItem(e,t){this.dataNames.push(e);const i=ut("li",t?"active":"").child(e);i.on("click",()=>{this.clickSwap2(i)}).on("contextmenu",l=>{const{offsetLeft:a,offsetHeight:o}=l.target;this.contextMenu.setOffset({left:a,bottom:o+1}),this.deleteEl=i}).on("dblclick",()=>{const l=i.html(),a=new ou("auto","");a.val(l),a.input.on("blur",({target:o})=>{const{value:r}=o,f=this.dataNames.findIndex(v=>v===l);this.renameItem(f,r)}),i.html("").child(a.el),a.focus()}),t&&this.clickSwap(i),this.items.push(i),this.menuEl.child(i),this.moreEl.reset(this.dataNames)}renameItem(e,t){this.dataNames.splice(e,1,t),this.moreEl.reset(this.dataNames),this.items[e].html("").child(t),this.updateFunc(e,t)}clear(){this.items.forEach(e=>{this.menuEl.removeChild(e.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:e,deleteEl:t}=this;if(this.items.length>1){const i=this.items.findIndex(l=>l===t);if(this.items.splice(i,1),this.dataNames.splice(i,1),this.menuEl.removeChild(t.el),this.moreEl.reset(this.dataNames),e===t){const[l]=this.items;return this.activeEl=l,this.activeEl.toggle(),[i,0]}return[i,-1]}return[-1]}clickSwap2(e){const t=this.items.findIndex(i=>i===e);this.clickSwap(e),this.activeEl.toggle(),this.swapFunc(t)}clickSwap(e){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=e}}class AS{constructor(e,t={}){let i=e;this.options={showBottomBar:!0,...t},this.sheetIndex=1,this.datas=[],typeof e=="string"&&(i=document.querySelector(e)),this.bottombar=this.options.showBottomBar?new UZe(()=>{const a=this.addSheet();this.sheet.resetData(a)},a=>{const o=this.datas[a];this.sheet.resetData(o)},()=>{this.deleteSheet()},(a,o)=>{this.datas[a].name=o}):null,this.data=this.addSheet();const l=ut("div",`${gt}`).on("contextmenu",a=>a.preventDefault());i.appendChild(l.el),this.sheet=new kZe(l,this.data),this.bottombar!==null&&l.child(this.bottombar.el)}addSheet(e,t=!0){const i=e||`sheet${this.sheetIndex}`,l=new jpe(i,this.options);return l.change=(...a)=>{this.sheet.trigger("change",...a)},this.datas.push(l),this.bottombar!==null&&this.bottombar.addItem(i,t),this.sheetIndex+=1,l}deleteSheet(){if(this.bottombar===null)return;const[e,t]=this.bottombar.deleteItem();e>=0&&(this.datas.splice(e,1),t>=0&&this.sheet.resetData(this.datas[t]))}loadData(e){const t=Array.isArray(e)?e:[e];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],t.length>0)for(let i=0;ie.getData())}cellText(e,t,i,l=0){return this.datas[l].setCellText(e,t,i,"finished"),this}cell(e,t,i=0){return this.datas[i].getCell(e,t)}cellStyle(e,t,i=0){return this.datas[i].getCellStyle(e,t)}reRender(){return this.sheet.table.render(),this}on(e,t){return this.sheet.on(e,t),this}validate(){const{validations:e}=this.data;return e.errors.size<=0}change(e){return this.sheet.on("change",e),this}static locale(e,t){xS(e,t)}}const EZe=(n,e={})=>new AS(n,e);window&&(window.x_spreadsheet=EZe,window.x_spreadsheet.locale=(n,e)=>xS(n,e));var lW={},KZe={get exports(){return lW},set exports(n){lW=n}};(function(n,e){(function(t){n.exports=t()})(function(){return function(){function t(i,l,a){function o(v,b){if(!l[v]){if(!i[v]){var Z=typeof bs=="function"&&bs;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=l[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,l,a)}return l[v].exports}for(var r=typeof bs=="function"&&bs,f=0;f2&&arguments[2]!==void 0?arguments[2]:0;if(a(this,b),!p)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof p=="string"){var X=f.decodeAddress(p);this.nativeCol=X.col+y,this.nativeColOff=0,this.nativeRow=X.row+y,this.nativeRowOff=0}else p.nativeCol!==void 0?(this.nativeCol=p.nativeCol||0,this.nativeColOff=p.nativeColOff||0,this.nativeRow=p.nativeRow||0,this.nativeRowOff=p.nativeRowOff||0):p.col!==void 0?(this.col=p.col+y,this.row=p.row+y):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=Z}return r(b,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(p){this.nativeCol=Math.floor(p),this.nativeColOff=Math.floor((p-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(p){this.nativeRow=Math.floor(p),this.nativeRowOff=Math.floor((p-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(p){this.nativeCol=p.nativeCol,this.nativeColOff=p.nativeColOff,this.nativeRow=p.nativeRow,this.nativeRowOff=p.nativeRowOff}}],[{key:"asInstance",value:function(p){return p instanceof b||p==null?p:new b(p)}}]),b}();i.exports=v},{"../utils/col-cache":19}],3:[function(t,i,l){function a(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function o(x,R){for(var g=0;g0||this.type===x.Types.Merge}},{key:"master",get:function(){return this.type===x.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===x.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(g){if(this.type===x.Types.Merge){this._value.master.value=g;return}this._value.release(),this._value=C.create(C.getType(g),this,g)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(g){this._comment=new y(g)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return v.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var g=this._row.worksheet;return{sheetName:g.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(g){this.names=[g]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(g){var S=this,L=this.workbook.definedNames;L.removeAllNames(this.fullAddress),g.forEach(function(V){L.addEx(S.fullAddress,V)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(g){this._dataValidations.add(this.address,g)}},{key:"model",get:function(){var g=this._value.model;return g.style=this.style,this._comment&&(g.comment=this._comment.model),g},set:function(g){if(this._value.release(),this._value=C.create(g.type,this),this._value.model=g,g.comment)switch(g.comment.type){case"note":this._comment=y.fromModel(g.comment);break}g.style?this.style=g.style:this.style={}}}]),x}();X.Types=b.ValueType;var m=function(){function x(R){a(this,x),this.model={address:R.address,type:X.Types.Null}}return r(x,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(g){}},{key:"type",get:function(){return X.Types.Null}},{key:"effectiveType",get:function(){return X.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),N=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Number,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Number}},{key:"effectiveType",get:function(){return X.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),G=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),d=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toString",value:function(){return this.model.value.richText.map(function(g){return g.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.RichText}},{key:"effectiveType",get:function(){return X.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),u=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Date,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Date}},{key:"effectiveType",get:function(){return X.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),s=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Hyperlink,text:g?g.text:void 0,hyperlink:g?g.hyperlink:void 0},g&&g.tooltip&&(this.model.tooltip=g.tooltip)}return r(x,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var g={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(g.tooltip=this.model.tooltip),g},set:function(g){this.model={text:g.text,hyperlink:g.hyperlink},g.tooltip&&(this.model.tooltip=g.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(g){this.model.text=g}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(g){this.model.hyperlink=g}},{key:"type",get:function(){return X.Types.Hyperlink}},{key:"effectiveType",get:function(){return X.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),h=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Merge,master:g?g.address:void 0},this._master=g,g&&g.addMergeRef()}return r(x,[{key:"isMergedTo",value:function(g){return g===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(g){g instanceof X?(this._master&&this._master.releaseMergeRef(),g.addMergeRef(),this._master=g):this._master.value=g}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return X.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),c=function(){function x(R,g){a(this,x),this.cell=R,this.model={address:R.address,type:X.Types.Formula,shareType:g?g.shareType:void 0,ref:g?g.ref:void 0,formula:g?g.formula:void 0,sharedFormula:g?g.sharedFormula:void 0,result:g?g.result:void 0}}return r(x,[{key:"_copyModel",value:function(g){var S={},L=function(Y){var T=g[Y];T&&(S[Y]=T)};return L("formula"),L("result"),L("ref"),L("shareType"),L("sharedFormula"),S}},{key:"validate",value:function(g){switch(C.getType(g)){case X.Types.Null:case X.Types.String:case X.Types.Number:case X.Types.Date:break;case X.Types.Hyperlink:case X.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var g=this.cell.worksheet,S=g.findCell(this.model.sharedFormula);this._translatedFormula=S&&p(S.formula,S.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(g){this.model=this._copyModel(g)}},{key:"dependencies",get:function(){var g=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),S=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:g,cells:S}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(g){this.model.formula=g}},{key:"formulaType",get:function(){return this.model.formula?b.FormulaType.Master:this.model.sharedFormula?b.FormulaType.Shared:b.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(g){this.model.result=g}},{key:"type",get:function(){return X.Types.Formula}},{key:"effectiveType",get:function(){var g=this.model.result;return g==null?b.ValueType.Null:g instanceof String||typeof g=="string"?b.ValueType.String:typeof g=="number"?b.ValueType.Number:g instanceof Date?b.ValueType.Date:g.text&&g.hyperlink?b.ValueType.Hyperlink:g.formula?b.ValueType.Formula:b.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),W=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.SharedString,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.SharedString}},{key:"effectiveType",get:function(){return X.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),M=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Boolean,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Boolean}},{key:"effectiveType",get:function(){return X.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),I=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.Error,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Error}},{key:"effectiveType",get:function(){return X.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),w=function(){function x(R,g){a(this,x),this.model={address:R.address,type:X.Types.String,value:JSON.stringify(g),rawValue:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(g){this.model.rawValue=g,this.model.value=JSON.stringify(g)}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),C={getType:function(R){return R==null?X.Types.Null:R instanceof String||typeof R=="string"?X.Types.String:typeof R=="number"?X.Types.Number:typeof R=="boolean"?X.Types.Boolean:R instanceof Date?X.Types.Date:R.text&&R.hyperlink?X.Types.Hyperlink:R.formula||R.sharedFormula?X.Types.Formula:R.richText?X.Types.RichText:R.sharedString?X.Types.SharedString:R.error?X.Types.Error:X.Types.JSON},types:[{t:X.Types.Null,f:m},{t:X.Types.Number,f:N},{t:X.Types.String,f:G},{t:X.Types.Date,f:u},{t:X.Types.Hyperlink,f:s},{t:X.Types.Formula,f:c},{t:X.Types.Merge,f:h},{t:X.Types.JSON,f:w},{t:X.Types.SharedString,f:W},{t:X.Types.RichText,f:d},{t:X.Types.Boolean,f:M},{t:X.Types.Error,f:I}].reduce(function(x,R){return x[R.t]=R.f,x},[]),create:function(R,g,S){var L=this.types[R];if(!L)throw new Error("Could not create Value of type ".concat(R));return new L(g,S)}};i.exports=X},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var m=this.style;return!(m&&(m.font||m.numFmt||m.alignment||m.border||m.fill||m.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var m=[];return this.eachCell(function(N,G){N&&N.type!==v.ValueType.Null&&(m[G]=N.value)}),m},set:function(m){var N=this;if(m){var G=this.number,d=0;m.hasOwnProperty("0")&&(d=1),m.forEach(function(u,s){N._worksheet.getCell(s+d,G).value=u})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}}],[{key:"toModel",value:function(m){var N=[],G=null;return m&&m.forEach(function(d,u){d.isDefault?G&&(G=null):!G||!d.equivalentTo(G)?(G={min:u+1,max:u+1,width:d.width!==void 0?d.width:Z,style:d.style,isCustomWidth:d.isCustomWidth,hidden:d.hidden,outlineLevel:d.outlineLevel,collapsed:d.collapsed},N.push(G)):G.max=u+1}),N.length?N:void 0}},{key:"fromModel",value:function(m,N){N=N||[];for(var G=[],d=1,u=0;uthis.bottom)&&(this.bottom=X),(!this.model.right||m>this.right)&&(this.right=m)}},{key:"expandRow",value:function(p){if(p){var y=p.dimensions,X=p.number;y&&this.expand(X,y.min,X,y.max)}}},{key:"expandToAddress",value:function(p){var y=f.decodeEx(p);this.expand(y.row,y.col,y.row,y.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(p){return!(p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName||p.bottomthis.bottom||p.rightthis.right)}},{key:"contains",value:function(p){var y=f.decodeEx(p);return this.containsEx(y)}},{key:"containsEx",value:function(p){return p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName?!1:p.row>=this.top&&p.row<=this.bottom&&p.col>=this.left&&p.col<=this.right}},{key:"forEachAddress",value:function(p){for(var y=this.left;y<=this.right;y++)for(var X=this.top;X<=this.bottom;X++)p(f.encodeAddress(X,y),X,y)}},{key:"top",get:function(){return this.model.top||1},set:function(p){this.model.top=p}},{key:"left",get:function(){return this.model.left||1},set:function(p){this.model.left=p}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(p){this.model.bottom=p}},{key:"right",get:function(){return this.model.right||1},set:function(p){this.model.right=p}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(p){this.model.sheetName=p}},{key:"_serialisedSheetName",get:function(){var p=this.model.sheetName;return p?/^[a-zA-Z0-9]*$/.test(p)?"".concat(p,"!"):"'".concat(p,"'!"):""}},{key:"tl",get:function(){return f.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(f.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return f.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(f.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),b}();i.exports=v},{"../utils/col-cache":19}],11:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m2?d-2:0),s=2;s0)for(W=c;W>=G;W--)M=this._cells[W-1],M?(I=this.getCell(W+h),I.value=M.value,I.style=M.style,I._comment=M._comment):this._cells[W+h-1]=void 0;for(W=0;WG.col)&&(m=G.col),N0?{min:m,max:N}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}},{key:"hidden",get:function(){return!!this._hidden},set:function(m){this._hidden=m}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(m){this._outlineLevel=m}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var m=[],N=0,G=0;return this._cells.forEach(function(d){if(d){var u=d.model;u&&((!N||N>d.col)&&(N=d.col),G0,"Table must be on valid row"),N(u>0,"Table must be on valid col");var s=this.width,h=this.filterHeight,c=this.tableHeight;X.autoFilterRef=f.encode(d,u,d+h-1,u+s-1),X.tableRef=f.encode(d,u,d+c-1,u+s-1),X.columns.forEach(function(W,M){N(W.name,"Column ".concat(M," must have a name")),M===0?m(W,"totalsRowLabel","Total"):(m(W,"totalsRowFunction","none"),W.totalsRowFormula=y.getFormula(W))})}},{key:"store",value:function(){var y=this,X=function(M,I){I&&Object.keys(I).forEach(function(w){M[w]=I[w]})},m=this.worksheet,N=this.table,G=N.tl,d=G.row,u=G.col,s=0;if(N.headerRow){var h=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=W.style,w=W.name,C=h.getCell(u+M);C.value=w,X(C,I)})}if(N.rows.forEach(function(W){var M=m.getRow(d+s++);W.forEach(function(I,w){var C=M.getCell(u+w);C.value=I,X(C,N.columns[w].style)})}),N.totalsRow){var c=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=c.getCell(u+M);if(M===0)I.value=W.totalsRowLabel;else{var w=y.getFormula(W);w?I.value={formula:W.totalsRowFormula,result:W.totalsRowResult}:I.value=null}X(I,W.style)})}}},{key:"load",value:function(y){var X=this,m=this.table,N=m.tl,G=N.row,d=N.col,u=0;if(m.headerRow){var s=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=s.getCell(d+W);M.value=c.name})}if(m.rows.forEach(function(c){var W=y.getRow(G+u++);c.forEach(function(M,I){var w=W.getCell(d+I);w.value=M})}),m.totalsRow){var h=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=h.getCell(d+W);if(W===0)M.value=c.totalsRowLabel;else{var I=X.getFormula(c);I&&(M.value={formula:c.totalsRowFormula,result:c.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var y=f.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(y,X)}},{key:"getColumn",value:function(y){var X=this.table.columns[y];return new v(this,X,y)}},{key:"addColumn",value:function(y,X,m){this.cacheState(),m===void 0?(this.table.columns.push(y),this.table.rows.forEach(function(N,G){N.push(X[G])})):(this.table.columns.splice(m,0,y),this.table.rows.forEach(function(N,G){N.splice(m,0,X[G])}))}},{key:"removeColumns",value:function(y){var X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(y,X),this.table.rows.forEach(function(m){m.splice(y,X)})}},{key:"_assign",value:function(y,X,m){this.cacheState(),y[X]=m}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(y){this.table=y}},{key:"ref",get:function(){return this.table.ref},set:function(y){this._assign(this.table,"ref",y)}},{key:"name",get:function(){return this.table.name},set:function(y){this.table.name=y}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(y){this.table.displayName=y}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(y){this._assign(this.table,"headerRow",y)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(y){this._assign(this.table,"totalsRow",y)}},{key:"theme",get:function(){return this.table.style.name},set:function(y){this.table.style.name=y}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(y){this.table.style.showFirstColumn=y}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(y){this.table.style.showLastColumn=y}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(y){this.table.style.showRowStripes=y}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(y){this.table.style.showColumnStripes=y}}]),Z}();i.exports=b},{"../utils/col-cache":19}],13:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m31&&console.warn("Worksheet name ".concat(m," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(m))throw new Error("Worksheet name ".concat(m," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(m))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(m));if(m=(m||"sheet".concat(G)).substring(0,31),this._worksheets.find(function(h){return h&&h.name.toLowerCase()===m.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(m));N&&(typeof N=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),N={properties:{tabColor:{argb:N}}}):(N.argb||N.theme||N.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),N={properties:{tabColor:N}}));var d=this._worksheets.reduce(function(h,c){return(c&&c.orderNo)>h?c.orderNo:h},0),u=Object.assign({},N,{id:G,name:m,orderNo:d+1,workbook:this}),s=new f(u);return this._worksheets[G]=s,s}},{key:"removeWorksheetEx",value:function(m){delete this._worksheets[m.id]}},{key:"removeWorksheet",value:function(m){var N=this.getWorksheet(m);N&&N.destroy()}},{key:"getWorksheet",value:function(m){if(m===void 0)return this._worksheets.find(Boolean);if(typeof m=="number")return this._worksheets[m];if(typeof m=="string")return this._worksheets.find(function(N){return N&&N.name===m})}},{key:"eachSheet",value:function(m){this.worksheets.forEach(function(N){m(N,N.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(m){var N=this.media.length;return this.media.push(Object.assign({},m,{type:"image"})),N}},{key:"getImage",value:function(m){return this.media[m]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new b(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new Z(this)),this._csv}},{key:"nextId",get:function(){for(var m=1;mx.length)&&(R=x.length);for(var g=0,S=new Array(R);gthis._columns.length)for(var L=this._columns.length+1;L<=g;)this._columns.push(new h(this,L++));return this._columns[g-1]}},{key:"spliceColumns",value:function(g,S){for(var L=this,V=this._rows,Y=V.length,T=arguments.length,J=new Array(T>2?T-2:0),U=2;U0)for(var K=function(pe){var re=[g,S];J.forEach(function(E){re.push(E[pe]||null)});var _=L.getRow(pe+1);_.splice.apply(_,re)},H=0;H0)for(var oe=O;oe>=F;oe--)this.getColumn(oe+k).defn=this.getColumn(oe).defn;for(var se=g;se1&&arguments[1]!==void 0?arguments[1]:"n",L=this._nextRow,V=this.getRow(L);return V.values=g,this._setStyleOption(L,S[0]==="i"?S:"n"),V}},{key:"addRows",value:function(g){var S=this,L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",V=[];return g.forEach(function(Y){V.push(S.addRow(Y,L))}),V}},{key:"insertRow",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(g,0,S),this._setStyleOption(g,L),this.getRow(g)}},{key:"insertRows",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[g,0].concat(f(S))),L!=="n")for(var V=0;V1&&arguments[1]!==void 0?arguments[1]:"n";S[0]==="o"&&this.findRow(g+1)!==void 0?this._copyStyle(g+1,g,S[1]==="+"):S[0]==="i"&&this.findRow(g-1)!==void 0&&this._copyStyle(g-1,g,S[1]==="+")}},{key:"_copyStyle",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,V=this.getRow(g),Y=this.getRow(S);Y.style=Object.freeze(o({},V.style)),V.eachCell({includeEmpty:L},function(T,J){Y.getCell(J).style=Object.freeze(o({},T.style))}),Y.height=V.height}},{key:"duplicateRow",value:function(g,S){var L=this,V=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Y=this._rows[g-1],T=new Array(S).fill(Y.values);this.spliceRows.apply(this,[g+1,V?0:S].concat(f(T)));for(var J=function(H){var k=L._rows[g+H];k.style=Y.style,k.height=Y.height,Y.eachCell({includeEmpty:!0},function(F,O){k.getCell(O).style=F.style})},U=0;U2?Y-2:0),J=2;J0)for(k=H;k>=V;k--)F=this._rows[k-1],F?function(){var Q=L.getRow(k+K);Q.values=F.values,Q.style=F.style,Q.height=F.height,F.eachCell({includeEmpty:!0},function(oe,se){if(Q.getCell(se).style=oe.style,oe._value.constructor.name==="MergeValue"){var he=L.getRow(oe._row._number+U).getCell(se),pe=oe._value._master,re=L.getRow(pe._row._number+U).getCell(pe._column._number);he.merge(re)}})}():this._rows[k+K-1]=void 0;for(k=0;kg.top||Y>g.left)&&this.getCell(V,Y).merge(L,S);this._merges[L.address]=g}},{key:"_unMergeMaster",value:function(g){var S=this._merges[g.address];if(S){for(var L=S.top;L<=S.bottom;L++)for(var V=S.left;V<=S.right;V++)this.getCell(L,V).unmerge();delete this._merges[g.address]}}},{key:"unMergeCells",value:function(){for(var g=arguments.length,S=new Array(g),L=0;L3&&arguments[3]!==void 0?arguments[3]:"shared",Y=d.decode(g),T=Y.top,J=Y.left,U=Y.bottom,K=Y.right,H=K-J+1,k=d.encodeAddress(T,J),F=V==="shared",O;typeof L=="function"?O=L:Array.isArray(L)?Array.isArray(L[0])?O=function(pe,re){return L[pe-T][re-J]}:O=function(pe,re){return L[(pe-T)*H+(re-J)]}:O=function(){};for(var Q=!0,oe=T;oe<=U;oe++)for(var se=J;se<=K;se++)Q?(this.getCell(oe,se).value={shareType:V,formula:S,ref:g,result:O(oe,se)},Q=!1):this.getCell(oe,se).value=F?{sharedFormula:k,result:O(oe,se)}:O(oe,se)}},{key:"addImage",value:function(g,S){var L={type:"image",imageId:g,range:S};this._media.push(new W(this,L))}},{key:"getImages",value:function(){return this._media.filter(function(g){return g.type==="image"})}},{key:"addBackgroundImage",value:function(g){var S={type:"background",imageId:g};this._media.push(new W(this,S))}},{key:"getBackgroundImageId",value:function(){var g=this._media.find(function(S){return S.type==="background"});return g&&g.imageId}},{key:"protect",value:function(g,S){var L=this;return new Promise(function(V){L.sheetProtection={sheet:!0},S&&"spinCount"in S&&(S.spinCount=Number.isFinite(S.spinCount)?Math.round(Math.max(0,S.spinCount)):1e5),g&&(L.sheetProtection.algorithmName="SHA-512",L.sheetProtection.saltValue=w.randomBytes(16).toString("base64"),L.sheetProtection.spinCount=S&&"spinCount"in S?S.spinCount:1e5,L.sheetProtection.hashValue=w.convertPasswordToHash(g,"SHA512",L.sheetProtection.saltValue,L.sheetProtection.spinCount)),S&&(L.sheetProtection=Object.assign(L.sheetProtection,S),!g&&"spinCount"in S&&delete L.sheetProtection.spinCount),V()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(g){var S=new M(this,g);return this.tables[g.name]=S,S}},{key:"getTable",value:function(g){return this.tables[g]}},{key:"removeTable",value:function(g){delete this.tables[g]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(g){this.conditionalFormattings.push(g)}},{key:"removeConditionalFormatting",value:function(g){typeof g=="number"?this.conditionalFormattings.splice(g,1):g instanceof Function?this.conditionalFormattings=this.conditionalFormattings.filter(g):this.conditionalFormattings=[]}},{key:"_parseRows",value:function(g){var S=this;this._rows=[],g.rows.forEach(function(L){var V=new s(S,L.number);S._rows[V.number-1]=V,V.model=L})}},{key:"_parseMergeCells",value:function(g){var S=this;G.each(g.mergeCells,function(L){S.mergeCellsWithoutStyle(L)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var g=new u;return this._rows.forEach(function(S){if(S){var L=S.dimensions;L&&g.expand(S.number,L.min,S.number,L.max)}}),g}},{key:"columns",get:function(){return this._columns},set:function(g){var S=this;this._headerRowCount=g.reduce(function(Y,T){var J=T.header&&1||T.headers&&T.headers.length||0;return Math.max(Y,J)},0);var L=1,V=this._columns=[];g.forEach(function(Y){var T=new h(S,L++,!1);V.push(T),T.defn=Y})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var g=0;return this.eachRow(function(S){g=Math.max(g,S.cellCount)}),g}},{key:"actualColumnCount",get:function(){var g=[],S=0;return this.eachRow(function(L){L.eachCell(function(V){var Y=V.col;g[Y]||(g[Y]=!0,S++)})}),S}},{key:"_lastRowNumber",get:function(){for(var g=this._rows,S=g.length;S>0&&g[S-1]===void 0;)S--;return S}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var g=0;return this.eachRow(function(){g++}),g}},{key:"hasMerges",get:function(){return G.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(g){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=g}},{key:"model",get:function(){var g={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(function(V){return V.model}),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(function(V){return V.model}),conditionalFormattings:this.conditionalFormattings};g.cols=h.toModel(this.columns);var S=g.rows=[],L=g.dimensions=new u;return this._rows.forEach(function(V){var Y=V&&V.model;Y&&(L.expand(Y.number,Y.min,Y.number,Y.max),S.push(Y))}),g.merges=[],G.each(this._merges,function(V){g.merges.push(V.range)}),g},set:function(g){var S=this;this.name=g.name,this._columns=h.fromModel(this,g.cols),this._parseRows(g),this._parseMergeCells(g),this.dataValidations=new I(g.dataValidations),this.properties=g.properties,this.pageSetup=g.pageSetup,this.headerFooter=g.headerFooter,this.views=g.views,this.autoFilter=g.autoFilter,this._media=g.media.map(function(L){return new W(S,L)}),this.sheetProtection=g.sheetProtection,this.tables=g.tables.reduce(function(L,V){var Y=new M;return Y.model=V,L[V.name]=Y,L},{}),this.conditionalFormattings=g.conditionalFormattings}}]),x}();i.exports=C},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(t,i,l){t("core-js/modules/es.promise"),t("core-js/modules/es.object.assign"),t("core-js/modules/es.object.keys"),t("core-js/modules/es.object.values"),t("core-js/modules/es.symbol"),t("core-js/modules/es.symbol.async-iterator"),t("core-js/modules/es.array.iterator"),t("core-js/modules/es.array.includes"),t("core-js/modules/es.array.find-index"),t("core-js/modules/es.array.find"),t("core-js/modules/es.string.from-code-point"),t("core-js/modules/es.string.includes"),t("core-js/modules/es.number.is-nan"),t("regenerator-runtime/runtime");var a={Workbook:t("./doc/workbook")},o=t("./doc/enums");Object.keys(o).forEach(function(r){a[r]=o[r]}),i.exports=a},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(t,i,l){var a=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function o(r){return typeof r=="string"?r:a?a.decode(r):r.toString()}l.bufferToString=o},{}],17:[function(t,i,l){var a=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),o=t("buffer"),r=o.Buffer;function f(v){return typeof v!="string"?v:a?r.from(a.encode(v).buffer):r.from(v)}l.stringToBuffer=f},{buffer:216}],18:[function(t,i,l){function a(Z,p){if(!(Z instanceof p))throw new TypeError("Cannot call a class as a function")}function o(Z,p){for(var y=0;yN.length)&&(G=N.length);for(var d=0,u=new Array(G);d"u"||!(Symbol.iterator in Object(N)))){var d=[],u=!0,s=!1,h=void 0;try{for(var c=N[Symbol.iterator](),W;!(u=(W=c.next()).done)&&(d.push(W.value),!(G&&d.length===G));u=!0);}catch(M){s=!0,h=M}finally{try{!u&&c.return!=null&&c.return()}finally{if(s)throw h}}return d}}function b(N){if(Array.isArray(N))return N}function Z(N,G){var d=Object.keys(N);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(N);G&&(u=u.filter(function(s){return Object.getOwnPropertyDescriptor(N,s).enumerable})),d.push.apply(d,u)}return d}function p(N){for(var G=1;G=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&G>=1){for(;W<=26;)d=this._dictionary[W-1],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=1}if(this._l2nFill<2&&G>=2){for(W=27;W<=26+26*26;)u=W-(26+1),s=u%26,h=Math.floor(u/26),d=this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=2}if(this._l2nFill<3&&G>=3){for(W=26+26*26+1;W<=16384;)u=W-(26*26+26+1),s=u%26,h=Math.floor(u/26)%26,c=Math.floor(u/(26*26)),d=this._dictionary[c]+this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=3}},l2n:function(G){if(this._l2n[G]||this._fill(G.length),!this._l2n[G])throw new Error("Out of bounds. Invalid column letter: ".concat(G));return this._l2n[G]},n2l:function(G){if(G<1||G>16384)throw new Error("".concat(G," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[G]||this._fill(this._level(G)),this._n2l[G]},_hash:{},validateAddress:function(G){if(!X.test(G))throw new Error("Invalid Address: ".concat(G));return!0},decodeAddress:function(G){var d=G.length<5&&this._hash[G];if(d)return d;for(var u=!1,s="",h=0,c=!1,W="",M=0,I=0,w;I=65&&w<=90)u=!0,s+=G[I],h=h*26+w-64;else if(w>=48&&w<=57)c=!0,W+=G[I],M=M*10+w-48;else if(c&&u&&w!==36)break;if(!u)h=void 0;else if(h>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(s));c||(M=void 0),G=s+W;var C={address:G,col:h,row:M,$col$row:"$".concat(s,"$").concat(W)};return h<=100&&M<=100&&(this._hash[G]=C,this._hash[C.$col$row]=C),C},getAddress:function(G,d){if(d){var u=this.n2l(d)+G;return this.decodeAddress(u)}return this.decodeAddress(G)},decode:function(G){var d=G.split(":");if(d.length===2){var u=this.decodeAddress(d[0]),s=this.decodeAddress(d[1]),h={top:Math.min(u.row,s.row),left:Math.min(u.col,s.col),bottom:Math.max(u.row,s.row),right:Math.max(u.col,s.col)};return h.tl=this.n2l(h.left)+h.top,h.br=this.n2l(h.right)+h.bottom,h.dimensions="".concat(h.tl,":").concat(h.br),h}return this.decodeAddress(G)},decodeEx:function(G){var d=G.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),u=d[1]||d[2],s=d[3],h=s.split(":");if(h.length>1){var c=this.decodeAddress(h[0]),W=this.decodeAddress(h[1]),M=Math.min(c.row,W.row),I=Math.min(c.col,W.col),w=Math.max(c.row,W.row),C=Math.max(c.col,W.col);return c=this.n2l(I)+M,W=this.n2l(C)+w,{top:M,left:I,bottom:w,right:C,sheetName:u,tl:{address:c,col:I,row:M,$col$row:"$".concat(this.n2l(I),"$").concat(M),sheetName:u},br:{address:W,col:C,row:w,$col$row:"$".concat(this.n2l(C),"$").concat(w),sheetName:u},dimensions:"".concat(c,":").concat(W)}}if(s.startsWith("#"))return u?{sheetName:u,error:s}:{error:s};var x=this.decodeAddress(s);return u?p({sheetName:u},x):x},encodeAddress:function(G,d){return m.n2l(d)+G},encode:function(){switch(arguments.length){case 2:return m.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(m.encodeAddress(arguments[0],arguments[1]),":").concat(m.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(G,d){var u=a(G,5),s=u[0],h=u[1],c=u[3],W=u[4],M=a(d,2),I=M[0],w=M[1];return I>=s&&I<=c&&w>=h&&w<=W}};i.exports=m},{}],20:[function(t,i,l){(function(a){var o=t("crypto"),r={hash:function(v){for(var b=o.createHash(v),Z=arguments.length,p=new Array(Z>1?Z-1:0),y=1;y3||h.length===3&&h>"XFD")return X;var M=a.l2n(h),I=parseInt(W,10);s||(M+=y.col-p.col),c||(I+=y.row-p.row);var w=(m||"")+(s||"")+a.n2l(M)+(c||"")+I;return w}return X})}i.exports={slideFormula:f}},{"./col-cache":19}],23:[function(t,i,l){(function(a,o){function r(s,h,c,W,M,I,w){try{var C=s[I](w),x=C.value}catch(R){c(R);return}C.done?h(x):Promise.resolve(x).then(W,M)}function f(s){return function(){var h=this,c=arguments;return new Promise(function(W,M){var I=s.apply(h,c);function w(x){r(I,W,M,w,C,"next",x)}function C(x){r(I,W,M,w,C,"throw",x)}w(void 0)})}}function v(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function b(s,h){for(var c=0;c=this.length?(W=this.toBuffer(),this.iRead=this.iWrite,W):(W=o.alloc(c),this.buffer.copy(W,0,this.iRead,c),this.iRead+=c,W)}},{key:"write",value:function(c,W,M){var I=Math.min(M,this.size-this.iWrite);return c.copy(this.buffer,this.iWrite,W,W+I),this.iWrite+=I,I}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),s}(),u=function(h){h=h||{},this.bufSize=h.bufSize||1024*1024,this.buffers=[],this.batch=h.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};y.inherits(u,p.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return o.concat(this.buffers.map(function(h){return h.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var h=this.buffers[this.buffers.length-1];if(!h.full)return h}var c=new d(this.bufSize);return this.buffers.push(c),c},_pipe:function(h){var c=this;return f(regeneratorRuntime.mark(function W(){var M;return regeneratorRuntime.wrap(function(w){for(;;)switch(w.prev=w.next){case 0:return M=function(x){return new Promise(function(R){x.write(h.toBuffer(),function(){R()})})},w.next=3,Promise.all(c.pipes.map(M));case 3:case"end":return w.stop()}},W)}))()},_writeToBuffers:function(h){for(var c=0,W=h.length;c1;)M._pipe(M.buffers.shift());x.next=29;break;case 21:if(M.corked){x.next=27;break}return x.next=24,M._pipe(w);case 24:W(),x.next=29;break;case 27:M._writeToBuffers(w),a.nextTick(W);case 29:x.next=34;break;case 31:M.paused||M.emit("data",w.toBuffer()),M._writeToBuffers(w),M.emit("readable");case 34:return x.abrupt("return",!0);case 35:case"end":return x.stop()}},I)}))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(h,c,W){var M=this,I=function(C){C?W(C):(M._flush(),M.pipes.forEach(function(x){x.end()}),M.emit("finish"))};h?this.write(h,c,I):I()},read:function(h){var c;if(h){for(c=[];h&&this.buffers.length&&!this.buffers[0].eod;){var W=this.buffers[0],M=W.read(h);h-=M.length,c.push(M),W.eod&&W.full&&this.buffers.shift()}return o.concat(c)}return c=this.buffers.map(function(I){return I.toBuffer()}).filter(Boolean),this.buffers=[],o.concat(c)},setEncoding:function(h){this.encoding=h},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(h){this.pipes.push(h),!this.paused&&this.buffers.length&&this.end()},unpipe:function(h){this.pipes=this.pipes.filter(function(c){return c!==h})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),i.exports=u}).call(this,t("_process"),t("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(t,i,l){(function(a){function o(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}function r(b,Z){for(var p=0;p=this._buf.length-4;)this._grow(this._inPos+p.length),y=this._inPos+this._buf.write(p,this._inPos,this._encoding);this._inPos=y}},{key:"addStringBuf",value:function(p){p.length&&(this._buffer=void 0,this.length+p.length>this.capacity&&this._grow(this.length+p.length),p._buf.copy(this._buf,this._inPos,0,p.length),this._inPos+=p.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),b}();i.exports=v}).call(this,t("buffer").Buffer)},{buffer:216}],25:[function(t,i,l){function a(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(Z){return typeof Z}:a=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},a(v)}var o=Object.prototype.toString,r=/["&<>]/,f={each:function(b,Z){b&&(Array.isArray(b)?b.forEach(Z):Object.keys(b).forEach(function(p){Z(b[p],p)}))},some:function(b,Z){return b?Array.isArray(b)?b.some(Z):Object.keys(b).some(function(p){return Z(b[p],p)}):!1},every:function(b,Z){return b?Array.isArray(b)?b.every(Z):Object.keys(b).every(function(p){return Z(b[p],p)}):!0},map:function(b,Z){return b?Array.isArray(b)?b.map(Z):Object.keys(b).map(function(p){return Z(b[p],p)}):[]},keyBy:function(b,Z){return b.reduce(function(p,y){return p[y[Z]]=y,p},{})},isEqual:function(b,Z){var p=a(b),y=a(Z),X=Array.isArray(b),m=Array.isArray(Z);if(p!==y)return!1;switch(a(b)){case"object":return X||m?X&&m?b.length===Z.length&&b.every(function(N,G){var d=Z[G];return f.isEqual(N,d)}):!1:f.every(b,function(N,G){var d=Z[G];return f.isEqual(N,d)});default:return b===Z}},escapeHtml:function(b){var Z=r.exec(b);if(!Z)return b;for(var p="",y="",X=0,m=Z.index;m":y=">";break;default:continue}X!==m&&(p+=b.substring(X,m)),X=m+1,p+=y}return X!==m?p+b.substring(X,m):p},strcmp:function(b,Z){return bZ?1:0},isUndefined:function(b){return o.call(b)==="[object Undefined]"},isObject:function(b){return o.call(b)==="[object Object]"},deepMerge:function(){var b=arguments[0]||{},Z=arguments.length,p,y,X;function m(G,d){p=b[d],X=Array.isArray(G),f.isObject(G)||X?(X?(X=!1,y=p&&Array.isArray(p)?p:[]):y=p&&f.isObject(p)?p:{},b[d]=f.deepMerge(y,G)):f.isUndefined(G)||(b[d]=G)}for(var N=0;N&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,b={nop:function(){},promiseImmediate:function(p){return new Promise(function(y){a.setImmediate?o(function(){y(p)}):setTimeout(function(){y(p)},1)})},inherits:f,dateToExcel:function(p,y){return 25569+p.getTime()/(24*3600*1e3)-(y?1462:0)},excelToDate:function(p,y){var X=Math.round((p-25569+(y?1462:0))*24*3600*1e3);return new Date(X)},parsePath:function(p){var y=p.lastIndexOf("/");return{path:p.substring(0,y),name:p.substring(y+1)}},getRelsPath:function(p){var y=b.parsePath(p);return"".concat(y.path,"/_rels/").concat(y.name,".rels")},xmlEncode:function(p){var y=v.exec(p);if(!y)return p;for(var X="",m="",N=0,G=y.index;G=11&&d!==13)){m="";break}continue}}N!==G&&(X+=p.substring(N,G)),N=G+1,m&&(X+=m)}return N!==G?X+p.substring(N,G):X},xmlDecode:function(p){return p.replace(/&([a-z]*);/g,function(y){switch(y){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return y}})},validInt:function(p){var y=parseInt(p,10);return Number.isNaN(y)?0:y},isDateFmt:function(p){if(!p)return!1;p=p.replace(/\[[^\]]*]/g,""),p=p.replace(/"[^"]*"/g,"");var y=p.match(/[ymdhMsb]+/)!==null;return y},fs:{exists:function(p){return new Promise(function(y){r.access(p,r.constants.F_OK,function(X){y(!X)})})}},toIsoDateString:function(p){return p.toIsoString().subsstr(0,10)}};i.exports=b}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{},t("timers").setImmediate)},{fs:215,timers:521}],27:[function(t,i,l){function a(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function o(s,h){for(var c=0;c",p="",X='="',m='"',N=" ";function G(s,h,c){s.push(N),s.push(h),s.push(X),s.push(v.xmlEncode(c.toString())),s.push(m)}function d(s,h){h&&f.each(h,function(c,W){c!==void 0&&G(s,W,c)})}var u=function(){function s(){a(this,s),this._xml=[],this._stack=[],this._rollbacks=[]}return r(s,[{key:"openXml",value:function(c){var W=this._xml;W.push(" -`)}},{key:"openNode",value:function(c,W){var M=this.tos,I=this._xml;M&&this.open&&I.push(Z),this._stack.push(c),I.push(b),I.push(c),d(I,W),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(c,W){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");W!==void 0&&G(this._xml,c,W)}},{key:"addAttributes",value:function(c){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");d(this._xml,c)}},{key:"writeText",value:function(c){var W=this._xml;this.open&&(W.push(Z),this.open=!1),this.leaf=!1,W.push(v.xmlEncode(c.toString()))}},{key:"writeXml",value:function(c){this.open&&(this._xml.push(Z),this.open=!1),this.leaf=!1,this._xml.push(c)}},{key:"closeNode",value:function(){var c=this._stack.pop(),W=this._xml;this.leaf?W.push(y):(W.push(p),W.push(c),W.push(Z)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(c,W,M){this.openNode(c,W),M!==void 0&&this.writeText(M),this.closeNode()}},{key:"closeAll",value:function(){for(;this._stack.length;)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var c=this._rollbacks.pop();this._xml.length>c.xml&&this._xml.splice(c.xml,this._xml.length-c.xml),this._stack.length>c.stack&&this._stack.splice(c.stack,this._stack.length-c.stack),this.leaf=c.leaf,this.open=c.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),s}();u.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},i.exports=u},{"./under-dash":25,"./utils":26}],28:[function(t,i,l){(function(a){function o(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(C){return typeof C}:o=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},o(I)}function r(I,w,C,x,R,g,S){try{var L=I[g](S),V=L.value}catch(Y){C(Y);return}L.done?w(V):Promise.resolve(V).then(x,R)}function f(I){return function(){var w=this,C=arguments;return new Promise(function(x,R){var g=I.apply(w,C);function S(V){r(g,x,R,S,L,"next",V)}function L(V){r(g,x,R,S,L,"throw",V)}S(void 0)})}}function v(I,w){if(!(I instanceof w))throw new TypeError("Cannot call a class as a function")}function b(I,w){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(I){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},d(I)}var u=t("events"),s=t("jszip"),h=t("./stream-buf"),c=t("./browser-buffer-encode"),W=c.stringToBuffer,M=function(I){p(C,I);var w=X(C);function C(x){var R;return v(this,C),R=w.call(this),R.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},x),R.zip=new s,R.stream=new h,R}return Z(C,[{key:"append",value:function(R,g){g.hasOwnProperty("base64")&&g.base64?this.zip.file(g.name,R,{base64:!0}):(a.browser&&typeof R=="string"&&(R=W(R)),this.zip.file(g.name,R))}},{key:"finalize",value:function(){var x=f(regeneratorRuntime.mark(function g(){var S;return regeneratorRuntime.wrap(function(V){for(;;)switch(V.prev=V.next){case 0:return V.next=2,this.zip.generateAsync(this.options);case 2:S=V.sent,this.stream.end(S),this.emit("finish");case 5:case"end":return V.stop()}},g,this)}));function R(){return x.apply(this,arguments)}return R}()},{key:"read",value:function(R){return this.stream.read(R)}},{key:"setEncoding",value:function(R){return this.stream.setEncoding(R)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(R,g){return this.stream.pipe(R,g)}},{key:"unpipe",value:function(R){return this.stream.unpipe(R)}},{key:"unshift",value:function(R){return this.stream.unshift(R)}},{key:"wrap",value:function(R){return this.stream.wrap(R)}}]),C}(u.EventEmitter);i.exports={ZipWriter:M}}).call(this,t("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(t,i,l){i.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(t,i,l){i.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(t,i,l){function a(G,d){var u;if(typeof Symbol>"u"||G[Symbol.iterator]==null){if(Array.isArray(G)||(u=o(G))||d&&G&&typeof G.length=="number"){u&&(G=u);var s=0,h=function(){};return{s:h,n:function(){return s>=G.length?{done:!0}:{done:!1,value:G[s++]}},e:function(w){throw w},f:h}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,W=!1,M;return{s:function(){u=G[Symbol.iterator]()},n:function(){var w=u.next();return c=w.done,w},e:function(w){W=!0,M=w},f:function(){try{!c&&u.return!=null&&u.return()}finally{if(W)throw M}}}}function o(G,d){if(G){if(typeof G=="string")return r(G,d);var u=Object.prototype.toString.call(G).slice(8,-1);if(u==="Object"&&G.constructor&&(u=G.constructor.name),u==="Map"||u==="Set")return Array.from(G);if(u==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u))return r(G,d)}}function r(G,d){(d==null||d>G.length)&&(d=G.length);for(var u=0,s=new Array(d);u2&&arguments[2]!==void 0?arguments[2]:!1;if(u===void 0){if(h)return s}else if(h||u!==s)return u.toString()}},{key:"toStringAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toStringValue",value:function(u,s){return u===void 0?s:u}},{key:"toBoolAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(u===void 0){if(h)return s}else if(h||u!==s)return u?"1":"0"}},{key:"toBoolValue",value:function(u,s){return u===void 0?s:u==="1"}},{key:"toIntAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toIntValue",value:function(u,s){return u===void 0?s:parseInt(u,10)}},{key:"toFloatAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toFloatValue",value:function(u,s){return u===void 0?s:parseFloat(u)}}]),G}();i.exports=N},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../base-xform"),G=t("../../../utils/col-cache"),d=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){I.openNode("definedName",{name:w.name,localSheetId:w.localSheetId}),I.writeText(w.ranges.join(",")),I.closeNode()}},{key:"parseOpen",value:function(I){switch(I.name){case"definedName":return this._parsedName=I.attributes.name,this._parsedLocalSheetId=I.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(I){this._parsedText.push(I)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:s(this._parsedText.join(""))},this._parsedLocalSheetId!==void 0&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),W}(N);function u(h){try{return G.decodeEx(h),!0}catch{return!1}}function s(h){var c=[],W=!1,M="";return h.split(",").forEach(function(I){if(I){var w=(I.match(/'/g)||[]).length;if(!w){W?M+="".concat(I,","):u(I)&&c.push(I);return}var C=w%2===0;!W&&C&&u(I)?c.push(I):W&&!C?(W=!1,u(M+I)&&c.push(M+I),M=""):(W=!0,M+="".concat(I,","))}}),c}i.exports=d},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/utils"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.leafNode("sheet",{sheetId:M.id,name:M.name,state:M.state,"r:id":M.rId})}},{key:"parseOpen",value:function(W){return W.name==="sheet"?(this.model={name:N.xmlDecode(W.attributes.name),id:parseInt(W.attributes.sheetId,10),state:W.attributes.state,rId:W.attributes["r:id"]},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(G);i.exports=d},{"../../../utils/utils":26,"../base-xform":31}],34:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:W.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(c){return c.name==="calcPr"?(this.model={},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],35:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("workbookPr",{date1904:W.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(c){return c.name==="workbookPr"?(this.model={date1904:c.attributes.date1904==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],36:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){var M={xWindow:W.x||0,yWindow:W.y||0,windowWidth:W.width||12e3,windowHeight:W.height||24e3,firstSheet:W.firstSheet,activeTab:W.activeTab};W.visibility&&W.visibility!=="visible"&&(M.visibility=W.visibility),c.leafNode("workbookView",M)}},{key:"parseOpen",value:function(c){if(c.name==="workbookView"){var W=this.model={},M=function(C,x,R){var g=x!==void 0?W[C]=x:R;g!==void 0&&(W[C]=g)},I=function(C,x,R){var g=x!==void 0?W[C]=parseInt(x,10):R;g!==void 0&&(W[C]=g)};return I("x",c.attributes.xWindow,0),I("y",c.attributes.yWindow,0),I("width",c.attributes.windowWidth,25e3),I("height",c.attributes.windowHeight,1e4),M("visibility",c.attributes.visibility,"visible"),I("activeTab",c.attributes.activeTab,void 0),I("firstSheet",c.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],37:[function(t,i,l){function a(x){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(g){return typeof g}:a=function(g){return g&&typeof Symbol=="function"&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},a(x)}function o(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function r(x,R){for(var g=0;g"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(x){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)},m(x)}var N=t("../../../utils/under-dash"),G=t("../../../utils/col-cache"),d=t("../../../utils/xml-stream"),u=t("../base-xform"),s=t("../static-xform"),h=t("../list-xform"),c=t("./defined-name-xform"),W=t("./sheet-xform"),M=t("./workbook-view-xform"),I=t("./workbook-properties-xform"),w=t("./workbook-calc-properties-xform"),C=function(x){v(g,x);var R=Z(g);function g(){var S;return o(this,g),S=R.call(this),S.map={fileVersion:g.STATIC_XFORMS.fileVersion,workbookPr:new I,bookViews:new h({tag:"bookViews",count:!1,childXform:new M}),sheets:new h({tag:"sheets",count:!1,childXform:new W}),definedNames:new h({tag:"definedNames",count:!1,childXform:new c}),calcPr:new w},S}return f(g,[{key:"prepare",value:function(L){L.sheets=L.worksheets;var V=[],Y=0;L.sheets.forEach(function(T){if(T.pageSetup&&T.pageSetup.printArea&&T.pageSetup.printArea.split("&&").forEach(function(k){var F=k.split(":"),O={name:"_xlnm.Print_Area",ranges:["'".concat(T.name,"'!$").concat(F[0],":$").concat(F[1])],localSheetId:Y};V.push(O)}),T.pageSetup&&(T.pageSetup.printTitlesRow||T.pageSetup.printTitlesColumn)){var J=[];if(T.pageSetup.printTitlesColumn){var U=T.pageSetup.printTitlesColumn.split(":");J.push("'".concat(T.name,"'!$").concat(U[0],":$").concat(U[1]))}if(T.pageSetup.printTitlesRow){var K=T.pageSetup.printTitlesRow.split(":");J.push("'".concat(T.name,"'!$").concat(K[0],":$").concat(K[1]))}var H={name:"_xlnm.Print_Titles",ranges:J,localSheetId:Y};V.push(H)}Y++}),V.length&&(L.definedNames=L.definedNames.concat(V)),(L.media||[]).forEach(function(T,J){T.name=T.type+(J+1)})}},{key:"render",value:function(L,V){L.openXml(d.StdDocAttributes),L.openNode("workbook",g.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(L),this.map.workbookPr.render(L,V.properties),this.map.bookViews.render(L,V.views),this.map.sheets.render(L,V.sheets),this.map.definedNames.render(L,V.definedNames),this.map.calcPr.render(L,V.calcProperties),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;switch(L.name){case"workbook":return!0;default:return this.parser=this.map[L.name],this.parser&&this.parser.parseOpen(L),!0}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){if(this.parser)return this.parser.parseClose(L)||(this.parser=void 0),!0;switch(L){case"workbook":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}},{key:"reconcile",value:function(L){var V=(L.workbookRels||[]).reduce(function(K,H){return K[H.Id]=H,K},{}),Y=[],T,J=0;(L.sheets||[]).forEach(function(K){var H=V[K.rId];H&&(T=L.worksheetHash["xl/".concat(H.Target.replace(/^(\s|\/xl\/)+/,""))],T&&(T.name=K.name,T.id=K.id,T.state=K.state,Y[J++]=T))});var U=[];N.each(L.definedNames,function(K){if(K.name==="_xlnm.Print_Area"){if(T=Y[K.localSheetId],T){T.pageSetup||(T.pageSetup={});var H=G.decodeEx(K.ranges[0]);T.pageSetup.printArea=T.pageSetup.printArea?"".concat(T.pageSetup.printArea,"&&").concat(H.dimensions):H.dimensions}}else if(K.name==="_xlnm.Print_Titles"){if(T=Y[K.localSheetId],T){T.pageSetup||(T.pageSetup={});var k=K.ranges.join(","),F=/\$/g,O=/\$\d+:\$\d+/,Q=k.match(O);if(Q&&Q.length){var oe=Q[0];T.pageSetup.printTitlesRow=oe.replace(F,"")}var se=/\$[A-Z]+:\$[A-Z]+/,he=k.match(se);if(he&&he.length){var pe=he[0];T.pageSetup.printTitlesColumn=pe.replace(F,"")}}}else U.push(K)}),L.definedNames=U,L.media.forEach(function(K,H){K.index=H})}}]),g}(u);C.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},C.STATIC_XFORMS={fileVersion:new s({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},i.exports=C},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(t,i,l){function a(p,y){var X=Object.keys(p);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(p);y&&(m=m.filter(function(N){return Object.getOwnPropertyDescriptor(p,N).enumerable})),X.push.apply(X,m)}return X}function o(p){for(var y=1;y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c._model=h,c}return f(s,[{key:"render",value:function(c,W,M){W===M[2]?c.leafNode(this.tag):this.tag==="x:SizeWithCells"&&W===M[1]&&c.leafNode(this.tag)}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(N);i.exports=G},{"../../base-xform":31}],41:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c._model=h,c}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(c){this.text=c}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(N);i.exports=G},{"../../base-xform":31}],42:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"getAnchorRect",value:function(c){var W=Math.floor(c.left),M=Math.floor((c.left-W)*68),I=Math.floor(c.top),w=Math.floor((c.top-I)*18),C=Math.floor(c.right),x=Math.floor((c.right-C)*68),R=Math.floor(c.bottom),g=Math.floor((c.bottom-R)*18);return[W,M,I,w,C,x,R,g]}},{key:"getDefaultRect",value:function(c){var W=c.col,M=6,I=Math.max(c.row-2,0),w=14,C=W+2,x=2,R=I+4,g=16;return[W,M,I,w,C,x,R,g]}},{key:"render",value:function(c,W){var M=W.anchor?this.getAnchorRect(W.anchor):this.getDefaultRect(W.refAddress);c.leafNode("x:Anchor",null,M.join(", "))}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(c){this.text=c}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),s}(N);i.exports=G},{"../base-xform":31}],43:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("./vml-anchor-xform"),d=t("./style/vml-protection-xform"),u=t("./style/vml-position-xform"),s=["twoCells","oneCells","absolute"],h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"x:Anchor":new G,"x:Locked":new d({tag:"x:Locked"}),"x:LockText":new d({tag:"x:LockText"}),"x:SizeWithCells":new u({tag:"x:SizeWithCells"}),"x:MoveWithCells":new u({tag:"x:MoveWithCells"})},I}return f(M,[{key:"render",value:function(w,C){var x=C.note,R=x.protection,g=x.editAs;w.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(w,g,s),this.map["x:SizeWithCells"].render(w,g,s),this.map["x:Anchor"].render(w,C),this.map["x:Locked"].render(w,R.locked),w.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(w,R.lockText),w.leafNode("x:Row",null,C.refAddress.row-1),w.leafNode("x:Column",null,C.refAddress.col-1),w.closeNode()}},{key:"parseOpen",value:function(w){switch(w.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:""};break;default:this.parser=this.map[w.name],this.parser&&this.parser.parseOpen(w);break}return!0}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case this.tag:return this.normalizeModel(),!1;default:return!0}}},{key:"normalizeModel",value:function(){var w=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),C=Object.keys(w).length;this.model.editAs=s[C],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}},{key:"tag",get:function(){return"x:ClientData"}}]),M}(N);i.exports=h},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./vml-shape-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"v:shape":new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openXml(N.StdDocAttributes),M.openNode(this.tag,c.DRAWING_ATTRIBUTES),M.openNode("o:shapelayout",{"v:ext":"edit"}),M.leafNode("o:idmap",{"v:ext":"edit",data:1}),M.closeNode(),M.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),M.leafNode("v:stroke",{joinstyle:"miter"}),M.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),M.closeNode(),I.comments.forEach(function(C,x){w.map["v:shape"].render(M,C,x)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(M){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(M,I){var w=this;M.anchors.forEach(function(C){C.br?w.map["xdr:twoCellAnchor"].reconcile(C,I):w.map["xdr:oneCellAnchor"].reconcile(C,I)})}},{key:"tag",get:function(){return"xml"}}]),c}(G);u.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./vml-textbox-xform"),d=t("./vml-client-data-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"v:textbox":new G,"x:ClientData":new d},W}return f(c,[{key:"render",value:function(M,I,w){M.openNode("v:shape",c.V_SHAPE_ATTRIBUTES(I,w)),M.leafNode("v:fill",{color2:"infoBackground [80]"}),M.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),M.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(M,I),this.map["x:ClientData"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset(),this.model={margins:{insetmode:M.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1;default:return!0}}},{key:"tag",get:function(){return"v:shape"}}]),c}(N);u.V_SHAPE_ATTRIBUTES=function(s,h){return{id:"_x0000_s".concat(1025+h),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":s.note.margins&&s.note.margins.insetmode}},i.exports=u},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"conversionUnit",value:function(c,W,M){return"".concat(parseFloat(c)*W.toFixed(2)).concat(M)}},{key:"reverseConversionUnit",value:function(c){var W=this;return(c||"").split(",").map(function(M){return Number(parseFloat(W.conversionUnit(parseFloat(M),.1,"")).toFixed(2))})}},{key:"render",value:function(c,W){var M=this,I={style:"mso-direction-alt:auto"};if(W&&W.note){var w=W.note&&W.note.margins,C=w.inset;Array.isArray(C)&&(C=C.map(function(x){return M.conversionUnit(x,10,"mm")}).join(",")),C&&(I.inset=C)}c.openNode("v:textbox",I),c.leafNode("div",{style:"text-align:left"}),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={inset:this.reverseConversionUnit(c.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),s}(N);i.exports=G},{"../base-xform":31}],47:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("./base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"createNewModel",value:function(c){return{}}},{key:"parseOpen",value:function(c){return this.parser=this.parser||this.map[c.name],this.parser?(this.parser.parseOpen(c),!0):c.name===this.tag?(this.model=this.createNewModel(c),!0):!1}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"onParserClose",value:function(c,W){this.model[c]=W.model}},{key:"parseClose",value:function(c){return this.parser?(this.parser.parseClose(c)||(this.onParserClose(c,this.parser),this.parser=void 0),!0):c!==this.tag}}]),s}(N);i.exports=G},{"./base-xform":31}],48:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("HeadingPairs"),c.openNode("vt:vector",{size:2,baseType:"variant"}),c.openNode("vt:variant"),c.leafNode("vt:lpstr",void 0,"Worksheets"),c.closeNode(),c.openNode("vt:variant"),c.leafNode("vt:i4",void 0,W.length),c.closeNode(),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){return c.name==="HeadingPairs"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){return c!=="HeadingPairs"}}]),s}(N);i.exports=G},{"../base-xform":31}],49:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("TitlesOfParts"),c.openNode("vt:vector",{size:W.length,baseType:"lpstr"}),W.forEach(function(M){c.leafNode("vt:lpstr",void 0,M.name)}),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){return c.name==="TitlesOfParts"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){return c!=="TitlesOfParts"}}]),s}(N);i.exports=G},{"../base-xform":31}],50:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("../simple/string-xform"),u=t("./app-heading-pairs-xform"),s=t("./app-titles-of-parts-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={Company:new d({tag:"Company"}),Manager:new d({tag:"Manager"}),HeadingPairs:new u,TitleOfParts:new s},I}return f(M,[{key:"render",value:function(w,C){w.openXml(N.StdDocAttributes),w.openNode("Properties",M.PROPERTY_ATTRIBUTES),w.leafNode("Application",void 0,"Microsoft Excel"),w.leafNode("DocSecurity",void 0,"0"),w.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(w,C.worksheets),this.map.TitleOfParts.render(w,C.worksheets),this.map.Company.render(w,C.company||""),this.map.Manager.render(w,C.manager),w.leafNode("LinksUpToDate",void 0,"false"),w.leafNode("SharedDoc",void 0,"false"),w.leafNode("HyperlinksChanged",void 0,"false"),w.leafNode("AppVersion",void 0,"16.0300"),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"Properties":return!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case"Properties":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}]),M}(G);h.DateFormat=function(c){return c.toISOString().replace(/[.]\d{3,6}/,"")},h.DateAttrs={"xsi:type":"dcterms:W3CDTF"},h.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},i.exports=h},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.openXml(N.StdDocAttributes),W.openNode("Types",h.PROPERTY_ATTRIBUTES);var I={};(M.media||[]).forEach(function(C){if(C.type==="image"){var x=C.extension;I[x]||(I[x]=!0,W.leafNode("Default",{Extension:x,ContentType:"image/".concat(x)}))}}),W.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),W.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),W.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),M.worksheets.forEach(function(C){var x="/xl/worksheets/sheet".concat(C.id,".xml");W.leafNode("Override",{PartName:x,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})}),W.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),W.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var w=M.sharedStrings&&M.sharedStrings.count;w&&W.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),M.tables&&M.tables.forEach(function(C){W.leafNode("Override",{PartName:"/xl/tables/".concat(C.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})}),M.drawings&&M.drawings.forEach(function(C){W.leafNode("Override",{PartName:"/xl/drawings/".concat(C.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})}),M.commentRefs&&(W.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),M.commentRefs.forEach(function(C){var x=C.commentName;W.leafNode("Override",{PartName:"/xl/".concat(x,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})})),W.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),W.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),W.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(G);d.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},i.exports=d},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("../simple/date-xform"),u=t("../simple/string-xform"),s=t("../simple/integer-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"dc:creator":new u({tag:"dc:creator"}),"dc:title":new u({tag:"dc:title"}),"dc:subject":new u({tag:"dc:subject"}),"dc:description":new u({tag:"dc:description"}),"dc:identifier":new u({tag:"dc:identifier"}),"dc:language":new u({tag:"dc:language"}),"cp:keywords":new u({tag:"cp:keywords"}),"cp:category":new u({tag:"cp:category"}),"cp:lastModifiedBy":new u({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new d({tag:"cp:lastPrinted",format:M.DateFormat}),"cp:revision":new s({tag:"cp:revision"}),"cp:version":new u({tag:"cp:version"}),"cp:contentStatus":new u({tag:"cp:contentStatus"}),"cp:contentType":new u({tag:"cp:contentType"}),"dcterms:created":new d({tag:"dcterms:created",attrs:M.DateAttrs,format:M.DateFormat}),"dcterms:modified":new d({tag:"dcterms:modified",attrs:M.DateAttrs,format:M.DateFormat})},I}return f(M,[{key:"render",value:function(w,C){w.openXml(N.StdDocAttributes),w.openNode("cp:coreProperties",M.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(w,C.creator),this.map["dc:title"].render(w,C.title),this.map["dc:subject"].render(w,C.subject),this.map["dc:description"].render(w,C.description),this.map["dc:identifier"].render(w,C.identifier),this.map["dc:language"].render(w,C.language),this.map["cp:keywords"].render(w,C.keywords),this.map["cp:category"].render(w,C.category),this.map["cp:lastModifiedBy"].render(w,C.lastModifiedBy),this.map["cp:lastPrinted"].render(w,C.lastPrinted),this.map["cp:revision"].render(w,C.revision),this.map["cp:version"].render(w,C.version),this.map["cp:contentStatus"].render(w,C.contentStatus),this.map["cp:contentType"].render(w,C.contentType),this.map["dcterms:created"].render(w,C.created),this.map["dcterms:modified"].render(w,C.modified),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[w.name],this.parser)return this.parser.parseOpen(w),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(w)))}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(w))}}}]),M}(G);h.DateFormat=function(c){return c.toISOString().replace(/[.]\d{3}/,"")},h.DateAttrs={"xsi:type":"dcterms:W3CDTF"},h.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},i.exports=h},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("Relationship",W)}},{key:"parseOpen",value:function(c){switch(c.name){case"Relationship":return this.model=c.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],54:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./relationship-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={Relationship:new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;I=I||this._values,M.openXml(N.StdDocAttributes),M.openNode("Relationships",c.RELATIONSHIPS_ATTRIBUTES),I.forEach(function(C){w.map.Relationship.render(M,C)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[M.name],this.parser)return this.parser.parseOpen(M),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(M)))}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(M){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(M))}}}]),c}(G);u.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"parseOpen",value:function(c){if(this.parser)return this.parser.parseOpen(c),!0;switch(c.name){case this.tag:this.reset(),this.model={range:{editAs:c.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[c.name],this.parser&&this.parser.parseOpen(c);break}return!0}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"reconcilePicture",value:function(c,W){if(c&&c.rId){var M=W.rels[c.rId],I=M.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(I){var w=I[1],C=W.mediaIndex[w];return W.media[C]}}}}]),s}(N);i.exports=G},{"../base-xform":31}],56:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./blip-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={"a:blip":new G},c}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag),this.map["a:blip"].render(W,M),W.openNode("a:stretch"),W.leafNode("a:fillRect"),W.closeNode(),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:this.reset();break;default:this.parser=this.map[W.name],this.parser&&this.parser.parseOpen(W);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.parser=void 0),!0;switch(W){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),h}(N);i.exports=d},{"../base-xform":31,"./blip-xform":57}],57:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":W.rId,cstate:"print"})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),s}(N);i.exports=G},{"../base-xform":31}],58:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c){c.openNode(this.tag),c.leafNode("a:picLocks",{noChangeAspect:"1"}),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),s}(N);i.exports=G},{"../base-xform":31}],59:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./hlink-click-xform"),d=t("./ext-lst-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"a:hlinkClick":new G,"a:extLst":new d},W}return f(c,[{key:"render",value:function(M,I){M.openNode(this.tag,{id:I.index,name:"Picture ".concat(I.index)}),this.map["a:hlinkClick"].render(M,I),this.map["a:extLst"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset();break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),c}(N);i.exports=u},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("../simple/integer-xform"),d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.tag=c.tag,W.map={"xdr:col":new G({tag:"xdr:col",zero:!0}),"xdr:colOff":new G({tag:"xdr:colOff",zero:!0}),"xdr:row":new G({tag:"xdr:row",zero:!0}),"xdr:rowOff":new G({tag:"xdr:rowOff",zero:!0})},W}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag),this.map["xdr:col"].render(W,M.nativeCol),this.map["xdr:colOff"].render(W,M.nativeColOff),this.map["xdr:row"].render(W,M.nativeRow),this.map["xdr:rowOff"].render(W,M.nativeRowOff),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:this.reset();break;default:this.parser=this.map[W.name],this.parser&&this.parser.parseOpen(W);break}return!0}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.parser=void 0),!0;switch(W){case this.tag:return this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1;default:return!0}}}]),h}(N);i.exports=d},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(t,i,l){function a(W){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(I){return typeof I}:a=function(I){return I&&typeof Symbol=="function"&&I.constructor===Symbol&&I!==Symbol.prototype?"symbol":typeof I},a(W)}function o(W,M){if(!(W instanceof M))throw new TypeError("Cannot call a class as a function")}function r(W,M){for(var I=0;I"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(W){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},m(W)}var N=t("../../../utils/col-cache"),G=t("../../../utils/xml-stream"),d=t("../base-xform"),u=t("./two-cell-anchor-xform"),s=t("./one-cell-anchor-xform");function h(W){var M=typeof W.range=="string"?N.decode(W.range):W.range;return M.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var c=function(W){v(I,W);var M=Z(I);function I(){var w;return o(this,I),w=M.call(this),w.map={"xdr:twoCellAnchor":new u,"xdr:oneCellAnchor":new s},w}return f(I,[{key:"prepare",value:function(C){var x=this;C.anchors.forEach(function(R,g){R.anchorType=h(R);var S=x.map[R.anchorType];S.prepare(R,{index:g})})}},{key:"render",value:function(C,x){var R=this;C.openXml(G.StdDocAttributes),C.openNode(this.tag,I.DRAWING_ATTRIBUTES),x.anchors.forEach(function(g){var S=R.map[g.anchorType];S.render(C,g)}),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(C){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(C,x){var R=this;C.anchors.forEach(function(g){g.br?R.map["xdr:twoCellAnchor"].reconcile(g,x):R.map["xdr:oneCellAnchor"].reconcile(g,x)})}},{key:"tag",get:function(){return"xdr:wsDr"}}]),I}(d);c.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},i.exports=c},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c){c.openNode(this.tag),c.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),c.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),s}(N);i.exports=G},{"../base-xform":31}],63:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=9525,d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.tag=c.tag,W.map={},W}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag);var I=Math.floor(M.width*G),w=Math.floor(M.height*G);W.addAttribute("cx",I),W.addAttribute("cy",w),W.closeNode()}},{key:"parseOpen",value:function(W){return W.name===this.tag?(this.model={width:parseInt(W.attributes.cx||"0",10)/G,height:parseInt(W.attributes.cy||"0",10)/G},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(N);i.exports=d},{"../base-xform":31}],64:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W.hyperlinks&&W.hyperlinks.rId&&c.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":W.hyperlinks.rId,tooltip:W.hyperlinks.tooltip})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={hyperlinks:{rId:c.attributes["r:id"],tooltip:c.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),s}(N);i.exports=G},{"../base-xform":31}],65:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./c-nv-pr-xform"),d=t("./c-nv-pic-pr-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"xdr:cNvPr":new G,"xdr:cNvPicPr":new d},W}return f(c,[{key:"render",value:function(M,I){M.openNode(this.tag),this.map["xdr:cNvPr"].render(M,I),this.map["xdr:cNvPicPr"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset();break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),c}(N);i.exports=u},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("./base-cell-anchor-xform"),G=t("../static-xform"),d=t("./cell-position-xform"),u=t("./ext-xform"),s=t("./pic-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"xdr:from":new d({tag:"xdr:from"}),"xdr:ext":new u({tag:"xdr:ext"}),"xdr:pic":new s,"xdr:clientData":new G({tag:"xdr:clientData"})},I}return f(M,[{key:"prepare",value:function(w,C){this.map["xdr:pic"].prepare(w.picture,C)}},{key:"render",value:function(w,C){w.openNode(this.tag,{editAs:C.range.editAs||"oneCell"}),this.map["xdr:from"].render(w,C.range.tl),this.map["xdr:ext"].render(w,C.range.ext),this.map["xdr:pic"].render(w,C.picture),this.map["xdr:clientData"].render(w,{}),w.closeNode()}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(w,C){w.medium=this.reconcilePicture(w.picture,C)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),M}(N);i.exports=h},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("../static-xform"),d=t("./blip-fill-xform"),u=t("./nv-pic-pr-xform"),s=t("./sp-pr"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"xdr:nvPicPr":new u,"xdr:blipFill":new d,"xdr:spPr":new G(s)},I}return f(M,[{key:"prepare",value:function(w,C){w.index=C.index+1}},{key:"render",value:function(w,C){w.openNode(this.tag),this.map["xdr:nvPicPr"].render(w,C),this.map["xdr:blipFill"].render(w,C),this.map["xdr:spPr"].render(w,C),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case this.tag:this.reset();break;default:this.parser=this.map[w.name],this.parser&&this.parser.parseOpen(w);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(w){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:pic"}}]),M}(N);i.exports=h},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(t,i,l){i.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],69:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("./base-cell-anchor-xform"),G=t("../static-xform"),d=t("./cell-position-xform"),u=t("./pic-xform"),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={"xdr:from":new d({tag:"xdr:from"}),"xdr:to":new d({tag:"xdr:to"}),"xdr:pic":new u,"xdr:clientData":new G({tag:"xdr:clientData"})},M}return f(W,[{key:"prepare",value:function(I,w){this.map["xdr:pic"].prepare(I.picture,w)}},{key:"render",value:function(I,w){I.openNode(this.tag,{editAs:w.range.editAs||"oneCell"}),this.map["xdr:from"].render(I,w.range.tl),this.map["xdr:to"].render(I,w.range.br),this.map["xdr:pic"].render(I,w.picture),this.map["xdr:clientData"].render(I,{}),I.closeNode()}},{key:"parseClose",value:function(I){if(this.parser)return this.parser.parseClose(I)||(this.parser=void 0),!0;switch(I){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(I,w){I.medium=this.reconcilePicture(I.picture,w)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),W}(N);i.exports=s},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("./base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.always=!!h.always,c.count=h.count,c.empty=h.empty,c.$count=h.$count||"count",c.$=h.$,c.childXform=h.childXform,c.maxItems=h.maxItems,c}return f(s,[{key:"prepare",value:function(c,W){var M=this.childXform;c&&c.forEach(function(I,w){W.index=w,M.prepare(I,W)})}},{key:"render",value:function(c,W){if(this.always||W&&W.length){c.openNode(this.tag,this.$),this.count&&c.addAttribute(this.$count,W&&W.length||0);var M=this.childXform;(W||[]).forEach(function(I,w){M.render(c,I,w)}),c.closeNode()}else this.empty&&c.leafNode(this.tag)}},{key:"parseOpen",value:function(c){if(this.parser)return this.parser.parseOpen(c),!0;switch(c.name){case this.tag:return this.model=[],!0;default:return this.childXform.parseOpen(c)?(this.parser=this.childXform,!0):!1}}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"parseClose",value:function(c){if(this.parser){if(!this.parser.parseClose(c)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error("Max ".concat(this.childXform.tag," count (").concat(this.maxItems,") exceeded"));return!0}return!1}},{key:"reconcile",value:function(c,W){if(c){var M=this.childXform;c.forEach(function(I){M.reconcile(I,W)})}}}]),s}(N);i.exports=G},{"./base-xform":31}],71:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/col-cache"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M)if(typeof M=="string")W.leafNode("autoFilter",{ref:M});else{var I=function(R){return typeof R=="string"?R:N.getAddress(R.row,R.column).address},w=I(M.from),C=I(M.to);w&&C&&W.leafNode("autoFilter",{ref:"".concat(w,":").concat(C)})}}},{key:"parseOpen",value:function(W){W.name==="autoFilter"&&(this.model=W.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),h}(G);i.exports=d},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(t,i,l){function a(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(R){return typeof R}:a=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},a(C)}function o(C,x){var R=Object.keys(C);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(C);x&&(g=g.filter(function(S){return Object.getOwnPropertyDescriptor(C,S).enumerable})),R.push.apply(R,g)}return R}function r(C){for(var x=1;x"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(C){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},d(C)}var u=t("../../../utils/utils"),s=t("../base-xform"),h=t("../../../doc/range"),c=t("../../../doc/enums"),W=t("../strings/rich-text-xform");function M(C){if(C==null)return c.ValueType.Null;if(C instanceof String||typeof C=="string")return c.ValueType.String;if(typeof C=="number")return c.ValueType.Number;if(typeof C=="boolean")return c.ValueType.Boolean;if(C instanceof Date)return c.ValueType.Date;if(C.text&&C.hyperlink)return c.ValueType.Hyperlink;if(C.formula)return c.ValueType.Formula;if(C.error)return c.ValueType.Error;throw new Error("I could not understand type of value")}function I(C){switch(C.type){case c.ValueType.Formula:return M(C.result);default:return C.type}}var w=function(C){p(R,C);var x=X(R);function R(){var g;return v(this,R),g=x.call(this),g.richTextXForm=new W,g}return Z(R,[{key:"prepare",value:function(S,L){var V=L.styles.addStyleModel(S.style||{},I(S));switch(V&&(S.styleId=V),S.comment&&L.comments.push(r(r({},S.comment),{},{ref:S.address})),S.type){case c.ValueType.String:case c.ValueType.RichText:L.sharedStrings&&(S.ssId=L.sharedStrings.add(S.value));break;case c.ValueType.Date:L.date1904&&(S.date1904=!0);break;case c.ValueType.Hyperlink:L.sharedStrings&&S.text!==void 0&&S.text!==null&&(S.ssId=L.sharedStrings.add(S.text)),L.hyperlinks.push({address:S.address,target:S.hyperlink,tooltip:S.tooltip});break;case c.ValueType.Merge:L.merges.add(S);break;case c.ValueType.Formula:if(L.date1904&&(S.date1904=!0),S.shareType==="shared"&&(S.si=L.siFormulae++),S.formula)L.formulae[S.address]=S;else if(S.sharedFormula){var Y=L.formulae[S.sharedFormula];if(!Y)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(S.address));Y.si===void 0?(Y.shareType="shared",Y.si=L.siFormulae++,Y.range=new h(Y.address,S.address)):Y.range&&Y.range.expandToAddress(S.address),S.si=Y.si}break}}},{key:"renderFormula",value:function(S,L){var V=null;switch(L.shareType){case"shared":V={t:"shared",ref:L.ref||L.range.range,si:L.si};break;case"array":V={t:"array",ref:L.ref};break;default:L.si!==void 0&&(V={t:"shared",si:L.si});break}switch(M(L.result)){case c.ValueType.Null:S.leafNode("f",V,L.formula);break;case c.ValueType.String:S.addAttribute("t","str"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result);break;case c.ValueType.Number:S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result);break;case c.ValueType.Boolean:S.addAttribute("t","b"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result?1:0);break;case c.ValueType.Error:S.addAttribute("t","e"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result.error);break;case c.ValueType.Date:S.leafNode("f",V,L.formula),S.leafNode("v",null,u.dateToExcel(L.result,L.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(S,L){var V=this;if(!(L.type===c.ValueType.Null&&!L.styleId)){switch(S.openNode("c"),S.addAttribute("r",L.address),L.styleId&&S.addAttribute("s",L.styleId),L.type){case c.ValueType.Null:break;case c.ValueType.Number:S.leafNode("v",null,L.value);break;case c.ValueType.Boolean:S.addAttribute("t","b"),S.leafNode("v",null,L.value?"1":"0");break;case c.ValueType.Error:S.addAttribute("t","e"),S.leafNode("v",null,L.value.error);break;case c.ValueType.String:case c.ValueType.RichText:L.ssId!==void 0?(S.addAttribute("t","s"),S.leafNode("v",null,L.ssId)):L.value&&L.value.richText?(S.addAttribute("t","inlineStr"),S.openNode("is"),L.value.richText.forEach(function(Y){V.richTextXForm.render(S,Y)}),S.closeNode("is")):(S.addAttribute("t","str"),S.leafNode("v",null,L.value));break;case c.ValueType.Date:S.leafNode("v",null,u.dateToExcel(L.value,L.date1904));break;case c.ValueType.Hyperlink:L.ssId!==void 0?(S.addAttribute("t","s"),S.leafNode("v",null,L.ssId)):(S.addAttribute("t","str"),S.leafNode("v",null,L.text));break;case c.ValueType.Formula:this.renderFormula(S,L);break;case c.ValueType.Merge:break}S.closeNode()}}},{key:"parseOpen",value:function(S){if(this.parser)return this.parser.parseOpen(S),!0;switch(S.name){case"c":return this.model={address:S.attributes.r},this.t=S.attributes.t,S.attributes.s&&(this.model.styleId=parseInt(S.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=S.attributes.si,this.model.shareType=S.attributes.t,this.model.ref=S.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(S),!0;default:return!1}}},{key:"parseText",value:function(S){if(this.parser){this.parser.parseText(S);return}switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+S:S;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+S:S:this.model.value=this.model.value?this.model.value+S:S;break}}},{key:"parseClose",value:function(S){switch(S){case"c":{var L=this.model;if(L.formula||L.shareType)L.type=c.ValueType.Formula,L.value&&(this.t==="str"?L.result=u.xmlDecode(L.value):this.t==="b"?L.result=parseInt(L.value,10)!==0:this.t==="e"?L.result={error:L.value}:L.result=parseFloat(L.value),L.value=void 0);else if(L.value!==void 0)switch(this.t){case"s":L.type=c.ValueType.String,L.value=parseInt(L.value,10);break;case"str":L.type=c.ValueType.String,L.value=u.xmlDecode(L.value);break;case"inlineStr":L.type=c.ValueType.String;break;case"b":L.type=c.ValueType.Boolean,L.value=parseInt(L.value,10)!==0;break;case"e":L.type=c.ValueType.Error,L.value={error:L.value};break;default:L.type=c.ValueType.Number,L.value=parseFloat(L.value);break}else L.styleId?L.type=c.ValueType.Null:L.type=c.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(S),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return this.parser?(this.parser.parseClose(S),!0):!1}}},{key:"reconcile",value:function(S,L){var V=S.styleId&&L.styles&&L.styles.getStyleModel(S.styleId);switch(V&&(S.style=V),S.styleId!==void 0&&(S.styleId=void 0),S.type){case c.ValueType.String:typeof S.value=="number"&&L.sharedStrings&&(S.value=L.sharedStrings.getString(S.value)),S.value.richText&&(S.type=c.ValueType.RichText);break;case c.ValueType.Number:V&&u.isDateFmt(V.numFmt)&&(S.type=c.ValueType.Date,S.value=u.excelToDate(S.value,L.date1904));break;case c.ValueType.Formula:S.result!==void 0&&V&&u.isDateFmt(V.numFmt)&&(S.result=u.excelToDate(S.result,L.date1904)),S.shareType==="shared"&&(S.ref?L.formulae[S.si]=S.address:(S.sharedFormula=L.formulae[S.si],delete S.shareType),delete S.si);break}var Y=L.hyperlinkMap[S.address];Y&&(S.type===c.ValueType.Formula?(S.text=S.result,S.result=void 0):(S.text=S.value,S.value=void 0),S.type=c.ValueType.Hyperlink,S.hyperlink=Y);var T=L.commentsMap&&L.commentsMap[S.address];T&&(S.comment=T)}},{key:"tag",get:function(){return"c"}}]),R}(s);i.exports=w},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{iconSet:W.iconSet,iconId:W.iconId})}},{key:"parseOpen",value:function(c){var W=c.attributes;this.model={iconSet:W.iconSet,iconId:N.toIntValue(W.iconId)}}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),s}(N);i.exports=G},{"../../base-xform":31}],74:[function(t,i,l){function a(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(w){return typeof w}:a=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},a(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("uuid"),G=N.v4,d=t("../../base-xform"),u=t("../../composite-xform"),s=t("./databar-ext-xform"),h=t("./icon-set-ext-xform"),c={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},W=function(M){v(w,M);var I=Z(w);function w(){var C;return o(this,w),C=I.call(this),C.map={"x14:dataBar":C.databarXform=new s,"x14:iconSet":C.iconSetXform=new h},C}return f(w,[{key:"prepare",value:function(x){w.isExt(x)&&(x.x14Id="{".concat(G(),"}").toUpperCase())}},{key:"render",value:function(x,R){if(w.isExt(R))switch(R.type){case"dataBar":this.renderDataBar(x,R);break;case"iconSet":this.renderIconSet(x,R);break}}},{key:"renderDataBar",value:function(x,R){x.openNode(this.tag,{type:"dataBar",id:R.x14Id}),this.databarXform.render(x,R),x.closeNode()}},{key:"renderIconSet",value:function(x,R){x.openNode(this.tag,{type:"iconSet",priority:R.priority,id:R.x14Id||"{".concat(G(),"}")}),this.iconSetXform.render(x,R),x.closeNode()}},{key:"createNewModel",value:function(x){var R=x.attributes;return{type:R.type,x14Id:R.id,priority:d.toIntValue(R.priority)}}},{key:"onParserClose",value:function(x,R){Object.assign(this.model,R.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(x){return x.type==="dataBar"?s.isExt(x):!!(x.type==="iconSet"&&(x.custom||c[x.iconSet]))}}]),w}(u);i.exports=W},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../composite-xform"),G=t("./f-ext-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={"xm:f":c.fExtXform=new G},c}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag,{type:M.type}),M.value!==void 0&&this.fExtXform.render(W,M.value),W.closeNode()}},{key:"createNewModel",value:function(W){return{type:W.attributes.type}}},{key:"onParserClose",value:function(W,M){switch(W){case"xm:f":this.model.value=M.model?parseFloat(M.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),h}(N);i.exports=d},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("./sqref-ext-xform"),d=t("./cf-rule-ext-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"xm:sqref":W.sqRef=new G,"x14:cfRule":W.cfRule=new d},W}return f(c,[{key:"prepare",value:function(M,I){var w=this;M.rules.forEach(function(C){w.cfRule.prepare(C,I)})}},{key:"render",value:function(M,I){var w=this;I.rules.some(d.isExt)&&(M.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),I.rules.filter(d.isExt).forEach(function(C){return w.cfRule.render(M,C)}),this.sqRef.render(M,I.ref),M.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(M,I){switch(M){case"xm:sqref":this.model.ref=I.model;break;case"x14:cfRule":this.model.rules.push(I.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("./cf-rule-ext-xform"),d=t("./conditional-formatting-ext-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"x14:conditionalFormatting":W.cfXform=new d},W}return f(c,[{key:"hasContent",value:function(M){return M.hasExtContent===void 0&&(M.hasExtContent=M.some(function(I){return I.rules.some(G.isExt)})),M.hasExtContent}},{key:"prepare",value:function(M,I){var w=this;M.forEach(function(C){w.cfXform.prepare(C,I)})}},{key:"render",value:function(M,I){var w=this;this.hasContent(I)&&(M.openNode(this.tag),I.forEach(function(C){return w.cfXform.render(M,C)}),M.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(M,I){this.model.push(I.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(t,i,l){function a(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(R){return typeof R}:a=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},a(C)}function o(C,x){return Z(C)||b(C,x)||f(C,x)||r()}function r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(C,x){if(C){if(typeof C=="string")return v(C,x);var R=Object.prototype.toString.call(C).slice(8,-1);if(R==="Object"&&C.constructor&&(R=C.constructor.name),R==="Map"||R==="Set")return Array.from(C);if(R==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R))return v(C,x)}}function v(C,x){(x==null||x>C.length)&&(x=C.length);for(var R=0,g=new Array(x);R"u"||!(Symbol.iterator in Object(C)))){var R=[],g=!0,S=!1,L=void 0;try{for(var V=C[Symbol.iterator](),Y;!(g=(Y=V.next()).done)&&(R.push(Y.value),!(x&&R.length===x));g=!0);}catch(T){S=!0,L=T}finally{try{!g&&V.return!=null&&V.return()}finally{if(S)throw L}}return R}}function Z(C){if(Array.isArray(C))return C}function p(C,x){if(!(C instanceof x))throw new TypeError("Cannot call a class as a function")}function y(C,x){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(C){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},h(C)}var c=t("../../base-xform"),W=t("../../composite-xform"),M=t("../../style/color-xform"),I=t("./cfvo-ext-xform"),w=function(C){m(R,C);var x=G(R);function R(){var g;return p(this,R),g=x.call(this),g.map={"x14:cfvo":g.cfvoXform=new I,"x14:borderColor":g.borderColorXform=new M("x14:borderColor"),"x14:negativeBorderColor":g.negativeBorderColorXform=new M("x14:negativeBorderColor"),"x14:negativeFillColor":g.negativeFillColorXform=new M("x14:negativeFillColor"),"x14:axisColor":g.axisColorXform=new M("x14:axisColor")},g}return X(R,[{key:"render",value:function(S,L){var V=this;S.openNode(this.tag,{minLength:c.toIntAttribute(L.minLength,0,!0),maxLength:c.toIntAttribute(L.maxLength,100,!0),border:c.toBoolAttribute(L.border,!1),gradient:c.toBoolAttribute(L.gradient,!0),negativeBarColorSameAsPositive:c.toBoolAttribute(L.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:c.toBoolAttribute(L.negativeBarBorderColorSameAsPositive,!0),axisPosition:c.toAttribute(L.axisPosition,"auto"),direction:c.toAttribute(L.direction,"leftToRight")}),L.cfvo.forEach(function(Y){V.cfvoXform.render(S,Y)}),this.borderColorXform.render(S,L.borderColor),this.negativeBorderColorXform.render(S,L.negativeBorderColor),this.negativeFillColorXform.render(S,L.negativeFillColor),this.axisColorXform.render(S,L.axisColor),S.closeNode()}},{key:"createNewModel",value:function(S){var L=S.attributes;return{cfvo:[],minLength:c.toIntValue(L.minLength,0),maxLength:c.toIntValue(L.maxLength,100),border:c.toBoolValue(L.border,!1),gradient:c.toBoolValue(L.gradient,!0),negativeBarColorSameAsPositive:c.toBoolValue(L.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:c.toBoolValue(L.negativeBarBorderColorSameAsPositive,!0),axisPosition:c.toStringValue(L.axisPosition,"auto"),direction:c.toStringValue(L.direction,"leftToRight")}}},{key:"onParserClose",value:function(S,L){var V=S.split(":"),Y=o(V,2),T=Y[1];switch(T){case"cfvo":this.model.cfvo.push(L.model);break;default:this.model[T]=L.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(S){return!S.gradient}}]),R}(W);i.exports=w},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),s}(N);i.exports=G},{"../../base-xform":31}],80:[function(t,i,l){function a(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(R){return typeof R}:a=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},a(C)}function o(C,x){return Z(C)||b(C,x)||f(C,x)||r()}function r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(C,x){if(C){if(typeof C=="string")return v(C,x);var R=Object.prototype.toString.call(C).slice(8,-1);if(R==="Object"&&C.constructor&&(R=C.constructor.name),R==="Map"||R==="Set")return Array.from(C);if(R==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R))return v(C,x)}}function v(C,x){(x==null||x>C.length)&&(x=C.length);for(var R=0,g=new Array(x);R"u"||!(Symbol.iterator in Object(C)))){var R=[],g=!0,S=!1,L=void 0;try{for(var V=C[Symbol.iterator](),Y;!(g=(Y=V.next()).done)&&(R.push(Y.value),!(x&&R.length===x));g=!0);}catch(T){S=!0,L=T}finally{try{!g&&V.return!=null&&V.return()}finally{if(S)throw L}}return R}}function Z(C){if(Array.isArray(C))return C}function p(C,x){if(!(C instanceof x))throw new TypeError("Cannot call a class as a function")}function y(C,x){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(C){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},h(C)}var c=t("../../base-xform"),W=t("../../composite-xform"),M=t("./cfvo-ext-xform"),I=t("./cf-icon-ext-xform"),w=function(C){m(R,C);var x=G(R);function R(){var g;return p(this,R),g=x.call(this),g.map={"x14:cfvo":g.cfvoXform=new M,"x14:cfIcon":g.cfIconXform=new I},g}return X(R,[{key:"render",value:function(S,L){var V=this;S.openNode(this.tag,{iconSet:c.toStringAttribute(L.iconSet),reverse:c.toBoolAttribute(L.reverse,!1),showValue:c.toBoolAttribute(L.showValue,!0),custom:c.toBoolAttribute(L.icons,!1)}),L.cfvo.forEach(function(Y){V.cfvoXform.render(S,Y)}),L.icons&&L.icons.forEach(function(Y,T){Y.iconId=T,V.cfIconXform.render(S,Y)}),S.closeNode()}},{key:"createNewModel",value:function(S){var L=S.attributes;return{cfvo:[],iconSet:c.toStringValue(L.iconSet,"3TrafficLights"),reverse:c.toBoolValue(L.reverse,!1),showValue:c.toBoolValue(L.showValue,!0)}}},{key:"onParserClose",value:function(S,L){var V=S.split(":"),Y=o(V,2),T=Y[1];switch(T){case"cfvo":this.model.cfvo.push(L.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(L.model);break;default:this.model[T]=L.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),R}(W);i.exports=w},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),s}(N);i.exports=G},{"../../base-xform":31}],82:[function(t,i,l){function a(L){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(Y){return typeof Y}:a=function(Y){return Y&&typeof Symbol=="function"&&Y.constructor===Symbol&&Y!==Symbol.prototype?"symbol":typeof Y},a(L)}function o(L,V){var Y=Object.keys(L);if(Object.getOwnPropertySymbols){var T=Object.getOwnPropertySymbols(L);V&&(T=T.filter(function(J){return Object.getOwnPropertyDescriptor(L,J).enumerable})),Y.push.apply(Y,T)}return Y}function r(L){for(var V=1;V"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(L){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(Y){return Y.__proto__||Object.getPrototypeOf(Y)},d(L)}var u=t("../../base-xform"),s=t("../../composite-xform"),h=t("../../../../doc/range"),c=t("./databar-xform"),W=t("./ext-lst-ref-xform"),M=t("./formula-xform"),I=t("./color-scale-xform"),w=t("./icon-set-xform"),C={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},x=function(V){if(V.formulae&&V.formulae[0])return V.formulae[0];var Y=new h(V.ref),T=Y.tl;switch(V.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(V.text,'",').concat(T,")))");case"containsBlanks":return"LEN(TRIM(".concat(T,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(T,"))>0");case"containsErrors":return"ISERROR(".concat(T,")");case"notContainsErrors":return"NOT(ISERROR(".concat(T,"))");default:return}},R=function(V){if(V.formulae&&V.formulae[0])return V.formulae[0];var Y=new h(V.ref),T=Y.tl;switch(V.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(T,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(T,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(T,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(T,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(T,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(T,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(T,",1)=TODAY()-1");case"today":return"FLOOR(".concat(T,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(T,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(T,",1)<=6,FLOOR(").concat(T,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(T,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(T,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(T,")=MONTH(TODAY()),YEAR(").concat(T,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(T,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(T,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},g=function(V){var Y=V.type,T=V.operator;switch(Y){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:Y};default:return{type:Y,operator:T}}},S=function(L){p(Y,L);var V=X(Y);function Y(){var T;return v(this,Y),T=V.call(this),T.map={dataBar:T.databarXform=new c,extLst:T.extLstRefXform=new W,formula:T.formulaXform=new M,colorScale:T.colorScaleXform=new I,iconSet:T.iconSetXform=new w},T}return Z(Y,[{key:"render",value:function(J,U){switch(U.type){case"expression":this.renderExpression(J,U);break;case"cellIs":this.renderCellIs(J,U);break;case"top10":this.renderTop10(J,U);break;case"aboveAverage":this.renderAboveAverage(J,U);break;case"dataBar":this.renderDataBar(J,U);break;case"colorScale":this.renderColorScale(J,U);break;case"iconSet":this.renderIconSet(J,U);break;case"containsText":this.renderText(J,U);break;case"timePeriod":this.renderTimePeriod(J,U);break}}},{key:"renderExpression",value:function(J,U){J.openNode(this.tag,{type:"expression",dxfId:U.dxfId,priority:U.priority}),this.formulaXform.render(J,U.formulae[0]),J.closeNode()}},{key:"renderCellIs",value:function(J,U){var K=this;J.openNode(this.tag,{type:"cellIs",dxfId:U.dxfId,priority:U.priority,operator:U.operator}),U.formulae.forEach(function(H){K.formulaXform.render(J,H)}),J.closeNode()}},{key:"renderTop10",value:function(J,U){J.leafNode(this.tag,{type:"top10",dxfId:U.dxfId,priority:U.priority,percent:u.toBoolAttribute(U.percent,!1),bottom:u.toBoolAttribute(U.bottom,!1),rank:u.toIntValue(U.rank,10,!0)})}},{key:"renderAboveAverage",value:function(J,U){J.leafNode(this.tag,{type:"aboveAverage",dxfId:U.dxfId,priority:U.priority,aboveAverage:u.toBoolAttribute(U.aboveAverage,!0)})}},{key:"renderDataBar",value:function(J,U){J.openNode(this.tag,{type:"dataBar",priority:U.priority}),this.databarXform.render(J,U),this.extLstRefXform.render(J,U),J.closeNode()}},{key:"renderColorScale",value:function(J,U){J.openNode(this.tag,{type:"colorScale",priority:U.priority}),this.colorScaleXform.render(J,U),J.closeNode()}},{key:"renderIconSet",value:function(J,U){Y.isPrimitive(U)&&(J.openNode(this.tag,{type:"iconSet",priority:U.priority}),this.iconSetXform.render(J,U),J.closeNode())}},{key:"renderText",value:function(J,U){J.openNode(this.tag,{type:U.operator,dxfId:U.dxfId,priority:U.priority,operator:u.toStringAttribute(U.operator,"containsText")});var K=x(U);K&&this.formulaXform.render(J,K),J.closeNode()}},{key:"renderTimePeriod",value:function(J,U){J.openNode(this.tag,{type:"timePeriod",dxfId:U.dxfId,priority:U.priority,timePeriod:U.timePeriod});var K=R(U);K&&this.formulaXform.render(J,K),J.closeNode()}},{key:"createNewModel",value:function(J){var U=J.attributes;return r(r({},g(U)),{},{dxfId:u.toIntValue(U.dxfId),priority:u.toIntValue(U.priority),timePeriod:U.timePeriod,percent:u.toBoolValue(U.percent),bottom:u.toBoolValue(U.bottom),rank:u.toIntValue(U.rank),aboveAverage:u.toBoolValue(U.aboveAverage)})}},{key:"onParserClose",value:function(J,U){switch(J){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,U.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(U.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(J){return!(J.type==="iconSet"&&(J.custom||C[J.iconSet]))}}]),Y}(s);i.exports=S},{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{type:W.type,val:W.value})}},{key:"parseOpen",value:function(c){this.model={type:c.attributes.type,value:N.toFloatValue(c.attributes.val)}}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),s}(N);i.exports=G},{"../../base-xform":31}],84:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("../../style/color-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d,color:W.colorXform=new G},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),I.color.forEach(function(C){w.colorXform.render(M,C)}),M.closeNode()}},{key:"createNewModel",value:function(M){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(M,I){this.model[M].push(I.model)}},{key:"tag",get:function(){return"colorScale"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../composite-xform"),G=t("./cf-rule-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={cfRule:new G},c}return f(h,[{key:"render",value:function(W,M){var I=this;M.rules.some(G.isPrimitive)&&(W.openNode(this.tag,{sqref:M.ref}),M.rules.forEach(function(w){G.isPrimitive(w)&&(w.ref=M.ref,I.map.cfRule.render(W,w))}),W.closeNode())}},{key:"createNewModel",value:function(W){var M=W.attributes;return{ref:M.sqref,rules:[]}}},{key:"onParserClose",value:function(W,M){this.model.rules.push(M.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),h}(N);i.exports=d},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(t,i,l){function a(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(C){return typeof C}:a=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},a(I)}function o(I){return b(I)||v(I)||f(I)||r()}function r(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(I,w){if(I){if(typeof I=="string")return Z(I,w);var C=Object.prototype.toString.call(I).slice(8,-1);if(C==="Object"&&I.constructor&&(C=I.constructor.name),C==="Map"||C==="Set")return Array.from(I);if(C==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(C))return Z(I,w)}}function v(I){if(typeof Symbol<"u"&&Symbol.iterator in Object(I))return Array.from(I)}function b(I){if(Array.isArray(I))return Z(I)}function Z(I,w){(w==null||w>I.length)&&(w=I.length);for(var C=0,x=new Array(w);C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(I){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},h(I)}var c=t("../../base-xform"),W=t("./conditional-formatting-xform"),M=function(I){m(C,I);var w=G(C);function C(){var x;return p(this,C),x=w.call(this),x.cfXform=new W,x}return X(C,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(R,g){var S=R.reduce(function(L,V){return Math.max.apply(Math,[L].concat(o(V.rules.map(function(Y){return Y.priority||0}))))},1);R.forEach(function(L){L.rules.forEach(function(V){V.priority||(V.priority=S++),V.style&&(V.dxfId=g.styles.addDxfStyle(V.style))})})}},{key:"render",value:function(R,g){var S=this;g.forEach(function(L){S.cfXform.render(R,L)})}},{key:"parseOpen",value:function(R){if(this.parser)return this.parser.parseOpen(R),!0;switch(R.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(R),!0;default:return!1}}},{key:"parseText",value:function(R){this.parser&&this.parser.parseText(R)}},{key:"parseClose",value:function(R){return this.parser?this.parser.parseClose(R)?!0:(this.model.push(this.parser.model),this.parser=void 0,!1):!1}},{key:"reconcile",value:function(R,g){R.forEach(function(S){S.rules.forEach(function(L){L.dxfId!==void 0&&(L.style=g.styles.getDxfStyle(L.dxfId),delete L.dxfId)})})}},{key:"tag",get:function(){return"conditionalFormatting"}}]),C}(c);i.exports=M},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("../../style/color-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d,color:W.colorXform=new G},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),this.colorXform.render(M,I.color),M.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(M,I){switch(M){case"cfvo":this.model.cfvo.push(I.model);break;case"color":this.model.color=I.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../../base-xform"),G=t("../../composite-xform"),d=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){I.leafNode(this.tag,null,w)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(I){this.model+=I}},{key:"parseClose",value:function(I){return I!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),W}(N),u=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={"x14:id":M.idXform=new d},M}return f(W,[{key:"render",value:function(I,w){I.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(I,w.x14Id),I.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(I,w){this.model.x14Id=w.model}},{key:"tag",get:function(){return"ext"}}]),W}(G),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={ext:new u},M}return f(W,[{key:"render",value:function(I,w){I.openNode(this.tag),this.map.ext.render(I,w),I.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(I,w){Object.assign(this.model,w.model)}},{key:"tag",get:function(){return"extLst"}}]),W}(G);i.exports=s},{"../../base-xform":31,"../../composite-xform":47}],89:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"formula"}}]),s}(N);i.exports=G},{"../../base-xform":31}],90:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../base-xform"),G=t("../../composite-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag,{iconSet:N.toStringAttribute(I.iconSet,"3TrafficLights"),reverse:N.toBoolAttribute(I.reverse,!1),showValue:N.toBoolAttribute(I.showValue,!0)}),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),M.closeNode()}},{key:"createNewModel",value:function(M){var I=M.attributes;return{iconSet:N.toStringValue(I.iconSet,"3TrafficLights"),reverse:N.toBoolValue(I.reverse),showValue:N.toBoolValue(I.showValue),cfvo:[]}}},{key:"onParserClose",value:function(M,I){this.model[M].push(I.model)}},{key:"tag",get:function(){return"iconSet"}}]),c}(G);i.exports=u},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){var M=W.styles.addStyleModel(c.style||{});M&&(c.styleId=M)}},{key:"render",value:function(c,W){c.openNode("col"),c.addAttribute("min",W.min),c.addAttribute("max",W.max),W.width&&c.addAttribute("width",W.width),W.styleId&&c.addAttribute("style",W.styleId),W.hidden&&c.addAttribute("hidden","1"),W.bestFit&&c.addAttribute("bestFit","1"),W.outlineLevel&&c.addAttribute("outlineLevel",W.outlineLevel),W.collapsed&&c.addAttribute("collapsed","1"),c.addAttribute("customWidth","1"),c.closeNode()}},{key:"parseOpen",value:function(c){if(c.name==="col"){var W=this.model={min:parseInt(c.attributes.min||"0",10),max:parseInt(c.attributes.max||"0",10),width:c.attributes.width===void 0?void 0:parseFloat(c.attributes.width||"0")};return c.attributes.style&&(W.styleId=parseInt(c.attributes.style,10)),(c.attributes.hidden===!0||c.attributes.hidden==="true"||c.attributes.hidden===1||c.attributes.hidden==="1")&&(W.hidden=!0),c.attributes.bestFit&&(W.bestFit=!0),c.attributes.outlineLevel&&(W.outlineLevel=parseInt(c.attributes.outlineLevel,10)),c.attributes.collapsed&&(W.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(c,W){c.styleId&&(c.style=W.styles.getStyleModel(c.styleId))}},{key:"tag",get:function(){return"col"}}]),s}(N);i.exports=G},{"../base-xform":31}],92:[function(t,i,l){function a(R){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(S){return typeof S}:a=function(S){return S&&typeof Symbol=="function"&&S.constructor===Symbol&&S!==Symbol.prototype?"symbol":typeof S},a(R)}function o(R,g){if(!(R instanceof g))throw new TypeError("Cannot call a class as a function")}function r(R,g){for(var S=0;S"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(R){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(S){return S.__proto__||Object.getPrototypeOf(S)},m(R)}function N(R,g){var S=Object.keys(R);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(R);g&&(L=L.filter(function(V){return Object.getOwnPropertyDescriptor(R,V).enumerable})),S.push.apply(S,L)}return S}function G(R){for(var g=1;g1||U>1){var k=Y.row+(T-1),F=Y.col+(U-1);return G(G({},V.dataValidation),{},{sqref:"".concat(V.address,":").concat(h.encodeAddress(k,F))})}return G(G({},V.dataValidation),{},{sqref:V.address})}return null}).filter(Boolean)}var x=function(R){v(S,R);var g=Z(S);function S(){return o(this,S),g.apply(this,arguments)}return f(S,[{key:"render",value:function(V,Y){var T=C(Y);T.length&&(V.openNode("dataValidations",{count:T.length}),T.forEach(function(J){V.openNode("dataValidation"),J.type!=="any"&&(V.addAttribute("type",J.type),J.operator&&J.type!=="list"&&J.operator!=="between"&&V.addAttribute("operator",J.operator),J.allowBlank&&V.addAttribute("allowBlank","1")),J.showInputMessage&&V.addAttribute("showInputMessage","1"),J.promptTitle&&V.addAttribute("promptTitle",J.promptTitle),J.prompt&&V.addAttribute("prompt",J.prompt),J.showErrorMessage&&V.addAttribute("showErrorMessage","1"),J.errorStyle&&V.addAttribute("errorStyle",J.errorStyle),J.errorTitle&&V.addAttribute("errorTitle",J.errorTitle),J.error&&V.addAttribute("error",J.error),V.addAttribute("sqref",J.sqref),(J.formulae||[]).forEach(function(U,K){V.openNode("formula".concat(K+1)),J.type==="date"?V.writeText(s.dateToExcel(new Date(U))):V.writeText(U),V.closeNode()}),V.closeNode()}),V.closeNode())}},{key:"parseOpen",value:function(V){switch(V.name){case"dataValidations":return this.model={},!0;case"dataValidation":{this._address=V.attributes.sqref;var Y={type:V.attributes.type||"any",formulae:[]};switch(V.attributes.type&&w(Y,V.attributes,"allowBlank"),w(Y,V.attributes,"showInputMessage"),w(Y,V.attributes,"showErrorMessage"),Y.type){case"any":case"list":case"custom":break;default:M(Y,V.attributes,"operator","between");break}return M(Y,V.attributes,"promptTitle"),M(Y,V.attributes,"prompt"),M(Y,V.attributes,"errorStyle"),M(Y,V.attributes,"errorTitle"),M(Y,V.attributes,"error"),this._dataValidation=Y,!0}case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}},{key:"parseText",value:function(V){this._formula&&this._formula.push(V)}},{key:"parseClose",value:function(V){var Y=this;switch(V){case"dataValidations":return!1;case"dataValidation":{(!this._dataValidation.formulae||!this._dataValidation.formulae.length)&&(delete this._dataValidation.formulae,delete this._dataValidation.operator);var T=this._address.split(/\s+/g)||[];return T.forEach(function(U){if(U.includes(":")){var K=new W(U);K.forEachAddress(function(H){Y.model[H]=Y._dataValidation})}else Y.model[U]=Y._dataValidation}),!0}case"formula1":case"formula2":{var J=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":J=parseInt(J,10);break;case"decimal":J=parseFloat(J);break;case"date":J=s.excelToDate(parseFloat(J));break}return this._dataValidation.formulae.push(J),this._formula=void 0,!0}default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),S}(c);i.exports=x},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode("dimension",{ref:W})}},{key:"parseOpen",value:function(c){return c.name==="dimension"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),s}(N);i.exports=G},{"../base-xform":31}],94:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),s}(N);i.exports=G},{"../base-xform":31}],95:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../composite-xform"),G=t("./cf-ext/conditional-formattings-ext-xform"),d=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"x14:conditionalFormattings":W.conditionalFormattings=new G},W}return f(c,[{key:"hasContent",value:function(M){return this.conditionalFormattings.hasContent(M.conditionalFormattings)}},{key:"prepare",value:function(M,I){this.conditionalFormattings.prepare(M.conditionalFormattings,I)}},{key:"render",value:function(M,I){M.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(M,I.conditionalFormattings),M.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(M,I){this.model[M]=I.model}},{key:"tag",get:function(){return"ext"}}]),c}(N),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={ext:W.ext=new d},W}return f(c,[{key:"prepare",value:function(M,I){this.ext.prepare(M,I)}},{key:"hasContent",value:function(M){return this.ext.hasContent(M)}},{key:"render",value:function(M,I){this.hasContent(I)&&(M.openNode("extLst"),this.ext.render(M,I),M.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(M,I){Object.assign(this.model,I.model)}},{key:"tag",get:function(){return"extLst"}}]),c}(N);i.exports=u},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){if(W){c.addRollback();var M=!1;c.openNode("headerFooter"),W.differentFirst&&(c.addAttribute("differentFirst","1"),M=!0),W.differentOddEven&&(c.addAttribute("differentOddEven","1"),M=!0),W.oddHeader&&typeof W.oddHeader=="string"&&(c.leafNode("oddHeader",null,W.oddHeader),M=!0),W.oddFooter&&typeof W.oddFooter=="string"&&(c.leafNode("oddFooter",null,W.oddFooter),M=!0),W.evenHeader&&typeof W.evenHeader=="string"&&(c.leafNode("evenHeader",null,W.evenHeader),M=!0),W.evenFooter&&typeof W.evenFooter=="string"&&(c.leafNode("evenFooter",null,W.evenFooter),M=!0),W.firstHeader&&typeof W.firstHeader=="string"&&(c.leafNode("firstHeader",null,W.firstHeader),M=!0),W.firstFooter&&typeof W.firstFooter=="string"&&(c.leafNode("firstFooter",null,W.firstFooter),M=!0),M?(c.closeNode(),c.commit()):c.rollback()}}},{key:"parseOpen",value:function(c){switch(c.name){case"headerFooter":return this.model={},c.attributes.differentFirst&&(this.model.differentFirst=parseInt(c.attributes.differentFirst,0)===1),c.attributes.differentOddEven&&(this.model.differentOddEven=parseInt(c.attributes.differentOddEven,0)===1),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}},{key:"parseText",value:function(c){switch(this.currentNode){case"oddHeader":this.model.oddHeader=c;break;case"oddFooter":this.model.oddFooter=c;break;case"evenHeader":this.model.evenHeader=c;break;case"evenFooter":this.model.evenFooter=c;break;case"firstHeader":this.model.firstHeader=c;break;case"firstFooter":this.model.firstFooter=c;break}}},{key:"parseClose",value:function(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}},{key:"tag",get:function(){return"headerFooter"}}]),s}(N);i.exports=G},{"../base-xform":31}],97:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("hyperlink",{ref:W.address,"r:id":W.rId,tooltip:W.tooltip})}},{key:"parseOpen",value:function(c){return c.name==="hyperlink"?(this.model={address:c.attributes.ref,rId:c.attributes["r:id"],tooltip:c.attributes.tooltip},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),s}(N);i.exports=G},{"../base-xform":31}],98:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("mergeCell",{ref:W})}},{key:"parseOpen",value:function(c){return c.name==="mergeCell"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),s}(N);i.exports=G},{"../base-xform":31}],99:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=function(s){return typeof s<"u"},d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){return M&&(G(M.summaryBelow)||G(M.summaryRight))?(W.leafNode(this.tag,{summaryBelow:G(M.summaryBelow)?Number(M.summaryBelow):void 0,summaryRight:G(M.summaryRight)?Number(M.summaryRight):void 0}),!0):!1}},{key:"parseOpen",value:function(W){return W.name===this.tag?(this.model={summaryBelow:G(W.attributes.summaryBelow)?Boolean(Number(W.attributes.summaryBelow)):void 0,summaryRight:G(W.attributes.summaryRight)?Boolean(Number(W.attributes.summaryRight)):void 0},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),h}(N);i.exports=d},{"../base-xform":31}],101:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("brk",W)}},{key:"parseOpen",value:function(c){return c.name==="brk"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),s}(N);i.exports=G},{"../base-xform":31}],102:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/under-dash"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M){var I={left:M.left,right:M.right,top:M.top,bottom:M.bottom,header:M.header,footer:M.footer};N.some(I,function(w){return w!==void 0})&&W.leafNode(this.tag,I)}}},{key:"parseOpen",value:function(W){switch(W.name){case this.tag:return this.model={left:parseFloat(W.attributes.left||.7),right:parseFloat(W.attributes.right||.7),top:parseFloat(W.attributes.top||.75),bottom:parseFloat(W.attributes.bottom||.75),header:parseFloat(W.attributes.header||.3),footer:parseFloat(W.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),h}(G);i.exports=d},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){return W&&W.fitToPage?(c.leafNode(this.tag,{fitToPage:W.fitToPage?"1":void 0}),!0):!1}},{key:"parseOpen",value:function(c){return c.name===this.tag?(this.model={fitToPage:c.attributes.fitToPage==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),s}(N);i.exports=G},{"../base-xform":31}],104:[function(t,i,l){function a(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(w){return typeof w}:a=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},a(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(M){return M?"1":void 0}function u(M){switch(M){case"overThenDown":return M;default:return}}function s(M){switch(M){case"atEnd":case"asDisplyed":return M;default:return}}function h(M){switch(M){case"dash":case"blank":case"NA":return M;default:return}}function c(M){return M!==void 0?parseInt(M,10):void 0}var W=function(M){v(w,M);var I=Z(w);function w(){return o(this,w),I.apply(this,arguments)}return f(w,[{key:"render",value:function(x,R){if(R){var g={paperSize:R.paperSize,orientation:R.orientation,horizontalDpi:R.horizontalDpi,verticalDpi:R.verticalDpi,pageOrder:u(R.pageOrder),blackAndWhite:d(R.blackAndWhite),draft:d(R.draft),cellComments:s(R.cellComments),errors:h(R.errors),scale:R.scale,fitToWidth:R.fitToWidth,fitToHeight:R.fitToHeight,firstPageNumber:R.firstPageNumber,useFirstPageNumber:d(R.firstPageNumber),usePrinterDefaults:d(R.usePrinterDefaults),copies:R.copies};N.some(g,function(S){return S!==void 0})&&x.leafNode(this.tag,g)}}},{key:"parseOpen",value:function(x){switch(x.name){case this.tag:return this.model={paperSize:c(x.attributes.paperSize),orientation:x.attributes.orientation||"portrait",horizontalDpi:parseInt(x.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(x.attributes.verticalDpi||"4294967295",10),pageOrder:x.attributes.pageOrder||"downThenOver",blackAndWhite:x.attributes.blackAndWhite==="1",draft:x.attributes.draft==="1",cellComments:x.attributes.cellComments||"None",errors:x.attributes.errors||"displayed",scale:parseInt(x.attributes.scale||"100",10),fitToWidth:parseInt(x.attributes.fitToWidth||"1",10),fitToHeight:parseInt(x.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(x.attributes.firstPageNumber||"1",10),useFirstPageNumber:x.attributes.useFirstPageNumber==="1",usePrinterDefaults:x.attributes.usePrinterDefaults==="1",copies:parseInt(x.attributes.copies||"1",10)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetup"}}]),w}(G);i.exports=W},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),s}(N);i.exports=G},{"../base-xform":31}],106:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(s){return s?"1":void 0}var u=function(s){v(c,s);var h=Z(c);function c(){return o(this,c),h.apply(this,arguments)}return f(c,[{key:"render",value:function(M,I){if(I){var w={headings:d(I.showRowColHeaders),gridLines:d(I.showGridLines),horizontalCentered:d(I.horizontalCentered),verticalCentered:d(I.verticalCentered)};N.some(w,function(C){return C!==void 0})&&M.leafNode(this.tag,w)}}},{key:"parseOpen",value:function(M){switch(M.name){case this.tag:return this.model={showRowColHeaders:M.attributes.headings==="1",showGridLines:M.attributes.gridLines==="1",horizontalCentered:M.attributes.horizontalCentered==="1",verticalCentered:M.attributes.verticalCentered==="1"},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),c}(G);i.exports=u},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("./page-breaks-xform"),G=t("../list-xform"),d=function(u){v(h,u);var s=Z(h);function h(){o(this,h);var c={tag:"rowBreaks",count:!0,childXform:new N};return s.call(this,c)}return f(h,[{key:"render",value:function(W,M){if(M&&M.length){W.openNode(this.tag,this.$),this.count&&(W.addAttribute(this.$count,M.length),W.addAttribute("manualBreakCount",M.length));var I=this.childXform;M.forEach(function(w){I.render(W,w)}),W.closeNode()}else this.empty&&W.leafNode(this.tag)}}]),h}(G);i.exports=d},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./cell-xform"),d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.maxItems=c&&c.maxItems,W.map={c:new G},W}return f(h,[{key:"prepare",value:function(W,M){var I=M.styles.addStyleModel(W.style);I&&(W.styleId=I);var w=this.map.c;W.cells.forEach(function(C){w.prepare(C,M)})}},{key:"render",value:function(W,M,I){W.openNode("row"),W.addAttribute("r",M.number),M.height&&(W.addAttribute("ht",M.height),W.addAttribute("customHeight","1")),M.hidden&&W.addAttribute("hidden","1"),M.min>0&&M.max>0&&M.min<=M.max&&W.addAttribute("spans","".concat(M.min,":").concat(M.max)),M.styleId&&(W.addAttribute("s",M.styleId),W.addAttribute("customFormat","1")),W.addAttribute("x14ac:dyDescent","0.25"),M.outlineLevel&&W.addAttribute("outlineLevel",M.outlineLevel),M.collapsed&&W.addAttribute("collapsed","1");var w=this.map.c;M.cells.forEach(function(C){w.render(W,C,I)}),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;if(W.name==="row"){this.numRowsSeen+=1;var M=W.attributes.spans?W.attributes.spans.split(":").map(function(w){return parseInt(w,10)}):[void 0,void 0],I=this.model={number:parseInt(W.attributes.r,10),min:M[0],max:M[1],cells:[]};return W.attributes.s&&(I.styleId=parseInt(W.attributes.s,10)),(W.attributes.hidden===!0||W.attributes.hidden==="true"||W.attributes.hidden===1||W.attributes.hidden==="1")&&(I.hidden=!0),W.attributes.bestFit&&(I.bestFit=!0),W.attributes.ht&&(I.height=parseFloat(W.attributes.ht)),W.attributes.outlineLevel&&(I.outlineLevel=parseInt(W.attributes.outlineLevel,10)),W.attributes.collapsed&&(I.collapsed=!0),!0}return this.parser=this.map[W.name],this.parser?(this.parser.parseOpen(W),!0):!1}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser){if(!this.parser.parseClose(W)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error("Max column count (".concat(this.maxItems,") exceeded"));this.parser=void 0}return!0}return!1}},{key:"reconcile",value:function(W,M){W.style=W.styleId?M.styles.getStyleModel(W.styleId):{},W.styleId!==void 0&&(W.styleId=void 0);var I=this.map.c;W.cells.forEach(function(w){I.reconcile(w,M)})}},{key:"tag",get:function(){return"row"}}]),h}(N);i.exports=d},{"../base-xform":31,"./cell-xform":72}],109:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/under-dash"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M){var I={defaultRowHeight:M.defaultRowHeight,outlineLevelRow:M.outlineLevelRow,outlineLevelCol:M.outlineLevelCol,"x14ac:dyDescent":M.dyDescent};M.defaultColWidth&&(I.defaultColWidth=M.defaultColWidth),(!M.defaultRowHeight||M.defaultRowHeight!==15)&&(I.customHeight="1"),N.some(I,function(w){return w!==void 0})&&W.leafNode("sheetFormatPr",I)}}},{key:"parseOpen",value:function(W){return W.name==="sheetFormatPr"?(this.model={defaultRowHeight:parseFloat(W.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(W.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(W.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(W.attributes.outlineLevelCol||"0",10)},W.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(W.attributes.defaultColWidth)),!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),h}(G);i.exports=d},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../base-xform"),G=t("../style/color-xform"),d=t("./page-setup-properties-xform"),u=t("./outline-properties-xform"),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={tabColor:new G("tabColor"),pageSetUpPr:new d,outlinePr:new u},M}return f(W,[{key:"render",value:function(I,w){if(w){I.addRollback(),I.openNode("sheetPr");var C=!1;C=this.map.tabColor.render(I,w.tabColor)||C,C=this.map.pageSetUpPr.render(I,w.pageSetup)||C,C=this.map.outlinePr.render(I,w.outlineProperties)||C,C?(I.closeNode(),I.commit()):I.rollback()}}},{key:"parseOpen",value:function(I){return this.parser?(this.parser.parseOpen(I),!0):I.name===this.tag?(this.reset(),!0):this.map[I.name]?(this.parser=this.map[I.name],this.parser.parseOpen(I),!0):!1}},{key:"parseText",value:function(I){return this.parser?(this.parser.parseText(I),!0):!1}},{key:"parseClose",value:function(I){return this.parser?(this.parser.parseClose(I)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}},{key:"tag",get:function(){return"sheetPr"}}]),W}(N);i.exports=s},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(h,c){return h?c:void 0}function u(h,c){return h===c?!0:void 0}var s=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){if(w){var C={sheet:d(w.sheet,"1"),selectLockedCells:w.selectLockedCells===!1?"1":void 0,selectUnlockedCells:w.selectUnlockedCells===!1?"1":void 0,formatCells:d(w.formatCells,"0"),formatColumns:d(w.formatColumns,"0"),formatRows:d(w.formatRows,"0"),insertColumns:d(w.insertColumns,"0"),insertRows:d(w.insertRows,"0"),insertHyperlinks:d(w.insertHyperlinks,"0"),deleteColumns:d(w.deleteColumns,"0"),deleteRows:d(w.deleteRows,"0"),sort:d(w.sort,"0"),autoFilter:d(w.autoFilter,"0"),pivotTables:d(w.pivotTables,"0")};w.sheet&&(C.algorithmName=w.algorithmName,C.hashValue=w.hashValue,C.saltValue=w.saltValue,C.spinCount=w.spinCount,C.objects=d(w.objects===!1,"1"),C.scenarios=d(w.scenarios===!1,"1")),N.some(C,function(x){return x!==void 0})&&I.leafNode(this.tag,C)}}},{key:"parseOpen",value:function(I){switch(I.name){case this.tag:return this.model={sheet:u(I.attributes.sheet,"1"),objects:I.attributes.objects==="1"?!1:void 0,scenarios:I.attributes.scenarios==="1"?!1:void 0,selectLockedCells:I.attributes.selectLockedCells==="1"?!1:void 0,selectUnlockedCells:I.attributes.selectUnlockedCells==="1"?!1:void 0,formatCells:u(I.attributes.formatCells,"0"),formatColumns:u(I.attributes.formatColumns,"0"),formatRows:u(I.attributes.formatRows,"0"),insertColumns:u(I.attributes.insertColumns,"0"),insertRows:u(I.attributes.insertRows,"0"),insertHyperlinks:u(I.attributes.insertHyperlinks,"0"),deleteColumns:u(I.attributes.deleteColumns,"0"),deleteRows:u(I.attributes.deleteRows,"0"),sort:u(I.attributes.sort,"0"),autoFilter:u(I.attributes.autoFilter,"0"),pivotTables:u(I.attributes.pivotTables,"0")},I.attributes.algorithmName&&(this.model.algorithmName=I.attributes.algorithmName,this.model.hashValue=I.attributes.hashValue,this.model.saltValue=I.attributes.saltValue,this.model.spinCount=parseInt(I.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),W}(G);i.exports=s},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/col-cache"),G=t("../base-xform"),d={frozen:"frozen",frozenSplit:"frozen",split:"split"},u=function(s){v(c,s);var h=Z(c);function c(){return o(this,c),h.apply(this,arguments)}return f(c,[{key:"prepare",value:function(M){switch(M.state){case"frozen":case"split":break;default:M.state="normal";break}}},{key:"render",value:function(M,I){M.openNode("sheetView",{workbookViewId:I.workbookViewId||0});var w=function(L,V,Y){Y&&M.addAttribute(L,V)};w("rightToLeft","1",I.rightToLeft===!0),w("tabSelected","1",I.tabSelected),w("showRuler","0",I.showRuler===!1),w("showRowColHeaders","0",I.showRowColHeaders===!1),w("showGridLines","0",I.showGridLines===!1),w("zoomScale",I.zoomScale,I.zoomScale),w("zoomScaleNormal",I.zoomScaleNormal,I.zoomScaleNormal),w("view",I.style,I.style);var C,x,R,g;switch(I.state){case"frozen":x=I.xSplit||0,R=I.ySplit||0,C=I.topLeftCell||N.getAddress(R+1,x+1).address,g=I.xSplit&&I.ySplit&&"bottomRight"||I.xSplit&&"topRight"||"bottomLeft",M.leafNode("pane",{xSplit:I.xSplit||void 0,ySplit:I.ySplit||void 0,topLeftCell:C,activePane:g,state:"frozen"}),M.leafNode("selection",{pane:g,activeCell:I.activeCell,sqref:I.activeCell});break;case"split":I.activePane==="topLeft"&&(I.activePane=void 0),M.leafNode("pane",{xSplit:I.xSplit||void 0,ySplit:I.ySplit||void 0,topLeftCell:I.topLeftCell,activePane:I.activePane}),M.leafNode("selection",{pane:I.activePane,activeCell:I.activeCell,sqref:I.activeCell});break;case"normal":I.activeCell&&M.leafNode("selection",{activeCell:I.activeCell,sqref:I.activeCell});break}M.closeNode()}},{key:"parseOpen",value:function(M){switch(M.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(M.attributes.workbookViewId,10),rightToLeft:M.attributes.rightToLeft==="1",tabSelected:M.attributes.tabSelected==="1",showRuler:M.attributes.showRuler!=="0",showRowColHeaders:M.attributes.showRowColHeaders!=="0",showGridLines:M.attributes.showGridLines!=="0",zoomScale:parseInt(M.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(M.attributes.zoomScaleNormal||"100",10),style:M.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(M.attributes.xSplit||"0",10),ySplit:parseInt(M.attributes.ySplit||"0",10),topLeftCell:M.attributes.topLeftCell,activePane:M.attributes.activePane||"topLeft",state:M.attributes.state},!0;case"selection":{var I=M.attributes.pane||"topLeft";return this.selections[I]={pane:I,activeCell:M.attributes.activeCell},!0}default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){var I,w;switch(M){case"sheetView":return this.sheetView&&this.pane?(I=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:d[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},this.model.state==="split"&&(I.activePane=this.pane.activePane),w=this.selections[this.pane.activePane],w&&w.activeCell&&(I.activeCell=w.activeCell),this.sheetView.style&&(I.style=this.sheetView.style)):(I=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},w=this.selections.topLeft,w&&w.activeCell&&(I.activeCell=w.activeCell),this.sheetView.style&&(I.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),c}(G);i.exports=u},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),s}(N);i.exports=G},{"../base-xform":31}],114:[function(t,i,l){function a(pe){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(_){return typeof _}:a=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},a(pe)}function o(pe,re){if(!(pe instanceof re))throw new TypeError("Cannot call a class as a function")}function r(pe,re){for(var _=0;_"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(pe){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(_){return _.__proto__||Object.getPrototypeOf(_)},m(pe)}var N=t("../../../utils/under-dash"),G=t("../../../utils/col-cache"),d=t("../../../utils/xml-stream"),u=t("../../rel-type"),s=t("./merges"),h=t("../base-xform"),c=t("../list-xform"),W=t("./row-xform"),M=t("./col-xform"),I=t("./dimension-xform"),w=t("./hyperlink-xform"),C=t("./merge-cell-xform"),x=t("./data-validations-xform"),R=t("./sheet-properties-xform"),g=t("./sheet-format-properties-xform"),S=t("./sheet-view-xform"),L=t("./sheet-protection-xform"),V=t("./page-margins-xform"),Y=t("./page-setup-xform"),T=t("./print-options-xform"),J=t("./auto-filter-xform"),U=t("./picture-xform"),K=t("./drawing-xform"),H=t("./table-part-xform"),k=t("./row-breaks-xform"),F=t("./header-footer-xform"),O=t("./cf/conditional-formattings-xform"),Q=t("./ext-lst-xform"),oe=function(re,_){Object.keys(_).forEach(function(E){var $=re[E],ae=_[E];$===void 0&&ae!==void 0&&(re[E]=ae)})},se=function(re,_){if(!_||!_.length)return re;if(!re||!re.length)return _;var E={},$={};return re.forEach(function(ae){E[ae.ref]=ae,ae.rules.forEach(function(le){var ee=le.x14Id;ee&&($[ee]=le)})}),_.forEach(function(ae){ae.rules.forEach(function(le){var ee=$[le.x14Id];ee?oe(ee,le):E[ae.ref]?E[ae.ref].rules.push(le):re.push({ref:ae.ref,rules:[le]})})}),re},he=function(pe){v(_,pe);var re=Z(_);function _(E){var $;o(this,_),$=re.call(this);var ae=E||{},le=ae.maxRows,ee=ae.maxCols;return $.map={sheetPr:new R,dimension:new I,sheetViews:new c({tag:"sheetViews",count:!1,childXform:new S}),sheetFormatPr:new g,cols:new c({tag:"cols",count:!1,childXform:new M}),sheetData:new c({tag:"sheetData",count:!1,empty:!0,childXform:new W({maxItems:ee}),maxItems:le}),autoFilter:new J,mergeCells:new c({tag:"mergeCells",count:!0,childXform:new C}),rowBreaks:new k,hyperlinks:new c({tag:"hyperlinks",count:!1,childXform:new w}),pageMargins:new V,dataValidations:new x,pageSetup:new Y,headerFooter:new F,printOptions:new T,picture:new U,drawing:new K,sheetProtection:new L,tableParts:new c({tag:"tableParts",count:!0,childXform:new H}),conditionalFormatting:new O,extLst:new Q},$}return f(_,[{key:"prepare",value:function($,ae){var le=this;ae.merges=new s,$.hyperlinks=ae.hyperlinks=[],$.comments=ae.comments=[],ae.formulae={},ae.siFormulae=0,this.map.cols.prepare($.cols,ae),this.map.sheetData.prepare($.rows,ae),this.map.conditionalFormatting.prepare($.conditionalFormattings,ae),$.mergeCells=ae.merges.mergeCells;var ee=$.rels=[];function te(ue){return"rId".concat(ue.length+1)}if($.hyperlinks.forEach(function(ue){var ve=te(ee);ue.rId=ve,ee.push({Id:ve,Type:u.Hyperlink,Target:ue.target,TargetMode:"External"})}),$.comments.length>0){var be={Id:te(ee),Type:u.Comments,Target:"../comments".concat($.id,".xml")};ee.push(be);var ne={Id:te(ee),Type:u.VmlDrawing,Target:"../drawings/vmlDrawing".concat($.id,".vml")};ee.push(ne),$.comments.forEach(function(ue){ue.refAddress=G.decodeAddress(ue.ref)}),ae.commentRefs.push({commentName:"comments".concat($.id),vmlDrawing:"vmlDrawing".concat($.id)})}var B=[],q;$.media.forEach(function(ue){if(ue.type==="background"){var ve=te(ee);q=ae.media[ue.imageId],ee.push({Id:ve,Type:u.Image,Target:"../media/".concat(q.name,".").concat(q.extension)}),$.background={rId:ve},$.image=ae.media[ue.imageId]}else if(ue.type==="image"){var Ge=$.drawing;q=ae.media[ue.imageId],Ge||(Ge=$.drawing={rId:te(ee),name:"drawing".concat(++ae.drawingsCount),anchors:[],rels:[]},ae.drawings.push(Ge),ee.push({Id:Ge.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(Ge.name,".xml")}));var Je=le.preImageId===ue.imageId?B[ue.imageId]:B[Ge.rels.length];Je||(Je=te(Ge.rels),B[Ge.rels.length]=Je,Ge.rels.push({Id:Je,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(q.name,".").concat(q.extension)}));var xe={picture:{rId:Je},range:ue.range};if(ue.hyperlinks&&ue.hyperlinks.hyperlink){var ke=te(Ge.rels);B[Ge.rels.length]=ke,xe.picture.hyperlinks={tooltip:ue.hyperlinks.tooltip,rId:ke},Ge.rels.push({Id:ke,Type:u.Hyperlink,Target:ue.hyperlinks.hyperlink,TargetMode:"External"})}le.preImageId=ue.imageId,Ge.anchors.push(xe)}}),$.tables.forEach(function(ue){var ve=te(ee);ue.rId=ve,ee.push({Id:ve,Type:u.Table,Target:"../tables/".concat(ue.target)}),ue.columns.forEach(function(Ge){var Je=Ge.style;Je&&(Ge.dxfId=ae.styles.addDxfStyle(Je))})}),this.map.extLst.prepare($,ae)}},{key:"render",value:function($,ae){$.openXml(d.StdDocAttributes),$.openNode("worksheet",_.WORKSHEET_ATTRIBUTES);var le=ae.properties?{defaultRowHeight:ae.properties.defaultRowHeight,dyDescent:ae.properties.dyDescent,outlineLevelCol:ae.properties.outlineLevelCol,outlineLevelRow:ae.properties.outlineLevelRow}:void 0;ae.properties&&ae.properties.defaultColWidth&&(le.defaultColWidth=ae.properties.defaultColWidth);var ee={outlineProperties:ae.properties&&ae.properties.outlineProperties,tabColor:ae.properties&&ae.properties.tabColor,pageSetup:ae.pageSetup&&ae.pageSetup.fitToPage?{fitToPage:ae.pageSetup.fitToPage}:void 0},te=ae.pageSetup&&ae.pageSetup.margins,be={showRowColHeaders:ae.pageSetup&&ae.pageSetup.showRowColHeaders,showGridLines:ae.pageSetup&&ae.pageSetup.showGridLines,horizontalCentered:ae.pageSetup&&ae.pageSetup.horizontalCentered,verticalCentered:ae.pageSetup&&ae.pageSetup.verticalCentered},ne=ae.sheetProtection;this.map.sheetPr.render($,ee),this.map.dimension.render($,ae.dimensions),this.map.sheetViews.render($,ae.views),this.map.sheetFormatPr.render($,le),this.map.cols.render($,ae.cols),this.map.sheetData.render($,ae.rows),this.map.sheetProtection.render($,ne),this.map.autoFilter.render($,ae.autoFilter),this.map.mergeCells.render($,ae.mergeCells),this.map.conditionalFormatting.render($,ae.conditionalFormattings),this.map.dataValidations.render($,ae.dataValidations),this.map.hyperlinks.render($,ae.hyperlinks),this.map.printOptions.render($,be),this.map.pageMargins.render($,te),this.map.pageSetup.render($,ae.pageSetup),this.map.headerFooter.render($,ae.headerFooter),this.map.rowBreaks.render($,ae.rowBreaks),this.map.drawing.render($,ae.drawing),this.map.picture.render($,ae.background),this.map.tableParts.render($,ae.tables),this.map.extLst.render($,ae),ae.rels&&ae.rels.forEach(function(B){B.Type===u.VmlDrawing&&$.leafNode("legacyDrawing",{"r:id":B.Id})}),$.closeNode()}},{key:"parseOpen",value:function($){return this.parser?(this.parser.parseOpen($),!0):$.name==="worksheet"?(N.each(this.map,function(ae){ae.reset()}),!0):(this.parser=this.map[$.name],this.parser&&this.parser.parseOpen($),!0)}},{key:"parseText",value:function($){this.parser&&this.parser.parseText($)}},{key:"parseClose",value:function($){if(this.parser)return this.parser.parseClose($)||(this.parser=void 0),!0;switch($){case"worksheet":{var ae=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(ae.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(ae.outlineProperties=this.map.sheetPr.model.outlineProperties);var le={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},ee=Object.assign(le,this.map.pageSetup.model,this.map.printOptions.model),te=se(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:ae,views:this.map.sheetViews.model,pageSetup:ee,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:te},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}default:return!0}}},{key:"reconcile",value:function($,ae){var le=($.relationships||[]).reduce(function(ve,Ge){if(ve[Ge.Id]=Ge,Ge.Type===u.Comments&&($.comments=ae.comments[Ge.Target].comments),Ge.Type===u.VmlDrawing&&$.comments&&$.comments.length){var Je=ae.vmlDrawings[Ge.Target].comments;$.comments.forEach(function(xe,ke){xe.note=Object.assign({},xe.note,Je[ke])})}return ve},{});if(ae.commentsMap=($.comments||[]).reduce(function(ve,Ge){return Ge.ref&&(ve[Ge.ref]=Ge),ve},{}),ae.hyperlinkMap=($.hyperlinks||[]).reduce(function(ve,Ge){return Ge.rId&&(ve[Ge.address]=le[Ge.rId].Target),ve},{}),ae.formulae={},$.rows=$.rows&&$.rows.filter(Boolean)||[],$.rows.forEach(function(ve){ve.cells=ve.cells&&ve.cells.filter(Boolean)||[]}),this.map.cols.reconcile($.cols,ae),this.map.sheetData.reconcile($.rows,ae),this.map.conditionalFormatting.reconcile($.conditionalFormattings,ae),$.media=[],$.drawing){var ee=le[$.drawing.rId],te=ee.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(te){var be=te[1],ne=ae.drawings[be];ne.anchors.forEach(function(ve){if(ve.medium){var Ge={type:"image",imageId:ve.medium.index,range:ve.range,hyperlinks:ve.picture.hyperlinks};$.media.push(Ge)}})}}var B=$.background&&le[$.background.rId];if(B){var q=B.Target.split("/media/")[1],ue=ae.mediaIndex&&ae.mediaIndex[q];ue!==void 0&&$.media.push({type:"background",imageId:ue})}$.tables=($.tables||[]).map(function(ve){var Ge=le[ve.rId];return ae.tables[Ge.Target]}),delete $.relationships,delete $.hyperlinks,delete $.comments}}]),_}(h);he.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},i.exports=he},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c}return f(s,[{key:"render",value:function(c,W){W&&(c.openNode(this.tag),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],116:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c._format=h.format||function(W){try{return Number.isNaN(W.getTime())?"":W.toISOString()}catch{return""}},c._parse=h.parse||function(W){return new Date(W)},c}return f(s,[{key:"render",value:function(c,W){W&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,this._format(W)):c.writeText(this._format(W)),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.attr?this.model=this._parse(c.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],117:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c.zero=h.zero,c}return f(s,[{key:"render",value:function(c,W){(W||this.zero)&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,W):c.writeText(W),c.closeNode())}},{key:"parseOpen",value:function(c){return c.name===this.tag?(this.attr?this.model=parseInt(c.attributes[this.attr],10):this.text=[],!0):!1}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],118:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c}return f(s,[{key:"render",value:function(c,W){W!==void 0&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,W):c.writeText(W),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.attr?this.model=c.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],119:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./base-xform"),G=t("../../utils/xml-stream");function d(s,h){s.openNode(h.tag,h.$),h.c&&h.c.forEach(function(c){d(s,c)}),h.t&&s.writeText(h.t),s.closeNode()}var u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M._model=W,M}return f(c,[{key:"render",value:function(M){if(!this._xml){var I=new G;d(I,this._model),this._xml=I.xml}M.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){switch(M){case this._model.tag:return!1;default:return!0}}}]),c}(N);i.exports=u},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./text-xform"),G=t("./rich-text-xform"),d=t("../base-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={r:new G,t:new N},W}return f(c,[{key:"render",value:function(M,I){if(M.openNode(this.tag,{sb:I.sb||0,eb:I.eb||0}),I&&I.hasOwnProperty("richText")&&I.richText){var w=this.map.r;I.richText.forEach(function(C){w.render(M,C)})}else I&&this.map.t.render(M,I.text);M.closeNode()}},{key:"parseOpen",value:function(M){var I=M.name;return this.parser?(this.parser.parseOpen(M),!0):I===this.tag?(this.model={sb:parseInt(M.attributes.sb,10),eb:parseInt(M.attributes.eb,10)},!0):(this.parser=this.map[I],this.parser?(this.parser.parseOpen(M),!0):!1)}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser){if(!this.parser.parseClose(M)){switch(M){case"r":{var I=this.model.richText;I||(I=this.model.richText=[]),I.push(this.parser.model);break}case"t":this.model.text=this.parser.model;break}this.parser=void 0}return!0}switch(M){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),c}(d);i.exports=u},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./text-xform"),G=t("../style/font-xform"),d=t("../base-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.model=W,M}return f(c,[{key:"render",value:function(M,I){I=I||this.model,M.openNode("r"),I.font&&this.fontXform.render(M,I.font),this.textXform.render(M,I.text),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(M),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(M),!0;default:return!1}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){switch(M){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(M),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new N)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new G(c.FONT_OPTIONS))}}]),c}(d);u.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},i.exports=u},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(t,i,l){function a(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(W){return typeof W}:a=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},a(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("./text-xform"),G=t("./rich-text-xform"),d=t("./phonetic-text-xform"),u=t("../base-xform"),s=function(h){v(W,h);var c=Z(W);function W(M){var I;return o(this,W),I=c.call(this),I.model=M,I.map={r:new G,t:new N,rPh:new d},I}return f(W,[{key:"render",value:function(I,w){var C=this;I.openNode(this.tag),w&&w.hasOwnProperty("richText")&&w.richText?w.richText.length?w.richText.forEach(function(x){C.map.r.render(I,x)}):this.map.t.render(I,""):w!=null&&this.map.t.render(I,w),I.closeNode()}},{key:"parseOpen",value:function(I){var w=I.name;return this.parser?(this.parser.parseOpen(I),!0):w===this.tag?(this.model={},!0):(this.parser=this.map[w],this.parser?(this.parser.parseOpen(I),!0):!1)}},{key:"parseText",value:function(I){this.parser&&this.parser.parseText(I)}},{key:"parseClose",value:function(I){if(this.parser){if(!this.parser.parseClose(I)){switch(I){case"r":{var w=this.model.richText;w||(w=this.model.richText=[]),w.push(this.parser.model);break}case"t":this.model=this.parser.model;break}this.parser=void 0}return!0}switch(I){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),W}(u);i.exports=s},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./shared-string-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.model=W||{values:[],count:0},M.hash=Object.create(null),M.rich=Object.create(null),M}return f(c,[{key:"getString",value:function(M){return this.model.values[M]}},{key:"add",value:function(M){return M.richText?this.addRichText(M):this.addText(M)}},{key:"addText",value:function(M){var I=this.hash[M];return I===void 0&&(I=this.hash[M]=this.model.values.length,this.model.values.push(M)),this.model.count++,I}},{key:"addRichText",value:function(M){var I=this.sharedStringXform.toXml(M),w=this.rich[I];return w===void 0&&(w=this.rich[I]=this.model.values.length,this.model.values.push(M)),this.model.count++,w}},{key:"render",value:function(M,I){I=I||this._values,M.openXml(N.StdDocAttributes),M.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:I.count,uniqueCount:I.values.length});var w=this.sharedStringXform;I.values.forEach(function(C){w.render(M,C)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(M),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(M)))}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(M){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(M))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new d)}},{key:"values",get:function(){return this.model.values}},{key:"uniqueCount",get:function(){return this.model.values.length}},{key:"count",get:function(){return this.model.count}}]),c}(G);i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("t"),/^\s|\n|\s$/.test(W)&&c.addAttribute("xml:space","preserve"),c.writeText(W),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(c){this._text.push(c)}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"t"}},{key:"model",get:function(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,function(c,W){return String.fromCharCode(parseInt(W,16))})}}]),s}(N);i.exports=G},{"../base-xform":31}],125:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../doc/enums"),G=t("../../../utils/utils"),d=t("../base-xform"),u={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(function(c,W){return c[W]=!0,c},{}),horizontal:function(W){return this.horizontalValues[W]?W:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(function(c,W){return c[W]=!0,c},{}),vertical:function(W){return W==="middle"?"center":this.verticalValues[W]?W:void 0},wrapText:function(W){return W?!0:void 0},shrinkToFit:function(W){return W?!0:void 0},textRotation:function(W){switch(W){case"vertical":return W;default:return W=G.validInt(W),W>=-90&&W<=90?W:void 0}},indent:function(W){return W=G.validInt(W),Math.max(0,W)},readingOrder:function(W){switch(W){case"ltr":return N.ReadingOrder.LeftToRight;case"rtl":return N.ReadingOrder.RightToLeft;default:return}}},s={toXml:function(W){if(W=u.textRotation(W),W){if(W==="vertical")return 255;var M=Math.round(W);if(M>=0&&M<=90)return M;if(M<0&&M>=-90)return 90-M}},toModel:function(W){var M=G.validInt(W);if(M!==void 0){if(M===255)return"vertical";if(M>=0&&M<=90)return M;if(M>90&&M<=180)return 90-M}}},h=function(c){v(M,c);var W=Z(M);function M(){return o(this,M),W.apply(this,arguments)}return f(M,[{key:"render",value:function(w,C){w.addRollback(),w.openNode("alignment");var x=!1;function R(g,S){S&&(w.addAttribute(g,S),x=!0)}R("horizontal",u.horizontal(C.horizontal)),R("vertical",u.vertical(C.vertical)),R("wrapText",u.wrapText(C.wrapText)?"1":!1),R("shrinkToFit",u.shrinkToFit(C.shrinkToFit)?"1":!1),R("indent",u.indent(C.indent)),R("textRotation",s.toXml(C.textRotation)),R("readingOrder",u.readingOrder(C.readingOrder)),w.closeNode(),x?w.commit():w.rollback()}},{key:"parseOpen",value:function(w){var C={},x=!1;function R(g,S,L){g&&(C[S]=L,x=!0)}R(w.attributes.horizontal,"horizontal",w.attributes.horizontal),R(w.attributes.vertical,"vertical",w.attributes.vertical==="center"?"middle":w.attributes.vertical),R(w.attributes.wrapText,"wrapText",!!w.attributes.wrapText),R(w.attributes.shrinkToFit,"shrinkToFit",!!w.attributes.shrinkToFit),R(w.attributes.indent,"indent",parseInt(w.attributes.indent,10)),R(w.attributes.textRotation,"textRotation",s.toModel(w.attributes.textRotation)),R(w.attributes.readingOrder,"readingOrder",w.attributes.readingOrder==="2"?"rtl":"ltr"),this.model=x?C:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),M}(d);i.exports=h},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(t,i,l){function a(W,M){var I=Object.keys(W);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(W);M&&(w=w.filter(function(C){return Object.getOwnPropertyDescriptor(W,C).enumerable})),I.push.apply(I,w)}return I}function o(W){for(var M=1;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(W){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},d(W)}var u=t("../base-xform"),s=t("./color-xform"),h=function(W){p(I,W);var M=X(I);function I(w){var C;return v(this,I),C=M.call(this),C.name=w,C.map={color:new s},C}return Z(I,[{key:"render",value:function(C,x,R){var g=x&&x.color||R||this.defaultColor;C.openNode(this.name),x&&x.style&&(C.addAttribute("style",x.style),g&&this.map.color.render(C,g)),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.name:{var x=C.attributes.style;return x?this.model={style:x}:this.model=void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.parser=void 0),!0):(C===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(C){return I.validStyleValues[C]}},{key:"tag",get:function(){return this.name}}]),I}(u);h.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(function(W,M){return W[M]=!0,W},{});var c=function(W){p(I,W);var M=X(I);function I(){var w;return v(this,I),w=M.call(this),w.map={top:new h("top"),left:new h("left"),bottom:new h("bottom"),right:new h("right"),diagonal:new h("diagonal")},w}return Z(I,[{key:"render",value:function(C,x){var R=x.color;C.openNode("border"),x.diagonal&&x.diagonal.style&&(x.diagonal.up&&C.addAttribute("diagonalUp","1"),x.diagonal.down&&C.addAttribute("diagonalDown","1"));function g(S,L){S&&!S.color&&x.color&&(S=o(o({},S),{},{color:x.color})),L.render(C,S,R)}g(x.left,this.map.left),g(x.right,this.map.right),g(x.top,this.map.top),g(x.bottom,this.map.bottom),g(x.diagonal,this.map.diagonal),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"border":return this.reset(),this.diagonalUp=!!C.attributes.diagonalUp,this.diagonalDown=!!C.attributes.diagonalDown,!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;if(C==="border"){var x=this.model={},R=function(S,L,V){L&&(V&&Object.assign(L,V),x[S]=L)};R("left",this.map.left.model),R("right",this.map.right.model),R("top",this.map.top.model),R("bottom",this.map.bottom.model),R("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),I}(u);i.exports=c},{"../base-xform":31,"./color-xform":127}],127:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.name=h||"color",c}return f(s,[{key:"render",value:function(c,W){return W?(c.openNode(this.name),W.argb?c.addAttribute("rgb",W.argb):W.theme!==void 0?(c.addAttribute("theme",W.theme),W.tint!==void 0&&c.addAttribute("tint",W.tint)):W.indexed!==void 0?c.addAttribute("indexed",W.indexed):c.addAttribute("auto","1"),c.closeNode(),!0):!1}},{key:"parseOpen",value:function(c){return c.name===this.name?(c.attributes.rgb?this.model={argb:c.attributes.rgb}:c.attributes.theme?(this.model={theme:parseInt(c.attributes.theme,10)},c.attributes.tint&&(this.model.tint=parseFloat(c.attributes.tint))):c.attributes.indexed?this.model={indexed:parseInt(c.attributes.indexed,10)}:this.model=void 0,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this.name}}]),s}(N);i.exports=G},{"../base-xform":31}],128:[function(t,i,l){function a(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(w){return typeof w}:a=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},a(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("../base-xform"),G=t("./alignment-xform"),d=t("./border-xform"),u=t("./fill-xform"),s=t("./font-xform"),h=t("./numfmt-xform"),c=t("./protection-xform"),W=function(M){v(w,M);var I=Z(w);function w(){var C;return o(this,w),C=I.call(this),C.map={alignment:new G,border:new d,fill:new u,font:new s,numFmt:new h,protection:new c},C}return f(w,[{key:"render",value:function(x,R){x.openNode(this.tag),R.font&&this.map.font.render(x,R.font),R.numFmt&&this.map.numFmt.render(x,R.numFmt),R.fill&&this.map.fill.render(x,R.fill),R.alignment&&this.map.alignment.render(x,R.alignment),R.border&&this.map.border.render(x,R.border),R.protection&&this.map.protection.render(x,R.protection),x.closeNode()}},{key:"parseOpen",value:function(x){if(this.parser)return this.parser.parseOpen(x),!0;switch(x.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[x.name],this.parser&&this.parser.parseOpen(x),!0}}},{key:"parseText",value:function(x){this.parser&&this.parser.parseText(x)}},{key:"parseClose",value:function(x){return this.parser?(this.parser.parseClose(x)||(this.parser=void 0),!0):x===this.tag?(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1):!0}},{key:"tag",get:function(){return"dxf"}}]),w}(N);i.exports=W},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("./color-xform"),d=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={color:new G},I}return f(M,[{key:"render",value:function(w,C){w.openNode("stop"),w.addAttribute("position",C.position),this.map.color.render(w,C.color),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"stop":return this.model={position:parseFloat(w.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(w),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model.color=this.parser.model,this.parser=void 0),!0):!1}},{key:"tag",get:function(){return"stop"}}]),M}(N),u=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={fgColor:new G("fgColor"),bgColor:new G("bgColor")},I}return f(M,[{key:"render",value:function(w,C){w.openNode("patternFill"),w.addAttribute("patternType",C.pattern),C.fgColor&&this.map.fgColor.render(w,C.fgColor),C.bgColor&&this.map.bgColor.render(w,C.bgColor),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"patternFill":return this.model={type:"pattern",pattern:w.attributes.patternType},!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.parser.model&&(this.model[w]=this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"pattern"}},{key:"tag",get:function(){return"patternFill"}}]),M}(N),s=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={stop:new d},I}return f(M,[{key:"render",value:function(w,C){switch(w.openNode("gradientFill"),C.gradient){case"angle":w.addAttribute("degree",C.degree);break;case"path":w.addAttribute("type","path"),C.center.left&&(w.addAttribute("left",C.center.left),C.center.right===void 0&&w.addAttribute("right",C.center.left)),C.center.right&&w.addAttribute("right",C.center.right),C.center.top&&(w.addAttribute("top",C.center.top),C.center.bottom===void 0&&w.addAttribute("bottom",C.center.top)),C.center.bottom&&w.addAttribute("bottom",C.center.bottom);break}var x=this.map.stop;C.stops.forEach(function(R){x.render(w,R)}),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"gradientFill":{var C=this.model={stops:[]};return w.attributes.degree?(C.gradient="angle",C.degree=parseInt(w.attributes.degree,10)):w.attributes.type==="path"&&(C.gradient="path",C.center={left:w.attributes.left?parseFloat(w.attributes.left):0,top:w.attributes.top?parseFloat(w.attributes.top):0},w.attributes.right!==w.attributes.left&&(C.center.right=w.attributes.right?parseFloat(w.attributes.right):0),w.attributes.bottom!==w.attributes.top&&(C.center.bottom=w.attributes.bottom?parseFloat(w.attributes.bottom):0)),!0}case"stop":return this.parser=this.map.stop,this.parser.parseOpen(w),!0;default:return!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"gradient"}},{key:"tag",get:function(){return"gradientFill"}}]),M}(N),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={patternFill:new u,gradientFill:new s},I}return f(M,[{key:"render",value:function(w,C){switch(w.addRollback(),w.openNode("fill"),C.type){case"pattern":this.map.patternFill.render(w,C);break;case"gradient":this.map.gradientFill.render(w,C);break;default:w.rollback();return}w.closeNode(),w.commit()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"fill":return this.model={},!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0):!1}},{key:"validStyle",value:function(w){return M.validPatternValues[w]}},{key:"tag",get:function(){return"fill"}}]),M}(N);h.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(function(c,W){return c[W]=!0,c},{}),h.StopXform=d,h.PatternFillXform=u,h.GradientFillXform=s,i.exports=h},{"../base-xform":31,"./color-xform":127}],130:[function(t,i,l){function a(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(w){return typeof w}:a=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},a(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("./color-xform"),G=t("../simple/boolean-xform"),d=t("../simple/integer-xform"),u=t("../simple/string-xform"),s=t("./underline-xform"),h=t("../../../utils/under-dash"),c=t("../base-xform"),W=function(M){v(w,M);var I=Z(w);function w(C){var x;return o(this,w),x=I.call(this),x.options=C||w.OPTIONS,x.map={b:{prop:"bold",xform:new G({tag:"b",attr:"val"})},i:{prop:"italic",xform:new G({tag:"i",attr:"val"})},u:{prop:"underline",xform:new s},charset:{prop:"charset",xform:new d({tag:"charset",attr:"val"})},color:{prop:"color",xform:new N},condense:{prop:"condense",xform:new G({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new G({tag:"extend",attr:"val"})},family:{prop:"family",xform:new d({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new G({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new u({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new u({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new G({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new G({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new d({tag:"sz",attr:"val"})}},x.map[x.options.fontNameTag]={prop:"name",xform:new u({tag:x.options.fontNameTag,attr:"val"})},x}return f(w,[{key:"render",value:function(x,R){var g=this.map;x.openNode(this.options.tagName),h.each(this.map,function(S,L){g[L].xform.render(x,R[S.prop])}),x.closeNode()}},{key:"parseOpen",value:function(x){if(this.parser)return this.parser.parseOpen(x),!0;if(this.map[x.name])return this.parser=this.map[x.name].xform,this.parser.parseOpen(x);switch(x.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(x){this.parser&&this.parser.parseText(x)}},{key:"parseClose",value:function(x){if(this.parser&&!this.parser.parseClose(x)){var R=this.map[x];return this.parser.model&&(this.model[R.prop]=this.parser.model),this.parser=void 0,!0}switch(x){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),w}(c);W.OPTIONS={tagName:"font",fontNameTag:"name"},i.exports=W},{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(t,i,l){function a(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(M){return typeof M}:a=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},a(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/under-dash"),G=t("../../defaultnumformats"),d=t("../base-xform");function u(){var c={};return N.each(G,function(W,M){W.f&&(c[W.f]=parseInt(M,10))}),c}var s=u(),h=function(c){v(M,c);var W=Z(M);function M(I,w){var C;return o(this,M),C=W.call(this),C.id=I,C.formatCode=w,C}return f(M,[{key:"render",value:function(w,C){w.leafNode("numFmt",{numFmtId:C.id,formatCode:C.formatCode})}},{key:"parseOpen",value:function(w){switch(w.name){case"numFmt":return this.model={id:parseInt(w.attributes.numFmtId,10),formatCode:w.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"numFmt"}}]),M}(d);h.getDefaultFmtId=function(W){return s[W]},h.getDefaultFmtCode=function(W){return G[W]&&G[W].f},i.exports=h},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G={boolean:function(s,h){return s===void 0?h:s}},d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.addRollback(),W.openNode("protection");var I=!1;function w(C,x){x!==void 0&&(W.addAttribute(C,x),I=!0)}w("locked",G.boolean(M.locked,!0)?void 0:"0"),w("hidden",G.boolean(M.hidden,!1)?"1":void 0),W.closeNode(),I?W.commit():W.rollback()}},{key:"parseOpen",value:function(W){var M={locked:W.attributes.locked!=="0",hidden:W.attributes.hidden==="1"},I=!M.locked||M.hidden;this.model=I?M:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),h}(N);i.exports=d},{"../base-xform":31}],133:[function(t,i,l){function a(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(c){return typeof c}:a=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},a(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./alignment-xform"),d=t("./protection-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.xfId=!!(W&&W.xfId),M.map={alignment:new G,protection:new d},M}return f(c,[{key:"render",value:function(M,I){M.openNode("xf",{numFmtId:I.numFmtId||0,fontId:I.fontId||0,fillId:I.fillId||0,borderId:I.borderId||0}),this.xfId&&M.addAttribute("xfId",I.xfId||0),I.numFmtId&&M.addAttribute("applyNumberFormat","1"),I.fontId&&M.addAttribute("applyFont","1"),I.fillId&&M.addAttribute("applyFill","1"),I.borderId&&M.addAttribute("applyBorder","1"),I.alignment&&M.addAttribute("applyAlignment","1"),I.protection&&M.addAttribute("applyProtection","1"),I.alignment&&this.map.alignment.render(M,I.alignment),I.protection&&this.map.protection.render(M,I.protection),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"xf":return this.model={numFmtId:parseInt(M.attributes.numFmtId,10),fontId:parseInt(M.attributes.fontId,10),fillId:parseInt(M.attributes.fillId,10),borderId:parseInt(M.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(M.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(M),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(M),!0;default:return!1}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){return this.parser?(this.parser.parseClose(M)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):M!=="xf"}},{key:"tag",get:function(){return"xf"}}]),c}(N);i.exports=u},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(t,i,l){function a(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(L){return typeof L}:a=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},a(g)}function o(g,S){if(!(g instanceof S))throw new TypeError("Cannot call a class as a function")}function r(g,S){for(var L=0;L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(g){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},m(g)}var N=t("../../../doc/enums"),G=t("../../../utils/xml-stream"),d=t("../base-xform"),u=t("../static-xform"),s=t("../list-xform"),h=t("./font-xform"),c=t("./fill-xform"),W=t("./border-xform"),M=t("./numfmt-xform"),I=t("./style-xform"),w=t("./dxf-xform"),C=164,x=function(g){v(L,g);var S=Z(L);function L(V){var Y;return o(this,L),Y=S.call(this),Y.map={numFmts:new s({tag:"numFmts",count:!0,childXform:new M}),fonts:new s({tag:"fonts",count:!0,childXform:new h,$:{"x14ac:knownFonts":1}}),fills:new s({tag:"fills",count:!0,childXform:new c}),borders:new s({tag:"borders",count:!0,childXform:new W}),cellStyleXfs:new s({tag:"cellStyleXfs",count:!0,childXform:new I}),cellXfs:new s({tag:"cellXfs",count:!0,childXform:new I({xfId:!0})}),dxfs:new s({tag:"dxfs",always:!0,count:!0,childXform:new w}),numFmt:new M,font:new h,fill:new c,border:new W,style:new I({xfId:!0}),cellStyles:L.STATIC_XFORMS.cellStyles,tableStyles:L.STATIC_XFORMS.tableStyles,extLst:L.STATIC_XFORMS.extLst},V&&Y.init(),Y}return f(L,[{key:"initIndex",value:function(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}},{key:"init",value:function(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}},{key:"render",value:function(Y,T){T=T||this.model,Y.openXml(G.StdDocAttributes),Y.openNode("styleSheet",L.STYLESHEET_ATTRIBUTES),this.index?(T.numFmts&&T.numFmts.length&&(Y.openNode("numFmts",{count:T.numFmts.length}),T.numFmts.forEach(function(J){Y.writeXml(J)}),Y.closeNode()),T.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),Y.openNode("fonts",{count:T.fonts.length,"x14ac:knownFonts":1}),T.fonts.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),Y.openNode("fills",{count:T.fills.length}),T.fills.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),Y.openNode("borders",{count:T.borders.length}),T.borders.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),this.map.cellStyleXfs.render(Y,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),Y.openNode("cellXfs",{count:T.styles.length}),T.styles.forEach(function(J){Y.writeXml(J)}),Y.closeNode()):(this.map.numFmts.render(Y,T.numFmts),this.map.fonts.render(Y,T.fonts),this.map.fills.render(Y,T.fills),this.map.borders.render(Y,T.borders),this.map.cellStyleXfs.render(Y,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(Y,T.styles)),L.STATIC_XFORMS.cellStyles.render(Y),this.map.dxfs.render(Y,T.dxfs),L.STATIC_XFORMS.tableStyles.render(Y),L.STATIC_XFORMS.extLst.render(Y),Y.closeNode()}},{key:"parseOpen",value:function(Y){if(this.parser)return this.parser.parseOpen(Y),!0;switch(Y.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[Y.name],this.parser&&this.parser.parseOpen(Y),!0}}},{key:"parseText",value:function(Y){this.parser&&this.parser.parseText(Y)}},{key:"parseClose",value:function(Y){var T=this;if(this.parser)return this.parser.parseClose(Y)||(this.parser=void 0),!0;switch(Y){case"styleSheet":{this.model={};var J=function(H,k){k.model&&k.model.length&&(T.model[H]=k.model)};if(J("numFmts",this.map.numFmts),J("fonts",this.map.fonts),J("fills",this.map.fills),J("borders",this.map.borders),J("styles",this.map.cellXfs),J("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var U=this.index.numFmt;this.model.numFmts.forEach(function(K){U[K.id]=K.formatCode})}return!1}default:return!0}}},{key:"addStyleModel",value:function(Y,T){if(!Y)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(Y))return this.weakMap.get(Y);var J={};if(T=T||N.ValueType.Number,Y.numFmt)J.numFmtId=this._addNumFmtStr(Y.numFmt);else switch(T){case N.ValueType.Number:J.numFmtId=this._addNumFmtStr("General");break;case N.ValueType.Date:J.numFmtId=this._addNumFmtStr("mm-dd-yy");break}Y.font&&(J.fontId=this._addFont(Y.font)),Y.border&&(J.borderId=this._addBorder(Y.border)),Y.fill&&(J.fillId=this._addFill(Y.fill)),Y.alignment&&(J.alignment=Y.alignment),Y.protection&&(J.protection=Y.protection);var U=this._addStyle(J);return this.weakMap&&this.weakMap.set(Y,U),U}},{key:"getStyleModel",value:function(Y){var T=this.model.styles[Y];if(!T)return null;var J=this.index.model[Y];if(J)return J;if(J=this.index.model[Y]={},T.numFmtId){var U=this.index.numFmt[T.numFmtId]||M.getDefaultFmtCode(T.numFmtId);U&&(J.numFmt=U)}function K(H,k,F){if(F||F===0){var O=k[F];O&&(J[H]=O)}}return K("font",this.model.fonts,T.fontId),K("border",this.model.borders,T.borderId),K("fill",this.model.fills,T.fillId),T.alignment&&(J.alignment=T.alignment),T.protection&&(J.protection=T.protection),J}},{key:"addDxfStyle",value:function(Y){return this.model.dxfs.push(Y),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(Y){return this.model.dxfs[Y]}},{key:"_addStyle",value:function(Y){var T=this.map.style.toXml(Y),J=this.index.style[T];return J===void 0&&(J=this.index.style[T]=this.model.styles.length,this.model.styles.push(T)),J}},{key:"_addNumFmtStr",value:function(Y){var T=M.getDefaultFmtId(Y);if(T!==void 0||(T=this.index.numFmt[Y],T!==void 0))return T;T=this.index.numFmt[Y]=C+this.model.numFmts.length;var J=this.map.numFmt.toXml({id:T,formatCode:Y});return this.model.numFmts.push(J),T}},{key:"_addFont",value:function(Y){var T=this.map.font.toXml(Y),J=this.index.font[T];return J===void 0&&(J=this.index.font[T]=this.model.fonts.length,this.model.fonts.push(T)),J}},{key:"_addBorder",value:function(Y){var T=this.map.border.toXml(Y),J=this.index.border[T];return J===void 0&&(J=this.index.border[T]=this.model.borders.length,this.model.borders.push(T)),J}},{key:"_addFill",value:function(Y){var T=this.map.fill.toXml(Y),J=this.index.fill[T];return J===void 0&&(J=this.index.fill[T]=this.model.fills.length,this.model.fills.push(T)),J}}]),L}(d);x.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},x.STATIC_XFORMS={cellStyles:new u({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new u({tag:"dxfs",$:{count:0}}),tableStyles:new u({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new u({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})};var R=function(g){v(L,g);var S=Z(L);function L(){var V;return o(this,L),V=S.call(this),V.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]},V}return f(L,[{key:"parseStream",value:function(Y){return Y.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(Y,T){switch(T){case N.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var Y={numFmtId:M.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(Y)}return this._dateStyleId}}]),L}(x);x.Mock=R,i.exports=x},{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.model=h,c}return f(s,[{key:"render",value:function(c,W){if(W=W||this.model,W===!0)c.leafNode("u");else{var M=s.Attributes[W];M&&c.leafNode("u",M)}}},{key:"parseOpen",value:function(c){c.name==="u"&&(this.model=c.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),s}(N);G.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},i.exports=G},{"../base-xform":31}],136:[function(t,i,l){function a(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(h){return typeof h}:a=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},a(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./filter-column-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={filterColumn:new G},c}return f(h,[{key:"prepare",value:function(W){var M=this;W.columns.forEach(function(I,w){M.map.filterColumn.prepare(I,{index:w})})}},{key:"render",value:function(W,M){var I=this;return W.openNode(this.tag,{ref:M.autoFilterRef}),M.columns.forEach(function(w){I.map.filterColumn.render(W,w)}),W.closeNode(),!0}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:return this.model={autoFilterRef:W.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[W.name],this.parser)return this.parseOpen(W),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(W)))}}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(W){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(W))}}},{key:"tag",get:function(){return"autoFilter"}}]),h}(N);i.exports=d},{"../base-xform":31,"./filter-column-xform":137}],137:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){c.colId=W.index.toString()}},{key:"render",value:function(c,W){return c.leafNode(this.tag,{colId:W.colId,hiddenButton:W.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={filterButton:W.hiddenButton==="0"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),s}(N);i.exports=G},{"../base-xform":31}],138:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){c.id=W.index+1}},{key:"render",value:function(c,W){return c.leafNode(this.tag,{id:W.id.toString(),name:W.name,totalsRowLabel:W.totalsRowLabel,totalsRowFunction:W.totalsRowFunction,dxfId:W.dxfId}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={name:W.name,totalsRowLabel:W.totalsRowLabel,totalsRowFunction:W.totalsRowFunction,dxfId:W.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),s}(N);i.exports=G},{"../base-xform":31}],139:[function(t,i,l){function a(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(s){return typeof s}:a=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},a(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){return c.leafNode(this.tag,{name:W.theme?W.theme:void 0,showFirstColumn:W.showFirstColumn?"1":"0",showLastColumn:W.showLastColumn?"1":"0",showRowStripes:W.showRowStripes?"1":"0",showColumnStripes:W.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={theme:W.name?W.name:null,showFirstColumn:W.showFirstColumn==="1",showLastColumn:W.showLastColumn==="1",showRowStripes:W.showRowStripes==="1",showColumnStripes:W.showColumnStripes==="1"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),s}(N);i.exports=G},{"../base-xform":31}],140:[function(t,i,l){function a(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(x){return typeof x}:a=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},a(w)}function o(w,C){var x=Object.keys(w);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(w);C&&(R=R.filter(function(g){return Object.getOwnPropertyDescriptor(w,g).enumerable})),x.push.apply(x,R)}return x}function r(w){for(var C=1;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(w){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(x){return x.__proto__||Object.getPrototypeOf(x)},d(w)}var u=t("../../../utils/xml-stream"),s=t("../base-xform"),h=t("../list-xform"),c=t("./auto-filter-xform"),W=t("./table-column-xform"),M=t("./table-style-info-xform"),I=function(w){p(x,w);var C=X(x);function x(){var R;return v(this,x),R=C.call(this),R.map={autoFilter:new c,tableColumns:new h({tag:"tableColumns",count:!0,empty:!0,childXform:new W}),tableStyleInfo:new M},R}return Z(x,[{key:"prepare",value:function(g,S){this.map.autoFilter.prepare(g),this.map.tableColumns.prepare(g.columns,S)}},{key:"render",value:function(g,S){g.openXml(u.StdDocAttributes),g.openNode(this.tag,r(r({},x.TABLE_ATTRIBUTES),{},{id:S.id,name:S.name,displayName:S.displayName||S.name,ref:S.tableRef,totalsRowCount:S.totalsRow?"1":void 0,totalsRowShown:S.totalsRow?void 0:"1",headerRowCount:S.headerRow?"1":"0"})),this.map.autoFilter.render(g,S),this.map.tableColumns.render(g,S.columns),this.map.tableStyleInfo.render(g,S.style),g.closeNode()}},{key:"parseOpen",value:function(g){if(this.parser)return this.parser.parseOpen(g),!0;var S=g.name,L=g.attributes;switch(S){case this.tag:this.reset(),this.model={name:L.name,displayName:L.displayName||L.name,tableRef:L.ref,totalsRow:L.totalsRowCount==="1",headerRow:L.headerRowCount==="1"};break;default:this.parser=this.map[g.name],this.parser&&this.parser.parseOpen(g);break}return!0}},{key:"parseText",value:function(g){this.parser&&this.parser.parseText(g)}},{key:"parseClose",value:function(g){var S=this;if(this.parser)return this.parser.parseClose(g)||(this.parser=void 0),!0;switch(g){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach(function(L,V){S.model.columns[V].filterButton=L.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(g,S){g.columns.forEach(function(L){L.dxfId!==void 0&&(L.style=S.styles.getDxfStyle(L.dxfId))})}},{key:"tag",get:function(){return"table"}}]),x}(s);I.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},i.exports=I},{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(t,i,l){(function(a,o){function r(K,H,k,F,O,Q,oe){try{var se=K[Q](oe),he=se.value}catch(pe){k(pe);return}se.done?H(he):Promise.resolve(he).then(F,O)}function f(K){return function(){var H=this,k=arguments;return new Promise(function(F,O){var Q=K.apply(H,k);function oe(he){r(Q,F,O,oe,se,"next",he)}function se(he){r(Q,F,O,oe,se,"throw",he)}oe(void 0)})}}function v(K,H){if(!(K instanceof H))throw new TypeError("Cannot call a class as a function")}function b(K,H){for(var k=0;k=1)){_.next=6;break}return he=oe.substr(se+1),pe=oe.substr(0,se),_.next=6,new Promise(function(E,$){var ae=new d;ae.on("finish",function(){Q.mediaIndex[oe]=Q.media.length,Q.mediaIndex[pe]=Q.media.length;var le={type:"image",name:pe,extension:he,buffer:ae.toBuffer()};Q.media.push(le),E()}),O.on("error",function(le){$(le)}),O.pipe(ae)});case 6:case"end":return _.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processDrawingEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new S,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.drawings[oe]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processDrawingRelsEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new w,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.drawingRels[oe]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processVmlDrawingEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new Y,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.vmlDrawings["../drawings/".concat(oe,".vml")]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processThemeEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){return regeneratorRuntime.wrap(function(he){for(;;)switch(he.prev=he.next){case 0:return he.next=2,new Promise(function(pe,re){var _=new d;O.on("error",re),_.on("error",re),_.on("finish",function(){Q.themes[oe]=_.read().toString(),pe()}),O.pipe(_)});case 2:case"end":return he.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"createInputStream",value:function(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"read",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se,he,pe,re,_,E,$;return regeneratorRuntime.wrap(function(le){for(;;)switch(le.prev=le.next){case 0:!O[Symbol.asyncIterator]&&O.pipe&&(O=O.pipe(new N)),oe=[],se=!0,he=!1,le.prev=4,re=p(O);case 6:return le.next=8,re.next();case 8:return _=le.sent,se=_.done,le.next=12,_.value;case 12:if(E=le.sent,se){le.next=19;break}$=E,oe.push($);case 16:se=!0,le.next=6;break;case 19:le.next=25;break;case 21:le.prev=21,le.t0=le.catch(4),he=!0,pe=le.t0;case 25:if(le.prev=25,le.prev=26,!(!se&&re.return!=null)){le.next=30;break}return le.next=30,re.return();case 30:if(le.prev=30,!he){le.next=33;break}throw pe;case 33:return le.finish(30);case 34:return le.finish(25);case 35:return le.abrupt("return",this.load(o.concat(oe),Q));case 36:case"end":return le.stop()}},F,this,[[4,21,25,35],[26,,30,34]])}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"load",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se,he,pe,re,_,E,$,ae,le,ee,te,be,ne,B,q,ue;return regeneratorRuntime.wrap(function(Ge){for(;;)switch(Ge.prev=Ge.next){case 0:return Q&&Q.base64?oe=o.from(O.toString(),"base64"):oe=O,se={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},Ge.next=4,X.loadAsync(oe);case 4:he=Ge.sent,pe=0,re=Object.values(he.files);case 6:if(!(pe0&&($=new s,he.render($,E),O.append($.xml,{name:"xl/comments".concat(E.id,".xml")}),$=new s,pe.render($,E),O.append($.xml,{name:"xl/drawings/vmlDrawing".concat(E.id,".vml")}))});case 5:case"end":return _.stop()}},F)}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"_finalize",value:function(k){var F=this;return new Promise(function(O,Q){k.on("finish",function(){O(F)}),k.on("error",Q),k.finalize()})}},{key:"prepareModel",value:function(k,F){k.creator=k.creator||"ExcelJS",k.lastModifiedBy=k.lastModifiedBy||"ExcelJS",k.created=k.created||new Date,k.modified=k.modified||new Date,k.useSharedStrings=F.useSharedStrings!==void 0?F.useSharedStrings:!0,k.useStyles=F.useStyles!==void 0?F.useStyles:!0,k.sharedStrings=new I,k.styles=k.useStyles?new W(!0):new W.Mock;var O=new R,Q=new g;O.prepare(k);var oe={sharedStrings:k.sharedStrings,styles:k.styles,date1904:k.properties.date1904,drawingsCount:0,media:k.media};oe.drawings=k.drawings=[],oe.commentRefs=k.commentRefs=[];var se=0;k.tables=[],k.worksheets.forEach(function(he){he.tables.forEach(function(pe){se++,pe.target="table".concat(se,".xml"),pe.id=se,k.tables.push(pe)}),Q.prepare(he,oe)})}},{key:"write",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se;return regeneratorRuntime.wrap(function(pe){for(;;)switch(pe.prev=pe.next){case 0:return Q=Q||{},oe=this.workbook.model,se=new G.ZipWriter(Q.zip),se.pipe(O),this.prepareModel(oe,Q),pe.next=7,this.addContentTypes(se,oe);case 7:return pe.next=9,this.addOfficeRels(se,oe);case 9:return pe.next=11,this.addWorkbookRels(se,oe);case 11:return pe.next=13,this.addWorksheets(se,oe);case 13:return pe.next=15,this.addSharedStrings(se,oe);case 15:return pe.next=17,this.addDrawings(se,oe);case 17:return pe.next=19,this.addTables(se,oe);case 19:return pe.next=21,Promise.all([this.addThemes(se,oe),this.addStyles(se,oe)]);case 21:return pe.next=23,this.addMedia(se,oe);case 23:return pe.next=25,Promise.all([this.addApp(se,oe),this.addCore(se,oe)]);case 25:return pe.next=27,this.addWorkbook(se,oe);case 27:return pe.abrupt("return",this._finalize(se));case 28:case"end":return pe.stop()}},F,this)}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"writeFile",value:function(k,F){var O=this,Q=y.createWriteStream(k);return new Promise(function(oe,se){Q.on("finish",function(){oe()}),Q.on("error",function(he){se(he)}),O.write(Q,F).then(function(){Q.end()})})}},{key:"writeBuffer",value:function(){var H=f(regeneratorRuntime.mark(function F(O){var Q;return regeneratorRuntime.wrap(function(se){for(;;)switch(se.prev=se.next){case 0:return Q=new d,se.next=3,this.write(Q,O);case 3:return se.abrupt("return",Q.read());case 4:case"end":return se.stop()}},F,this)}));function k(F){return H.apply(this,arguments)}return k}()}]),K}();U.RelType=t("./rel-type"),i.exports=U}).call(this,t("_process"),t("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,_process:467,buffer:216,fs:215,jszip:399,"readable-stream":491}],142:[function(t,i,l){i.exports=` - `},{}],143:[function(t,i,l){(function(a){function o(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(c){return typeof c}:o=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},o(s)}function r(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function f(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function N(s){return N=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},N(s)}Object.defineProperty(l,"__esModule",{value:!0}),l.CsvFormatterStream=void 0;var G=t("stream"),d=t("./formatter"),u=function(s){b(c,s);var h=p(c);function c(W){var M;return r(this,c),M=h.call(this,{writableObjectMode:W.objectMode}),M.hasWrittenBOM=!1,M.formatterOptions=W,M.rowFormatter=new d.RowFormatter(W),M.hasWrittenBOM=!W.writeBOM,M}return v(c,[{key:"transform",value:function(M){return this.rowFormatter.rowTransform=M,this}},{key:"_transform",value:function(M,I,w){var C=this,x=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(M,function(R,g){return R?(x=!0,w(R)):(g&&g.forEach(function(S){C.push(a.from(S,"utf8"))}),x=!0,w())})}catch(R){if(x)throw R;w(R)}}},{key:"_flush",value:function(M){var I=this;this.rowFormatter.finish(function(w,C){return w?M(w):(C&&C.forEach(function(x){I.push(a.from(x,"utf8"))}),M())})}}]),c}(G.Transform);l.CsvFormatterStream=u}).call(this,t("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(t,i,l){function a(r,f){if(!(r instanceof f))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(l,"__esModule",{value:!0}),l.FormatterOptions=void 0;var o=function r(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};a(this,r);var v;this.objectMode=!0,this.delimiter=",",this.rowDelimiter=` -`,this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\uFEFF",this.alwaysWriteHeaders=!1,Object.assign(this,f||{}),typeof(f==null?void 0:f.quoteHeaders)>"u"&&(this.quoteHeaders=this.quoteColumns),(f==null?void 0:f.quote)===!0?this.quote='"':(f==null?void 0:f.quote)===!1&&(this.quote=""),typeof(f==null?void 0:f.escape)!="string"&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&((v=f.writeHeaders)!==null&&v!==void 0?v:!0),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};l.FormatterOptions=o},{}],145:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{},u=[],s=new Z.Writable({write:function(c,W,M){u.push(c),M()}});return new Promise(function(h,c){s.on("error",c).on("finish",function(){return h(a.concat(u))}),l.write(G,d).pipe(s)})},l.writeToString=function(G,d){return l.writeToBuffer(G,d).then(function(u){return u.toString()})},l.writeToPath=function(G,d,u){var s=p.createWriteStream(G,{encoding:"utf8"});return l.write(d,u).pipe(s)}}).call(this,t("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.isSyncTransform=void 0,l.isSyncTransform=function(a){return a.length===1}},{}],150:[function(t,i,l){(function(a){function o(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(w){return typeof w}:o=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},o(M)}function r(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function f(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(M){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},d(M)}Object.defineProperty(l,"__esModule",{value:!0}),l.CsvParserStream=void 0;var u=t("string_decoder"),s=t("stream"),h=t("./transforms"),c=t("./parser"),W=function(M){p(w,M);var I=X(w);function w(C){var x;return r(this,w),x=I.call(this,{objectMode:C.objectMode}),x.lines="",x.rowCount=0,x.parsedRowCount=0,x.parsedLineCount=0,x.endEmitted=!1,x.headersEmitted=!1,x.parserOptions=C,x.parser=new c.Parser(C),x.headerTransformer=new h.HeaderTransformer(C),x.decoder=new u.StringDecoder(C.encoding),x.rowTransformerValidator=new h.RowTransformerValidator,x}return v(w,[{key:"transform",value:function(x){return this.rowTransformerValidator.rowTransform=x,this}},{key:"validate",value:function(x){return this.rowTransformerValidator.rowValidator=x,this}},{key:"emit",value:function(x){var R;if(x==="end")return this.endEmitted||(this.endEmitted=!0,b(d(w.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var g=arguments.length,S=new Array(g>1?g-1:0),L=1;L=S||g.hasHitRowLimit)return R();if(g.parsedLineCount+=1,g.shouldSkipLine)return T();var J=x[Y];g.rowCount+=1,g.parsedRowCount+=1;var U=g.rowCount;return g.transformRow(J,function(K,H){if(K)return g.rowCount-=1,T(K);if(!H)return T(new Error("expected transform result"));if(!H.isValid)g.emit("data-invalid",H.row,U,H.reason);else if(H.row)return g.pushRow(H.row,T);return T()})};L(0)}},{key:"transformRow",value:function(x,R){var g=this;try{this.headerTransformer.transform(x,function(S,L){return S?R(S):L?L.isValid?L.row?g.shouldEmitRows?g.rowTransformerValidator.transformAndValidate(L.row,R):g.skipRow(R):(g.rowCount-=1,g.parsedRowCount-=1,R(null,{row:null,isValid:!0})):g.shouldEmitRows?R(null,{isValid:!1,row:x}):g.skipRow(R):R(new Error("Expected result from header transform"))})}catch(S){R(S)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(x){return this.rowCount-=1,x(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(x,R){try{this.parserOptions.objectMode?this.push(x):this.push(JSON.stringify(x)),R()}catch(g){R(g)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),w}(s.Transform);l.CsvParserStream=W}).call(this,t("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(t,i,l){function a(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}var o=function(b){return b&&b.__esModule?b:{default:b}};Object.defineProperty(l,"__esModule",{value:!0}),l.ParserOptions=void 0;var r=o(t("lodash.escaperegexp")),f=o(t("lodash.isnil")),v=function b(Z){a(this,b);var p;if(this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,Z||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=r.default(this.delimiter),this.escapeChar=(p=this.escape)!==null&&p!==void 0?p:this.quote,this.supportsComments=!f.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};l.ParserOptions=v},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(t,i,l){var a=Object.create?function(m,N,G,d){d===void 0&&(d=G),Object.defineProperty(m,d,{enumerable:!0,get:function(){return N[G]}})}:function(m,N,G,d){d===void 0&&(d=G),m[d]=N[G]},o=Object.create?function(m,N){Object.defineProperty(m,"default",{enumerable:!0,value:N})}:function(m,N){m.default=N},r=function(m){if(m&&m.__esModule)return m;var N={};if(m!=null)for(var G in m)G!=="default"&&Object.hasOwnProperty.call(m,G)&&a(N,m,G);return o(N,m),N},f=function(m,N){for(var G in m)G!=="default"&&!N.hasOwnProperty(G)&&a(N,m,G)};Object.defineProperty(l,"__esModule",{value:!0}),l.parseString=l.parseFile=l.parseStream=l.parse=void 0;var v=r(t("fs")),b=t("stream"),Z=t("./ParserOptions"),p=t("./CsvParserStream");f(t("./types"),l);var y=t("./CsvParserStream");Object.defineProperty(l,"CsvParserStream",{enumerable:!0,get:function(){return y.CsvParserStream}});var X=t("./ParserOptions");Object.defineProperty(l,"ParserOptions",{enumerable:!0,get:function(){return X.ParserOptions}}),l.parse=function(m){return new p.CsvParserStream(new Z.ParserOptions(m))},l.parseStream=function(m,N){return m.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},l.parseFile=function(m){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return v.createReadStream(m).pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},l.parseString=function(m,N){var G=new b.Readable;return G.push(m),G.push(null),G.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(t,i,l){function a(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;mthis.cursor}},{key:"nextNonSpaceToken",get:function(){var y=this.lineFromCursor,X=this.parserOptions.NEXT_TOKEN_REGEXP;if(y.search(X)===-1)return null;var m=X.exec(y);if(m==null)return null;var N=m[1],G=this.cursor+(m.index||0);return new f.Token({token:N,startCursor:G,endCursor:G+N.length-1})}},{key:"nextCharacterToken",get:function(){var y=this.cursor,X=this.lineLength;return X<=y?null:new f.Token({token:this.line[y],startCursor:y,endCursor:y})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),Z}();l.Scanner=b},{"./Token":156}],156:[function(t,i,l){function a(v,b){if(!(v instanceof b))throw new TypeError("Cannot call a class as a function")}function o(v,b){for(var Z=0;Z{const f=r.cloneNode(!1);f.getContext("2d").drawImage(r,0,0),l.body.appendChild(f)}),a.print()}};const Rye=[{key:"copy",title:Hn("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Hn("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Hn("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Hn("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Hn("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Hn("contextmenu.insertRow")},{key:"insert-column",title:Hn("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Hn("contextmenu.deleteRow")},{key:"delete-column",title:Hn("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Hn("contextmenu.deleteCellText")},{key:"hide",title:Hn("contextmenu.hide")},{key:"divider"},{key:"validation",title:Hn("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Hn("contextmenu.cellprintable")},{key:"cell-non-printable",title:Hn("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Hn("contextmenu.celleditable")},{key:"cell-non-editable",title:Hn("contextmenu.cellnoneditable")}];function Tye(n){return n.key==="divider"?ut("div",`${gt}-item divider`):ut("div",`${gt}-item`).on("click",()=>{this.itemClick(n.key),this.hide()}).children(n.title(),ut("div","label").child(n.label||""))}function xye(){return Rye.map(n=>Tye.call(this,n))}let Cye=class{constructor(e,t=!1){this.menuItems=xye.call(this),this.el=ut("div",`${gt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=e,this.itemClick=()=>{},this.isHide=t,this.setMode("range")}setMode(e){const t=this.menuItems[12];e==="row-col"?t.show():t.hide()}hide(){const{el:e}=this;e.hide(),qu(e)}setPosition(e,t){if(this.isHide)return;const{el:i}=this,{width:a}=i.show().offset(),l=this.viewFn(),o=l.height/2;let r=e;l.width-e<=a&&(r-=a),i.css("left",`${r}px`),t>o?i.css("bottom",`${l.height-t}px`).css("max-height",`${t}px`).css("top","auto"):i.css("top",`${t}px`).css("max-height",`${l.height-t}px`).css("bottom","auto"),Ah(i)}};function Sye(n,e){if(e.classList.contains("active"))return;const{left:t,top:i,width:a,height:l}=e.getBoundingClientRect(),o=ut("div",`${gt}-tooltip`).html(n).show();document.body.appendChild(o.el);const r=o.box();o.css("left",`${t+a/2-r.width/2}px`).css("top",`${i+l+2}px`),va(e,"mouseleave",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)}),va(e,"click",()=>{document.body.contains(o.el)&&document.body.removeChild(o.el)})}class eN{constructor(e,t,i){this.tip=_i(`toolbar.${e.replace(/-[a-z]/g,a=>a[1].toUpperCase())}`),t&&(this.tip+=` (${t})`),this.tag=e,this.shortcut=t,this.value=i,this.el=this.element(),this.change=()=>{}}element(){const{tip:e}=this;return ut("div",`${gt}-toolbar-btn`).on("mouseenter",t=>{Sye(e,t.target)}).attr("data-tooltip",e)}setState(){}}class $r extends eN{dropdown(){}getValue(e){return e}element(){const{tag:e}=this;return this.dd=this.dropdown(),this.dd.change=t=>this.change(e,this.getValue(t)),super.element().child(this.dd)}setState(e){e&&(this.value=e,this.dd.setTitle(e))}}class qr extends Vp{constructor(e,t,i,a,...l){super("div",`${gt}-dropdown ${a}`),this.title=e,this.change=()=>{},this.headerClick=()=>{},typeof e=="string"?this.title=ut("div",`${gt}-dropdown-title`).child(e):i&&this.title.addClass("arrow-left"),this.contentEl=ut("div",`${gt}-dropdown-content`).css("width",t).hide(),this.setContentChildren(...l),this.headerEl=ut("div",`${gt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,i?ut("div",`${gt}-icon arrow-right`).child(ut("div",`${gt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...e){this.contentEl.html(""),e.length>0&&this.contentEl.children(...e)}setTitle(e){this.title.html(e),this.hide()}show(){const{contentEl:e}=this;e.show(),this.parent().active(),Ah(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),qu(this.parent())}}function zye(n){return ut("div",`${gt}-item`).child(new Jl(n))}class BS extends qr{constructor(e,t){const i=new Jl(`align-${t}`),a=e.map(l=>zye(`align-${l}`).on("click",()=>{this.setTitle(l),this.change(l)}));super(i,"auto",!0,"bottom-left",...a)}setTitle(e){this.title.setName(`align-${e}`),this.hide()}}class kye extends $r{constructor(e){super("align","",e)}dropdown(){const{value:e}=this;return new BS(["left","center","right"],e)}}class Fye extends $r{constructor(e){super("valign","",e)}dropdown(){const{value:e}=this;return new BS(["top","middle","bottom"],e)}}class ko extends eN{element(){const{tag:e}=this;return super.element().child(new Jl(e)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(e){this.el.active(e)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class Jye extends ko{constructor(){super("autofilter")}setState(){}}class Dye extends ko{constructor(){super("font-bold","Ctrl+B")}}class Oye extends ko{constructor(){super("font-italic","Ctrl+I")}}class jye extends ko{constructor(){super("strike","Ctrl+U")}}class Uye extends ko{constructor(){super("underline","Ctrl+U")}}const Eye=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],Kye=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],Hye=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function BZ(n){return ut("td","").child(ut("div",`${gt}-color-palette-cell`).on("click.stop",()=>this.change(n)).css("background-color",n))}class Pye{constructor(){this.el=ut("div",`${gt}-color-palette`),this.change=()=>{};const e=ut("table","").children(ut("tbody","").children(ut("tr",`${gt}-theme-color-placeholders`).children(...Eye.map(t=>BZ.call(this,t))),...Kye.map(t=>ut("tr",`${gt}-theme-colors`).children(...t.map(i=>BZ.call(this,i)))),ut("tr",`${gt}-standard-colors`).children(...Hye.map(t=>BZ.call(this,t)))));this.el.child(e)}}class tN extends qr{constructor(e,t){const i=new Jl(e).css("height","16px").css("border-bottom",`3px solid ${t}`),a=new Pye;a.change=l=>{this.setTitle(l),this.change(l)},super(i,"auto",!1,"bottom-left",a.el)}setTitle(e){this.title.css("border-color",e),this.hide()}}const Qye=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class Bye extends qr{constructor(e){const t=new Jl("line-type");let i=0;const a=Qye.map((l,o)=>ut("div",`${gt}-item state ${e===l[0]?"checked":""}`).on("click",()=>{a[i].toggle("checked"),a[o].toggle("checked"),i=o,this.hide(),this.change(l)}).child(ut("div",`${gt}-line-type`).html(l[1])));super(t,"auto",!1,"bottom-left",...a)}}function oL(...n){return ut("table","").child(ut("tbody","").children(...n))}function sL(n){return ut("td","").child(ut("div",`${gt}-border-palette-cell`).child(new Jl(`border-${n}`)).on("click",()=>{this.mode=n;const{mode:e,style:t,color:i}=this;this.change({mode:e,style:t,color:i})}))}class Aye{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new tN("line-color",this.color),this.ddColor.change=t=>{this.color=t},this.ddType=new Bye(this.style),this.ddType.change=([t])=>{this.style=t},this.el=ut("div",`${gt}-border-palette`);const e=oL(ut("tr","").children(ut("td",`${gt}-border-palette-left`).child(oL(ut("tr","").children(...["all","inside","horizontal","vertical","outside"].map(t=>sL.call(this,t))),ut("tr","").children(...["left","top","right","bottom","none"].map(t=>sL.call(this,t))))),ut("td",`${gt}-border-palette-right`).children(ut("div",`${gt}-toolbar-btn`).child(this.ddColor.el),ut("div",`${gt}-toolbar-btn`).child(this.ddType.el))));this.el.child(e)}}class _ye extends qr{constructor(){const e=new Jl("border-all"),t=new Aye;t.change=i=>{this.change(i),this.hide()},super(e,"auto",!1,"bottom-left",t.el)}}class $ye extends $r{constructor(){super("border")}dropdown(){return new _ye}}class Lp extends eN{element(){return super.element().child(new Jl(this.tag)).on("click",()=>this.change(this.tag))}setState(e){this.el.disabled(e)}}class qye extends Lp{constructor(){super("clearformat")}}class eZe extends ko{constructor(){super("paintformat")}setState(){}}class tZe extends $r{constructor(e){super("color",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new tN(e,t)}}class nZe extends $r{constructor(e){super("bgcolor",void 0,e)}dropdown(){const{tag:e,value:t}=this;return new tN(e,t)}}class iZe extends qr{constructor(){const e=iW.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(`${t.pt}`),this.change(t)}).child(`${t.pt}`));super("10","60px",!0,"bottom-left",...e)}}let lZe=class extends $r{constructor(){super("font-size")}getValue(e){return e.pt}dropdown(){return new iZe}};class aZe extends qr{constructor(){const e=lL.map(t=>ut("div",`${gt}-item`).on("click",()=>{this.setTitle(t.title),this.change(t)}).child(t.title));super(lL[0].title,"160px",!0,"bottom-left",...e)}}class rZe extends $r{constructor(){super("font-name")}getValue(e){return e.key}dropdown(){return new aZe}}class oZe extends qr{constructor(){let e=zd.slice(0);e.splice(2,0,{key:"divider"}),e.splice(8,0,{key:"divider"}),e=e.map(t=>{const i=ut("div",`${gt}-item`);return t.key==="divider"?i.addClass("divider"):(i.child(t.title()).on("click",()=>{this.setTitle(t.title()),this.change(t)}),t.label&&i.child(ut("div","label").html(t.label))),i}),super("Normal","220px",!0,"bottom-left",...e)}setTitle(e){for(let t=0;tut("div",`${gt}-item`).on("click",()=>{this.hide(),this.change(t)}).child(t.key));super(new Jl("formula"),"180px",!0,"bottom-left",...e)}}class uZe extends $r{constructor(){super("formula")}getValue(e){return e.key}dropdown(){return new cZe}}class dZe extends ko{constructor(){super("freeze")}}class hZe extends ko{constructor(){super("merge")}setState(e,t){this.el.active(e).disabled(t)}}class fZe extends Lp{constructor(){super("redo","Ctrl+Y")}}class bZe extends Lp{constructor(){super("undo","Ctrl+Z")}}class mZe extends Lp{constructor(){super("print","Ctrl+P")}}class pZe extends ko{constructor(){super("textwrap")}}let yZe=class extends qr{constructor(){const e=new Jl("ellipsis"),t=ut("div",`${gt}-toolbar-more`);super(e,"auto",!1,"bottom-right",t),this.moreBtns=t,this.contentEl.css("max-width","420px")}};class ZZe extends $r{constructor(){super("more"),this.el.hide()}dropdown(){return new yZe}show(){this.el.show()}hide(){this.el.hide()}}function eu(){return ut("div",`${gt}-toolbar-divider`)}function vZe(){this.btns2=[],this.items.forEach(n=>{if(Array.isArray(n))n.forEach(({el:e})=>{const t=e.box(),{marginLeft:i,marginRight:a}=e.computedStyle();this.btns2.push([e,t.width+parseInt(i,10)+parseInt(a,10)])});else{const e=n.box(),{marginLeft:t,marginRight:i}=n.computedStyle();this.btns2.push([n,e.width+parseInt(t,10)+parseInt(i,10)])}})}function cL(){const{el:n,btns:e,moreEl:t,btns2:i}=this,{moreBtns:a,contentEl:l}=t.dd;n.css("width",`${this.widthFn()-60}px`);const o=n.box();let r=160,f=12;const v=[],b=[];i.forEach(([Z,p],y)=>{r+=p,y===i.length-1||r0?t.show():t.hide()}class WZe{constructor(e,t,i=!1){this.data=e,this.change=()=>{},this.widthFn=t,this.isHide=i;const a=e.defaultStyle();this.items=[[this.undoEl=new bZe,this.redoEl=new fZe,new mZe,this.paintformatEl=new eZe,this.clearformatEl=new qye],eu(),[this.formatEl=new sZe],eu(),[this.fontEl=new rZe,this.fontSizeEl=new lZe],eu(),[this.boldEl=new Dye,this.italicEl=new Oye,this.underlineEl=new Uye,this.strikeEl=new jye,this.textColorEl=new tZe(a.color)],eu(),[this.fillColorEl=new nZe(a.bgcolor),this.borderEl=new $ye,this.mergeEl=new hZe],eu(),[this.alignEl=new kye(a.align),this.valignEl=new Fye(a.valign),this.textwrapEl=new pZe],eu(),[this.freezeEl=new dZe,this.autofilterEl=new Jye,this.formulaEl=new uZe,this.moreEl=new ZZe]],this.el=ut("div",`${gt}-toolbar`),this.btns=ut("div",`${gt}-toolbar-btns`),this.items.forEach(l=>{Array.isArray(l)?l.forEach(o=>{this.btns.child(o.el),o.change=(...r)=>{this.change(...r)}}):this.btns.child(l.el)}),this.el.child(this.btns),i?this.el.hide():(this.reset(),setTimeout(()=>{vZe.call(this),cL.call(this)},0),va(window,"resize",()=>{cL.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(e){this[`${e}El`].click()}resetData(e){this.data=e,this.reset()}reset(){if(this.isHide)return;const{data:e}=this,t=e.getSelectedCellStyle();this.undoEl.setState(!e.canUndo()),this.redoEl.setState(!e.canRedo()),this.mergeEl.setState(e.canUnmerge(),!e.selector.multiple()),this.autofilterEl.setState(!e.canAutofilter());const{font:i,format:a}=t;this.formatEl.setState(a),this.fontEl.setState(i.name),this.fontSizeEl.setState(i.size),this.boldEl.setState(i.bold),this.italicEl.setState(i.italic),this.underlineEl.setState(t.underline),this.strikeEl.setState(t.strike),this.textColorEl.setState(t.color),this.fillColorEl.setState(t.bgcolor),this.alignEl.setState(t.align),this.valignEl.setState(t.valign),this.textwrapEl.setState(t.textwrap),this.freezeEl.setState(e.freezeIsActive())}}class GZe{constructor(e,t,i="600px"){this.title=e,this.el=ut("div",`${gt}-modal`).css("width",i).children(ut("div",`${gt}-modal-header`).children(new Jl("close").on("click.stop",()=>this.hide()),this.title),ut("div",`${gt}-modal-content`).children(...t)).hide()}show(){this.dimmer=ut("div",`${gt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:e,height:t}=this.el.show().box(),{clientHeight:i,clientWidth:a}=document.documentElement;this.el.offset({left:(a-e)/2,top:(i-t)/3}),window.xkeydownEsc=l=>{l.keyCode===27&&this.hide()},va(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),u0(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class ou{constructor(e,t){this.vchange=()=>{},this.el=ut("div",`${gt}-form-input`),this.input=ut("input","").css("width",e).on("input",i=>this.vchange(i)).attr("placeholder",t),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(e){this.input.attr("placeholder",e)}val(e){return this.input.val(e)}}class AZ{constructor(e,t,i,a=o=>o,l=()=>{}){this.key=e,this.getTitle=a,this.vchange=()=>{},this.el=ut("div",`${gt}-form-select`),this.suggest=new jS(t.map(o=>({key:o,title:this.getTitle(o)})),o=>{this.itemClick(o.key),l(o.key),this.vchange(o.key)},i,this.el),this.el.children(this.itemEl=ut("div","input-text").html(this.getTitle(e)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(e){this.key=e,this.itemEl.html(this.getTitle(e))}val(e){return e!==void 0?(this.key=e,this.itemEl.html(this.getTitle(e)),this):this.key}}const XZe={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class es{constructor(e,t,i,a){this.label="",this.rule=t,i&&(this.label=ut("label","label").css("width",`${a}px`).html(i)),this.tip=ut("div","tip").child("tip").hide(),this.input=e,this.input.vchange=()=>this.validate(),this.el=ut("div",`${gt}-form-field`).children(this.label,e.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(e){return this.input.val(e)}hint(e){this.input.hint(e)}validate(){const{input:e,rule:t,tip:i,el:a}=this,l=e.val();return t.required&&/^\s*$/.test(l)?(i.html(_i("validation.required")),a.addClass("error"),!1):(t.type||t.pattern)&&!(t.pattern||XZe[t.type]).test(l)?(i.html(_i("validation.notMatch")),a.addClass("error"),!1):(a.removeClass("error"),!0)}}const uL=100;class NZe extends GZe{constructor(){const e=new es(new AZ("cell",["cell"],"100%",v=>_i(`dataValidation.modeType.${v}`)),{required:!0},`${_i("dataValidation.range")}:`,uL),t=new es(new ou("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),i=new es(new AZ("list",["list","number","date","phone","email"],"100%",v=>_i(`dataValidation.type.${v}`),v=>this.criteriaSelected(v)),{required:!0},`${_i("dataValidation.criteria")}:`,uL),a=new es(new AZ("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",v=>_i(`dataValidation.operator.${v}`),v=>this.criteriaOperatorSelected(v)),{required:!0}).hide(),l=new es(new ou("70px","10"),{required:!0}).hide(),o=new es(new ou("70px","100"),{required:!0,type:"number"}).hide(),r=new es(new ou("120px","a,b,c"),{required:!0}),f=new es(new ou("70px","10"),{required:!0,type:"number"}).hide();super(_i("contextmenu.validation"),[ut("div",`${gt}-form-fields`).children(e.el,t.el),ut("div",`${gt}-form-fields`).children(i.el,a.el,l.el,o.el,f.el,r.el),ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",()=>this.btnClick("cancel")),new yc("remove").on("click",()=>this.btnClick("remove")),new yc("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=e,this.rf=t,this.cf=i,this.of=a,this.minvf=l,this.maxvf=o,this.vf=f,this.svf=r,this.change=()=>{}}showVf(e){const t=e==="date"?"2018-11-12":"10",{vf:i}=this;i.input.hint(t),i.show()}criteriaSelected(e){const{of:t,minvf:i,maxvf:a,vf:l,svf:o}=this;e==="date"||e==="number"?(t.show(),i.rule.type=e,a.rule.type=e,e==="date"?(i.hint("2018-11-12"),a.hint("2019-11-12")):(i.hint("10"),a.hint("100")),i.show(),a.show(),l.hide(),o.hide()):(e==="list"?o.show():o.hide(),l.hide(),t.hide(),i.hide(),a.hide())}criteriaOperatorSelected(e){if(!e)return;const{minvf:t,maxvf:i,vf:a}=this;if(e==="be"||e==="nbe")t.show(),i.show(),a.hide();else{const l=this.cf.val();a.rule.type=l,l==="date"?a.hint("2018-11-12"):a.hint("10"),a.show(),t.hide(),i.hide()}}btnClick(e){if(e==="cancel")this.hide();else if(e==="remove")this.change("remove"),this.hide();else if(e==="save"){const t=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let f=0;fthis.itemClick(n))}function MZe(n){const{filterbEl:e,filterValues:t}=this;e.html(""),Object.keys(n).forEach((a,l)=>{const o=n[a],r=t.includes(a)?"checked":"";e.child(ut("div",`${gt}-item state ${r}`).on("click.stop",()=>this.filterClick(l,a)).children(a===""?_i("filter.empty"):a,ut("div","label").html(`(${o})`)))})}function hL(){const{filterhEl:n,filterValues:e,values:t}=this;n.html(`${e.length} / ${t.length}`),n.checked(e.length===t.length)}class IZe{constructor(){this.filterbEl=ut("div",`${gt}-body`),this.filterhEl=ut("div",`${gt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=ut("div",`${gt}-sort-filter`).children(this.sortAscEl=dL.call(this,"asc"),this.sortDescEl=dL.call(this,"desc"),AS("divider"),ut("div",`${gt}-filter`).children(this.filterhEl,this.filterbEl),ut("div",`${gt}-buttons`).children(new yc("cancel").on("click",()=>this.btnClick("cancel")),new yc("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(e){if(e==="ok"){const{ci:t,sort:i,filterValues:a}=this;this.ok&&this.ok(t,i,"in",a)}this.hide()}itemClick(e){this.sort=e;const{sortAscEl:t,sortDescEl:i}=this;t.checked(e==="asc"),i.checked(e==="desc")}filterClick(e,t){const{filterbEl:i,filterValues:a,values:l}=this,o=i.children();t==="all"?o.length===a.length?(this.filterValues=[],o.forEach(r=>ut(r).checked(!1))):(this.filterValues=Array.from(l),o.forEach(r=>ut(r).checked(!0))):ut(o[e]).toggle("checked")?a.push(t):a.splice(a.findIndex(f=>f===t),1),hL.call(this)}set(e,t,i,a){this.ci=e;const{sortAscEl:l,sortDescEl:o}=this;a!==null?(this.sort=a.order,l.checked(a.asc()),o.checked(a.desc())):(this.sortDesc=null,l.checked(!1),o.checked(!1)),this.values=Object.keys(t),this.filterValues=i?Array.from(i.value):Object.keys(t),MZe.call(this,t,i),hL.call(this)}setOffset(e){this.el.offset(e).show();let t=1;Ah(this.el,()=>{t<=0&&this.hide(),t-=1})}show(){this.el.show()}hide(){this.el.hide(),qu(this.el)}}function _S(n,e){const t=ut("div",`${gt}-toast`),i=ut("div",`${gt}-dimmer active`),a=()=>{document.body.removeChild(t.el),document.body.removeChild(i.el)};t.children(ut("div",`${gt}-toast-header`).children(new Jl("close").on("click.stop",()=>a()),n),ut("div",`${gt}-toast-content`).html(e)),document.body.appendChild(t.el),document.body.appendChild(i.el);const{width:l,height:o}=t.box(),{clientHeight:r,clientWidth:f}=document.documentElement;t.offset({left:(f-l)/2,top:(r-o)/3})}function _Z(n,e){let t;return(...i)=>{const a=this,l=i;t||(t=setTimeout(()=>{t=null,n.apply(a,l)},e))}}function YZe(){const{data:n,verticalScrollbar:e,horizontalScrollbar:t}=this,{l:i,t:a,left:l,top:o,width:r,height:f}=n.getSelectedRect(),v=this.getTableOffset();if(Math.abs(l)+r>v.width)t.move({left:i+r-v.width});else{const b=n.freezeTotalWidth();lv.height)e.move({top:a+f-v.height-1});else{const b=n.freezeTotalHeight();o0&&(r-=1):e==="right"?(v!==r&&(r=v),r0&&(o-=1):e==="down"?(f!==o&&(o=f),of.indexWidth&&t>r.height){i.hide(),a.hide();return}const v=l.box(),b=o.getCellRectByXY(n.offsetX,n.offsetY);b.ri>=0&&b.ci===-1?(b.width=f.indexWidth,i.show(b,{width:v.width}),r.isHide(b.ri-1)?i.showUnhide(b.ri):i.hideUnhide()):i.hide(),b.ri===-1&&b.ci>=0?(b.height=r.height,a.show(b,{height:v.height}),f.isHide(b.ci-1)?a.showUnhide(b.ci):a.hideUnhide()):a.hide()}function gZe(n){const{verticalScrollbar:e,horizontalScrollbar:t,data:i}=this,{top:a}=e.scroll(),{left:l}=t.scroll(),{rows:o,cols:r}=i,{deltaY:f,deltaX:v}=n,b=(N,G)=>{let d=N,u=0;do u=G(d),d+=1;while(u<=0);return u},Z=N=>{if(N>0){const G=i.scroll.ri+1;if(Go.getHeight(u));e.move({top:a+d-1})}}else{const G=i.scroll.ri-1;if(G>=0){const d=b(G,u=>o.getHeight(u));e.move({top:G===0?0:a-d})}}},p=N=>{if(N>0){const G=i.scroll.ci+1;if(Gr.getWidth(u));t.move({left:l+d-1})}}else{const G=i.scroll.ci-1;if(G>=0){const d=b(G,u=>r.getWidth(u));t.move({left:G===0?0:l-d})}}},y=Math.abs(f),X=Math.abs(v),m=Math.max(y,X);/Firefox/i.test(window.navigator.userAgent)&&_Z(Z(n.detail),50),m===X&&_Z(p(v),50),m===y&&_Z(Z(f),50)}function VZe(n,e){const{verticalScrollbar:t,horizontalScrollbar:i}=this,{top:a}=t.scroll(),{left:l}=i.scroll();n==="left"||n==="right"?i.move({left:l-e}):(n==="up"||n==="down")&&t.move({top:a-e})}function nN(){const{data:n,verticalScrollbar:e}=this,{height:t}=this.getTableOffset(),i=n.exceptRowTotalHeight(0,-1);e.set(t,n.rows.totalHeight()-i)}function iN(){const{data:n,horizontalScrollbar:e}=this,{width:t}=this.getTableOffset();n&&e.set(t,n.cols.totalWidth())}function LZe(){const{selector:n,data:e,editor:t}=this,[i,a]=e.freeze;if(i>0||a>0){const l=e.freezeTotalWidth(),o=e.freezeTotalHeight();t.setFreezeLengths(l,o)}n.resetAreaOffset()}function Za(){const{tableEl:n,overlayerEl:e,overlayerCEl:t,table:i,toolbar:a,selector:l,el:o}=this,r=this.getTableOffset(),f=this.getRect();n.attr(f),e.offset(f),t.offset(r),o.css("width",`${f.width}px`),nN.call(this),iN.call(this),LZe.call(this),i.render(),a.reset(),l.reset()}function _h(){const{data:n,selector:e}=this;n.clearClipboard(),e.hideClipboard()}function aW(){const{data:n,selector:e}=this;n.copy(),n.copyToSystemClipboard(),e.showClipboard()}function fL(){const{data:n,selector:e}=this;n.cut(),e.showClipboard()}function kd(n,e){const{data:t}=this;if(t.settings.mode!=="read"){if(t.paste(n,i=>_S("Tip",i)))Za.call(this);else if(e){const i=e.clipboardData.getData("text/plain");this.data.pasteFromText(i),Za.call(this)}}}function RZe(){this.data.hideRowsOrCols(),Za.call(this)}function bL(n,e){this.data.unhideRowsOrCols(n,e),Za.call(this)}function TZe(){const{data:n}=this;n.autofilter(),Za.call(this)}function xZe(){const{toolbar:n}=this;n.paintformatActive()&&(kd.call(this,"format"),_h.call(this),n.paintformatToggle())}function mL(n){const{selector:e,data:t,table:i,sortFilter:a}=this,{offsetX:l,offsetY:o}=n,r=n.target.className===`${gt}-selector-corner`,f=t.getCellRectByXY(l,o),{left:v,top:b,width:Z,height:p}=f;let{ri:y,ci:X}=f;const{autoFilter:m}=t;if(m.includes(y,X)&&v+Z-20t.rows.getCell(G,d));a.hide(),a.set(X,N,m.getFilter(X),m.getSort(X)),a.setOffset({left:v,top:b+p+2});return}n.shiftKey||(r?e.showAutofill(y,X):Zc.call(this,!1,y,X),kS(window,N=>{({ri:y,ci:X}=t.getCellRectByXY(N.offsetX,N.offsetY)),r?e.showAutofill(y,X):N.buttons===1&&!N.shiftKey&&Zc.call(this,!0,y,X,!0,!0)},()=>{r&&e.arange&&t.settings.mode!=="read"&&t.autofill(e.arange,"all",N=>_S("Tip",N))&&i.render(),e.hideAutofill(),xZe.call(this)})),!r&&n.buttons===1&&n.shiftKey&&Zc.call(this,!0,y,X)}function $h(){const{editor:n,data:e}=this,t=e.getSelectedRect(),i=this.getTableOffset();let a="top";t.top>i.height/2&&(a="bottom"),n.setOffset(t,a)}function Fd(){const{editor:n,data:e}=this;e.settings.mode!=="read"&&($h.call(this),n.setCell(e.getSelectedCell(),e.getSelectedValidator()),_h.call(this))}function CZe(n){const{data:e,table:t,selector:i}=this;e.scrolly(n,()=>{i.resetBRLAreaOffset(),$h.call(this),t.render()})}function SZe(n){const{data:e,table:t,selector:i}=this;e.scrollx(n,()=>{i.resetBRTAreaOffset(),$h.call(this),t.render()})}function zZe(n,e){const{ri:t}=n,{table:i,selector:a,data:l}=this;l.rows.setHeight(t,e),i.render(),a.resetAreaOffset(),nN.call(this),$h.call(this)}function kZe(n,e){const{ci:t}=n,{table:i,selector:a,data:l}=this;l.cols.setWidth(t,e),i.render(),a.resetAreaOffset(),iN.call(this),$h.call(this)}function $Z(n,e="finished"){const{data:t,table:i}=this;if(t.settings.mode==="read")return;t.setSelectedCellText(n,e);const{ri:a,ci:l}=t.selector;e==="finished"?i.render():this.trigger("cell-edited",n,a,l)}function bm(n){const{data:e}=this;e.settings.mode!=="read"&&(n==="insert-row"?e.insert("row"):n==="delete-row"?e.delete("row"):n==="insert-column"?e.insert("column"):n==="delete-column"?e.delete("column"):n==="delete-cell"?e.deleteCell():n==="delete-cell-format"?e.deleteCell("format"):n==="delete-cell-text"?e.deleteCell("text"):n==="cell-printable"?e.setSelectedCellAttr("printable",!0):n==="cell-non-printable"?e.setSelectedCellAttr("printable",!1):n==="cell-editable"?e.setSelectedCellAttr("editable",!0):n==="cell-non-editable"&&e.setSelectedCellAttr("editable",!1),_h.call(this),Za.call(this))}function FZe(n,e){const{data:t}=this;if(n==="undo")this.undo();else if(n==="redo")this.redo();else if(n==="print")this.print.preview();else if(n==="paintformat")e===!0?aW.call(this):_h.call(this);else if(n==="clearformat")bm.call(this,"delete-cell-format");else if(n!=="link"){if(n!=="chart")if(n==="autofilter")TZe.call(this);else if(n==="freeze")if(e){const{ri:i,ci:a}=t.selector;this.freeze(i,a)}else this.freeze(0,0);else t.setSelectedCellAttr(n,e),n==="formula"&&!t.selector.multiple()&&Fd.call(this),Za.call(this)}}function JZe(n,e,t,i){this.data.setAutoFilter(n,e,t,i),Za.call(this)}function DZe(){const{selector:n,overlayerEl:e,rowResizer:t,colResizer:i,verticalScrollbar:a,horizontalScrollbar:l,editor:o,contextMenu:r,toolbar:f,modalValidation:v,sortFilter:b}=this;e.on("mousemove",Z=>{wZe.call(this,Z)}).on("mousedown",Z=>{o.clear(),r.hide(),Z.buttons===2?(this.data.xyInSelectedRect(Z.offsetX,Z.offsetY)||mL.call(this,Z),r.setPosition(Z.offsetX,Z.offsetY),Z.stopPropagation()):Z.detail===2?Fd.call(this):mL.call(this,Z)}).on("mousewheel.stop",Z=>{gZe.call(this,Z)}).on("mouseout",Z=>{const{offsetX:p,offsetY:y}=Z;y<=0&&i.hide(),p<=0&&t.hide()}),n.inputChange=Z=>{$Z.call(this,Z,"input"),Fd.call(this)},Ppe(e.el,{move:(Z,p)=>{VZe.call(this,Z,p)}}),f.change=(Z,p)=>FZe.call(this,Z,p),b.ok=(Z,p,y,X)=>JZe.call(this,Z,p,y,X),t.finishedFn=(Z,p)=>{zZe.call(this,Z,p)},i.finishedFn=(Z,p)=>{kZe.call(this,Z,p)},t.unhideFn=Z=>{bL.call(this,"row",Z)},i.unhideFn=Z=>{bL.call(this,"col",Z)},a.moveFn=(Z,p)=>{CZe.call(this,Z,p)},l.moveFn=(Z,p)=>{SZe.call(this,Z,p)},o.change=(Z,p)=>{$Z.call(this,p,Z)},v.change=(Z,...p)=>{Z==="save"?this.data.addValidation(...p):this.data.removeValidation()},r.itemClick=Z=>{Z==="validation"?v.setValue(this.data.getSelectedValidation()):Z==="copy"?aW.call(this):Z==="cut"?fL.call(this):Z==="paste"?kd.call(this,"all"):Z==="paste-value"?kd.call(this,"text"):Z==="paste-format"?kd.call(this,"format"):Z==="hide"?RZe.call(this):bm.call(this,Z)},va(window,"resize",()=>{this.reload()}),va(window,"click",Z=>{this.focusing=e.contains(Z.target)}),va(window,"paste",Z=>{this.focusing&&(kd.call(this,"all",Z),Z.preventDefault())}),va(window,"keydown",Z=>{if(!this.focusing)return;const p=Z.keyCode||Z.which,{key:y,ctrlKey:X,shiftKey:m,metaKey:N}=Z;if(X||N)switch(p){case 90:this.undo(),Z.preventDefault();break;case 89:this.redo(),Z.preventDefault();break;case 67:aW.call(this),Z.preventDefault();break;case 88:fL.call(this),Z.preventDefault();break;case 85:f.trigger("underline"),Z.preventDefault();break;case 86:break;case 37:Fr.call(this,m,"row-first"),Z.preventDefault();break;case 38:Fr.call(this,m,"col-first"),Z.preventDefault();break;case 39:Fr.call(this,m,"row-last"),Z.preventDefault();break;case 40:Fr.call(this,m,"col-last"),Z.preventDefault();break;case 32:Zc.call(this,!1,-1,this.data.selector.ci,!1),Z.preventDefault();break;case 66:f.trigger("bold");break;case 73:f.trigger("italic");break}else{switch(p){case 32:m&&Zc.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:r.hide(),_h.call(this);break;case 37:Fr.call(this,m,"left"),Z.preventDefault();break;case 38:Fr.call(this,m,"up"),Z.preventDefault();break;case 39:Fr.call(this,m,"right"),Z.preventDefault();break;case 40:Fr.call(this,m,"down"),Z.preventDefault();break;case 9:o.clear(),Fr.call(this,!1,m?"left":"right"),Z.preventDefault();break;case 13:o.clear(),Fr.call(this,!1,m?"up":"down"),Z.preventDefault();break;case 8:bm.call(this,"delete-cell-text"),Z.preventDefault();break}y==="Delete"?(bm.call(this,"delete-cell-text"),Z.preventDefault()):p>=65&&p<=90||p>=48&&p<=57||p>=96&&p<=105||Z.key==="="?($Z.call(this,Z.key,"input"),Fd.call(this)):p===113&&Fd.call(this)}})}class OZe{constructor(e,t){this.eventMap=Qpe();const{view:i,showToolbar:a,showContextmenu:l}=t.settings;this.el=ut("div",`${gt}-sheet`),this.toolbar=new WZe(t,i.width,!a),this.print=new Lye(t),e.children(this.toolbar.el,this.el,this.print.el),this.data=t,this.tableEl=ut("canvas",`${gt}-table`),this.rowResizer=new _V(!1,t.rows.height),this.colResizer=new _V(!0,t.cols.minWidth),this.verticalScrollbar=new $V(!0),this.horizontalScrollbar=new $V(!1),this.editor=new hye(vye,()=>this.getTableOffset(),t.rows.height),this.modalValidation=new NZe,this.contextMenu=new Cye(()=>this.getRect(),!l),this.selector=new _pe(t),this.overlayerCEl=ut("div",`${gt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=ut("div",`${gt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new IZe,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new wye(this.tableEl.el,t),DZe.call(this),Za.call(this),Zc.call(this,!1,0,0)}on(e,t){return this.eventMap.on(e,t),this}trigger(e,...t){const{eventMap:i}=this;i.fire(e,t)}resetData(e){this.editor.clear(),this.data=e,nN.call(this),iN.call(this),this.toolbar.resetData(e),this.print.resetData(e),this.selector.resetData(e),this.table.resetData(e)}loadData(e){return this.data.setData(e),Za.call(this),this}freeze(e,t){const{data:i}=this;return i.setFreeze(e,t),Za.call(this),this}undo(){this.data.undo(),Za.call(this)}redo(){this.data.redo(),Za.call(this)}reload(){return Za.call(this),this}getRect(){const{data:e}=this;return{width:e.viewWidth(),height:e.viewHeight()}}getTableOffset(){const{rows:e,cols:t}=this.data,{width:i,height:a}=this.getRect();return{width:i-t.indexWidth,height:a-e.height,left:t.indexWidth,top:e.height}}}class jZe extends qr{constructor(e){const t=new Jl("ellipsis");super(t,"auto",!1,"top-left"),this.contentClick=e}reset(e){const t=e.map((i,a)=>ut("div",`${gt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(a),this.hide()}).child(i));this.setContentChildren(...t)}setTitle(){}}const UZe=[{key:"delete",title:Hn("contextmenu.deleteSheet")}];function EZe(n){return ut("div",`${gt}-item`).child(n.title()).on("click",()=>{this.itemClick(n.key),this.hide()})}function KZe(){return UZe.map(n=>EZe.call(this,n))}class HZe{constructor(){this.el=ut("div",`${gt}-contextmenu`).css("width","160px").children(...KZe.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:e}=this;e.hide(),qu(e)}setOffset(e){const{el:t}=this;t.offset(e),t.show(),Ah(t)}}class PZe{constructor(e=()=>{},t=()=>{},i=()=>{},a=()=>{}){this.swapFunc=t,this.updateFunc=a,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new jZe(l=>{this.clickSwap2(this.items[l])}),this.contextMenu=new HZe,this.contextMenu.itemClick=i,this.el=ut("div",`${gt}-bottombar`).children(this.contextMenu.el,this.menuEl=ut("ul",`${gt}-menu`).child(ut("li","").children(new Jl("add").on("click",()=>{e()}),ut("span","").child(this.moreEl))))}addItem(e,t){this.dataNames.push(e);const i=ut("li",t?"active":"").child(e);i.on("click",()=>{this.clickSwap2(i)}).on("contextmenu",a=>{const{offsetLeft:l,offsetHeight:o}=a.target;this.contextMenu.setOffset({left:l,bottom:o+1}),this.deleteEl=i}).on("dblclick",()=>{const a=i.html(),l=new ou("auto","");l.val(a),l.input.on("blur",({target:o})=>{const{value:r}=o,f=this.dataNames.findIndex(v=>v===a);this.renameItem(f,r)}),i.html("").child(l.el),l.focus()}),t&&this.clickSwap(i),this.items.push(i),this.menuEl.child(i),this.moreEl.reset(this.dataNames)}renameItem(e,t){this.dataNames.splice(e,1,t),this.moreEl.reset(this.dataNames),this.items[e].html("").child(t),this.updateFunc(e,t)}clear(){this.items.forEach(e=>{this.menuEl.removeChild(e.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:e,deleteEl:t}=this;if(this.items.length>1){const i=this.items.findIndex(a=>a===t);if(this.items.splice(i,1),this.dataNames.splice(i,1),this.menuEl.removeChild(t.el),this.moreEl.reset(this.dataNames),e===t){const[a]=this.items;return this.activeEl=a,this.activeEl.toggle(),[i,0]}return[i,-1]}return[-1]}clickSwap2(e){const t=this.items.findIndex(i=>i===e);this.clickSwap(e),this.activeEl.toggle(),this.swapFunc(t)}clickSwap(e){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=e}}class $S{constructor(e,t={}){let i=e;this.options={showBottomBar:!0,...t},this.sheetIndex=1,this.datas=[],typeof e=="string"&&(i=document.querySelector(e)),this.bottombar=this.options.showBottomBar?new PZe(()=>{const l=this.addSheet();this.sheet.resetData(l)},l=>{const o=this.datas[l];this.sheet.resetData(o)},()=>{this.deleteSheet()},(l,o)=>{this.datas[l].name=o}):null,this.data=this.addSheet();const a=ut("div",`${gt}`).on("contextmenu",l=>l.preventDefault());i.appendChild(a.el),this.sheet=new OZe(a,this.data),this.bottombar!==null&&a.child(this.bottombar.el)}addSheet(e,t=!0){const i=e||`sheet${this.sheetIndex}`,a=new Hpe(i,this.options);return a.change=(...l)=>{this.sheet.trigger("change",...l)},this.datas.push(a),this.bottombar!==null&&this.bottombar.addItem(i,t),this.sheetIndex+=1,a}deleteSheet(){if(this.bottombar===null)return;const[e,t]=this.bottombar.deleteItem();e>=0&&(this.datas.splice(e,1),t>=0&&this.sheet.resetData(this.datas[t]))}loadData(e){const t=Array.isArray(e)?e:[e];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],t.length>0)for(let i=0;ie.getData())}cellText(e,t,i,a=0){return this.datas[a].setCellText(e,t,i,"finished"),this}cell(e,t,i=0){return this.datas[i].getCell(e,t)}cellStyle(e,t,i=0){return this.datas[i].getCellStyle(e,t)}reRender(){return this.sheet.table.render(),this}on(e,t){return this.sheet.on(e,t),this}validate(){const{validations:e}=this.data;return e.errors.size<=0}change(e){return this.sheet.on("change",e),this}static locale(e,t){SS(e,t)}}const QZe=(n,e={})=>new $S(n,e);window&&(window.x_spreadsheet=QZe,window.x_spreadsheet.locale=(n,e)=>SS(n,e));var rW={},BZe={get exports(){return rW},set exports(n){rW=n}};(function(n,e){(function(t){n.exports=t()})(function(){return function(){function t(i,a,l){function o(v,b){if(!a[v]){if(!i[v]){var Z=typeof bs=="function"&&bs;if(!b&&Z)return Z(v,!0);if(r)return r(v,!0);var p=new Error("Cannot find module '"+v+"'");throw p.code="MODULE_NOT_FOUND",p}var y=a[v]={exports:{}};i[v][0].call(y.exports,function(X){var m=i[v][1][X];return o(m||X)},y,y.exports,t,i,a,l)}return a[v].exports}for(var r=typeof bs=="function"&&bs,f=0;f2&&arguments[2]!==void 0?arguments[2]:0;if(l(this,b),!p)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof p=="string"){var X=f.decodeAddress(p);this.nativeCol=X.col+y,this.nativeColOff=0,this.nativeRow=X.row+y,this.nativeRowOff=0}else p.nativeCol!==void 0?(this.nativeCol=p.nativeCol||0,this.nativeColOff=p.nativeColOff||0,this.nativeRow=p.nativeRow||0,this.nativeRowOff=p.nativeRowOff||0):p.col!==void 0?(this.col=p.col+y,this.row=p.row+y):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=Z}return r(b,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(p){this.nativeCol=Math.floor(p),this.nativeColOff=Math.floor((p-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(p){this.nativeRow=Math.floor(p),this.nativeRowOff=Math.floor((p-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(p){this.nativeCol=p.nativeCol,this.nativeColOff=p.nativeColOff,this.nativeRow=p.nativeRow,this.nativeRowOff=p.nativeRowOff}}],[{key:"asInstance",value:function(p){return p instanceof b||p==null?p:new b(p)}}]),b}();i.exports=v},{"../utils/col-cache":19}],3:[function(t,i,a){function l(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function o(x,R){for(var g=0;g0||this.type===x.Types.Merge}},{key:"master",get:function(){return this.type===x.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===x.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(g){if(this.type===x.Types.Merge){this._value.master.value=g;return}this._value.release(),this._value=C.create(C.getType(g),this,g)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(g){this._comment=new y(g)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return v.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var g=this._row.worksheet;return{sheetName:g.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(g){this.names=[g]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(g){var S=this,L=this.workbook.definedNames;L.removeAllNames(this.fullAddress),g.forEach(function(V){L.addEx(S.fullAddress,V)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(g){this._dataValidations.add(this.address,g)}},{key:"model",get:function(){var g=this._value.model;return g.style=this.style,this._comment&&(g.comment=this._comment.model),g},set:function(g){if(this._value.release(),this._value=C.create(g.type,this),this._value.model=g,g.comment)switch(g.comment.type){case"note":this._comment=y.fromModel(g.comment);break}g.style?this.style=g.style:this.style={}}}]),x}();X.Types=b.ValueType;var m=function(){function x(R){l(this,x),this.model={address:R.address,type:X.Types.Null}}return r(x,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(g){}},{key:"type",get:function(){return X.Types.Null}},{key:"effectiveType",get:function(){return X.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),N=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Number,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Number}},{key:"effectiveType",get:function(){return X.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),G=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),d=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:g}}return r(x,[{key:"toString",value:function(){return this.model.value.richText.map(function(g){return g.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.RichText}},{key:"effectiveType",get:function(){return X.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),u=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Date,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Date}},{key:"effectiveType",get:function(){return X.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),s=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Hyperlink,text:g?g.text:void 0,hyperlink:g?g.hyperlink:void 0},g&&g.tooltip&&(this.model.tooltip=g.tooltip)}return r(x,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var g={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(g.tooltip=this.model.tooltip),g},set:function(g){this.model={text:g.text,hyperlink:g.hyperlink},g.tooltip&&(this.model.tooltip=g.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(g){this.model.text=g}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(g){this.model.hyperlink=g}},{key:"type",get:function(){return X.Types.Hyperlink}},{key:"effectiveType",get:function(){return X.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),h=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Merge,master:g?g.address:void 0},this._master=g,g&&g.addMergeRef()}return r(x,[{key:"isMergedTo",value:function(g){return g===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(g){g instanceof X?(this._master&&this._master.releaseMergeRef(),g.addMergeRef(),this._master=g):this._master.value=g}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return X.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),c=function(){function x(R,g){l(this,x),this.cell=R,this.model={address:R.address,type:X.Types.Formula,shareType:g?g.shareType:void 0,ref:g?g.ref:void 0,formula:g?g.formula:void 0,sharedFormula:g?g.sharedFormula:void 0,result:g?g.result:void 0}}return r(x,[{key:"_copyModel",value:function(g){var S={},L=function(Y){var T=g[Y];T&&(S[Y]=T)};return L("formula"),L("result"),L("ref"),L("shareType"),L("sharedFormula"),S}},{key:"validate",value:function(g){switch(C.getType(g)){case X.Types.Null:case X.Types.String:case X.Types.Number:case X.Types.Date:break;case X.Types.Hyperlink:case X.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var g=this.cell.worksheet,S=g.findCell(this.model.sharedFormula);this._translatedFormula=S&&p(S.formula,S.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(g){this.model=this._copyModel(g)}},{key:"dependencies",get:function(){var g=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),S=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:g,cells:S}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(g){this.model.formula=g}},{key:"formulaType",get:function(){return this.model.formula?b.FormulaType.Master:this.model.sharedFormula?b.FormulaType.Shared:b.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(g){this.model.result=g}},{key:"type",get:function(){return X.Types.Formula}},{key:"effectiveType",get:function(){var g=this.model.result;return g==null?b.ValueType.Null:g instanceof String||typeof g=="string"?b.ValueType.String:typeof g=="number"?b.ValueType.Number:g instanceof Date?b.ValueType.Date:g.text&&g.hyperlink?b.ValueType.Hyperlink:g.formula?b.ValueType.Formula:b.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),W=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.SharedString,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.SharedString}},{key:"effectiveType",get:function(){return X.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),M=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Boolean,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Boolean}},{key:"effectiveType",get:function(){return X.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),I=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.Error,value:g}}return r(x,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(g){this.model.value=g}},{key:"type",get:function(){return X.Types.Error}},{key:"effectiveType",get:function(){return X.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),w=function(){function x(R,g){l(this,x),this.model={address:R.address,type:X.Types.String,value:JSON.stringify(g),rawValue:g}}return r(x,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(g){this.model.rawValue=g,this.model.value=JSON.stringify(g)}},{key:"type",get:function(){return X.Types.String}},{key:"effectiveType",get:function(){return X.Types.String}},{key:"address",get:function(){return this.model.address},set:function(g){this.model.address=g}}]),x}(),C={getType:function(R){return R==null?X.Types.Null:R instanceof String||typeof R=="string"?X.Types.String:typeof R=="number"?X.Types.Number:typeof R=="boolean"?X.Types.Boolean:R instanceof Date?X.Types.Date:R.text&&R.hyperlink?X.Types.Hyperlink:R.formula||R.sharedFormula?X.Types.Formula:R.richText?X.Types.RichText:R.sharedString?X.Types.SharedString:R.error?X.Types.Error:X.Types.JSON},types:[{t:X.Types.Null,f:m},{t:X.Types.Number,f:N},{t:X.Types.String,f:G},{t:X.Types.Date,f:u},{t:X.Types.Hyperlink,f:s},{t:X.Types.Formula,f:c},{t:X.Types.Merge,f:h},{t:X.Types.JSON,f:w},{t:X.Types.SharedString,f:W},{t:X.Types.RichText,f:d},{t:X.Types.Boolean,f:M},{t:X.Types.Error,f:I}].reduce(function(x,R){return x[R.t]=R.f,x},[]),create:function(R,g,S){var L=this.types[R];if(!L)throw new Error("Could not create Value of type ".concat(R));return new L(g,S)}};i.exports=X},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var m=this.style;return!(m&&(m.font||m.numFmt||m.alignment||m.border||m.fill||m.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var m=[];return this.eachCell(function(N,G){N&&N.type!==v.ValueType.Null&&(m[G]=N.value)}),m},set:function(m){var N=this;if(m){var G=this.number,d=0;m.hasOwnProperty("0")&&(d=1),m.forEach(function(u,s){N._worksheet.getCell(s+d,G).value=u})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}}],[{key:"toModel",value:function(m){var N=[],G=null;return m&&m.forEach(function(d,u){d.isDefault?G&&(G=null):!G||!d.equivalentTo(G)?(G={min:u+1,max:u+1,width:d.width!==void 0?d.width:Z,style:d.style,isCustomWidth:d.isCustomWidth,hidden:d.hidden,outlineLevel:d.outlineLevel,collapsed:d.collapsed},N.push(G)):G.max=u+1}),N.length?N:void 0}},{key:"fromModel",value:function(m,N){N=N||[];for(var G=[],d=1,u=0;uthis.bottom)&&(this.bottom=X),(!this.model.right||m>this.right)&&(this.right=m)}},{key:"expandRow",value:function(p){if(p){var y=p.dimensions,X=p.number;y&&this.expand(X,y.min,X,y.max)}}},{key:"expandToAddress",value:function(p){var y=f.decodeEx(p);this.expand(y.row,y.col,y.row,y.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(p){return!(p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName||p.bottomthis.bottom||p.rightthis.right)}},{key:"contains",value:function(p){var y=f.decodeEx(p);return this.containsEx(y)}},{key:"containsEx",value:function(p){return p.sheetName&&this.sheetName&&p.sheetName!==this.sheetName?!1:p.row>=this.top&&p.row<=this.bottom&&p.col>=this.left&&p.col<=this.right}},{key:"forEachAddress",value:function(p){for(var y=this.left;y<=this.right;y++)for(var X=this.top;X<=this.bottom;X++)p(f.encodeAddress(X,y),X,y)}},{key:"top",get:function(){return this.model.top||1},set:function(p){this.model.top=p}},{key:"left",get:function(){return this.model.left||1},set:function(p){this.model.left=p}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(p){this.model.bottom=p}},{key:"right",get:function(){return this.model.right||1},set:function(p){this.model.right=p}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(p){this.model.sheetName=p}},{key:"_serialisedSheetName",get:function(){var p=this.model.sheetName;return p?/^[a-zA-Z0-9]*$/.test(p)?"".concat(p,"!"):"'".concat(p,"'!"):""}},{key:"tl",get:function(){return f.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(f.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return f.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(f.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),b}();i.exports=v},{"../utils/col-cache":19}],11:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m2?d-2:0),s=2;s0)for(W=c;W>=G;W--)M=this._cells[W-1],M?(I=this.getCell(W+h),I.value=M.value,I.style=M.style,I._comment=M._comment):this._cells[W+h-1]=void 0;for(W=0;WG.col)&&(m=G.col),N0?{min:m,max:N}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(m){this._applyStyle("numFmt",m)}},{key:"font",get:function(){return this.style.font},set:function(m){this._applyStyle("font",m)}},{key:"alignment",get:function(){return this.style.alignment},set:function(m){this._applyStyle("alignment",m)}},{key:"protection",get:function(){return this.style.protection},set:function(m){this._applyStyle("protection",m)}},{key:"border",get:function(){return this.style.border},set:function(m){this._applyStyle("border",m)}},{key:"fill",get:function(){return this.style.fill},set:function(m){this._applyStyle("fill",m)}},{key:"hidden",get:function(){return!!this._hidden},set:function(m){this._hidden=m}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(m){this._outlineLevel=m}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var m=[],N=0,G=0;return this._cells.forEach(function(d){if(d){var u=d.model;u&&((!N||N>d.col)&&(N=d.col),G0,"Table must be on valid row"),N(u>0,"Table must be on valid col");var s=this.width,h=this.filterHeight,c=this.tableHeight;X.autoFilterRef=f.encode(d,u,d+h-1,u+s-1),X.tableRef=f.encode(d,u,d+c-1,u+s-1),X.columns.forEach(function(W,M){N(W.name,"Column ".concat(M," must have a name")),M===0?m(W,"totalsRowLabel","Total"):(m(W,"totalsRowFunction","none"),W.totalsRowFormula=y.getFormula(W))})}},{key:"store",value:function(){var y=this,X=function(M,I){I&&Object.keys(I).forEach(function(w){M[w]=I[w]})},m=this.worksheet,N=this.table,G=N.tl,d=G.row,u=G.col,s=0;if(N.headerRow){var h=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=W.style,w=W.name,C=h.getCell(u+M);C.value=w,X(C,I)})}if(N.rows.forEach(function(W){var M=m.getRow(d+s++);W.forEach(function(I,w){var C=M.getCell(u+w);C.value=I,X(C,N.columns[w].style)})}),N.totalsRow){var c=m.getRow(d+s++);N.columns.forEach(function(W,M){var I=c.getCell(u+M);if(M===0)I.value=W.totalsRowLabel;else{var w=y.getFormula(W);w?I.value={formula:W.totalsRowFormula,result:W.totalsRowResult}:I.value=null}X(I,W.style)})}}},{key:"load",value:function(y){var X=this,m=this.table,N=m.tl,G=N.row,d=N.col,u=0;if(m.headerRow){var s=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=s.getCell(d+W);M.value=c.name})}if(m.rows.forEach(function(c){var W=y.getRow(G+u++);c.forEach(function(M,I){var w=W.getCell(d+I);w.value=M})}),m.totalsRow){var h=y.getRow(G+u++);m.columns.forEach(function(c,W){var M=h.getCell(d+W);if(W===0)M.value=c.totalsRowLabel;else{var I=X.getFormula(c);I&&(M.value={formula:c.totalsRowFormula,result:c.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var y=f.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(y,X)}},{key:"getColumn",value:function(y){var X=this.table.columns[y];return new v(this,X,y)}},{key:"addColumn",value:function(y,X,m){this.cacheState(),m===void 0?(this.table.columns.push(y),this.table.rows.forEach(function(N,G){N.push(X[G])})):(this.table.columns.splice(m,0,y),this.table.rows.forEach(function(N,G){N.splice(m,0,X[G])}))}},{key:"removeColumns",value:function(y){var X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(y,X),this.table.rows.forEach(function(m){m.splice(y,X)})}},{key:"_assign",value:function(y,X,m){this.cacheState(),y[X]=m}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(y){this.table=y}},{key:"ref",get:function(){return this.table.ref},set:function(y){this._assign(this.table,"ref",y)}},{key:"name",get:function(){return this.table.name},set:function(y){this.table.name=y}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(y){this.table.displayName=y}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(y){this._assign(this.table,"headerRow",y)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(y){this._assign(this.table,"totalsRow",y)}},{key:"theme",get:function(){return this.table.style.name},set:function(y){this.table.style.name=y}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(y){this.table.style.showFirstColumn=y}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(y){this.table.style.showLastColumn=y}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(y){this.table.style.showRowStripes=y}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(y){this.table.style.showColumnStripes=y}}]),Z}();i.exports=b},{"../utils/col-cache":19}],13:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m31&&console.warn("Worksheet name ".concat(m," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(m))throw new Error("Worksheet name ".concat(m," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(m))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(m));if(m=(m||"sheet".concat(G)).substring(0,31),this._worksheets.find(function(h){return h&&h.name.toLowerCase()===m.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(m));N&&(typeof N=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),N={properties:{tabColor:{argb:N}}}):(N.argb||N.theme||N.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),N={properties:{tabColor:N}}));var d=this._worksheets.reduce(function(h,c){return(c&&c.orderNo)>h?c.orderNo:h},0),u=Object.assign({},N,{id:G,name:m,orderNo:d+1,workbook:this}),s=new f(u);return this._worksheets[G]=s,s}},{key:"removeWorksheetEx",value:function(m){delete this._worksheets[m.id]}},{key:"removeWorksheet",value:function(m){var N=this.getWorksheet(m);N&&N.destroy()}},{key:"getWorksheet",value:function(m){if(m===void 0)return this._worksheets.find(Boolean);if(typeof m=="number")return this._worksheets[m];if(typeof m=="string")return this._worksheets.find(function(N){return N&&N.name===m})}},{key:"eachSheet",value:function(m){this.worksheets.forEach(function(N){m(N,N.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(m){var N=this.media.length;return this.media.push(Object.assign({},m,{type:"image"})),N}},{key:"getImage",value:function(m){return this.media[m]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new b(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new Z(this)),this._csv}},{key:"nextId",get:function(){for(var m=1;mx.length)&&(R=x.length);for(var g=0,S=new Array(R);gthis._columns.length)for(var L=this._columns.length+1;L<=g;)this._columns.push(new h(this,L++));return this._columns[g-1]}},{key:"spliceColumns",value:function(g,S){for(var L=this,V=this._rows,Y=V.length,T=arguments.length,J=new Array(T>2?T-2:0),U=2;U0)for(var K=function(pe){var re=[g,S];J.forEach(function(E){re.push(E[pe]||null)});var _=L.getRow(pe+1);_.splice.apply(_,re)},H=0;H0)for(var oe=O;oe>=F;oe--)this.getColumn(oe+k).defn=this.getColumn(oe).defn;for(var se=g;se1&&arguments[1]!==void 0?arguments[1]:"n",L=this._nextRow,V=this.getRow(L);return V.values=g,this._setStyleOption(L,S[0]==="i"?S:"n"),V}},{key:"addRows",value:function(g){var S=this,L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",V=[];return g.forEach(function(Y){V.push(S.addRow(Y,L))}),V}},{key:"insertRow",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(g,0,S),this._setStyleOption(g,L),this.getRow(g)}},{key:"insertRows",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[g,0].concat(f(S))),L!=="n")for(var V=0;V1&&arguments[1]!==void 0?arguments[1]:"n";S[0]==="o"&&this.findRow(g+1)!==void 0?this._copyStyle(g+1,g,S[1]==="+"):S[0]==="i"&&this.findRow(g-1)!==void 0&&this._copyStyle(g-1,g,S[1]==="+")}},{key:"_copyStyle",value:function(g,S){var L=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,V=this.getRow(g),Y=this.getRow(S);Y.style=Object.freeze(o({},V.style)),V.eachCell({includeEmpty:L},function(T,J){Y.getCell(J).style=Object.freeze(o({},T.style))}),Y.height=V.height}},{key:"duplicateRow",value:function(g,S){var L=this,V=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,Y=this._rows[g-1],T=new Array(S).fill(Y.values);this.spliceRows.apply(this,[g+1,V?0:S].concat(f(T)));for(var J=function(H){var k=L._rows[g+H];k.style=Y.style,k.height=Y.height,Y.eachCell({includeEmpty:!0},function(F,O){k.getCell(O).style=F.style})},U=0;U2?Y-2:0),J=2;J0)for(k=H;k>=V;k--)F=this._rows[k-1],F?function(){var Q=L.getRow(k+K);Q.values=F.values,Q.style=F.style,Q.height=F.height,F.eachCell({includeEmpty:!0},function(oe,se){if(Q.getCell(se).style=oe.style,oe._value.constructor.name==="MergeValue"){var he=L.getRow(oe._row._number+U).getCell(se),pe=oe._value._master,re=L.getRow(pe._row._number+U).getCell(pe._column._number);he.merge(re)}})}():this._rows[k+K-1]=void 0;for(k=0;kg.top||Y>g.left)&&this.getCell(V,Y).merge(L,S);this._merges[L.address]=g}},{key:"_unMergeMaster",value:function(g){var S=this._merges[g.address];if(S){for(var L=S.top;L<=S.bottom;L++)for(var V=S.left;V<=S.right;V++)this.getCell(L,V).unmerge();delete this._merges[g.address]}}},{key:"unMergeCells",value:function(){for(var g=arguments.length,S=new Array(g),L=0;L3&&arguments[3]!==void 0?arguments[3]:"shared",Y=d.decode(g),T=Y.top,J=Y.left,U=Y.bottom,K=Y.right,H=K-J+1,k=d.encodeAddress(T,J),F=V==="shared",O;typeof L=="function"?O=L:Array.isArray(L)?Array.isArray(L[0])?O=function(pe,re){return L[pe-T][re-J]}:O=function(pe,re){return L[(pe-T)*H+(re-J)]}:O=function(){};for(var Q=!0,oe=T;oe<=U;oe++)for(var se=J;se<=K;se++)Q?(this.getCell(oe,se).value={shareType:V,formula:S,ref:g,result:O(oe,se)},Q=!1):this.getCell(oe,se).value=F?{sharedFormula:k,result:O(oe,se)}:O(oe,se)}},{key:"addImage",value:function(g,S){var L={type:"image",imageId:g,range:S};this._media.push(new W(this,L))}},{key:"getImages",value:function(){return this._media.filter(function(g){return g.type==="image"})}},{key:"addBackgroundImage",value:function(g){var S={type:"background",imageId:g};this._media.push(new W(this,S))}},{key:"getBackgroundImageId",value:function(){var g=this._media.find(function(S){return S.type==="background"});return g&&g.imageId}},{key:"protect",value:function(g,S){var L=this;return new Promise(function(V){L.sheetProtection={sheet:!0},S&&"spinCount"in S&&(S.spinCount=Number.isFinite(S.spinCount)?Math.round(Math.max(0,S.spinCount)):1e5),g&&(L.sheetProtection.algorithmName="SHA-512",L.sheetProtection.saltValue=w.randomBytes(16).toString("base64"),L.sheetProtection.spinCount=S&&"spinCount"in S?S.spinCount:1e5,L.sheetProtection.hashValue=w.convertPasswordToHash(g,"SHA512",L.sheetProtection.saltValue,L.sheetProtection.spinCount)),S&&(L.sheetProtection=Object.assign(L.sheetProtection,S),!g&&"spinCount"in S&&delete L.sheetProtection.spinCount),V()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(g){var S=new M(this,g);return this.tables[g.name]=S,S}},{key:"getTable",value:function(g){return this.tables[g]}},{key:"removeTable",value:function(g){delete this.tables[g]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(g){this.conditionalFormattings.push(g)}},{key:"removeConditionalFormatting",value:function(g){typeof g=="number"?this.conditionalFormattings.splice(g,1):g instanceof Function?this.conditionalFormattings=this.conditionalFormattings.filter(g):this.conditionalFormattings=[]}},{key:"_parseRows",value:function(g){var S=this;this._rows=[],g.rows.forEach(function(L){var V=new s(S,L.number);S._rows[V.number-1]=V,V.model=L})}},{key:"_parseMergeCells",value:function(g){var S=this;G.each(g.mergeCells,function(L){S.mergeCellsWithoutStyle(L)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var g=new u;return this._rows.forEach(function(S){if(S){var L=S.dimensions;L&&g.expand(S.number,L.min,S.number,L.max)}}),g}},{key:"columns",get:function(){return this._columns},set:function(g){var S=this;this._headerRowCount=g.reduce(function(Y,T){var J=T.header&&1||T.headers&&T.headers.length||0;return Math.max(Y,J)},0);var L=1,V=this._columns=[];g.forEach(function(Y){var T=new h(S,L++,!1);V.push(T),T.defn=Y})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var g=0;return this.eachRow(function(S){g=Math.max(g,S.cellCount)}),g}},{key:"actualColumnCount",get:function(){var g=[],S=0;return this.eachRow(function(L){L.eachCell(function(V){var Y=V.col;g[Y]||(g[Y]=!0,S++)})}),S}},{key:"_lastRowNumber",get:function(){for(var g=this._rows,S=g.length;S>0&&g[S-1]===void 0;)S--;return S}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var g=0;return this.eachRow(function(){g++}),g}},{key:"hasMerges",get:function(){return G.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(g){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=g}},{key:"model",get:function(){var g={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(function(V){return V.model}),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(function(V){return V.model}),conditionalFormattings:this.conditionalFormattings};g.cols=h.toModel(this.columns);var S=g.rows=[],L=g.dimensions=new u;return this._rows.forEach(function(V){var Y=V&&V.model;Y&&(L.expand(Y.number,Y.min,Y.number,Y.max),S.push(Y))}),g.merges=[],G.each(this._merges,function(V){g.merges.push(V.range)}),g},set:function(g){var S=this;this.name=g.name,this._columns=h.fromModel(this,g.cols),this._parseRows(g),this._parseMergeCells(g),this.dataValidations=new I(g.dataValidations),this.properties=g.properties,this.pageSetup=g.pageSetup,this.headerFooter=g.headerFooter,this.views=g.views,this.autoFilter=g.autoFilter,this._media=g.media.map(function(L){return new W(S,L)}),this.sheetProtection=g.sheetProtection,this.tables=g.tables.reduce(function(L,V){var Y=new M;return Y.model=V,L[V.name]=Y,L},{}),this.conditionalFormattings=g.conditionalFormattings}}]),x}();i.exports=C},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(t,i,a){t("core-js/modules/es.promise"),t("core-js/modules/es.object.assign"),t("core-js/modules/es.object.keys"),t("core-js/modules/es.object.values"),t("core-js/modules/es.symbol"),t("core-js/modules/es.symbol.async-iterator"),t("core-js/modules/es.array.iterator"),t("core-js/modules/es.array.includes"),t("core-js/modules/es.array.find-index"),t("core-js/modules/es.array.find"),t("core-js/modules/es.string.from-code-point"),t("core-js/modules/es.string.includes"),t("core-js/modules/es.number.is-nan"),t("regenerator-runtime/runtime");var l={Workbook:t("./doc/workbook")},o=t("./doc/enums");Object.keys(o).forEach(function(r){l[r]=o[r]}),i.exports=l},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(t,i,a){var l=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function o(r){return typeof r=="string"?r:l?l.decode(r):r.toString()}a.bufferToString=o},{}],17:[function(t,i,a){var l=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),o=t("buffer"),r=o.Buffer;function f(v){return typeof v!="string"?v:l?r.from(l.encode(v).buffer):r.from(v)}a.stringToBuffer=f},{buffer:216}],18:[function(t,i,a){function l(Z,p){if(!(Z instanceof p))throw new TypeError("Cannot call a class as a function")}function o(Z,p){for(var y=0;yN.length)&&(G=N.length);for(var d=0,u=new Array(G);d"u"||!(Symbol.iterator in Object(N)))){var d=[],u=!0,s=!1,h=void 0;try{for(var c=N[Symbol.iterator](),W;!(u=(W=c.next()).done)&&(d.push(W.value),!(G&&d.length===G));u=!0);}catch(M){s=!0,h=M}finally{try{!u&&c.return!=null&&c.return()}finally{if(s)throw h}}return d}}function b(N){if(Array.isArray(N))return N}function Z(N,G){var d=Object.keys(N);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(N);G&&(u=u.filter(function(s){return Object.getOwnPropertyDescriptor(N,s).enumerable})),d.push.apply(d,u)}return d}function p(N){for(var G=1;G=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&G>=1){for(;W<=26;)d=this._dictionary[W-1],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=1}if(this._l2nFill<2&&G>=2){for(W=27;W<=26+26*26;)u=W-(26+1),s=u%26,h=Math.floor(u/26),d=this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=2}if(this._l2nFill<3&&G>=3){for(W=26+26*26+1;W<=16384;)u=W-(26*26+26+1),s=u%26,h=Math.floor(u/26)%26,c=Math.floor(u/(26*26)),d=this._dictionary[c]+this._dictionary[h]+this._dictionary[s],this._n2l[W]=d,this._l2n[d]=W,W++;this._l2nFill=3}},l2n:function(G){if(this._l2n[G]||this._fill(G.length),!this._l2n[G])throw new Error("Out of bounds. Invalid column letter: ".concat(G));return this._l2n[G]},n2l:function(G){if(G<1||G>16384)throw new Error("".concat(G," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[G]||this._fill(this._level(G)),this._n2l[G]},_hash:{},validateAddress:function(G){if(!X.test(G))throw new Error("Invalid Address: ".concat(G));return!0},decodeAddress:function(G){var d=G.length<5&&this._hash[G];if(d)return d;for(var u=!1,s="",h=0,c=!1,W="",M=0,I=0,w;I=65&&w<=90)u=!0,s+=G[I],h=h*26+w-64;else if(w>=48&&w<=57)c=!0,W+=G[I],M=M*10+w-48;else if(c&&u&&w!==36)break;if(!u)h=void 0;else if(h>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(s));c||(M=void 0),G=s+W;var C={address:G,col:h,row:M,$col$row:"$".concat(s,"$").concat(W)};return h<=100&&M<=100&&(this._hash[G]=C,this._hash[C.$col$row]=C),C},getAddress:function(G,d){if(d){var u=this.n2l(d)+G;return this.decodeAddress(u)}return this.decodeAddress(G)},decode:function(G){var d=G.split(":");if(d.length===2){var u=this.decodeAddress(d[0]),s=this.decodeAddress(d[1]),h={top:Math.min(u.row,s.row),left:Math.min(u.col,s.col),bottom:Math.max(u.row,s.row),right:Math.max(u.col,s.col)};return h.tl=this.n2l(h.left)+h.top,h.br=this.n2l(h.right)+h.bottom,h.dimensions="".concat(h.tl,":").concat(h.br),h}return this.decodeAddress(G)},decodeEx:function(G){var d=G.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),u=d[1]||d[2],s=d[3],h=s.split(":");if(h.length>1){var c=this.decodeAddress(h[0]),W=this.decodeAddress(h[1]),M=Math.min(c.row,W.row),I=Math.min(c.col,W.col),w=Math.max(c.row,W.row),C=Math.max(c.col,W.col);return c=this.n2l(I)+M,W=this.n2l(C)+w,{top:M,left:I,bottom:w,right:C,sheetName:u,tl:{address:c,col:I,row:M,$col$row:"$".concat(this.n2l(I),"$").concat(M),sheetName:u},br:{address:W,col:C,row:w,$col$row:"$".concat(this.n2l(C),"$").concat(w),sheetName:u},dimensions:"".concat(c,":").concat(W)}}if(s.startsWith("#"))return u?{sheetName:u,error:s}:{error:s};var x=this.decodeAddress(s);return u?p({sheetName:u},x):x},encodeAddress:function(G,d){return m.n2l(d)+G},encode:function(){switch(arguments.length){case 2:return m.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(m.encodeAddress(arguments[0],arguments[1]),":").concat(m.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(G,d){var u=l(G,5),s=u[0],h=u[1],c=u[3],W=u[4],M=l(d,2),I=M[0],w=M[1];return I>=s&&I<=c&&w>=h&&w<=W}};i.exports=m},{}],20:[function(t,i,a){(function(l){var o=t("crypto"),r={hash:function(v){for(var b=o.createHash(v),Z=arguments.length,p=new Array(Z>1?Z-1:0),y=1;y3||h.length===3&&h>"XFD")return X;var M=l.l2n(h),I=parseInt(W,10);s||(M+=y.col-p.col),c||(I+=y.row-p.row);var w=(m||"")+(s||"")+l.n2l(M)+(c||"")+I;return w}return X})}i.exports={slideFormula:f}},{"./col-cache":19}],23:[function(t,i,a){(function(l,o){function r(s,h,c,W,M,I,w){try{var C=s[I](w),x=C.value}catch(R){c(R);return}C.done?h(x):Promise.resolve(x).then(W,M)}function f(s){return function(){var h=this,c=arguments;return new Promise(function(W,M){var I=s.apply(h,c);function w(x){r(I,W,M,w,C,"next",x)}function C(x){r(I,W,M,w,C,"throw",x)}w(void 0)})}}function v(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function b(s,h){for(var c=0;c=this.length?(W=this.toBuffer(),this.iRead=this.iWrite,W):(W=o.alloc(c),this.buffer.copy(W,0,this.iRead,c),this.iRead+=c,W)}},{key:"write",value:function(c,W,M){var I=Math.min(M,this.size-this.iWrite);return c.copy(this.buffer,this.iWrite,W,W+I),this.iWrite+=I,I}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),s}(),u=function(h){h=h||{},this.bufSize=h.bufSize||1024*1024,this.buffers=[],this.batch=h.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};y.inherits(u,p.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return o.concat(this.buffers.map(function(h){return h.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var h=this.buffers[this.buffers.length-1];if(!h.full)return h}var c=new d(this.bufSize);return this.buffers.push(c),c},_pipe:function(h){var c=this;return f(regeneratorRuntime.mark(function W(){var M;return regeneratorRuntime.wrap(function(w){for(;;)switch(w.prev=w.next){case 0:return M=function(x){return new Promise(function(R){x.write(h.toBuffer(),function(){R()})})},w.next=3,Promise.all(c.pipes.map(M));case 3:case"end":return w.stop()}},W)}))()},_writeToBuffers:function(h){for(var c=0,W=h.length;c1;)M._pipe(M.buffers.shift());x.next=29;break;case 21:if(M.corked){x.next=27;break}return x.next=24,M._pipe(w);case 24:W(),x.next=29;break;case 27:M._writeToBuffers(w),l.nextTick(W);case 29:x.next=34;break;case 31:M.paused||M.emit("data",w.toBuffer()),M._writeToBuffers(w),M.emit("readable");case 34:return x.abrupt("return",!0);case 35:case"end":return x.stop()}},I)}))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(h,c,W){var M=this,I=function(C){C?W(C):(M._flush(),M.pipes.forEach(function(x){x.end()}),M.emit("finish"))};h?this.write(h,c,I):I()},read:function(h){var c;if(h){for(c=[];h&&this.buffers.length&&!this.buffers[0].eod;){var W=this.buffers[0],M=W.read(h);h-=M.length,c.push(M),W.eod&&W.full&&this.buffers.shift()}return o.concat(c)}return c=this.buffers.map(function(I){return I.toBuffer()}).filter(Boolean),this.buffers=[],o.concat(c)},setEncoding:function(h){this.encoding=h},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(h){this.pipes.push(h),!this.paused&&this.buffers.length&&this.end()},unpipe:function(h){this.pipes=this.pipes.filter(function(c){return c!==h})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),i.exports=u}).call(this,t("_process"),t("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(t,i,a){(function(l){function o(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}function r(b,Z){for(var p=0;p=this._buf.length-4;)this._grow(this._inPos+p.length),y=this._inPos+this._buf.write(p,this._inPos,this._encoding);this._inPos=y}},{key:"addStringBuf",value:function(p){p.length&&(this._buffer=void 0,this.length+p.length>this.capacity&&this._grow(this.length+p.length),p._buf.copy(this._buf,this._inPos,0,p.length),this._inPos+=p.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),b}();i.exports=v}).call(this,t("buffer").Buffer)},{buffer:216}],25:[function(t,i,a){function l(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(v)}var o=Object.prototype.toString,r=/["&<>]/,f={each:function(b,Z){b&&(Array.isArray(b)?b.forEach(Z):Object.keys(b).forEach(function(p){Z(b[p],p)}))},some:function(b,Z){return b?Array.isArray(b)?b.some(Z):Object.keys(b).some(function(p){return Z(b[p],p)}):!1},every:function(b,Z){return b?Array.isArray(b)?b.every(Z):Object.keys(b).every(function(p){return Z(b[p],p)}):!0},map:function(b,Z){return b?Array.isArray(b)?b.map(Z):Object.keys(b).map(function(p){return Z(b[p],p)}):[]},keyBy:function(b,Z){return b.reduce(function(p,y){return p[y[Z]]=y,p},{})},isEqual:function(b,Z){var p=l(b),y=l(Z),X=Array.isArray(b),m=Array.isArray(Z);if(p!==y)return!1;switch(l(b)){case"object":return X||m?X&&m?b.length===Z.length&&b.every(function(N,G){var d=Z[G];return f.isEqual(N,d)}):!1:f.every(b,function(N,G){var d=Z[G];return f.isEqual(N,d)});default:return b===Z}},escapeHtml:function(b){var Z=r.exec(b);if(!Z)return b;for(var p="",y="",X=0,m=Z.index;m":y=">";break;default:continue}X!==m&&(p+=b.substring(X,m)),X=m+1,p+=y}return X!==m?p+b.substring(X,m):p},strcmp:function(b,Z){return bZ?1:0},isUndefined:function(b){return o.call(b)==="[object Undefined]"},isObject:function(b){return o.call(b)==="[object Object]"},deepMerge:function(){var b=arguments[0]||{},Z=arguments.length,p,y,X;function m(G,d){p=b[d],X=Array.isArray(G),f.isObject(G)||X?(X?(X=!1,y=p&&Array.isArray(p)?p:[]):y=p&&f.isObject(p)?p:{},b[d]=f.deepMerge(y,G)):f.isUndefined(G)||(b[d]=G)}for(var N=0;N&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,b={nop:function(){},promiseImmediate:function(p){return new Promise(function(y){l.setImmediate?o(function(){y(p)}):setTimeout(function(){y(p)},1)})},inherits:f,dateToExcel:function(p,y){return 25569+p.getTime()/(24*3600*1e3)-(y?1462:0)},excelToDate:function(p,y){var X=Math.round((p-25569+(y?1462:0))*24*3600*1e3);return new Date(X)},parsePath:function(p){var y=p.lastIndexOf("/");return{path:p.substring(0,y),name:p.substring(y+1)}},getRelsPath:function(p){var y=b.parsePath(p);return"".concat(y.path,"/_rels/").concat(y.name,".rels")},xmlEncode:function(p){var y=v.exec(p);if(!y)return p;for(var X="",m="",N=0,G=y.index;G=11&&d!==13)){m="";break}continue}}N!==G&&(X+=p.substring(N,G)),N=G+1,m&&(X+=m)}return N!==G?X+p.substring(N,G):X},xmlDecode:function(p){return p.replace(/&([a-z]*);/g,function(y){switch(y){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return y}})},validInt:function(p){var y=parseInt(p,10);return Number.isNaN(y)?0:y},isDateFmt:function(p){if(!p)return!1;p=p.replace(/\[[^\]]*]/g,""),p=p.replace(/"[^"]*"/g,"");var y=p.match(/[ymdhMsb]+/)!==null;return y},fs:{exists:function(p){return new Promise(function(y){r.access(p,r.constants.F_OK,function(X){y(!X)})})}},toIsoDateString:function(p){return p.toIsoString().subsstr(0,10)}};i.exports=b}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{},t("timers").setImmediate)},{fs:215,timers:521}],27:[function(t,i,a){function l(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function o(s,h){for(var c=0;c",p="",X='="',m='"',N=" ";function G(s,h,c){s.push(N),s.push(h),s.push(X),s.push(v.xmlEncode(c.toString())),s.push(m)}function d(s,h){h&&f.each(h,function(c,W){c!==void 0&&G(s,W,c)})}var u=function(){function s(){l(this,s),this._xml=[],this._stack=[],this._rollbacks=[]}return r(s,[{key:"openXml",value:function(c){var W=this._xml;W.push(" +`)}},{key:"openNode",value:function(c,W){var M=this.tos,I=this._xml;M&&this.open&&I.push(Z),this._stack.push(c),I.push(b),I.push(c),d(I,W),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(c,W){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");W!==void 0&&G(this._xml,c,W)}},{key:"addAttributes",value:function(c){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");d(this._xml,c)}},{key:"writeText",value:function(c){var W=this._xml;this.open&&(W.push(Z),this.open=!1),this.leaf=!1,W.push(v.xmlEncode(c.toString()))}},{key:"writeXml",value:function(c){this.open&&(this._xml.push(Z),this.open=!1),this.leaf=!1,this._xml.push(c)}},{key:"closeNode",value:function(){var c=this._stack.pop(),W=this._xml;this.leaf?W.push(y):(W.push(p),W.push(c),W.push(Z)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(c,W,M){this.openNode(c,W),M!==void 0&&this.writeText(M),this.closeNode()}},{key:"closeAll",value:function(){for(;this._stack.length;)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var c=this._rollbacks.pop();this._xml.length>c.xml&&this._xml.splice(c.xml,this._xml.length-c.xml),this._stack.length>c.stack&&this._stack.splice(c.stack,this._stack.length-c.stack),this.leaf=c.leaf,this.open=c.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),s}();u.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},i.exports=u},{"./under-dash":25,"./utils":26}],28:[function(t,i,a){(function(l){function o(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(C){return typeof C}:o=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},o(I)}function r(I,w,C,x,R,g,S){try{var L=I[g](S),V=L.value}catch(Y){C(Y);return}L.done?w(V):Promise.resolve(V).then(x,R)}function f(I){return function(){var w=this,C=arguments;return new Promise(function(x,R){var g=I.apply(w,C);function S(V){r(g,x,R,S,L,"next",V)}function L(V){r(g,x,R,S,L,"throw",V)}S(void 0)})}}function v(I,w){if(!(I instanceof w))throw new TypeError("Cannot call a class as a function")}function b(I,w){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(I){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},d(I)}var u=t("events"),s=t("jszip"),h=t("./stream-buf"),c=t("./browser-buffer-encode"),W=c.stringToBuffer,M=function(I){p(C,I);var w=X(C);function C(x){var R;return v(this,C),R=w.call(this),R.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},x),R.zip=new s,R.stream=new h,R}return Z(C,[{key:"append",value:function(R,g){g.hasOwnProperty("base64")&&g.base64?this.zip.file(g.name,R,{base64:!0}):(l.browser&&typeof R=="string"&&(R=W(R)),this.zip.file(g.name,R))}},{key:"finalize",value:function(){var x=f(regeneratorRuntime.mark(function g(){var S;return regeneratorRuntime.wrap(function(V){for(;;)switch(V.prev=V.next){case 0:return V.next=2,this.zip.generateAsync(this.options);case 2:S=V.sent,this.stream.end(S),this.emit("finish");case 5:case"end":return V.stop()}},g,this)}));function R(){return x.apply(this,arguments)}return R}()},{key:"read",value:function(R){return this.stream.read(R)}},{key:"setEncoding",value:function(R){return this.stream.setEncoding(R)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(R,g){return this.stream.pipe(R,g)}},{key:"unpipe",value:function(R){return this.stream.unpipe(R)}},{key:"unshift",value:function(R){return this.stream.unshift(R)}},{key:"wrap",value:function(R){return this.stream.wrap(R)}}]),C}(u.EventEmitter);i.exports={ZipWriter:M}}).call(this,t("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(t,i,a){i.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(t,i,a){i.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(t,i,a){function l(G,d){var u;if(typeof Symbol>"u"||G[Symbol.iterator]==null){if(Array.isArray(G)||(u=o(G))||d&&G&&typeof G.length=="number"){u&&(G=u);var s=0,h=function(){};return{s:h,n:function(){return s>=G.length?{done:!0}:{done:!1,value:G[s++]}},e:function(w){throw w},f:h}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,W=!1,M;return{s:function(){u=G[Symbol.iterator]()},n:function(){var w=u.next();return c=w.done,w},e:function(w){W=!0,M=w},f:function(){try{!c&&u.return!=null&&u.return()}finally{if(W)throw M}}}}function o(G,d){if(G){if(typeof G=="string")return r(G,d);var u=Object.prototype.toString.call(G).slice(8,-1);if(u==="Object"&&G.constructor&&(u=G.constructor.name),u==="Map"||u==="Set")return Array.from(G);if(u==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u))return r(G,d)}}function r(G,d){(d==null||d>G.length)&&(d=G.length);for(var u=0,s=new Array(d);u2&&arguments[2]!==void 0?arguments[2]:!1;if(u===void 0){if(h)return s}else if(h||u!==s)return u.toString()}},{key:"toStringAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toStringValue",value:function(u,s){return u===void 0?s:u}},{key:"toBoolAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(u===void 0){if(h)return s}else if(h||u!==s)return u?"1":"0"}},{key:"toBoolValue",value:function(u,s){return u===void 0?s:u==="1"}},{key:"toIntAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toIntValue",value:function(u,s){return u===void 0?s:parseInt(u,10)}},{key:"toFloatAttribute",value:function(u,s){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return G.toAttribute(u,s,h)}},{key:"toFloatValue",value:function(u,s){return u===void 0?s:parseFloat(u)}}]),G}();i.exports=N},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../base-xform"),G=t("../../../utils/col-cache"),d=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){I.openNode("definedName",{name:w.name,localSheetId:w.localSheetId}),I.writeText(w.ranges.join(",")),I.closeNode()}},{key:"parseOpen",value:function(I){switch(I.name){case"definedName":return this._parsedName=I.attributes.name,this._parsedLocalSheetId=I.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(I){this._parsedText.push(I)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:s(this._parsedText.join(""))},this._parsedLocalSheetId!==void 0&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),W}(N);function u(h){try{return G.decodeEx(h),!0}catch{return!1}}function s(h){var c=[],W=!1,M="";return h.split(",").forEach(function(I){if(I){var w=(I.match(/'/g)||[]).length;if(!w){W?M+="".concat(I,","):u(I)&&c.push(I);return}var C=w%2===0;!W&&C&&u(I)?c.push(I):W&&!C?(W=!1,u(M+I)&&c.push(M+I),M=""):(W=!0,M+="".concat(I,","))}}),c}i.exports=d},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/utils"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.leafNode("sheet",{sheetId:M.id,name:M.name,state:M.state,"r:id":M.rId})}},{key:"parseOpen",value:function(W){return W.name==="sheet"?(this.model={name:N.xmlDecode(W.attributes.name),id:parseInt(W.attributes.sheetId,10),state:W.attributes.state,rId:W.attributes["r:id"]},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(G);i.exports=d},{"../../../utils/utils":26,"../base-xform":31}],34:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:W.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(c){return c.name==="calcPr"?(this.model={},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],35:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("workbookPr",{date1904:W.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(c){return c.name==="workbookPr"?(this.model={date1904:c.attributes.date1904==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],36:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){var M={xWindow:W.x||0,yWindow:W.y||0,windowWidth:W.width||12e3,windowHeight:W.height||24e3,firstSheet:W.firstSheet,activeTab:W.activeTab};W.visibility&&W.visibility!=="visible"&&(M.visibility=W.visibility),c.leafNode("workbookView",M)}},{key:"parseOpen",value:function(c){if(c.name==="workbookView"){var W=this.model={},M=function(C,x,R){var g=x!==void 0?W[C]=x:R;g!==void 0&&(W[C]=g)},I=function(C,x,R){var g=x!==void 0?W[C]=parseInt(x,10):R;g!==void 0&&(W[C]=g)};return I("x",c.attributes.xWindow,0),I("y",c.attributes.yWindow,0),I("width",c.attributes.windowWidth,25e3),I("height",c.attributes.windowHeight,1e4),M("visibility",c.attributes.visibility,"visible"),I("activeTab",c.attributes.activeTab,void 0),I("firstSheet",c.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],37:[function(t,i,a){function l(x){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(g){return typeof g}:l=function(g){return g&&typeof Symbol=="function"&&g.constructor===Symbol&&g!==Symbol.prototype?"symbol":typeof g},l(x)}function o(x,R){if(!(x instanceof R))throw new TypeError("Cannot call a class as a function")}function r(x,R){for(var g=0;g"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(x){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(g){return g.__proto__||Object.getPrototypeOf(g)},m(x)}var N=t("../../../utils/under-dash"),G=t("../../../utils/col-cache"),d=t("../../../utils/xml-stream"),u=t("../base-xform"),s=t("../static-xform"),h=t("../list-xform"),c=t("./defined-name-xform"),W=t("./sheet-xform"),M=t("./workbook-view-xform"),I=t("./workbook-properties-xform"),w=t("./workbook-calc-properties-xform"),C=function(x){v(g,x);var R=Z(g);function g(){var S;return o(this,g),S=R.call(this),S.map={fileVersion:g.STATIC_XFORMS.fileVersion,workbookPr:new I,bookViews:new h({tag:"bookViews",count:!1,childXform:new M}),sheets:new h({tag:"sheets",count:!1,childXform:new W}),definedNames:new h({tag:"definedNames",count:!1,childXform:new c}),calcPr:new w},S}return f(g,[{key:"prepare",value:function(L){L.sheets=L.worksheets;var V=[],Y=0;L.sheets.forEach(function(T){if(T.pageSetup&&T.pageSetup.printArea&&T.pageSetup.printArea.split("&&").forEach(function(k){var F=k.split(":"),O={name:"_xlnm.Print_Area",ranges:["'".concat(T.name,"'!$").concat(F[0],":$").concat(F[1])],localSheetId:Y};V.push(O)}),T.pageSetup&&(T.pageSetup.printTitlesRow||T.pageSetup.printTitlesColumn)){var J=[];if(T.pageSetup.printTitlesColumn){var U=T.pageSetup.printTitlesColumn.split(":");J.push("'".concat(T.name,"'!$").concat(U[0],":$").concat(U[1]))}if(T.pageSetup.printTitlesRow){var K=T.pageSetup.printTitlesRow.split(":");J.push("'".concat(T.name,"'!$").concat(K[0],":$").concat(K[1]))}var H={name:"_xlnm.Print_Titles",ranges:J,localSheetId:Y};V.push(H)}Y++}),V.length&&(L.definedNames=L.definedNames.concat(V)),(L.media||[]).forEach(function(T,J){T.name=T.type+(J+1)})}},{key:"render",value:function(L,V){L.openXml(d.StdDocAttributes),L.openNode("workbook",g.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(L),this.map.workbookPr.render(L,V.properties),this.map.bookViews.render(L,V.views),this.map.sheets.render(L,V.sheets),this.map.definedNames.render(L,V.definedNames),this.map.calcPr.render(L,V.calcProperties),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;switch(L.name){case"workbook":return!0;default:return this.parser=this.map[L.name],this.parser&&this.parser.parseOpen(L),!0}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){if(this.parser)return this.parser.parseClose(L)||(this.parser=void 0),!0;switch(L){case"workbook":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}},{key:"reconcile",value:function(L){var V=(L.workbookRels||[]).reduce(function(K,H){return K[H.Id]=H,K},{}),Y=[],T,J=0;(L.sheets||[]).forEach(function(K){var H=V[K.rId];H&&(T=L.worksheetHash["xl/".concat(H.Target.replace(/^(\s|\/xl\/)+/,""))],T&&(T.name=K.name,T.id=K.id,T.state=K.state,Y[J++]=T))});var U=[];N.each(L.definedNames,function(K){if(K.name==="_xlnm.Print_Area"){if(T=Y[K.localSheetId],T){T.pageSetup||(T.pageSetup={});var H=G.decodeEx(K.ranges[0]);T.pageSetup.printArea=T.pageSetup.printArea?"".concat(T.pageSetup.printArea,"&&").concat(H.dimensions):H.dimensions}}else if(K.name==="_xlnm.Print_Titles"){if(T=Y[K.localSheetId],T){T.pageSetup||(T.pageSetup={});var k=K.ranges.join(","),F=/\$/g,O=/\$\d+:\$\d+/,Q=k.match(O);if(Q&&Q.length){var oe=Q[0];T.pageSetup.printTitlesRow=oe.replace(F,"")}var se=/\$[A-Z]+:\$[A-Z]+/,he=k.match(se);if(he&&he.length){var pe=he[0];T.pageSetup.printTitlesColumn=pe.replace(F,"")}}}else U.push(K)}),L.definedNames=U,L.media.forEach(function(K,H){K.index=H})}}]),g}(u);C.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},C.STATIC_XFORMS={fileVersion:new s({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},i.exports=C},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(t,i,a){function l(p,y){var X=Object.keys(p);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(p);y&&(m=m.filter(function(N){return Object.getOwnPropertyDescriptor(p,N).enumerable})),X.push.apply(X,m)}return X}function o(p){for(var y=1;y"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c._model=h,c}return f(s,[{key:"render",value:function(c,W,M){W===M[2]?c.leafNode(this.tag):this.tag==="x:SizeWithCells"&&W===M[1]&&c.leafNode(this.tag)}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(N);i.exports=G},{"../../base-xform":31}],41:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c._model=h,c}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(c){this.text=c}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),s}(N);i.exports=G},{"../../base-xform":31}],42:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"getAnchorRect",value:function(c){var W=Math.floor(c.left),M=Math.floor((c.left-W)*68),I=Math.floor(c.top),w=Math.floor((c.top-I)*18),C=Math.floor(c.right),x=Math.floor((c.right-C)*68),R=Math.floor(c.bottom),g=Math.floor((c.bottom-R)*18);return[W,M,I,w,C,x,R,g]}},{key:"getDefaultRect",value:function(c){var W=c.col,M=6,I=Math.max(c.row-2,0),w=14,C=W+2,x=2,R=I+4,g=16;return[W,M,I,w,C,x,R,g]}},{key:"render",value:function(c,W){var M=W.anchor?this.getAnchorRect(W.anchor):this.getDefaultRect(W.refAddress);c.leafNode("x:Anchor",null,M.join(", "))}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(c){this.text=c}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),s}(N);i.exports=G},{"../base-xform":31}],43:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("./vml-anchor-xform"),d=t("./style/vml-protection-xform"),u=t("./style/vml-position-xform"),s=["twoCells","oneCells","absolute"],h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"x:Anchor":new G,"x:Locked":new d({tag:"x:Locked"}),"x:LockText":new d({tag:"x:LockText"}),"x:SizeWithCells":new u({tag:"x:SizeWithCells"}),"x:MoveWithCells":new u({tag:"x:MoveWithCells"})},I}return f(M,[{key:"render",value:function(w,C){var x=C.note,R=x.protection,g=x.editAs;w.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(w,g,s),this.map["x:SizeWithCells"].render(w,g,s),this.map["x:Anchor"].render(w,C),this.map["x:Locked"].render(w,R.locked),w.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(w,R.lockText),w.leafNode("x:Row",null,C.refAddress.row-1),w.leafNode("x:Column",null,C.refAddress.col-1),w.closeNode()}},{key:"parseOpen",value:function(w){switch(w.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:""};break;default:this.parser=this.map[w.name],this.parser&&this.parser.parseOpen(w);break}return!0}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case this.tag:return this.normalizeModel(),!1;default:return!0}}},{key:"normalizeModel",value:function(){var w=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),C=Object.keys(w).length;this.model.editAs=s[C],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}},{key:"tag",get:function(){return"x:ClientData"}}]),M}(N);i.exports=h},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./vml-shape-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"v:shape":new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openXml(N.StdDocAttributes),M.openNode(this.tag,c.DRAWING_ATTRIBUTES),M.openNode("o:shapelayout",{"v:ext":"edit"}),M.leafNode("o:idmap",{"v:ext":"edit",data:1}),M.closeNode(),M.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),M.leafNode("v:stroke",{joinstyle:"miter"}),M.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),M.closeNode(),I.comments.forEach(function(C,x){w.map["v:shape"].render(M,C,x)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(M){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(M,I){var w=this;M.anchors.forEach(function(C){C.br?w.map["xdr:twoCellAnchor"].reconcile(C,I):w.map["xdr:oneCellAnchor"].reconcile(C,I)})}},{key:"tag",get:function(){return"xml"}}]),c}(G);u.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./vml-textbox-xform"),d=t("./vml-client-data-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"v:textbox":new G,"x:ClientData":new d},W}return f(c,[{key:"render",value:function(M,I,w){M.openNode("v:shape",c.V_SHAPE_ATTRIBUTES(I,w)),M.leafNode("v:fill",{color2:"infoBackground [80]"}),M.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),M.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(M,I),this.map["x:ClientData"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset(),this.model={margins:{insetmode:M.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1;default:return!0}}},{key:"tag",get:function(){return"v:shape"}}]),c}(N);u.V_SHAPE_ATTRIBUTES=function(s,h){return{id:"_x0000_s".concat(1025+h),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":s.note.margins&&s.note.margins.insetmode}},i.exports=u},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"conversionUnit",value:function(c,W,M){return"".concat(parseFloat(c)*W.toFixed(2)).concat(M)}},{key:"reverseConversionUnit",value:function(c){var W=this;return(c||"").split(",").map(function(M){return Number(parseFloat(W.conversionUnit(parseFloat(M),.1,"")).toFixed(2))})}},{key:"render",value:function(c,W){var M=this,I={style:"mso-direction-alt:auto"};if(W&&W.note){var w=W.note&&W.note.margins,C=w.inset;Array.isArray(C)&&(C=C.map(function(x){return M.conversionUnit(x,10,"mm")}).join(",")),C&&(I.inset=C)}c.openNode("v:textbox",I),c.leafNode("div",{style:"text-align:left"}),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={inset:this.reverseConversionUnit(c.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),s}(N);i.exports=G},{"../base-xform":31}],47:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("./base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"createNewModel",value:function(c){return{}}},{key:"parseOpen",value:function(c){return this.parser=this.parser||this.map[c.name],this.parser?(this.parser.parseOpen(c),!0):c.name===this.tag?(this.model=this.createNewModel(c),!0):!1}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"onParserClose",value:function(c,W){this.model[c]=W.model}},{key:"parseClose",value:function(c){return this.parser?(this.parser.parseClose(c)||(this.onParserClose(c,this.parser),this.parser=void 0),!0):c!==this.tag}}]),s}(N);i.exports=G},{"./base-xform":31}],48:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("HeadingPairs"),c.openNode("vt:vector",{size:2,baseType:"variant"}),c.openNode("vt:variant"),c.leafNode("vt:lpstr",void 0,"Worksheets"),c.closeNode(),c.openNode("vt:variant"),c.leafNode("vt:i4",void 0,W.length),c.closeNode(),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){return c.name==="HeadingPairs"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){return c!=="HeadingPairs"}}]),s}(N);i.exports=G},{"../base-xform":31}],49:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("TitlesOfParts"),c.openNode("vt:vector",{size:W.length,baseType:"lpstr"}),W.forEach(function(M){c.leafNode("vt:lpstr",void 0,M.name)}),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){return c.name==="TitlesOfParts"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){return c!=="TitlesOfParts"}}]),s}(N);i.exports=G},{"../base-xform":31}],50:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("../simple/string-xform"),u=t("./app-heading-pairs-xform"),s=t("./app-titles-of-parts-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={Company:new d({tag:"Company"}),Manager:new d({tag:"Manager"}),HeadingPairs:new u,TitleOfParts:new s},I}return f(M,[{key:"render",value:function(w,C){w.openXml(N.StdDocAttributes),w.openNode("Properties",M.PROPERTY_ATTRIBUTES),w.leafNode("Application",void 0,"Microsoft Excel"),w.leafNode("DocSecurity",void 0,"0"),w.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(w,C.worksheets),this.map.TitleOfParts.render(w,C.worksheets),this.map.Company.render(w,C.company||""),this.map.Manager.render(w,C.manager),w.leafNode("LinksUpToDate",void 0,"false"),w.leafNode("SharedDoc",void 0,"false"),w.leafNode("HyperlinksChanged",void 0,"false"),w.leafNode("AppVersion",void 0,"16.0300"),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"Properties":return!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case"Properties":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}]),M}(G);h.DateFormat=function(c){return c.toISOString().replace(/[.]\d{3,6}/,"")},h.DateAttrs={"xsi:type":"dcterms:W3CDTF"},h.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},i.exports=h},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.openXml(N.StdDocAttributes),W.openNode("Types",h.PROPERTY_ATTRIBUTES);var I={};(M.media||[]).forEach(function(C){if(C.type==="image"){var x=C.extension;I[x]||(I[x]=!0,W.leafNode("Default",{Extension:x,ContentType:"image/".concat(x)}))}}),W.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),W.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),W.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),M.worksheets.forEach(function(C){var x="/xl/worksheets/sheet".concat(C.id,".xml");W.leafNode("Override",{PartName:x,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})}),W.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),W.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var w=M.sharedStrings&&M.sharedStrings.count;w&&W.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),M.tables&&M.tables.forEach(function(C){W.leafNode("Override",{PartName:"/xl/tables/".concat(C.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})}),M.drawings&&M.drawings.forEach(function(C){W.leafNode("Override",{PartName:"/xl/drawings/".concat(C.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})}),M.commentRefs&&(W.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),M.commentRefs.forEach(function(C){var x=C.commentName;W.leafNode("Override",{PartName:"/xl/".concat(x,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})})),W.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),W.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),W.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(G);d.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},i.exports=d},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("../simple/date-xform"),u=t("../simple/string-xform"),s=t("../simple/integer-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"dc:creator":new u({tag:"dc:creator"}),"dc:title":new u({tag:"dc:title"}),"dc:subject":new u({tag:"dc:subject"}),"dc:description":new u({tag:"dc:description"}),"dc:identifier":new u({tag:"dc:identifier"}),"dc:language":new u({tag:"dc:language"}),"cp:keywords":new u({tag:"cp:keywords"}),"cp:category":new u({tag:"cp:category"}),"cp:lastModifiedBy":new u({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new d({tag:"cp:lastPrinted",format:M.DateFormat}),"cp:revision":new s({tag:"cp:revision"}),"cp:version":new u({tag:"cp:version"}),"cp:contentStatus":new u({tag:"cp:contentStatus"}),"cp:contentType":new u({tag:"cp:contentType"}),"dcterms:created":new d({tag:"dcterms:created",attrs:M.DateAttrs,format:M.DateFormat}),"dcterms:modified":new d({tag:"dcterms:modified",attrs:M.DateAttrs,format:M.DateFormat})},I}return f(M,[{key:"render",value:function(w,C){w.openXml(N.StdDocAttributes),w.openNode("cp:coreProperties",M.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(w,C.creator),this.map["dc:title"].render(w,C.title),this.map["dc:subject"].render(w,C.subject),this.map["dc:description"].render(w,C.description),this.map["dc:identifier"].render(w,C.identifier),this.map["dc:language"].render(w,C.language),this.map["cp:keywords"].render(w,C.keywords),this.map["cp:category"].render(w,C.category),this.map["cp:lastModifiedBy"].render(w,C.lastModifiedBy),this.map["cp:lastPrinted"].render(w,C.lastPrinted),this.map["cp:revision"].render(w,C.revision),this.map["cp:version"].render(w,C.version),this.map["cp:contentStatus"].render(w,C.contentStatus),this.map["cp:contentType"].render(w,C.contentType),this.map["dcterms:created"].render(w,C.created),this.map["dcterms:modified"].render(w,C.modified),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[w.name],this.parser)return this.parser.parseOpen(w),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(w)))}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(w))}}}]),M}(G);h.DateFormat=function(c){return c.toISOString().replace(/[.]\d{3}/,"")},h.DateAttrs={"xsi:type":"dcterms:W3CDTF"},h.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},i.exports=h},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("Relationship",W)}},{key:"parseOpen",value:function(c){switch(c.name){case"Relationship":return this.model=c.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],54:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./relationship-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={Relationship:new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;I=I||this._values,M.openXml(N.StdDocAttributes),M.openNode("Relationships",c.RELATIONSHIPS_ATTRIBUTES),I.forEach(function(C){w.map.Relationship.render(M,C)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[M.name],this.parser)return this.parser.parseOpen(M),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(M)))}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(M){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(M))}}}]),c}(G);u.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"parseOpen",value:function(c){if(this.parser)return this.parser.parseOpen(c),!0;switch(c.name){case this.tag:this.reset(),this.model={range:{editAs:c.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[c.name],this.parser&&this.parser.parseOpen(c);break}return!0}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"reconcilePicture",value:function(c,W){if(c&&c.rId){var M=W.rels[c.rId],I=M.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(I){var w=I[1],C=W.mediaIndex[w];return W.media[C]}}}}]),s}(N);i.exports=G},{"../base-xform":31}],56:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./blip-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={"a:blip":new G},c}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag),this.map["a:blip"].render(W,M),W.openNode("a:stretch"),W.leafNode("a:fillRect"),W.closeNode(),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:this.reset();break;default:this.parser=this.map[W.name],this.parser&&this.parser.parseOpen(W);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.parser=void 0),!0;switch(W){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),h}(N);i.exports=d},{"../base-xform":31,"./blip-xform":57}],57:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":W.rId,cstate:"print"})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),s}(N);i.exports=G},{"../base-xform":31}],58:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c){c.openNode(this.tag),c.leafNode("a:picLocks",{noChangeAspect:"1"}),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),s}(N);i.exports=G},{"../base-xform":31}],59:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./hlink-click-xform"),d=t("./ext-lst-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"a:hlinkClick":new G,"a:extLst":new d},W}return f(c,[{key:"render",value:function(M,I){M.openNode(this.tag,{id:I.index,name:"Picture ".concat(I.index)}),this.map["a:hlinkClick"].render(M,I),this.map["a:extLst"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset();break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),c}(N);i.exports=u},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("../simple/integer-xform"),d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.tag=c.tag,W.map={"xdr:col":new G({tag:"xdr:col",zero:!0}),"xdr:colOff":new G({tag:"xdr:colOff",zero:!0}),"xdr:row":new G({tag:"xdr:row",zero:!0}),"xdr:rowOff":new G({tag:"xdr:rowOff",zero:!0})},W}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag),this.map["xdr:col"].render(W,M.nativeCol),this.map["xdr:colOff"].render(W,M.nativeColOff),this.map["xdr:row"].render(W,M.nativeRow),this.map["xdr:rowOff"].render(W,M.nativeRowOff),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:this.reset();break;default:this.parser=this.map[W.name],this.parser&&this.parser.parseOpen(W);break}return!0}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.parser=void 0),!0;switch(W){case this.tag:return this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1;default:return!0}}}]),h}(N);i.exports=d},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(t,i,a){function l(W){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(I){return typeof I}:l=function(I){return I&&typeof Symbol=="function"&&I.constructor===Symbol&&I!==Symbol.prototype?"symbol":typeof I},l(W)}function o(W,M){if(!(W instanceof M))throw new TypeError("Cannot call a class as a function")}function r(W,M){for(var I=0;I"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(W){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},m(W)}var N=t("../../../utils/col-cache"),G=t("../../../utils/xml-stream"),d=t("../base-xform"),u=t("./two-cell-anchor-xform"),s=t("./one-cell-anchor-xform");function h(W){var M=typeof W.range=="string"?N.decode(W.range):W.range;return M.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var c=function(W){v(I,W);var M=Z(I);function I(){var w;return o(this,I),w=M.call(this),w.map={"xdr:twoCellAnchor":new u,"xdr:oneCellAnchor":new s},w}return f(I,[{key:"prepare",value:function(C){var x=this;C.anchors.forEach(function(R,g){R.anchorType=h(R);var S=x.map[R.anchorType];S.prepare(R,{index:g})})}},{key:"render",value:function(C,x){var R=this;C.openXml(G.StdDocAttributes),C.openNode(this.tag,I.DRAWING_ATTRIBUTES),x.anchors.forEach(function(g){var S=R.map[g.anchorType];S.render(C,g)}),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(C){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(C,x){var R=this;C.anchors.forEach(function(g){g.br?R.map["xdr:twoCellAnchor"].reconcile(g,x):R.map["xdr:oneCellAnchor"].reconcile(g,x)})}},{key:"tag",get:function(){return"xdr:wsDr"}}]),I}(d);c.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},i.exports=c},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c){c.openNode(this.tag),c.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),c.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),c.closeNode(),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(c){switch(c){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),s}(N);i.exports=G},{"../base-xform":31}],63:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=9525,d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.tag=c.tag,W.map={},W}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag);var I=Math.floor(M.width*G),w=Math.floor(M.height*G);W.addAttribute("cx",I),W.addAttribute("cy",w),W.closeNode()}},{key:"parseOpen",value:function(W){return W.name===this.tag?(this.model={width:parseInt(W.attributes.cx||"0",10)/G,height:parseInt(W.attributes.cy||"0",10)/G},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),h}(N);i.exports=d},{"../base-xform":31}],64:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W.hyperlinks&&W.hyperlinks.rId&&c.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":W.hyperlinks.rId,tooltip:W.hyperlinks.tooltip})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={hyperlinks:{rId:c.attributes["r:id"],tooltip:c.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),s}(N);i.exports=G},{"../base-xform":31}],65:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./c-nv-pr-xform"),d=t("./c-nv-pic-pr-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"xdr:cNvPr":new G,"xdr:cNvPicPr":new d},W}return f(c,[{key:"render",value:function(M,I){M.openNode(this.tag),this.map["xdr:cNvPr"].render(M,I),this.map["xdr:cNvPicPr"].render(M,I),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case this.tag:this.reset();break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),c}(N);i.exports=u},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("./base-cell-anchor-xform"),G=t("../static-xform"),d=t("./cell-position-xform"),u=t("./ext-xform"),s=t("./pic-xform"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"xdr:from":new d({tag:"xdr:from"}),"xdr:ext":new u({tag:"xdr:ext"}),"xdr:pic":new s,"xdr:clientData":new G({tag:"xdr:clientData"})},I}return f(M,[{key:"prepare",value:function(w,C){this.map["xdr:pic"].prepare(w.picture,C)}},{key:"render",value:function(w,C){w.openNode(this.tag,{editAs:C.range.editAs||"oneCell"}),this.map["xdr:from"].render(w,C.range.tl),this.map["xdr:ext"].render(w,C.range.ext),this.map["xdr:pic"].render(w,C.picture),this.map["xdr:clientData"].render(w,{}),w.closeNode()}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.parser=void 0),!0;switch(w){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(w,C){w.medium=this.reconcilePicture(w.picture,C)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),M}(N);i.exports=h},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("../static-xform"),d=t("./blip-fill-xform"),u=t("./nv-pic-pr-xform"),s=t("./sp-pr"),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={"xdr:nvPicPr":new u,"xdr:blipFill":new d,"xdr:spPr":new G(s)},I}return f(M,[{key:"prepare",value:function(w,C){w.index=C.index+1}},{key:"render",value:function(w,C){w.openNode(this.tag),this.map["xdr:nvPicPr"].render(w,C),this.map["xdr:blipFill"].render(w,C),this.map["xdr:spPr"].render(w,C),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case this.tag:this.reset();break;default:this.parser=this.map[w.name],this.parser&&this.parser.parseOpen(w);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(w){if(this.parser)return this.parser.parseClose(w)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(w){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:pic"}}]),M}(N);i.exports=h},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(t,i,a){i.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],69:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("./base-cell-anchor-xform"),G=t("../static-xform"),d=t("./cell-position-xform"),u=t("./pic-xform"),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={"xdr:from":new d({tag:"xdr:from"}),"xdr:to":new d({tag:"xdr:to"}),"xdr:pic":new u,"xdr:clientData":new G({tag:"xdr:clientData"})},M}return f(W,[{key:"prepare",value:function(I,w){this.map["xdr:pic"].prepare(I.picture,w)}},{key:"render",value:function(I,w){I.openNode(this.tag,{editAs:w.range.editAs||"oneCell"}),this.map["xdr:from"].render(I,w.range.tl),this.map["xdr:to"].render(I,w.range.br),this.map["xdr:pic"].render(I,w.picture),this.map["xdr:clientData"].render(I,{}),I.closeNode()}},{key:"parseClose",value:function(I){if(this.parser)return this.parser.parseClose(I)||(this.parser=void 0),!0;switch(I){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(I,w){I.medium=this.reconcilePicture(I.picture,w)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),W}(N);i.exports=s},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("./base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.always=!!h.always,c.count=h.count,c.empty=h.empty,c.$count=h.$count||"count",c.$=h.$,c.childXform=h.childXform,c.maxItems=h.maxItems,c}return f(s,[{key:"prepare",value:function(c,W){var M=this.childXform;c&&c.forEach(function(I,w){W.index=w,M.prepare(I,W)})}},{key:"render",value:function(c,W){if(this.always||W&&W.length){c.openNode(this.tag,this.$),this.count&&c.addAttribute(this.$count,W&&W.length||0);var M=this.childXform;(W||[]).forEach(function(I,w){M.render(c,I,w)}),c.closeNode()}else this.empty&&c.leafNode(this.tag)}},{key:"parseOpen",value:function(c){if(this.parser)return this.parser.parseOpen(c),!0;switch(c.name){case this.tag:return this.model=[],!0;default:return this.childXform.parseOpen(c)?(this.parser=this.childXform,!0):!1}}},{key:"parseText",value:function(c){this.parser&&this.parser.parseText(c)}},{key:"parseClose",value:function(c){if(this.parser){if(!this.parser.parseClose(c)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error("Max ".concat(this.childXform.tag," count (").concat(this.maxItems,") exceeded"));return!0}return!1}},{key:"reconcile",value:function(c,W){if(c){var M=this.childXform;c.forEach(function(I){M.reconcile(I,W)})}}}]),s}(N);i.exports=G},{"./base-xform":31}],71:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/col-cache"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M)if(typeof M=="string")W.leafNode("autoFilter",{ref:M});else{var I=function(R){return typeof R=="string"?R:N.getAddress(R.row,R.column).address},w=I(M.from),C=I(M.to);w&&C&&W.leafNode("autoFilter",{ref:"".concat(w,":").concat(C)})}}},{key:"parseOpen",value:function(W){W.name==="autoFilter"&&(this.model=W.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),h}(G);i.exports=d},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(t,i,a){function l(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(R){return typeof R}:l=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},l(C)}function o(C,x){var R=Object.keys(C);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(C);x&&(g=g.filter(function(S){return Object.getOwnPropertyDescriptor(C,S).enumerable})),R.push.apply(R,g)}return R}function r(C){for(var x=1;x"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(C){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},d(C)}var u=t("../../../utils/utils"),s=t("../base-xform"),h=t("../../../doc/range"),c=t("../../../doc/enums"),W=t("../strings/rich-text-xform");function M(C){if(C==null)return c.ValueType.Null;if(C instanceof String||typeof C=="string")return c.ValueType.String;if(typeof C=="number")return c.ValueType.Number;if(typeof C=="boolean")return c.ValueType.Boolean;if(C instanceof Date)return c.ValueType.Date;if(C.text&&C.hyperlink)return c.ValueType.Hyperlink;if(C.formula)return c.ValueType.Formula;if(C.error)return c.ValueType.Error;throw new Error("I could not understand type of value")}function I(C){switch(C.type){case c.ValueType.Formula:return M(C.result);default:return C.type}}var w=function(C){p(R,C);var x=X(R);function R(){var g;return v(this,R),g=x.call(this),g.richTextXForm=new W,g}return Z(R,[{key:"prepare",value:function(S,L){var V=L.styles.addStyleModel(S.style||{},I(S));switch(V&&(S.styleId=V),S.comment&&L.comments.push(r(r({},S.comment),{},{ref:S.address})),S.type){case c.ValueType.String:case c.ValueType.RichText:L.sharedStrings&&(S.ssId=L.sharedStrings.add(S.value));break;case c.ValueType.Date:L.date1904&&(S.date1904=!0);break;case c.ValueType.Hyperlink:L.sharedStrings&&S.text!==void 0&&S.text!==null&&(S.ssId=L.sharedStrings.add(S.text)),L.hyperlinks.push({address:S.address,target:S.hyperlink,tooltip:S.tooltip});break;case c.ValueType.Merge:L.merges.add(S);break;case c.ValueType.Formula:if(L.date1904&&(S.date1904=!0),S.shareType==="shared"&&(S.si=L.siFormulae++),S.formula)L.formulae[S.address]=S;else if(S.sharedFormula){var Y=L.formulae[S.sharedFormula];if(!Y)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(S.address));Y.si===void 0?(Y.shareType="shared",Y.si=L.siFormulae++,Y.range=new h(Y.address,S.address)):Y.range&&Y.range.expandToAddress(S.address),S.si=Y.si}break}}},{key:"renderFormula",value:function(S,L){var V=null;switch(L.shareType){case"shared":V={t:"shared",ref:L.ref||L.range.range,si:L.si};break;case"array":V={t:"array",ref:L.ref};break;default:L.si!==void 0&&(V={t:"shared",si:L.si});break}switch(M(L.result)){case c.ValueType.Null:S.leafNode("f",V,L.formula);break;case c.ValueType.String:S.addAttribute("t","str"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result);break;case c.ValueType.Number:S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result);break;case c.ValueType.Boolean:S.addAttribute("t","b"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result?1:0);break;case c.ValueType.Error:S.addAttribute("t","e"),S.leafNode("f",V,L.formula),S.leafNode("v",null,L.result.error);break;case c.ValueType.Date:S.leafNode("f",V,L.formula),S.leafNode("v",null,u.dateToExcel(L.result,L.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(S,L){var V=this;if(!(L.type===c.ValueType.Null&&!L.styleId)){switch(S.openNode("c"),S.addAttribute("r",L.address),L.styleId&&S.addAttribute("s",L.styleId),L.type){case c.ValueType.Null:break;case c.ValueType.Number:S.leafNode("v",null,L.value);break;case c.ValueType.Boolean:S.addAttribute("t","b"),S.leafNode("v",null,L.value?"1":"0");break;case c.ValueType.Error:S.addAttribute("t","e"),S.leafNode("v",null,L.value.error);break;case c.ValueType.String:case c.ValueType.RichText:L.ssId!==void 0?(S.addAttribute("t","s"),S.leafNode("v",null,L.ssId)):L.value&&L.value.richText?(S.addAttribute("t","inlineStr"),S.openNode("is"),L.value.richText.forEach(function(Y){V.richTextXForm.render(S,Y)}),S.closeNode("is")):(S.addAttribute("t","str"),S.leafNode("v",null,L.value));break;case c.ValueType.Date:S.leafNode("v",null,u.dateToExcel(L.value,L.date1904));break;case c.ValueType.Hyperlink:L.ssId!==void 0?(S.addAttribute("t","s"),S.leafNode("v",null,L.ssId)):(S.addAttribute("t","str"),S.leafNode("v",null,L.text));break;case c.ValueType.Formula:this.renderFormula(S,L);break;case c.ValueType.Merge:break}S.closeNode()}}},{key:"parseOpen",value:function(S){if(this.parser)return this.parser.parseOpen(S),!0;switch(S.name){case"c":return this.model={address:S.attributes.r},this.t=S.attributes.t,S.attributes.s&&(this.model.styleId=parseInt(S.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=S.attributes.si,this.model.shareType=S.attributes.t,this.model.ref=S.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(S),!0;default:return!1}}},{key:"parseText",value:function(S){if(this.parser){this.parser.parseText(S);return}switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+S:S;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+S:S:this.model.value=this.model.value?this.model.value+S:S;break}}},{key:"parseClose",value:function(S){switch(S){case"c":{var L=this.model;if(L.formula||L.shareType)L.type=c.ValueType.Formula,L.value&&(this.t==="str"?L.result=u.xmlDecode(L.value):this.t==="b"?L.result=parseInt(L.value,10)!==0:this.t==="e"?L.result={error:L.value}:L.result=parseFloat(L.value),L.value=void 0);else if(L.value!==void 0)switch(this.t){case"s":L.type=c.ValueType.String,L.value=parseInt(L.value,10);break;case"str":L.type=c.ValueType.String,L.value=u.xmlDecode(L.value);break;case"inlineStr":L.type=c.ValueType.String;break;case"b":L.type=c.ValueType.Boolean,L.value=parseInt(L.value,10)!==0;break;case"e":L.type=c.ValueType.Error,L.value={error:L.value};break;default:L.type=c.ValueType.Number,L.value=parseFloat(L.value);break}else L.styleId?L.type=c.ValueType.Null:L.type=c.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(S),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return this.parser?(this.parser.parseClose(S),!0):!1}}},{key:"reconcile",value:function(S,L){var V=S.styleId&&L.styles&&L.styles.getStyleModel(S.styleId);switch(V&&(S.style=V),S.styleId!==void 0&&(S.styleId=void 0),S.type){case c.ValueType.String:typeof S.value=="number"&&L.sharedStrings&&(S.value=L.sharedStrings.getString(S.value)),S.value.richText&&(S.type=c.ValueType.RichText);break;case c.ValueType.Number:V&&u.isDateFmt(V.numFmt)&&(S.type=c.ValueType.Date,S.value=u.excelToDate(S.value,L.date1904));break;case c.ValueType.Formula:S.result!==void 0&&V&&u.isDateFmt(V.numFmt)&&(S.result=u.excelToDate(S.result,L.date1904)),S.shareType==="shared"&&(S.ref?L.formulae[S.si]=S.address:(S.sharedFormula=L.formulae[S.si],delete S.shareType),delete S.si);break}var Y=L.hyperlinkMap[S.address];Y&&(S.type===c.ValueType.Formula?(S.text=S.result,S.result=void 0):(S.text=S.value,S.value=void 0),S.type=c.ValueType.Hyperlink,S.hyperlink=Y);var T=L.commentsMap&&L.commentsMap[S.address];T&&(S.comment=T)}},{key:"tag",get:function(){return"c"}}]),R}(s);i.exports=w},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{iconSet:W.iconSet,iconId:W.iconId})}},{key:"parseOpen",value:function(c){var W=c.attributes;this.model={iconSet:W.iconSet,iconId:N.toIntValue(W.iconId)}}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),s}(N);i.exports=G},{"../../base-xform":31}],74:[function(t,i,a){function l(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(w){return typeof w}:l=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},l(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("uuid"),G=N.v4,d=t("../../base-xform"),u=t("../../composite-xform"),s=t("./databar-ext-xform"),h=t("./icon-set-ext-xform"),c={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},W=function(M){v(w,M);var I=Z(w);function w(){var C;return o(this,w),C=I.call(this),C.map={"x14:dataBar":C.databarXform=new s,"x14:iconSet":C.iconSetXform=new h},C}return f(w,[{key:"prepare",value:function(x){w.isExt(x)&&(x.x14Id="{".concat(G(),"}").toUpperCase())}},{key:"render",value:function(x,R){if(w.isExt(R))switch(R.type){case"dataBar":this.renderDataBar(x,R);break;case"iconSet":this.renderIconSet(x,R);break}}},{key:"renderDataBar",value:function(x,R){x.openNode(this.tag,{type:"dataBar",id:R.x14Id}),this.databarXform.render(x,R),x.closeNode()}},{key:"renderIconSet",value:function(x,R){x.openNode(this.tag,{type:"iconSet",priority:R.priority,id:R.x14Id||"{".concat(G(),"}")}),this.iconSetXform.render(x,R),x.closeNode()}},{key:"createNewModel",value:function(x){var R=x.attributes;return{type:R.type,x14Id:R.id,priority:d.toIntValue(R.priority)}}},{key:"onParserClose",value:function(x,R){Object.assign(this.model,R.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(x){return x.type==="dataBar"?s.isExt(x):!!(x.type==="iconSet"&&(x.custom||c[x.iconSet]))}}]),w}(u);i.exports=W},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../composite-xform"),G=t("./f-ext-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={"xm:f":c.fExtXform=new G},c}return f(h,[{key:"render",value:function(W,M){W.openNode(this.tag,{type:M.type}),M.value!==void 0&&this.fExtXform.render(W,M.value),W.closeNode()}},{key:"createNewModel",value:function(W){return{type:W.attributes.type}}},{key:"onParserClose",value:function(W,M){switch(W){case"xm:f":this.model.value=M.model?parseFloat(M.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),h}(N);i.exports=d},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("./sqref-ext-xform"),d=t("./cf-rule-ext-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"xm:sqref":W.sqRef=new G,"x14:cfRule":W.cfRule=new d},W}return f(c,[{key:"prepare",value:function(M,I){var w=this;M.rules.forEach(function(C){w.cfRule.prepare(C,I)})}},{key:"render",value:function(M,I){var w=this;I.rules.some(d.isExt)&&(M.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),I.rules.filter(d.isExt).forEach(function(C){return w.cfRule.render(M,C)}),this.sqRef.render(M,I.ref),M.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(M,I){switch(M){case"xm:sqref":this.model.ref=I.model;break;case"x14:cfRule":this.model.rules.push(I.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("./cf-rule-ext-xform"),d=t("./conditional-formatting-ext-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"x14:conditionalFormatting":W.cfXform=new d},W}return f(c,[{key:"hasContent",value:function(M){return M.hasExtContent===void 0&&(M.hasExtContent=M.some(function(I){return I.rules.some(G.isExt)})),M.hasExtContent}},{key:"prepare",value:function(M,I){var w=this;M.forEach(function(C){w.cfXform.prepare(C,I)})}},{key:"render",value:function(M,I){var w=this;this.hasContent(I)&&(M.openNode(this.tag),I.forEach(function(C){return w.cfXform.render(M,C)}),M.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(M,I){this.model.push(I.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(t,i,a){function l(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(R){return typeof R}:l=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},l(C)}function o(C,x){return Z(C)||b(C,x)||f(C,x)||r()}function r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(C,x){if(C){if(typeof C=="string")return v(C,x);var R=Object.prototype.toString.call(C).slice(8,-1);if(R==="Object"&&C.constructor&&(R=C.constructor.name),R==="Map"||R==="Set")return Array.from(C);if(R==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R))return v(C,x)}}function v(C,x){(x==null||x>C.length)&&(x=C.length);for(var R=0,g=new Array(x);R"u"||!(Symbol.iterator in Object(C)))){var R=[],g=!0,S=!1,L=void 0;try{for(var V=C[Symbol.iterator](),Y;!(g=(Y=V.next()).done)&&(R.push(Y.value),!(x&&R.length===x));g=!0);}catch(T){S=!0,L=T}finally{try{!g&&V.return!=null&&V.return()}finally{if(S)throw L}}return R}}function Z(C){if(Array.isArray(C))return C}function p(C,x){if(!(C instanceof x))throw new TypeError("Cannot call a class as a function")}function y(C,x){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(C){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},h(C)}var c=t("../../base-xform"),W=t("../../composite-xform"),M=t("../../style/color-xform"),I=t("./cfvo-ext-xform"),w=function(C){m(R,C);var x=G(R);function R(){var g;return p(this,R),g=x.call(this),g.map={"x14:cfvo":g.cfvoXform=new I,"x14:borderColor":g.borderColorXform=new M("x14:borderColor"),"x14:negativeBorderColor":g.negativeBorderColorXform=new M("x14:negativeBorderColor"),"x14:negativeFillColor":g.negativeFillColorXform=new M("x14:negativeFillColor"),"x14:axisColor":g.axisColorXform=new M("x14:axisColor")},g}return X(R,[{key:"render",value:function(S,L){var V=this;S.openNode(this.tag,{minLength:c.toIntAttribute(L.minLength,0,!0),maxLength:c.toIntAttribute(L.maxLength,100,!0),border:c.toBoolAttribute(L.border,!1),gradient:c.toBoolAttribute(L.gradient,!0),negativeBarColorSameAsPositive:c.toBoolAttribute(L.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:c.toBoolAttribute(L.negativeBarBorderColorSameAsPositive,!0),axisPosition:c.toAttribute(L.axisPosition,"auto"),direction:c.toAttribute(L.direction,"leftToRight")}),L.cfvo.forEach(function(Y){V.cfvoXform.render(S,Y)}),this.borderColorXform.render(S,L.borderColor),this.negativeBorderColorXform.render(S,L.negativeBorderColor),this.negativeFillColorXform.render(S,L.negativeFillColor),this.axisColorXform.render(S,L.axisColor),S.closeNode()}},{key:"createNewModel",value:function(S){var L=S.attributes;return{cfvo:[],minLength:c.toIntValue(L.minLength,0),maxLength:c.toIntValue(L.maxLength,100),border:c.toBoolValue(L.border,!1),gradient:c.toBoolValue(L.gradient,!0),negativeBarColorSameAsPositive:c.toBoolValue(L.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:c.toBoolValue(L.negativeBarBorderColorSameAsPositive,!0),axisPosition:c.toStringValue(L.axisPosition,"auto"),direction:c.toStringValue(L.direction,"leftToRight")}}},{key:"onParserClose",value:function(S,L){var V=S.split(":"),Y=o(V,2),T=Y[1];switch(T){case"cfvo":this.model.cfvo.push(L.model);break;default:this.model[T]=L.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(S){return!S.gradient}}]),R}(W);i.exports=w},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),s}(N);i.exports=G},{"../../base-xform":31}],80:[function(t,i,a){function l(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(R){return typeof R}:l=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},l(C)}function o(C,x){return Z(C)||b(C,x)||f(C,x)||r()}function r(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(C,x){if(C){if(typeof C=="string")return v(C,x);var R=Object.prototype.toString.call(C).slice(8,-1);if(R==="Object"&&C.constructor&&(R=C.constructor.name),R==="Map"||R==="Set")return Array.from(C);if(R==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R))return v(C,x)}}function v(C,x){(x==null||x>C.length)&&(x=C.length);for(var R=0,g=new Array(x);R"u"||!(Symbol.iterator in Object(C)))){var R=[],g=!0,S=!1,L=void 0;try{for(var V=C[Symbol.iterator](),Y;!(g=(Y=V.next()).done)&&(R.push(Y.value),!(x&&R.length===x));g=!0);}catch(T){S=!0,L=T}finally{try{!g&&V.return!=null&&V.return()}finally{if(S)throw L}}return R}}function Z(C){if(Array.isArray(C))return C}function p(C,x){if(!(C instanceof x))throw new TypeError("Cannot call a class as a function")}function y(C,x){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(C){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},h(C)}var c=t("../../base-xform"),W=t("../../composite-xform"),M=t("./cfvo-ext-xform"),I=t("./cf-icon-ext-xform"),w=function(C){m(R,C);var x=G(R);function R(){var g;return p(this,R),g=x.call(this),g.map={"x14:cfvo":g.cfvoXform=new M,"x14:cfIcon":g.cfIconXform=new I},g}return X(R,[{key:"render",value:function(S,L){var V=this;S.openNode(this.tag,{iconSet:c.toStringAttribute(L.iconSet),reverse:c.toBoolAttribute(L.reverse,!1),showValue:c.toBoolAttribute(L.showValue,!0),custom:c.toBoolAttribute(L.icons,!1)}),L.cfvo.forEach(function(Y){V.cfvoXform.render(S,Y)}),L.icons&&L.icons.forEach(function(Y,T){Y.iconId=T,V.cfIconXform.render(S,Y)}),S.closeNode()}},{key:"createNewModel",value:function(S){var L=S.attributes;return{cfvo:[],iconSet:c.toStringValue(L.iconSet,"3TrafficLights"),reverse:c.toBoolValue(L.reverse,!1),showValue:c.toBoolValue(L.showValue,!0)}}},{key:"onParserClose",value:function(S,L){var V=S.split(":"),Y=o(V,2),T=Y[1];switch(T){case"cfvo":this.model.cfvo.push(L.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(L.model);break;default:this.model[T]=L.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),R}(W);i.exports=w},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),s}(N);i.exports=G},{"../../base-xform":31}],82:[function(t,i,a){function l(L){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Y){return typeof Y}:l=function(Y){return Y&&typeof Symbol=="function"&&Y.constructor===Symbol&&Y!==Symbol.prototype?"symbol":typeof Y},l(L)}function o(L,V){var Y=Object.keys(L);if(Object.getOwnPropertySymbols){var T=Object.getOwnPropertySymbols(L);V&&(T=T.filter(function(J){return Object.getOwnPropertyDescriptor(L,J).enumerable})),Y.push.apply(Y,T)}return Y}function r(L){for(var V=1;V"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(L){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(Y){return Y.__proto__||Object.getPrototypeOf(Y)},d(L)}var u=t("../../base-xform"),s=t("../../composite-xform"),h=t("../../../../doc/range"),c=t("./databar-xform"),W=t("./ext-lst-ref-xform"),M=t("./formula-xform"),I=t("./color-scale-xform"),w=t("./icon-set-xform"),C={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},x=function(V){if(V.formulae&&V.formulae[0])return V.formulae[0];var Y=new h(V.ref),T=Y.tl;switch(V.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(V.text,'",').concat(T,")))");case"containsBlanks":return"LEN(TRIM(".concat(T,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(T,"))>0");case"containsErrors":return"ISERROR(".concat(T,")");case"notContainsErrors":return"NOT(ISERROR(".concat(T,"))");default:return}},R=function(V){if(V.formulae&&V.formulae[0])return V.formulae[0];var Y=new h(V.ref),T=Y.tl;switch(V.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(T,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(T,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(T,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(T,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(T,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(T,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(T,",1)=TODAY()-1");case"today":return"FLOOR(".concat(T,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(T,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(T,",1)<=6,FLOOR(").concat(T,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(T,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(T,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(T,")=MONTH(TODAY()),YEAR(").concat(T,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(T,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(T,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},g=function(V){var Y=V.type,T=V.operator;switch(Y){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:Y};default:return{type:Y,operator:T}}},S=function(L){p(Y,L);var V=X(Y);function Y(){var T;return v(this,Y),T=V.call(this),T.map={dataBar:T.databarXform=new c,extLst:T.extLstRefXform=new W,formula:T.formulaXform=new M,colorScale:T.colorScaleXform=new I,iconSet:T.iconSetXform=new w},T}return Z(Y,[{key:"render",value:function(J,U){switch(U.type){case"expression":this.renderExpression(J,U);break;case"cellIs":this.renderCellIs(J,U);break;case"top10":this.renderTop10(J,U);break;case"aboveAverage":this.renderAboveAverage(J,U);break;case"dataBar":this.renderDataBar(J,U);break;case"colorScale":this.renderColorScale(J,U);break;case"iconSet":this.renderIconSet(J,U);break;case"containsText":this.renderText(J,U);break;case"timePeriod":this.renderTimePeriod(J,U);break}}},{key:"renderExpression",value:function(J,U){J.openNode(this.tag,{type:"expression",dxfId:U.dxfId,priority:U.priority}),this.formulaXform.render(J,U.formulae[0]),J.closeNode()}},{key:"renderCellIs",value:function(J,U){var K=this;J.openNode(this.tag,{type:"cellIs",dxfId:U.dxfId,priority:U.priority,operator:U.operator}),U.formulae.forEach(function(H){K.formulaXform.render(J,H)}),J.closeNode()}},{key:"renderTop10",value:function(J,U){J.leafNode(this.tag,{type:"top10",dxfId:U.dxfId,priority:U.priority,percent:u.toBoolAttribute(U.percent,!1),bottom:u.toBoolAttribute(U.bottom,!1),rank:u.toIntValue(U.rank,10,!0)})}},{key:"renderAboveAverage",value:function(J,U){J.leafNode(this.tag,{type:"aboveAverage",dxfId:U.dxfId,priority:U.priority,aboveAverage:u.toBoolAttribute(U.aboveAverage,!0)})}},{key:"renderDataBar",value:function(J,U){J.openNode(this.tag,{type:"dataBar",priority:U.priority}),this.databarXform.render(J,U),this.extLstRefXform.render(J,U),J.closeNode()}},{key:"renderColorScale",value:function(J,U){J.openNode(this.tag,{type:"colorScale",priority:U.priority}),this.colorScaleXform.render(J,U),J.closeNode()}},{key:"renderIconSet",value:function(J,U){Y.isPrimitive(U)&&(J.openNode(this.tag,{type:"iconSet",priority:U.priority}),this.iconSetXform.render(J,U),J.closeNode())}},{key:"renderText",value:function(J,U){J.openNode(this.tag,{type:U.operator,dxfId:U.dxfId,priority:U.priority,operator:u.toStringAttribute(U.operator,"containsText")});var K=x(U);K&&this.formulaXform.render(J,K),J.closeNode()}},{key:"renderTimePeriod",value:function(J,U){J.openNode(this.tag,{type:"timePeriod",dxfId:U.dxfId,priority:U.priority,timePeriod:U.timePeriod});var K=R(U);K&&this.formulaXform.render(J,K),J.closeNode()}},{key:"createNewModel",value:function(J){var U=J.attributes;return r(r({},g(U)),{},{dxfId:u.toIntValue(U.dxfId),priority:u.toIntValue(U.priority),timePeriod:U.timePeriod,percent:u.toBoolValue(U.percent),bottom:u.toBoolValue(U.bottom),rank:u.toIntValue(U.rank),aboveAverage:u.toBoolValue(U.aboveAverage)})}},{key:"onParserClose",value:function(J,U){switch(J){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,U.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(U.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(J){return!(J.type==="iconSet"&&(J.custom||C[J.iconSet]))}}]),Y}(s);i.exports=S},{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,{type:W.type,val:W.value})}},{key:"parseOpen",value:function(c){this.model={type:c.attributes.type,value:N.toFloatValue(c.attributes.val)}}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),s}(N);i.exports=G},{"../../base-xform":31}],84:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("../../style/color-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d,color:W.colorXform=new G},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),I.color.forEach(function(C){w.colorXform.render(M,C)}),M.closeNode()}},{key:"createNewModel",value:function(M){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(M,I){this.model[M].push(I.model)}},{key:"tag",get:function(){return"colorScale"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../composite-xform"),G=t("./cf-rule-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={cfRule:new G},c}return f(h,[{key:"render",value:function(W,M){var I=this;M.rules.some(G.isPrimitive)&&(W.openNode(this.tag,{sqref:M.ref}),M.rules.forEach(function(w){G.isPrimitive(w)&&(w.ref=M.ref,I.map.cfRule.render(W,w))}),W.closeNode())}},{key:"createNewModel",value:function(W){var M=W.attributes;return{ref:M.sqref,rules:[]}}},{key:"onParserClose",value:function(W,M){this.model.rules.push(M.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),h}(N);i.exports=d},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(t,i,a){function l(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(C){return typeof C}:l=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},l(I)}function o(I){return b(I)||v(I)||f(I)||r()}function r(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function f(I,w){if(I){if(typeof I=="string")return Z(I,w);var C=Object.prototype.toString.call(I).slice(8,-1);if(C==="Object"&&I.constructor&&(C=I.constructor.name),C==="Map"||C==="Set")return Array.from(I);if(C==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(C))return Z(I,w)}}function v(I){if(typeof Symbol<"u"&&Symbol.iterator in Object(I))return Array.from(I)}function b(I){if(Array.isArray(I))return Z(I)}function Z(I,w){(w==null||w>I.length)&&(w=I.length);for(var C=0,x=new Array(w);C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function h(I){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},h(I)}var c=t("../../base-xform"),W=t("./conditional-formatting-xform"),M=function(I){m(C,I);var w=G(C);function C(){var x;return p(this,C),x=w.call(this),x.cfXform=new W,x}return X(C,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(R,g){var S=R.reduce(function(L,V){return Math.max.apply(Math,[L].concat(o(V.rules.map(function(Y){return Y.priority||0}))))},1);R.forEach(function(L){L.rules.forEach(function(V){V.priority||(V.priority=S++),V.style&&(V.dxfId=g.styles.addDxfStyle(V.style))})})}},{key:"render",value:function(R,g){var S=this;g.forEach(function(L){S.cfXform.render(R,L)})}},{key:"parseOpen",value:function(R){if(this.parser)return this.parser.parseOpen(R),!0;switch(R.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(R),!0;default:return!1}}},{key:"parseText",value:function(R){this.parser&&this.parser.parseText(R)}},{key:"parseClose",value:function(R){return this.parser?this.parser.parseClose(R)?!0:(this.model.push(this.parser.model),this.parser=void 0,!1):!1}},{key:"reconcile",value:function(R,g){R.forEach(function(S){S.rules.forEach(function(L){L.dxfId!==void 0&&(L.style=g.styles.getDxfStyle(L.dxfId),delete L.dxfId)})})}},{key:"tag",get:function(){return"conditionalFormatting"}}]),C}(c);i.exports=M},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../composite-xform"),G=t("../../style/color-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d,color:W.colorXform=new G},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),this.colorXform.render(M,I.color),M.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(M,I){switch(M){case"cfvo":this.model.cfvo.push(I.model);break;case"color":this.model.color=I.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),c}(N);i.exports=u},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../../base-xform"),G=t("../../composite-xform"),d=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){I.leafNode(this.tag,null,w)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(I){this.model+=I}},{key:"parseClose",value:function(I){return I!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),W}(N),u=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={"x14:id":M.idXform=new d},M}return f(W,[{key:"render",value:function(I,w){I.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(I,w.x14Id),I.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(I,w){this.model.x14Id=w.model}},{key:"tag",get:function(){return"ext"}}]),W}(G),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={ext:new u},M}return f(W,[{key:"render",value:function(I,w){I.openNode(this.tag),this.map.ext.render(I,w),I.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(I,w){Object.assign(this.model,w.model)}},{key:"tag",get:function(){return"extLst"}}]),W}(G);i.exports=s},{"../../base-xform":31,"../../composite-xform":47}],89:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode(this.tag,null,W)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(c){this.model+=c}},{key:"parseClose",value:function(c){return c!==this.tag}},{key:"tag",get:function(){return"formula"}}]),s}(N);i.exports=G},{"../../base-xform":31}],90:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../base-xform"),G=t("../../composite-xform"),d=t("./cfvo-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={cfvo:W.cfvoXform=new d},W}return f(c,[{key:"render",value:function(M,I){var w=this;M.openNode(this.tag,{iconSet:N.toStringAttribute(I.iconSet,"3TrafficLights"),reverse:N.toBoolAttribute(I.reverse,!1),showValue:N.toBoolAttribute(I.showValue,!0)}),I.cfvo.forEach(function(C){w.cfvoXform.render(M,C)}),M.closeNode()}},{key:"createNewModel",value:function(M){var I=M.attributes;return{iconSet:N.toStringValue(I.iconSet,"3TrafficLights"),reverse:N.toBoolValue(I.reverse),showValue:N.toBoolValue(I.showValue),cfvo:[]}}},{key:"onParserClose",value:function(M,I){this.model[M].push(I.model)}},{key:"tag",get:function(){return"iconSet"}}]),c}(G);i.exports=u},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){var M=W.styles.addStyleModel(c.style||{});M&&(c.styleId=M)}},{key:"render",value:function(c,W){c.openNode("col"),c.addAttribute("min",W.min),c.addAttribute("max",W.max),W.width&&c.addAttribute("width",W.width),W.styleId&&c.addAttribute("style",W.styleId),W.hidden&&c.addAttribute("hidden","1"),W.bestFit&&c.addAttribute("bestFit","1"),W.outlineLevel&&c.addAttribute("outlineLevel",W.outlineLevel),W.collapsed&&c.addAttribute("collapsed","1"),c.addAttribute("customWidth","1"),c.closeNode()}},{key:"parseOpen",value:function(c){if(c.name==="col"){var W=this.model={min:parseInt(c.attributes.min||"0",10),max:parseInt(c.attributes.max||"0",10),width:c.attributes.width===void 0?void 0:parseFloat(c.attributes.width||"0")};return c.attributes.style&&(W.styleId=parseInt(c.attributes.style,10)),(c.attributes.hidden===!0||c.attributes.hidden==="true"||c.attributes.hidden===1||c.attributes.hidden==="1")&&(W.hidden=!0),c.attributes.bestFit&&(W.bestFit=!0),c.attributes.outlineLevel&&(W.outlineLevel=parseInt(c.attributes.outlineLevel,10)),c.attributes.collapsed&&(W.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(c,W){c.styleId&&(c.style=W.styles.getStyleModel(c.styleId))}},{key:"tag",get:function(){return"col"}}]),s}(N);i.exports=G},{"../base-xform":31}],92:[function(t,i,a){function l(R){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(S){return typeof S}:l=function(S){return S&&typeof Symbol=="function"&&S.constructor===Symbol&&S!==Symbol.prototype?"symbol":typeof S},l(R)}function o(R,g){if(!(R instanceof g))throw new TypeError("Cannot call a class as a function")}function r(R,g){for(var S=0;S"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(R){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(S){return S.__proto__||Object.getPrototypeOf(S)},m(R)}function N(R,g){var S=Object.keys(R);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(R);g&&(L=L.filter(function(V){return Object.getOwnPropertyDescriptor(R,V).enumerable})),S.push.apply(S,L)}return S}function G(R){for(var g=1;g1||U>1){var k=Y.row+(T-1),F=Y.col+(U-1);return G(G({},V.dataValidation),{},{sqref:"".concat(V.address,":").concat(h.encodeAddress(k,F))})}return G(G({},V.dataValidation),{},{sqref:V.address})}return null}).filter(Boolean)}var x=function(R){v(S,R);var g=Z(S);function S(){return o(this,S),g.apply(this,arguments)}return f(S,[{key:"render",value:function(V,Y){var T=C(Y);T.length&&(V.openNode("dataValidations",{count:T.length}),T.forEach(function(J){V.openNode("dataValidation"),J.type!=="any"&&(V.addAttribute("type",J.type),J.operator&&J.type!=="list"&&J.operator!=="between"&&V.addAttribute("operator",J.operator),J.allowBlank&&V.addAttribute("allowBlank","1")),J.showInputMessage&&V.addAttribute("showInputMessage","1"),J.promptTitle&&V.addAttribute("promptTitle",J.promptTitle),J.prompt&&V.addAttribute("prompt",J.prompt),J.showErrorMessage&&V.addAttribute("showErrorMessage","1"),J.errorStyle&&V.addAttribute("errorStyle",J.errorStyle),J.errorTitle&&V.addAttribute("errorTitle",J.errorTitle),J.error&&V.addAttribute("error",J.error),V.addAttribute("sqref",J.sqref),(J.formulae||[]).forEach(function(U,K){V.openNode("formula".concat(K+1)),J.type==="date"?V.writeText(s.dateToExcel(new Date(U))):V.writeText(U),V.closeNode()}),V.closeNode()}),V.closeNode())}},{key:"parseOpen",value:function(V){switch(V.name){case"dataValidations":return this.model={},!0;case"dataValidation":{this._address=V.attributes.sqref;var Y={type:V.attributes.type||"any",formulae:[]};switch(V.attributes.type&&w(Y,V.attributes,"allowBlank"),w(Y,V.attributes,"showInputMessage"),w(Y,V.attributes,"showErrorMessage"),Y.type){case"any":case"list":case"custom":break;default:M(Y,V.attributes,"operator","between");break}return M(Y,V.attributes,"promptTitle"),M(Y,V.attributes,"prompt"),M(Y,V.attributes,"errorStyle"),M(Y,V.attributes,"errorTitle"),M(Y,V.attributes,"error"),this._dataValidation=Y,!0}case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}},{key:"parseText",value:function(V){this._formula&&this._formula.push(V)}},{key:"parseClose",value:function(V){var Y=this;switch(V){case"dataValidations":return!1;case"dataValidation":{(!this._dataValidation.formulae||!this._dataValidation.formulae.length)&&(delete this._dataValidation.formulae,delete this._dataValidation.operator);var T=this._address.split(/\s+/g)||[];return T.forEach(function(U){if(U.includes(":")){var K=new W(U);K.forEachAddress(function(H){Y.model[H]=Y._dataValidation})}else Y.model[U]=Y._dataValidation}),!0}case"formula1":case"formula2":{var J=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":J=parseInt(J,10);break;case"decimal":J=parseFloat(J);break;case"date":J=s.excelToDate(parseFloat(J));break}return this._dataValidation.formulae.push(J),this._formula=void 0,!0}default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),S}(c);i.exports=x},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode("dimension",{ref:W})}},{key:"parseOpen",value:function(c){return c.name==="dimension"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),s}(N);i.exports=G},{"../base-xform":31}],94:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),s}(N);i.exports=G},{"../base-xform":31}],95:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../composite-xform"),G=t("./cf-ext/conditional-formattings-ext-xform"),d=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={"x14:conditionalFormattings":W.conditionalFormattings=new G},W}return f(c,[{key:"hasContent",value:function(M){return this.conditionalFormattings.hasContent(M.conditionalFormattings)}},{key:"prepare",value:function(M,I){this.conditionalFormattings.prepare(M.conditionalFormattings,I)}},{key:"render",value:function(M,I){M.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(M,I.conditionalFormattings),M.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(M,I){this.model[M]=I.model}},{key:"tag",get:function(){return"ext"}}]),c}(N),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={ext:W.ext=new d},W}return f(c,[{key:"prepare",value:function(M,I){this.ext.prepare(M,I)}},{key:"hasContent",value:function(M){return this.ext.hasContent(M)}},{key:"render",value:function(M,I){this.hasContent(I)&&(M.openNode("extLst"),this.ext.render(M,I),M.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(M,I){Object.assign(this.model,I.model)}},{key:"tag",get:function(){return"extLst"}}]),c}(N);i.exports=u},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){if(W){c.addRollback();var M=!1;c.openNode("headerFooter"),W.differentFirst&&(c.addAttribute("differentFirst","1"),M=!0),W.differentOddEven&&(c.addAttribute("differentOddEven","1"),M=!0),W.oddHeader&&typeof W.oddHeader=="string"&&(c.leafNode("oddHeader",null,W.oddHeader),M=!0),W.oddFooter&&typeof W.oddFooter=="string"&&(c.leafNode("oddFooter",null,W.oddFooter),M=!0),W.evenHeader&&typeof W.evenHeader=="string"&&(c.leafNode("evenHeader",null,W.evenHeader),M=!0),W.evenFooter&&typeof W.evenFooter=="string"&&(c.leafNode("evenFooter",null,W.evenFooter),M=!0),W.firstHeader&&typeof W.firstHeader=="string"&&(c.leafNode("firstHeader",null,W.firstHeader),M=!0),W.firstFooter&&typeof W.firstFooter=="string"&&(c.leafNode("firstFooter",null,W.firstFooter),M=!0),M?(c.closeNode(),c.commit()):c.rollback()}}},{key:"parseOpen",value:function(c){switch(c.name){case"headerFooter":return this.model={},c.attributes.differentFirst&&(this.model.differentFirst=parseInt(c.attributes.differentFirst,0)===1),c.attributes.differentOddEven&&(this.model.differentOddEven=parseInt(c.attributes.differentOddEven,0)===1),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}},{key:"parseText",value:function(c){switch(this.currentNode){case"oddHeader":this.model.oddHeader=c;break;case"oddFooter":this.model.oddFooter=c;break;case"evenHeader":this.model.evenHeader=c;break;case"evenFooter":this.model.evenFooter=c;break;case"firstHeader":this.model.firstHeader=c;break;case"firstFooter":this.model.firstFooter=c;break}}},{key:"parseClose",value:function(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}},{key:"tag",get:function(){return"headerFooter"}}]),s}(N);i.exports=G},{"../base-xform":31}],97:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("hyperlink",{ref:W.address,"r:id":W.rId,tooltip:W.tooltip})}},{key:"parseOpen",value:function(c){return c.name==="hyperlink"?(this.model={address:c.attributes.ref,rId:c.attributes["r:id"],tooltip:c.attributes.tooltip},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),s}(N);i.exports=G},{"../base-xform":31}],98:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("mergeCell",{ref:W})}},{key:"parseOpen",value:function(c){return c.name==="mergeCell"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),s}(N);i.exports=G},{"../base-xform":31}],99:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=function(s){return typeof s<"u"},d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){return M&&(G(M.summaryBelow)||G(M.summaryRight))?(W.leafNode(this.tag,{summaryBelow:G(M.summaryBelow)?Number(M.summaryBelow):void 0,summaryRight:G(M.summaryRight)?Number(M.summaryRight):void 0}),!0):!1}},{key:"parseOpen",value:function(W){return W.name===this.tag?(this.model={summaryBelow:G(W.attributes.summaryBelow)?Boolean(Number(W.attributes.summaryBelow)):void 0,summaryRight:G(W.attributes.summaryRight)?Boolean(Number(W.attributes.summaryRight)):void 0},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),h}(N);i.exports=d},{"../base-xform":31}],101:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.leafNode("brk",W)}},{key:"parseOpen",value:function(c){return c.name==="brk"?(this.model=c.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),s}(N);i.exports=G},{"../base-xform":31}],102:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/under-dash"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M){var I={left:M.left,right:M.right,top:M.top,bottom:M.bottom,header:M.header,footer:M.footer};N.some(I,function(w){return w!==void 0})&&W.leafNode(this.tag,I)}}},{key:"parseOpen",value:function(W){switch(W.name){case this.tag:return this.model={left:parseFloat(W.attributes.left||.7),right:parseFloat(W.attributes.right||.7),top:parseFloat(W.attributes.top||.75),bottom:parseFloat(W.attributes.bottom||.75),header:parseFloat(W.attributes.header||.3),footer:parseFloat(W.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),h}(G);i.exports=d},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){return W&&W.fitToPage?(c.leafNode(this.tag,{fitToPage:W.fitToPage?"1":void 0}),!0):!1}},{key:"parseOpen",value:function(c){return c.name===this.tag?(this.model={fitToPage:c.attributes.fitToPage==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),s}(N);i.exports=G},{"../base-xform":31}],104:[function(t,i,a){function l(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(w){return typeof w}:l=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},l(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(M){return M?"1":void 0}function u(M){switch(M){case"overThenDown":return M;default:return}}function s(M){switch(M){case"atEnd":case"asDisplyed":return M;default:return}}function h(M){switch(M){case"dash":case"blank":case"NA":return M;default:return}}function c(M){return M!==void 0?parseInt(M,10):void 0}var W=function(M){v(w,M);var I=Z(w);function w(){return o(this,w),I.apply(this,arguments)}return f(w,[{key:"render",value:function(x,R){if(R){var g={paperSize:R.paperSize,orientation:R.orientation,horizontalDpi:R.horizontalDpi,verticalDpi:R.verticalDpi,pageOrder:u(R.pageOrder),blackAndWhite:d(R.blackAndWhite),draft:d(R.draft),cellComments:s(R.cellComments),errors:h(R.errors),scale:R.scale,fitToWidth:R.fitToWidth,fitToHeight:R.fitToHeight,firstPageNumber:R.firstPageNumber,useFirstPageNumber:d(R.firstPageNumber),usePrinterDefaults:d(R.usePrinterDefaults),copies:R.copies};N.some(g,function(S){return S!==void 0})&&x.leafNode(this.tag,g)}}},{key:"parseOpen",value:function(x){switch(x.name){case this.tag:return this.model={paperSize:c(x.attributes.paperSize),orientation:x.attributes.orientation||"portrait",horizontalDpi:parseInt(x.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(x.attributes.verticalDpi||"4294967295",10),pageOrder:x.attributes.pageOrder||"downThenOver",blackAndWhite:x.attributes.blackAndWhite==="1",draft:x.attributes.draft==="1",cellComments:x.attributes.cellComments||"None",errors:x.attributes.errors||"displayed",scale:parseInt(x.attributes.scale||"100",10),fitToWidth:parseInt(x.attributes.fitToWidth||"1",10),fitToHeight:parseInt(x.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(x.attributes.firstPageNumber||"1",10),useFirstPageNumber:x.attributes.useFirstPageNumber==="1",usePrinterDefaults:x.attributes.usePrinterDefaults==="1",copies:parseInt(x.attributes.copies||"1",10)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetup"}}]),w}(G);i.exports=W},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),s}(N);i.exports=G},{"../base-xform":31}],106:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(s){return s?"1":void 0}var u=function(s){v(c,s);var h=Z(c);function c(){return o(this,c),h.apply(this,arguments)}return f(c,[{key:"render",value:function(M,I){if(I){var w={headings:d(I.showRowColHeaders),gridLines:d(I.showGridLines),horizontalCentered:d(I.horizontalCentered),verticalCentered:d(I.verticalCentered)};N.some(w,function(C){return C!==void 0})&&M.leafNode(this.tag,w)}}},{key:"parseOpen",value:function(M){switch(M.name){case this.tag:return this.model={showRowColHeaders:M.attributes.headings==="1",showGridLines:M.attributes.gridLines==="1",horizontalCentered:M.attributes.horizontalCentered==="1",verticalCentered:M.attributes.verticalCentered==="1"},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),c}(G);i.exports=u},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("./page-breaks-xform"),G=t("../list-xform"),d=function(u){v(h,u);var s=Z(h);function h(){o(this,h);var c={tag:"rowBreaks",count:!0,childXform:new N};return s.call(this,c)}return f(h,[{key:"render",value:function(W,M){if(M&&M.length){W.openNode(this.tag,this.$),this.count&&(W.addAttribute(this.$count,M.length),W.addAttribute("manualBreakCount",M.length));var I=this.childXform;M.forEach(function(w){I.render(W,w)}),W.closeNode()}else this.empty&&W.leafNode(this.tag)}}]),h}(G);i.exports=d},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./cell-xform"),d=function(u){v(h,u);var s=Z(h);function h(c){var W;return o(this,h),W=s.call(this),W.maxItems=c&&c.maxItems,W.map={c:new G},W}return f(h,[{key:"prepare",value:function(W,M){var I=M.styles.addStyleModel(W.style);I&&(W.styleId=I);var w=this.map.c;W.cells.forEach(function(C){w.prepare(C,M)})}},{key:"render",value:function(W,M,I){W.openNode("row"),W.addAttribute("r",M.number),M.height&&(W.addAttribute("ht",M.height),W.addAttribute("customHeight","1")),M.hidden&&W.addAttribute("hidden","1"),M.min>0&&M.max>0&&M.min<=M.max&&W.addAttribute("spans","".concat(M.min,":").concat(M.max)),M.styleId&&(W.addAttribute("s",M.styleId),W.addAttribute("customFormat","1")),W.addAttribute("x14ac:dyDescent","0.25"),M.outlineLevel&&W.addAttribute("outlineLevel",M.outlineLevel),M.collapsed&&W.addAttribute("collapsed","1");var w=this.map.c;M.cells.forEach(function(C){w.render(W,C,I)}),W.closeNode()}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;if(W.name==="row"){this.numRowsSeen+=1;var M=W.attributes.spans?W.attributes.spans.split(":").map(function(w){return parseInt(w,10)}):[void 0,void 0],I=this.model={number:parseInt(W.attributes.r,10),min:M[0],max:M[1],cells:[]};return W.attributes.s&&(I.styleId=parseInt(W.attributes.s,10)),(W.attributes.hidden===!0||W.attributes.hidden==="true"||W.attributes.hidden===1||W.attributes.hidden==="1")&&(I.hidden=!0),W.attributes.bestFit&&(I.bestFit=!0),W.attributes.ht&&(I.height=parseFloat(W.attributes.ht)),W.attributes.outlineLevel&&(I.outlineLevel=parseInt(W.attributes.outlineLevel,10)),W.attributes.collapsed&&(I.collapsed=!0),!0}return this.parser=this.map[W.name],this.parser?(this.parser.parseOpen(W),!0):!1}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser){if(!this.parser.parseClose(W)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error("Max column count (".concat(this.maxItems,") exceeded"));this.parser=void 0}return!0}return!1}},{key:"reconcile",value:function(W,M){W.style=W.styleId?M.styles.getStyleModel(W.styleId):{},W.styleId!==void 0&&(W.styleId=void 0);var I=this.map.c;W.cells.forEach(function(w){I.reconcile(w,M)})}},{key:"tag",get:function(){return"row"}}]),h}(N);i.exports=d},{"../base-xform":31,"./cell-xform":72}],109:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../../../utils/under-dash"),G=t("../base-xform"),d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){if(M){var I={defaultRowHeight:M.defaultRowHeight,outlineLevelRow:M.outlineLevelRow,outlineLevelCol:M.outlineLevelCol,"x14ac:dyDescent":M.dyDescent};M.defaultColWidth&&(I.defaultColWidth=M.defaultColWidth),(!M.defaultRowHeight||M.defaultRowHeight!==15)&&(I.customHeight="1"),N.some(I,function(w){return w!==void 0})&&W.leafNode("sheetFormatPr",I)}}},{key:"parseOpen",value:function(W){return W.name==="sheetFormatPr"?(this.model={defaultRowHeight:parseFloat(W.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(W.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(W.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(W.attributes.outlineLevelCol||"0",10)},W.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(W.attributes.defaultColWidth)),!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),h}(G);i.exports=d},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../base-xform"),G=t("../style/color-xform"),d=t("./page-setup-properties-xform"),u=t("./outline-properties-xform"),s=function(h){v(W,h);var c=Z(W);function W(){var M;return o(this,W),M=c.call(this),M.map={tabColor:new G("tabColor"),pageSetUpPr:new d,outlinePr:new u},M}return f(W,[{key:"render",value:function(I,w){if(w){I.addRollback(),I.openNode("sheetPr");var C=!1;C=this.map.tabColor.render(I,w.tabColor)||C,C=this.map.pageSetUpPr.render(I,w.pageSetup)||C,C=this.map.outlinePr.render(I,w.outlineProperties)||C,C?(I.closeNode(),I.commit()):I.rollback()}}},{key:"parseOpen",value:function(I){return this.parser?(this.parser.parseOpen(I),!0):I.name===this.tag?(this.reset(),!0):this.map[I.name]?(this.parser=this.map[I.name],this.parser.parseOpen(I),!0):!1}},{key:"parseText",value:function(I){return this.parser?(this.parser.parseText(I),!0):!1}},{key:"parseClose",value:function(I){return this.parser?(this.parser.parseClose(I)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}},{key:"tag",get:function(){return"sheetPr"}}]),W}(N);i.exports=s},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("../../../utils/under-dash"),G=t("../base-xform");function d(h,c){return h?c:void 0}function u(h,c){return h===c?!0:void 0}var s=function(h){v(W,h);var c=Z(W);function W(){return o(this,W),c.apply(this,arguments)}return f(W,[{key:"render",value:function(I,w){if(w){var C={sheet:d(w.sheet,"1"),selectLockedCells:w.selectLockedCells===!1?"1":void 0,selectUnlockedCells:w.selectUnlockedCells===!1?"1":void 0,formatCells:d(w.formatCells,"0"),formatColumns:d(w.formatColumns,"0"),formatRows:d(w.formatRows,"0"),insertColumns:d(w.insertColumns,"0"),insertRows:d(w.insertRows,"0"),insertHyperlinks:d(w.insertHyperlinks,"0"),deleteColumns:d(w.deleteColumns,"0"),deleteRows:d(w.deleteRows,"0"),sort:d(w.sort,"0"),autoFilter:d(w.autoFilter,"0"),pivotTables:d(w.pivotTables,"0")};w.sheet&&(C.algorithmName=w.algorithmName,C.hashValue=w.hashValue,C.saltValue=w.saltValue,C.spinCount=w.spinCount,C.objects=d(w.objects===!1,"1"),C.scenarios=d(w.scenarios===!1,"1")),N.some(C,function(x){return x!==void 0})&&I.leafNode(this.tag,C)}}},{key:"parseOpen",value:function(I){switch(I.name){case this.tag:return this.model={sheet:u(I.attributes.sheet,"1"),objects:I.attributes.objects==="1"?!1:void 0,scenarios:I.attributes.scenarios==="1"?!1:void 0,selectLockedCells:I.attributes.selectLockedCells==="1"?!1:void 0,selectUnlockedCells:I.attributes.selectUnlockedCells==="1"?!1:void 0,formatCells:u(I.attributes.formatCells,"0"),formatColumns:u(I.attributes.formatColumns,"0"),formatRows:u(I.attributes.formatRows,"0"),insertColumns:u(I.attributes.insertColumns,"0"),insertRows:u(I.attributes.insertRows,"0"),insertHyperlinks:u(I.attributes.insertHyperlinks,"0"),deleteColumns:u(I.attributes.deleteColumns,"0"),deleteRows:u(I.attributes.deleteRows,"0"),sort:u(I.attributes.sort,"0"),autoFilter:u(I.attributes.autoFilter,"0"),pivotTables:u(I.attributes.pivotTables,"0")},I.attributes.algorithmName&&(this.model.algorithmName=I.attributes.algorithmName,this.model.hashValue=I.attributes.hashValue,this.model.saltValue=I.attributes.saltValue,this.model.spinCount=parseInt(I.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),W}(G);i.exports=s},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/col-cache"),G=t("../base-xform"),d={frozen:"frozen",frozenSplit:"frozen",split:"split"},u=function(s){v(c,s);var h=Z(c);function c(){return o(this,c),h.apply(this,arguments)}return f(c,[{key:"prepare",value:function(M){switch(M.state){case"frozen":case"split":break;default:M.state="normal";break}}},{key:"render",value:function(M,I){M.openNode("sheetView",{workbookViewId:I.workbookViewId||0});var w=function(L,V,Y){Y&&M.addAttribute(L,V)};w("rightToLeft","1",I.rightToLeft===!0),w("tabSelected","1",I.tabSelected),w("showRuler","0",I.showRuler===!1),w("showRowColHeaders","0",I.showRowColHeaders===!1),w("showGridLines","0",I.showGridLines===!1),w("zoomScale",I.zoomScale,I.zoomScale),w("zoomScaleNormal",I.zoomScaleNormal,I.zoomScaleNormal),w("view",I.style,I.style);var C,x,R,g;switch(I.state){case"frozen":x=I.xSplit||0,R=I.ySplit||0,C=I.topLeftCell||N.getAddress(R+1,x+1).address,g=I.xSplit&&I.ySplit&&"bottomRight"||I.xSplit&&"topRight"||"bottomLeft",M.leafNode("pane",{xSplit:I.xSplit||void 0,ySplit:I.ySplit||void 0,topLeftCell:C,activePane:g,state:"frozen"}),M.leafNode("selection",{pane:g,activeCell:I.activeCell,sqref:I.activeCell});break;case"split":I.activePane==="topLeft"&&(I.activePane=void 0),M.leafNode("pane",{xSplit:I.xSplit||void 0,ySplit:I.ySplit||void 0,topLeftCell:I.topLeftCell,activePane:I.activePane}),M.leafNode("selection",{pane:I.activePane,activeCell:I.activeCell,sqref:I.activeCell});break;case"normal":I.activeCell&&M.leafNode("selection",{activeCell:I.activeCell,sqref:I.activeCell});break}M.closeNode()}},{key:"parseOpen",value:function(M){switch(M.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(M.attributes.workbookViewId,10),rightToLeft:M.attributes.rightToLeft==="1",tabSelected:M.attributes.tabSelected==="1",showRuler:M.attributes.showRuler!=="0",showRowColHeaders:M.attributes.showRowColHeaders!=="0",showGridLines:M.attributes.showGridLines!=="0",zoomScale:parseInt(M.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(M.attributes.zoomScaleNormal||"100",10),style:M.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(M.attributes.xSplit||"0",10),ySplit:parseInt(M.attributes.ySplit||"0",10),topLeftCell:M.attributes.topLeftCell,activePane:M.attributes.activePane||"topLeft",state:M.attributes.state},!0;case"selection":{var I=M.attributes.pane||"topLeft";return this.selections[I]={pane:I,activeCell:M.attributes.activeCell},!0}default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){var I,w;switch(M){case"sheetView":return this.sheetView&&this.pane?(I=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:d[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},this.model.state==="split"&&(I.activePane=this.pane.activePane),w=this.selections[this.pane.activePane],w&&w.activeCell&&(I.activeCell=w.activeCell),this.sheetView.style&&(I.style=this.sheetView.style)):(I=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},w=this.selections.topLeft,w&&w.activeCell&&(I.activeCell=w.activeCell),this.sheetView.style&&(I.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),c}(G);i.exports=u},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){W&&c.leafNode(this.tag,{"r:id":W.rId})}},{key:"parseOpen",value:function(c){switch(c.name){case this.tag:return this.model={rId:c.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),s}(N);i.exports=G},{"../base-xform":31}],114:[function(t,i,a){function l(pe){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(_){return typeof _}:l=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},l(pe)}function o(pe,re){if(!(pe instanceof re))throw new TypeError("Cannot call a class as a function")}function r(pe,re){for(var _=0;_"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(pe){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(_){return _.__proto__||Object.getPrototypeOf(_)},m(pe)}var N=t("../../../utils/under-dash"),G=t("../../../utils/col-cache"),d=t("../../../utils/xml-stream"),u=t("../../rel-type"),s=t("./merges"),h=t("../base-xform"),c=t("../list-xform"),W=t("./row-xform"),M=t("./col-xform"),I=t("./dimension-xform"),w=t("./hyperlink-xform"),C=t("./merge-cell-xform"),x=t("./data-validations-xform"),R=t("./sheet-properties-xform"),g=t("./sheet-format-properties-xform"),S=t("./sheet-view-xform"),L=t("./sheet-protection-xform"),V=t("./page-margins-xform"),Y=t("./page-setup-xform"),T=t("./print-options-xform"),J=t("./auto-filter-xform"),U=t("./picture-xform"),K=t("./drawing-xform"),H=t("./table-part-xform"),k=t("./row-breaks-xform"),F=t("./header-footer-xform"),O=t("./cf/conditional-formattings-xform"),Q=t("./ext-lst-xform"),oe=function(re,_){Object.keys(_).forEach(function(E){var $=re[E],ae=_[E];$===void 0&&ae!==void 0&&(re[E]=ae)})},se=function(re,_){if(!_||!_.length)return re;if(!re||!re.length)return _;var E={},$={};return re.forEach(function(ae){E[ae.ref]=ae,ae.rules.forEach(function(le){var ee=le.x14Id;ee&&($[ee]=le)})}),_.forEach(function(ae){ae.rules.forEach(function(le){var ee=$[le.x14Id];ee?oe(ee,le):E[ae.ref]?E[ae.ref].rules.push(le):re.push({ref:ae.ref,rules:[le]})})}),re},he=function(pe){v(_,pe);var re=Z(_);function _(E){var $;o(this,_),$=re.call(this);var ae=E||{},le=ae.maxRows,ee=ae.maxCols;return $.map={sheetPr:new R,dimension:new I,sheetViews:new c({tag:"sheetViews",count:!1,childXform:new S}),sheetFormatPr:new g,cols:new c({tag:"cols",count:!1,childXform:new M}),sheetData:new c({tag:"sheetData",count:!1,empty:!0,childXform:new W({maxItems:ee}),maxItems:le}),autoFilter:new J,mergeCells:new c({tag:"mergeCells",count:!0,childXform:new C}),rowBreaks:new k,hyperlinks:new c({tag:"hyperlinks",count:!1,childXform:new w}),pageMargins:new V,dataValidations:new x,pageSetup:new Y,headerFooter:new F,printOptions:new T,picture:new U,drawing:new K,sheetProtection:new L,tableParts:new c({tag:"tableParts",count:!0,childXform:new H}),conditionalFormatting:new O,extLst:new Q},$}return f(_,[{key:"prepare",value:function($,ae){var le=this;ae.merges=new s,$.hyperlinks=ae.hyperlinks=[],$.comments=ae.comments=[],ae.formulae={},ae.siFormulae=0,this.map.cols.prepare($.cols,ae),this.map.sheetData.prepare($.rows,ae),this.map.conditionalFormatting.prepare($.conditionalFormattings,ae),$.mergeCells=ae.merges.mergeCells;var ee=$.rels=[];function te(ue){return"rId".concat(ue.length+1)}if($.hyperlinks.forEach(function(ue){var ve=te(ee);ue.rId=ve,ee.push({Id:ve,Type:u.Hyperlink,Target:ue.target,TargetMode:"External"})}),$.comments.length>0){var be={Id:te(ee),Type:u.Comments,Target:"../comments".concat($.id,".xml")};ee.push(be);var ne={Id:te(ee),Type:u.VmlDrawing,Target:"../drawings/vmlDrawing".concat($.id,".vml")};ee.push(ne),$.comments.forEach(function(ue){ue.refAddress=G.decodeAddress(ue.ref)}),ae.commentRefs.push({commentName:"comments".concat($.id),vmlDrawing:"vmlDrawing".concat($.id)})}var B=[],q;$.media.forEach(function(ue){if(ue.type==="background"){var ve=te(ee);q=ae.media[ue.imageId],ee.push({Id:ve,Type:u.Image,Target:"../media/".concat(q.name,".").concat(q.extension)}),$.background={rId:ve},$.image=ae.media[ue.imageId]}else if(ue.type==="image"){var Ge=$.drawing;q=ae.media[ue.imageId],Ge||(Ge=$.drawing={rId:te(ee),name:"drawing".concat(++ae.drawingsCount),anchors:[],rels:[]},ae.drawings.push(Ge),ee.push({Id:Ge.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(Ge.name,".xml")}));var Je=le.preImageId===ue.imageId?B[ue.imageId]:B[Ge.rels.length];Je||(Je=te(Ge.rels),B[Ge.rels.length]=Je,Ge.rels.push({Id:Je,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(q.name,".").concat(q.extension)}));var xe={picture:{rId:Je},range:ue.range};if(ue.hyperlinks&&ue.hyperlinks.hyperlink){var ke=te(Ge.rels);B[Ge.rels.length]=ke,xe.picture.hyperlinks={tooltip:ue.hyperlinks.tooltip,rId:ke},Ge.rels.push({Id:ke,Type:u.Hyperlink,Target:ue.hyperlinks.hyperlink,TargetMode:"External"})}le.preImageId=ue.imageId,Ge.anchors.push(xe)}}),$.tables.forEach(function(ue){var ve=te(ee);ue.rId=ve,ee.push({Id:ve,Type:u.Table,Target:"../tables/".concat(ue.target)}),ue.columns.forEach(function(Ge){var Je=Ge.style;Je&&(Ge.dxfId=ae.styles.addDxfStyle(Je))})}),this.map.extLst.prepare($,ae)}},{key:"render",value:function($,ae){$.openXml(d.StdDocAttributes),$.openNode("worksheet",_.WORKSHEET_ATTRIBUTES);var le=ae.properties?{defaultRowHeight:ae.properties.defaultRowHeight,dyDescent:ae.properties.dyDescent,outlineLevelCol:ae.properties.outlineLevelCol,outlineLevelRow:ae.properties.outlineLevelRow}:void 0;ae.properties&&ae.properties.defaultColWidth&&(le.defaultColWidth=ae.properties.defaultColWidth);var ee={outlineProperties:ae.properties&&ae.properties.outlineProperties,tabColor:ae.properties&&ae.properties.tabColor,pageSetup:ae.pageSetup&&ae.pageSetup.fitToPage?{fitToPage:ae.pageSetup.fitToPage}:void 0},te=ae.pageSetup&&ae.pageSetup.margins,be={showRowColHeaders:ae.pageSetup&&ae.pageSetup.showRowColHeaders,showGridLines:ae.pageSetup&&ae.pageSetup.showGridLines,horizontalCentered:ae.pageSetup&&ae.pageSetup.horizontalCentered,verticalCentered:ae.pageSetup&&ae.pageSetup.verticalCentered},ne=ae.sheetProtection;this.map.sheetPr.render($,ee),this.map.dimension.render($,ae.dimensions),this.map.sheetViews.render($,ae.views),this.map.sheetFormatPr.render($,le),this.map.cols.render($,ae.cols),this.map.sheetData.render($,ae.rows),this.map.sheetProtection.render($,ne),this.map.autoFilter.render($,ae.autoFilter),this.map.mergeCells.render($,ae.mergeCells),this.map.conditionalFormatting.render($,ae.conditionalFormattings),this.map.dataValidations.render($,ae.dataValidations),this.map.hyperlinks.render($,ae.hyperlinks),this.map.printOptions.render($,be),this.map.pageMargins.render($,te),this.map.pageSetup.render($,ae.pageSetup),this.map.headerFooter.render($,ae.headerFooter),this.map.rowBreaks.render($,ae.rowBreaks),this.map.drawing.render($,ae.drawing),this.map.picture.render($,ae.background),this.map.tableParts.render($,ae.tables),this.map.extLst.render($,ae),ae.rels&&ae.rels.forEach(function(B){B.Type===u.VmlDrawing&&$.leafNode("legacyDrawing",{"r:id":B.Id})}),$.closeNode()}},{key:"parseOpen",value:function($){return this.parser?(this.parser.parseOpen($),!0):$.name==="worksheet"?(N.each(this.map,function(ae){ae.reset()}),!0):(this.parser=this.map[$.name],this.parser&&this.parser.parseOpen($),!0)}},{key:"parseText",value:function($){this.parser&&this.parser.parseText($)}},{key:"parseClose",value:function($){if(this.parser)return this.parser.parseClose($)||(this.parser=void 0),!0;switch($){case"worksheet":{var ae=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(ae.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(ae.outlineProperties=this.map.sheetPr.model.outlineProperties);var le={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},ee=Object.assign(le,this.map.pageSetup.model,this.map.printOptions.model),te=se(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:ae,views:this.map.sheetViews.model,pageSetup:ee,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:te},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}default:return!0}}},{key:"reconcile",value:function($,ae){var le=($.relationships||[]).reduce(function(ve,Ge){if(ve[Ge.Id]=Ge,Ge.Type===u.Comments&&($.comments=ae.comments[Ge.Target].comments),Ge.Type===u.VmlDrawing&&$.comments&&$.comments.length){var Je=ae.vmlDrawings[Ge.Target].comments;$.comments.forEach(function(xe,ke){xe.note=Object.assign({},xe.note,Je[ke])})}return ve},{});if(ae.commentsMap=($.comments||[]).reduce(function(ve,Ge){return Ge.ref&&(ve[Ge.ref]=Ge),ve},{}),ae.hyperlinkMap=($.hyperlinks||[]).reduce(function(ve,Ge){return Ge.rId&&(ve[Ge.address]=le[Ge.rId].Target),ve},{}),ae.formulae={},$.rows=$.rows&&$.rows.filter(Boolean)||[],$.rows.forEach(function(ve){ve.cells=ve.cells&&ve.cells.filter(Boolean)||[]}),this.map.cols.reconcile($.cols,ae),this.map.sheetData.reconcile($.rows,ae),this.map.conditionalFormatting.reconcile($.conditionalFormattings,ae),$.media=[],$.drawing){var ee=le[$.drawing.rId],te=ee.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(te){var be=te[1],ne=ae.drawings[be];ne.anchors.forEach(function(ve){if(ve.medium){var Ge={type:"image",imageId:ve.medium.index,range:ve.range,hyperlinks:ve.picture.hyperlinks};$.media.push(Ge)}})}}var B=$.background&&le[$.background.rId];if(B){var q=B.Target.split("/media/")[1],ue=ae.mediaIndex&&ae.mediaIndex[q];ue!==void 0&&$.media.push({type:"background",imageId:ue})}$.tables=($.tables||[]).map(function(ve){var Ge=le[ve.rId];return ae.tables[Ge.Target]}),delete $.relationships,delete $.hyperlinks,delete $.comments}}]),_}(h);he.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},i.exports=he},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c}return f(s,[{key:"render",value:function(c,W){W&&(c.openNode(this.tag),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),s}(N);i.exports=G},{"../base-xform":31}],116:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c._format=h.format||function(W){try{return Number.isNaN(W.getTime())?"":W.toISOString()}catch{return""}},c._parse=h.parse||function(W){return new Date(W)},c}return f(s,[{key:"render",value:function(c,W){W&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,this._format(W)):c.writeText(this._format(W)),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.attr?this.model=this._parse(c.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],117:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c.zero=h.zero,c}return f(s,[{key:"render",value:function(c,W){(W||this.zero)&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,W):c.writeText(W),c.closeNode())}},{key:"parseOpen",value:function(c){return c.name===this.tag?(this.attr?this.model=parseInt(c.attributes[this.attr],10):this.text=[],!0):!1}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],118:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.tag=h.tag,c.attr=h.attr,c.attrs=h.attrs,c}return f(s,[{key:"render",value:function(c,W){W!==void 0&&(c.openNode(this.tag),this.attrs&&c.addAttributes(this.attrs),this.attr?c.addAttribute(this.attr,W):c.writeText(W),c.closeNode())}},{key:"parseOpen",value:function(c){c.name===this.tag&&(this.attr?this.model=c.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(c){this.attr||this.text.push(c)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),s}(N);i.exports=G},{"../base-xform":31}],119:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./base-xform"),G=t("../../utils/xml-stream");function d(s,h){s.openNode(h.tag,h.$),h.c&&h.c.forEach(function(c){d(s,c)}),h.t&&s.writeText(h.t),s.closeNode()}var u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M._model=W,M}return f(c,[{key:"render",value:function(M){if(!this._xml){var I=new G;d(I,this._model),this._xml=I.xml}M.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(M){switch(M){case this._model.tag:return!1;default:return!0}}}]),c}(N);i.exports=u},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./text-xform"),G=t("./rich-text-xform"),d=t("../base-xform"),u=function(s){v(c,s);var h=Z(c);function c(){var W;return o(this,c),W=h.call(this),W.map={r:new G,t:new N},W}return f(c,[{key:"render",value:function(M,I){if(M.openNode(this.tag,{sb:I.sb||0,eb:I.eb||0}),I&&I.hasOwnProperty("richText")&&I.richText){var w=this.map.r;I.richText.forEach(function(C){w.render(M,C)})}else I&&this.map.t.render(M,I.text);M.closeNode()}},{key:"parseOpen",value:function(M){var I=M.name;return this.parser?(this.parser.parseOpen(M),!0):I===this.tag?(this.model={sb:parseInt(M.attributes.sb,10),eb:parseInt(M.attributes.eb,10)},!0):(this.parser=this.map[I],this.parser?(this.parser.parseOpen(M),!0):!1)}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser){if(!this.parser.parseClose(M)){switch(M){case"r":{var I=this.model.richText;I||(I=this.model.richText=[]),I.push(this.parser.model);break}case"t":this.model.text=this.parser.model;break}this.parser=void 0}return!0}switch(M){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),c}(d);i.exports=u},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("./text-xform"),G=t("../style/font-xform"),d=t("../base-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.model=W,M}return f(c,[{key:"render",value:function(M,I){I=I||this.model,M.openNode("r"),I.font&&this.fontXform.render(M,I.font),this.textXform.render(M,I.text),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(M),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(M),!0;default:return!1}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){switch(M){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(M),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new N)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new G(c.FONT_OPTIONS))}}]),c}(d);u.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},i.exports=u},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(t,i,a){function l(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(W){return typeof W}:l=function(W){return W&&typeof Symbol=="function"&&W.constructor===Symbol&&W!==Symbol.prototype?"symbol":typeof W},l(h)}function o(h,c){if(!(h instanceof c))throw new TypeError("Cannot call a class as a function")}function r(h,c){for(var W=0;W"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(h){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(W){return W.__proto__||Object.getPrototypeOf(W)},m(h)}var N=t("./text-xform"),G=t("./rich-text-xform"),d=t("./phonetic-text-xform"),u=t("../base-xform"),s=function(h){v(W,h);var c=Z(W);function W(M){var I;return o(this,W),I=c.call(this),I.model=M,I.map={r:new G,t:new N,rPh:new d},I}return f(W,[{key:"render",value:function(I,w){var C=this;I.openNode(this.tag),w&&w.hasOwnProperty("richText")&&w.richText?w.richText.length?w.richText.forEach(function(x){C.map.r.render(I,x)}):this.map.t.render(I,""):w!=null&&this.map.t.render(I,w),I.closeNode()}},{key:"parseOpen",value:function(I){var w=I.name;return this.parser?(this.parser.parseOpen(I),!0):w===this.tag?(this.model={},!0):(this.parser=this.map[w],this.parser?(this.parser.parseOpen(I),!0):!1)}},{key:"parseText",value:function(I){this.parser&&this.parser.parseText(I)}},{key:"parseClose",value:function(I){if(this.parser){if(!this.parser.parseClose(I)){switch(I){case"r":{var w=this.model.richText;w||(w=this.model.richText=[]),w.push(this.parser.model);break}case"t":this.model=this.parser.model;break}this.parser=void 0}return!0}switch(I){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),W}(u);i.exports=s},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../../../utils/xml-stream"),G=t("../base-xform"),d=t("./shared-string-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.model=W||{values:[],count:0},M.hash=Object.create(null),M.rich=Object.create(null),M}return f(c,[{key:"getString",value:function(M){return this.model.values[M]}},{key:"add",value:function(M){return M.richText?this.addRichText(M):this.addText(M)}},{key:"addText",value:function(M){var I=this.hash[M];return I===void 0&&(I=this.hash[M]=this.model.values.length,this.model.values.push(M)),this.model.count++,I}},{key:"addRichText",value:function(M){var I=this.sharedStringXform.toXml(M),w=this.rich[I];return w===void 0&&(w=this.rich[I]=this.model.values.length,this.model.values.push(M)),this.model.count++,w}},{key:"render",value:function(M,I){I=I||this._values,M.openXml(N.StdDocAttributes),M.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:I.count,uniqueCount:I.values.length});var w=this.sharedStringXform;I.values.forEach(function(C){w.render(M,C)}),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(M),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(M)))}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){if(this.parser)return this.parser.parseClose(M)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(M){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(M))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new d)}},{key:"values",get:function(){return this.model.values}},{key:"uniqueCount",get:function(){return this.model.values.length}},{key:"count",get:function(){return this.model.count}}]),c}(G);i.exports=u},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){c.openNode("t"),/^\s|\n|\s$/.test(W)&&c.addAttribute("xml:space","preserve"),c.writeText(W),c.closeNode()}},{key:"parseOpen",value:function(c){switch(c.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(c){this._text.push(c)}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"t"}},{key:"model",get:function(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,function(c,W){return String.fromCharCode(parseInt(W,16))})}}]),s}(N);i.exports=G},{"../base-xform":31}],125:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../doc/enums"),G=t("../../../utils/utils"),d=t("../base-xform"),u={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(function(c,W){return c[W]=!0,c},{}),horizontal:function(W){return this.horizontalValues[W]?W:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(function(c,W){return c[W]=!0,c},{}),vertical:function(W){return W==="middle"?"center":this.verticalValues[W]?W:void 0},wrapText:function(W){return W?!0:void 0},shrinkToFit:function(W){return W?!0:void 0},textRotation:function(W){switch(W){case"vertical":return W;default:return W=G.validInt(W),W>=-90&&W<=90?W:void 0}},indent:function(W){return W=G.validInt(W),Math.max(0,W)},readingOrder:function(W){switch(W){case"ltr":return N.ReadingOrder.LeftToRight;case"rtl":return N.ReadingOrder.RightToLeft;default:return}}},s={toXml:function(W){if(W=u.textRotation(W),W){if(W==="vertical")return 255;var M=Math.round(W);if(M>=0&&M<=90)return M;if(M<0&&M>=-90)return 90-M}},toModel:function(W){var M=G.validInt(W);if(M!==void 0){if(M===255)return"vertical";if(M>=0&&M<=90)return M;if(M>90&&M<=180)return 90-M}}},h=function(c){v(M,c);var W=Z(M);function M(){return o(this,M),W.apply(this,arguments)}return f(M,[{key:"render",value:function(w,C){w.addRollback(),w.openNode("alignment");var x=!1;function R(g,S){S&&(w.addAttribute(g,S),x=!0)}R("horizontal",u.horizontal(C.horizontal)),R("vertical",u.vertical(C.vertical)),R("wrapText",u.wrapText(C.wrapText)?"1":!1),R("shrinkToFit",u.shrinkToFit(C.shrinkToFit)?"1":!1),R("indent",u.indent(C.indent)),R("textRotation",s.toXml(C.textRotation)),R("readingOrder",u.readingOrder(C.readingOrder)),w.closeNode(),x?w.commit():w.rollback()}},{key:"parseOpen",value:function(w){var C={},x=!1;function R(g,S,L){g&&(C[S]=L,x=!0)}R(w.attributes.horizontal,"horizontal",w.attributes.horizontal),R(w.attributes.vertical,"vertical",w.attributes.vertical==="center"?"middle":w.attributes.vertical),R(w.attributes.wrapText,"wrapText",!!w.attributes.wrapText),R(w.attributes.shrinkToFit,"shrinkToFit",!!w.attributes.shrinkToFit),R(w.attributes.indent,"indent",parseInt(w.attributes.indent,10)),R(w.attributes.textRotation,"textRotation",s.toModel(w.attributes.textRotation)),R(w.attributes.readingOrder,"readingOrder",w.attributes.readingOrder==="2"?"rtl":"ltr"),this.model=x?C:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),M}(d);i.exports=h},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(t,i,a){function l(W,M){var I=Object.keys(W);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(W);M&&(w=w.filter(function(C){return Object.getOwnPropertyDescriptor(W,C).enumerable})),I.push.apply(I,w)}return I}function o(W){for(var M=1;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(W){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},d(W)}var u=t("../base-xform"),s=t("./color-xform"),h=function(W){p(I,W);var M=X(I);function I(w){var C;return v(this,I),C=M.call(this),C.name=w,C.map={color:new s},C}return Z(I,[{key:"render",value:function(C,x,R){var g=x&&x.color||R||this.defaultColor;C.openNode(this.name),x&&x.style&&(C.addAttribute("style",x.style),g&&this.map.color.render(C,g)),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.name:{var x=C.attributes.style;return x?this.model={style:x}:this.model=void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.parser=void 0),!0):(C===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(C){return I.validStyleValues[C]}},{key:"tag",get:function(){return this.name}}]),I}(u);h.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(function(W,M){return W[M]=!0,W},{});var c=function(W){p(I,W);var M=X(I);function I(){var w;return v(this,I),w=M.call(this),w.map={top:new h("top"),left:new h("left"),bottom:new h("bottom"),right:new h("right"),diagonal:new h("diagonal")},w}return Z(I,[{key:"render",value:function(C,x){var R=x.color;C.openNode("border"),x.diagonal&&x.diagonal.style&&(x.diagonal.up&&C.addAttribute("diagonalUp","1"),x.diagonal.down&&C.addAttribute("diagonalDown","1"));function g(S,L){S&&!S.color&&x.color&&(S=o(o({},S),{},{color:x.color})),L.render(C,S,R)}g(x.left,this.map.left),g(x.right,this.map.right),g(x.top,this.map.top),g(x.bottom,this.map.bottom),g(x.diagonal,this.map.diagonal),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"border":return this.reset(),this.diagonalUp=!!C.attributes.diagonalUp,this.diagonalDown=!!C.attributes.diagonalDown,!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;if(C==="border"){var x=this.model={},R=function(S,L,V){L&&(V&&Object.assign(L,V),x[S]=L)};R("left",this.map.left.model),R("right",this.map.right.model),R("top",this.map.top.model),R("bottom",this.map.bottom.model),R("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),I}(u);i.exports=c},{"../base-xform":31,"./color-xform":127}],127:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.name=h||"color",c}return f(s,[{key:"render",value:function(c,W){return W?(c.openNode(this.name),W.argb?c.addAttribute("rgb",W.argb):W.theme!==void 0?(c.addAttribute("theme",W.theme),W.tint!==void 0&&c.addAttribute("tint",W.tint)):W.indexed!==void 0?c.addAttribute("indexed",W.indexed):c.addAttribute("auto","1"),c.closeNode(),!0):!1}},{key:"parseOpen",value:function(c){return c.name===this.name?(c.attributes.rgb?this.model={argb:c.attributes.rgb}:c.attributes.theme?(this.model={theme:parseInt(c.attributes.theme,10)},c.attributes.tint&&(this.model.tint=parseFloat(c.attributes.tint))):c.attributes.indexed?this.model={indexed:parseInt(c.attributes.indexed,10)}:this.model=void 0,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this.name}}]),s}(N);i.exports=G},{"../base-xform":31}],128:[function(t,i,a){function l(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(w){return typeof w}:l=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},l(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("../base-xform"),G=t("./alignment-xform"),d=t("./border-xform"),u=t("./fill-xform"),s=t("./font-xform"),h=t("./numfmt-xform"),c=t("./protection-xform"),W=function(M){v(w,M);var I=Z(w);function w(){var C;return o(this,w),C=I.call(this),C.map={alignment:new G,border:new d,fill:new u,font:new s,numFmt:new h,protection:new c},C}return f(w,[{key:"render",value:function(x,R){x.openNode(this.tag),R.font&&this.map.font.render(x,R.font),R.numFmt&&this.map.numFmt.render(x,R.numFmt),R.fill&&this.map.fill.render(x,R.fill),R.alignment&&this.map.alignment.render(x,R.alignment),R.border&&this.map.border.render(x,R.border),R.protection&&this.map.protection.render(x,R.protection),x.closeNode()}},{key:"parseOpen",value:function(x){if(this.parser)return this.parser.parseOpen(x),!0;switch(x.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[x.name],this.parser&&this.parser.parseOpen(x),!0}}},{key:"parseText",value:function(x){this.parser&&this.parser.parseText(x)}},{key:"parseClose",value:function(x){return this.parser?(this.parser.parseClose(x)||(this.parser=void 0),!0):x===this.tag?(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1):!0}},{key:"tag",get:function(){return"dxf"}}]),w}(N);i.exports=W},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../base-xform"),G=t("./color-xform"),d=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={color:new G},I}return f(M,[{key:"render",value:function(w,C){w.openNode("stop"),w.addAttribute("position",C.position),this.map.color.render(w,C.color),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"stop":return this.model={position:parseFloat(w.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(w),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model.color=this.parser.model,this.parser=void 0),!0):!1}},{key:"tag",get:function(){return"stop"}}]),M}(N),u=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={fgColor:new G("fgColor"),bgColor:new G("bgColor")},I}return f(M,[{key:"render",value:function(w,C){w.openNode("patternFill"),w.addAttribute("patternType",C.pattern),C.fgColor&&this.map.fgColor.render(w,C.fgColor),C.bgColor&&this.map.bgColor.render(w,C.bgColor),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"patternFill":return this.model={type:"pattern",pattern:w.attributes.patternType},!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.parser.model&&(this.model[w]=this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"pattern"}},{key:"tag",get:function(){return"patternFill"}}]),M}(N),s=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={stop:new d},I}return f(M,[{key:"render",value:function(w,C){switch(w.openNode("gradientFill"),C.gradient){case"angle":w.addAttribute("degree",C.degree);break;case"path":w.addAttribute("type","path"),C.center.left&&(w.addAttribute("left",C.center.left),C.center.right===void 0&&w.addAttribute("right",C.center.left)),C.center.right&&w.addAttribute("right",C.center.right),C.center.top&&(w.addAttribute("top",C.center.top),C.center.bottom===void 0&&w.addAttribute("bottom",C.center.top)),C.center.bottom&&w.addAttribute("bottom",C.center.bottom);break}var x=this.map.stop;C.stops.forEach(function(R){x.render(w,R)}),w.closeNode()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"gradientFill":{var C=this.model={stops:[]};return w.attributes.degree?(C.gradient="angle",C.degree=parseInt(w.attributes.degree,10)):w.attributes.type==="path"&&(C.gradient="path",C.center={left:w.attributes.left?parseFloat(w.attributes.left):0,top:w.attributes.top?parseFloat(w.attributes.top):0},w.attributes.right!==w.attributes.left&&(C.center.right=w.attributes.right?parseFloat(w.attributes.right):0),w.attributes.bottom!==w.attributes.top&&(C.center.bottom=w.attributes.bottom?parseFloat(w.attributes.bottom):0)),!0}case"stop":return this.parser=this.map.stop,this.parser.parseOpen(w),!0;default:return!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"gradient"}},{key:"tag",get:function(){return"gradientFill"}}]),M}(N),h=function(c){v(M,c);var W=Z(M);function M(){var I;return o(this,M),I=W.call(this),I.map={patternFill:new u,gradientFill:new s},I}return f(M,[{key:"render",value:function(w,C){switch(w.addRollback(),w.openNode("fill"),C.type){case"pattern":this.map.patternFill.render(w,C);break;case"gradient":this.map.gradientFill.render(w,C);break;default:w.rollback();return}w.closeNode(),w.commit()}},{key:"parseOpen",value:function(w){if(this.parser)return this.parser.parseOpen(w),!0;switch(w.name){case"fill":return this.model={},!0;default:return this.parser=this.map[w.name],this.parser?(this.parser.parseOpen(w),!0):!1}}},{key:"parseText",value:function(w){this.parser&&this.parser.parseText(w)}},{key:"parseClose",value:function(w){return this.parser?(this.parser.parseClose(w)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0):!1}},{key:"validStyle",value:function(w){return M.validPatternValues[w]}},{key:"tag",get:function(){return"fill"}}]),M}(N);h.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(function(c,W){return c[W]=!0,c},{}),h.StopXform=d,h.PatternFillXform=u,h.GradientFillXform=s,i.exports=h},{"../base-xform":31,"./color-xform":127}],130:[function(t,i,a){function l(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(w){return typeof w}:l=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},l(M)}function o(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function r(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(M){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},m(M)}var N=t("./color-xform"),G=t("../simple/boolean-xform"),d=t("../simple/integer-xform"),u=t("../simple/string-xform"),s=t("./underline-xform"),h=t("../../../utils/under-dash"),c=t("../base-xform"),W=function(M){v(w,M);var I=Z(w);function w(C){var x;return o(this,w),x=I.call(this),x.options=C||w.OPTIONS,x.map={b:{prop:"bold",xform:new G({tag:"b",attr:"val"})},i:{prop:"italic",xform:new G({tag:"i",attr:"val"})},u:{prop:"underline",xform:new s},charset:{prop:"charset",xform:new d({tag:"charset",attr:"val"})},color:{prop:"color",xform:new N},condense:{prop:"condense",xform:new G({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new G({tag:"extend",attr:"val"})},family:{prop:"family",xform:new d({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new G({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new u({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new u({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new G({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new G({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new d({tag:"sz",attr:"val"})}},x.map[x.options.fontNameTag]={prop:"name",xform:new u({tag:x.options.fontNameTag,attr:"val"})},x}return f(w,[{key:"render",value:function(x,R){var g=this.map;x.openNode(this.options.tagName),h.each(this.map,function(S,L){g[L].xform.render(x,R[S.prop])}),x.closeNode()}},{key:"parseOpen",value:function(x){if(this.parser)return this.parser.parseOpen(x),!0;if(this.map[x.name])return this.parser=this.map[x.name].xform,this.parser.parseOpen(x);switch(x.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(x){this.parser&&this.parser.parseText(x)}},{key:"parseClose",value:function(x){if(this.parser&&!this.parser.parseClose(x)){var R=this.map[x];return this.parser.model&&(this.model[R.prop]=this.parser.model),this.parser=void 0,!0}switch(x){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),w}(c);W.OPTIONS={tagName:"font",fontNameTag:"name"},i.exports=W},{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(t,i,a){function l(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(M){return typeof M}:l=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},l(c)}function o(c,W){if(!(c instanceof W))throw new TypeError("Cannot call a class as a function")}function r(c,W){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(c){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},m(c)}var N=t("../../../utils/under-dash"),G=t("../../defaultnumformats"),d=t("../base-xform");function u(){var c={};return N.each(G,function(W,M){W.f&&(c[W.f]=parseInt(M,10))}),c}var s=u(),h=function(c){v(M,c);var W=Z(M);function M(I,w){var C;return o(this,M),C=W.call(this),C.id=I,C.formatCode=w,C}return f(M,[{key:"render",value:function(w,C){w.leafNode("numFmt",{numFmtId:C.id,formatCode:C.formatCode})}},{key:"parseOpen",value:function(w){switch(w.name){case"numFmt":return this.model={id:parseInt(w.attributes.numFmtId,10),formatCode:w.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"numFmt"}}]),M}(d);h.getDefaultFmtId=function(W){return s[W]},h.getDefaultFmtCode=function(W){return G[W]&&G[W].f},i.exports=h},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G={boolean:function(s,h){return s===void 0?h:s}},d=function(u){v(h,u);var s=Z(h);function h(){return o(this,h),s.apply(this,arguments)}return f(h,[{key:"render",value:function(W,M){W.addRollback(),W.openNode("protection");var I=!1;function w(C,x){x!==void 0&&(W.addAttribute(C,x),I=!0)}w("locked",G.boolean(M.locked,!0)?void 0:"0"),w("hidden",G.boolean(M.hidden,!1)?"1":void 0),W.closeNode(),I?W.commit():W.rollback()}},{key:"parseOpen",value:function(W){var M={locked:W.attributes.locked!=="0",hidden:W.attributes.hidden==="1"},I=!M.locked||M.hidden;this.model=I?M:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),h}(N);i.exports=d},{"../base-xform":31}],133:[function(t,i,a){function l(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(c){return typeof c}:l=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},l(s)}function o(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function r(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(s){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},m(s)}var N=t("../base-xform"),G=t("./alignment-xform"),d=t("./protection-xform"),u=function(s){v(c,s);var h=Z(c);function c(W){var M;return o(this,c),M=h.call(this),M.xfId=!!(W&&W.xfId),M.map={alignment:new G,protection:new d},M}return f(c,[{key:"render",value:function(M,I){M.openNode("xf",{numFmtId:I.numFmtId||0,fontId:I.fontId||0,fillId:I.fillId||0,borderId:I.borderId||0}),this.xfId&&M.addAttribute("xfId",I.xfId||0),I.numFmtId&&M.addAttribute("applyNumberFormat","1"),I.fontId&&M.addAttribute("applyFont","1"),I.fillId&&M.addAttribute("applyFill","1"),I.borderId&&M.addAttribute("applyBorder","1"),I.alignment&&M.addAttribute("applyAlignment","1"),I.protection&&M.addAttribute("applyProtection","1"),I.alignment&&this.map.alignment.render(M,I.alignment),I.protection&&this.map.protection.render(M,I.protection),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;switch(M.name){case"xf":return this.model={numFmtId:parseInt(M.attributes.numFmtId,10),fontId:parseInt(M.attributes.fontId,10),fillId:parseInt(M.attributes.fillId,10),borderId:parseInt(M.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(M.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(M),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(M),!0;default:return!1}}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){return this.parser?(this.parser.parseClose(M)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):M!=="xf"}},{key:"tag",get:function(){return"xf"}}]),c}(N);i.exports=u},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(t,i,a){function l(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(L){return typeof L}:l=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},l(g)}function o(g,S){if(!(g instanceof S))throw new TypeError("Cannot call a class as a function")}function r(g,S){for(var L=0;L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(g){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},m(g)}var N=t("../../../doc/enums"),G=t("../../../utils/xml-stream"),d=t("../base-xform"),u=t("../static-xform"),s=t("../list-xform"),h=t("./font-xform"),c=t("./fill-xform"),W=t("./border-xform"),M=t("./numfmt-xform"),I=t("./style-xform"),w=t("./dxf-xform"),C=164,x=function(g){v(L,g);var S=Z(L);function L(V){var Y;return o(this,L),Y=S.call(this),Y.map={numFmts:new s({tag:"numFmts",count:!0,childXform:new M}),fonts:new s({tag:"fonts",count:!0,childXform:new h,$:{"x14ac:knownFonts":1}}),fills:new s({tag:"fills",count:!0,childXform:new c}),borders:new s({tag:"borders",count:!0,childXform:new W}),cellStyleXfs:new s({tag:"cellStyleXfs",count:!0,childXform:new I}),cellXfs:new s({tag:"cellXfs",count:!0,childXform:new I({xfId:!0})}),dxfs:new s({tag:"dxfs",always:!0,count:!0,childXform:new w}),numFmt:new M,font:new h,fill:new c,border:new W,style:new I({xfId:!0}),cellStyles:L.STATIC_XFORMS.cellStyles,tableStyles:L.STATIC_XFORMS.tableStyles,extLst:L.STATIC_XFORMS.extLst},V&&Y.init(),Y}return f(L,[{key:"initIndex",value:function(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}},{key:"init",value:function(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}},{key:"render",value:function(Y,T){T=T||this.model,Y.openXml(G.StdDocAttributes),Y.openNode("styleSheet",L.STYLESHEET_ATTRIBUTES),this.index?(T.numFmts&&T.numFmts.length&&(Y.openNode("numFmts",{count:T.numFmts.length}),T.numFmts.forEach(function(J){Y.writeXml(J)}),Y.closeNode()),T.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),Y.openNode("fonts",{count:T.fonts.length,"x14ac:knownFonts":1}),T.fonts.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),Y.openNode("fills",{count:T.fills.length}),T.fills.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),Y.openNode("borders",{count:T.borders.length}),T.borders.forEach(function(J){Y.writeXml(J)}),Y.closeNode(),this.map.cellStyleXfs.render(Y,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),Y.openNode("cellXfs",{count:T.styles.length}),T.styles.forEach(function(J){Y.writeXml(J)}),Y.closeNode()):(this.map.numFmts.render(Y,T.numFmts),this.map.fonts.render(Y,T.fonts),this.map.fills.render(Y,T.fills),this.map.borders.render(Y,T.borders),this.map.cellStyleXfs.render(Y,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(Y,T.styles)),L.STATIC_XFORMS.cellStyles.render(Y),this.map.dxfs.render(Y,T.dxfs),L.STATIC_XFORMS.tableStyles.render(Y),L.STATIC_XFORMS.extLst.render(Y),Y.closeNode()}},{key:"parseOpen",value:function(Y){if(this.parser)return this.parser.parseOpen(Y),!0;switch(Y.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[Y.name],this.parser&&this.parser.parseOpen(Y),!0}}},{key:"parseText",value:function(Y){this.parser&&this.parser.parseText(Y)}},{key:"parseClose",value:function(Y){var T=this;if(this.parser)return this.parser.parseClose(Y)||(this.parser=void 0),!0;switch(Y){case"styleSheet":{this.model={};var J=function(H,k){k.model&&k.model.length&&(T.model[H]=k.model)};if(J("numFmts",this.map.numFmts),J("fonts",this.map.fonts),J("fills",this.map.fills),J("borders",this.map.borders),J("styles",this.map.cellXfs),J("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var U=this.index.numFmt;this.model.numFmts.forEach(function(K){U[K.id]=K.formatCode})}return!1}default:return!0}}},{key:"addStyleModel",value:function(Y,T){if(!Y)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(Y))return this.weakMap.get(Y);var J={};if(T=T||N.ValueType.Number,Y.numFmt)J.numFmtId=this._addNumFmtStr(Y.numFmt);else switch(T){case N.ValueType.Number:J.numFmtId=this._addNumFmtStr("General");break;case N.ValueType.Date:J.numFmtId=this._addNumFmtStr("mm-dd-yy");break}Y.font&&(J.fontId=this._addFont(Y.font)),Y.border&&(J.borderId=this._addBorder(Y.border)),Y.fill&&(J.fillId=this._addFill(Y.fill)),Y.alignment&&(J.alignment=Y.alignment),Y.protection&&(J.protection=Y.protection);var U=this._addStyle(J);return this.weakMap&&this.weakMap.set(Y,U),U}},{key:"getStyleModel",value:function(Y){var T=this.model.styles[Y];if(!T)return null;var J=this.index.model[Y];if(J)return J;if(J=this.index.model[Y]={},T.numFmtId){var U=this.index.numFmt[T.numFmtId]||M.getDefaultFmtCode(T.numFmtId);U&&(J.numFmt=U)}function K(H,k,F){if(F||F===0){var O=k[F];O&&(J[H]=O)}}return K("font",this.model.fonts,T.fontId),K("border",this.model.borders,T.borderId),K("fill",this.model.fills,T.fillId),T.alignment&&(J.alignment=T.alignment),T.protection&&(J.protection=T.protection),J}},{key:"addDxfStyle",value:function(Y){return this.model.dxfs.push(Y),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(Y){return this.model.dxfs[Y]}},{key:"_addStyle",value:function(Y){var T=this.map.style.toXml(Y),J=this.index.style[T];return J===void 0&&(J=this.index.style[T]=this.model.styles.length,this.model.styles.push(T)),J}},{key:"_addNumFmtStr",value:function(Y){var T=M.getDefaultFmtId(Y);if(T!==void 0||(T=this.index.numFmt[Y],T!==void 0))return T;T=this.index.numFmt[Y]=C+this.model.numFmts.length;var J=this.map.numFmt.toXml({id:T,formatCode:Y});return this.model.numFmts.push(J),T}},{key:"_addFont",value:function(Y){var T=this.map.font.toXml(Y),J=this.index.font[T];return J===void 0&&(J=this.index.font[T]=this.model.fonts.length,this.model.fonts.push(T)),J}},{key:"_addBorder",value:function(Y){var T=this.map.border.toXml(Y),J=this.index.border[T];return J===void 0&&(J=this.index.border[T]=this.model.borders.length,this.model.borders.push(T)),J}},{key:"_addFill",value:function(Y){var T=this.map.fill.toXml(Y),J=this.index.fill[T];return J===void 0&&(J=this.index.fill[T]=this.model.fills.length,this.model.fills.push(T)),J}}]),L}(d);x.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},x.STATIC_XFORMS={cellStyles:new u({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new u({tag:"dxfs",$:{count:0}}),tableStyles:new u({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new u({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})};var R=function(g){v(L,g);var S=Z(L);function L(){var V;return o(this,L),V=S.call(this),V.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]},V}return f(L,[{key:"parseStream",value:function(Y){return Y.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(Y,T){switch(T){case N.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var Y={numFmtId:M.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(Y)}return this._dateStyleId}}]),L}(x);x.Mock=R,i.exports=x},{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(h){var c;return o(this,s),c=u.call(this),c.model=h,c}return f(s,[{key:"render",value:function(c,W){if(W=W||this.model,W===!0)c.leafNode("u");else{var M=s.Attributes[W];M&&c.leafNode("u",M)}}},{key:"parseOpen",value:function(c){c.name==="u"&&(this.model=c.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),s}(N);G.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},i.exports=G},{"../base-xform":31}],136:[function(t,i,a){function l(u){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(h){return typeof h}:l=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},l(u)}function o(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")}function r(u,s){for(var h=0;h"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(u){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(h){return h.__proto__||Object.getPrototypeOf(h)},m(u)}var N=t("../base-xform"),G=t("./filter-column-xform"),d=function(u){v(h,u);var s=Z(h);function h(){var c;return o(this,h),c=s.call(this),c.map={filterColumn:new G},c}return f(h,[{key:"prepare",value:function(W){var M=this;W.columns.forEach(function(I,w){M.map.filterColumn.prepare(I,{index:w})})}},{key:"render",value:function(W,M){var I=this;return W.openNode(this.tag,{ref:M.autoFilterRef}),M.columns.forEach(function(w){I.map.filterColumn.render(W,w)}),W.closeNode(),!0}},{key:"parseOpen",value:function(W){if(this.parser)return this.parser.parseOpen(W),!0;switch(W.name){case this.tag:return this.model={autoFilterRef:W.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[W.name],this.parser)return this.parseOpen(W),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(W)))}}},{key:"parseText",value:function(W){this.parser&&this.parser.parseText(W)}},{key:"parseClose",value:function(W){if(this.parser)return this.parser.parseClose(W)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(W){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(W))}}},{key:"tag",get:function(){return"autoFilter"}}]),h}(N);i.exports=d},{"../base-xform":31,"./filter-column-xform":137}],137:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){c.colId=W.index.toString()}},{key:"render",value:function(c,W){return c.leafNode(this.tag,{colId:W.colId,hiddenButton:W.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={filterButton:W.hiddenButton==="0"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),s}(N);i.exports=G},{"../base-xform":31}],138:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"prepare",value:function(c,W){c.id=W.index+1}},{key:"render",value:function(c,W){return c.leafNode(this.tag,{id:W.id.toString(),name:W.name,totalsRowLabel:W.totalsRowLabel,totalsRowFunction:W.totalsRowFunction,dxfId:W.dxfId}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={name:W.name,totalsRowLabel:W.totalsRowLabel,totalsRowFunction:W.totalsRowFunction,dxfId:W.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),s}(N);i.exports=G},{"../base-xform":31}],139:[function(t,i,a){function l(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(s){return typeof s}:l=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},l(d)}function o(d,u){if(!(d instanceof u))throw new TypeError("Cannot call a class as a function")}function r(d,u){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function m(d){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(s){return s.__proto__||Object.getPrototypeOf(s)},m(d)}var N=t("../base-xform"),G=function(d){v(s,d);var u=Z(s);function s(){return o(this,s),u.apply(this,arguments)}return f(s,[{key:"render",value:function(c,W){return c.leafNode(this.tag,{name:W.theme?W.theme:void 0,showFirstColumn:W.showFirstColumn?"1":"0",showLastColumn:W.showLastColumn?"1":"0",showRowStripes:W.showRowStripes?"1":"0",showColumnStripes:W.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(c){if(c.name===this.tag){var W=c.attributes;return this.model={theme:W.name?W.name:null,showFirstColumn:W.showFirstColumn==="1",showLastColumn:W.showLastColumn==="1",showRowStripes:W.showRowStripes==="1",showColumnStripes:W.showColumnStripes==="1"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),s}(N);i.exports=G},{"../base-xform":31}],140:[function(t,i,a){function l(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(x){return typeof x}:l=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},l(w)}function o(w,C){var x=Object.keys(w);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(w);C&&(R=R.filter(function(g){return Object.getOwnPropertyDescriptor(w,g).enumerable})),x.push.apply(x,R)}return x}function r(w){for(var C=1;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(w){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(x){return x.__proto__||Object.getPrototypeOf(x)},d(w)}var u=t("../../../utils/xml-stream"),s=t("../base-xform"),h=t("../list-xform"),c=t("./auto-filter-xform"),W=t("./table-column-xform"),M=t("./table-style-info-xform"),I=function(w){p(x,w);var C=X(x);function x(){var R;return v(this,x),R=C.call(this),R.map={autoFilter:new c,tableColumns:new h({tag:"tableColumns",count:!0,empty:!0,childXform:new W}),tableStyleInfo:new M},R}return Z(x,[{key:"prepare",value:function(g,S){this.map.autoFilter.prepare(g),this.map.tableColumns.prepare(g.columns,S)}},{key:"render",value:function(g,S){g.openXml(u.StdDocAttributes),g.openNode(this.tag,r(r({},x.TABLE_ATTRIBUTES),{},{id:S.id,name:S.name,displayName:S.displayName||S.name,ref:S.tableRef,totalsRowCount:S.totalsRow?"1":void 0,totalsRowShown:S.totalsRow?void 0:"1",headerRowCount:S.headerRow?"1":"0"})),this.map.autoFilter.render(g,S),this.map.tableColumns.render(g,S.columns),this.map.tableStyleInfo.render(g,S.style),g.closeNode()}},{key:"parseOpen",value:function(g){if(this.parser)return this.parser.parseOpen(g),!0;var S=g.name,L=g.attributes;switch(S){case this.tag:this.reset(),this.model={name:L.name,displayName:L.displayName||L.name,tableRef:L.ref,totalsRow:L.totalsRowCount==="1",headerRow:L.headerRowCount==="1"};break;default:this.parser=this.map[g.name],this.parser&&this.parser.parseOpen(g);break}return!0}},{key:"parseText",value:function(g){this.parser&&this.parser.parseText(g)}},{key:"parseClose",value:function(g){var S=this;if(this.parser)return this.parser.parseClose(g)||(this.parser=void 0),!0;switch(g){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach(function(L,V){S.model.columns[V].filterButton=L.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(g,S){g.columns.forEach(function(L){L.dxfId!==void 0&&(L.style=S.styles.getDxfStyle(L.dxfId))})}},{key:"tag",get:function(){return"table"}}]),x}(s);I.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},i.exports=I},{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(t,i,a){(function(l,o){function r(K,H,k,F,O,Q,oe){try{var se=K[Q](oe),he=se.value}catch(pe){k(pe);return}se.done?H(he):Promise.resolve(he).then(F,O)}function f(K){return function(){var H=this,k=arguments;return new Promise(function(F,O){var Q=K.apply(H,k);function oe(he){r(Q,F,O,oe,se,"next",he)}function se(he){r(Q,F,O,oe,se,"throw",he)}oe(void 0)})}}function v(K,H){if(!(K instanceof H))throw new TypeError("Cannot call a class as a function")}function b(K,H){for(var k=0;k=1)){_.next=6;break}return he=oe.substr(se+1),pe=oe.substr(0,se),_.next=6,new Promise(function(E,$){var ae=new d;ae.on("finish",function(){Q.mediaIndex[oe]=Q.media.length,Q.mediaIndex[pe]=Q.media.length;var le={type:"image",name:pe,extension:he,buffer:ae.toBuffer()};Q.media.push(le),E()}),O.on("error",function(le){$(le)}),O.pipe(ae)});case 6:case"end":return _.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processDrawingEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new S,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.drawings[oe]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processDrawingRelsEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new w,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.drawingRels[oe]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processVmlDrawingEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){var se,he;return regeneratorRuntime.wrap(function(re){for(;;)switch(re.prev=re.next){case 0:return se=new Y,re.next=3,se.parseStream(O);case 3:he=re.sent,Q.vmlDrawings["../drawings/".concat(oe,".vml")]=he;case 5:case"end":return re.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"_processThemeEntry",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q,oe){return regeneratorRuntime.wrap(function(he){for(;;)switch(he.prev=he.next){case 0:return he.next=2,new Promise(function(pe,re){var _=new d;O.on("error",re),_.on("error",re),_.on("finish",function(){Q.themes[oe]=_.read().toString(),pe()}),O.pipe(_)});case 2:case"end":return he.stop()}},F)}));function k(F,O,Q){return H.apply(this,arguments)}return k}()},{key:"createInputStream",value:function(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"read",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se,he,pe,re,_,E,$;return regeneratorRuntime.wrap(function(le){for(;;)switch(le.prev=le.next){case 0:!O[Symbol.asyncIterator]&&O.pipe&&(O=O.pipe(new N)),oe=[],se=!0,he=!1,le.prev=4,re=p(O);case 6:return le.next=8,re.next();case 8:return _=le.sent,se=_.done,le.next=12,_.value;case 12:if(E=le.sent,se){le.next=19;break}$=E,oe.push($);case 16:se=!0,le.next=6;break;case 19:le.next=25;break;case 21:le.prev=21,le.t0=le.catch(4),he=!0,pe=le.t0;case 25:if(le.prev=25,le.prev=26,!(!se&&re.return!=null)){le.next=30;break}return le.next=30,re.return();case 30:if(le.prev=30,!he){le.next=33;break}throw pe;case 33:return le.finish(30);case 34:return le.finish(25);case 35:return le.abrupt("return",this.load(o.concat(oe),Q));case 36:case"end":return le.stop()}},F,this,[[4,21,25,35],[26,,30,34]])}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"load",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se,he,pe,re,_,E,$,ae,le,ee,te,be,ne,B,q,ue;return regeneratorRuntime.wrap(function(Ge){for(;;)switch(Ge.prev=Ge.next){case 0:return Q&&Q.base64?oe=o.from(O.toString(),"base64"):oe=O,se={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},Ge.next=4,X.loadAsync(oe);case 4:he=Ge.sent,pe=0,re=Object.values(he.files);case 6:if(!(pe0&&($=new s,he.render($,E),O.append($.xml,{name:"xl/comments".concat(E.id,".xml")}),$=new s,pe.render($,E),O.append($.xml,{name:"xl/drawings/vmlDrawing".concat(E.id,".vml")}))});case 5:case"end":return _.stop()}},F)}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"_finalize",value:function(k){var F=this;return new Promise(function(O,Q){k.on("finish",function(){O(F)}),k.on("error",Q),k.finalize()})}},{key:"prepareModel",value:function(k,F){k.creator=k.creator||"ExcelJS",k.lastModifiedBy=k.lastModifiedBy||"ExcelJS",k.created=k.created||new Date,k.modified=k.modified||new Date,k.useSharedStrings=F.useSharedStrings!==void 0?F.useSharedStrings:!0,k.useStyles=F.useStyles!==void 0?F.useStyles:!0,k.sharedStrings=new I,k.styles=k.useStyles?new W(!0):new W.Mock;var O=new R,Q=new g;O.prepare(k);var oe={sharedStrings:k.sharedStrings,styles:k.styles,date1904:k.properties.date1904,drawingsCount:0,media:k.media};oe.drawings=k.drawings=[],oe.commentRefs=k.commentRefs=[];var se=0;k.tables=[],k.worksheets.forEach(function(he){he.tables.forEach(function(pe){se++,pe.target="table".concat(se,".xml"),pe.id=se,k.tables.push(pe)}),Q.prepare(he,oe)})}},{key:"write",value:function(){var H=f(regeneratorRuntime.mark(function F(O,Q){var oe,se;return regeneratorRuntime.wrap(function(pe){for(;;)switch(pe.prev=pe.next){case 0:return Q=Q||{},oe=this.workbook.model,se=new G.ZipWriter(Q.zip),se.pipe(O),this.prepareModel(oe,Q),pe.next=7,this.addContentTypes(se,oe);case 7:return pe.next=9,this.addOfficeRels(se,oe);case 9:return pe.next=11,this.addWorkbookRels(se,oe);case 11:return pe.next=13,this.addWorksheets(se,oe);case 13:return pe.next=15,this.addSharedStrings(se,oe);case 15:return pe.next=17,this.addDrawings(se,oe);case 17:return pe.next=19,this.addTables(se,oe);case 19:return pe.next=21,Promise.all([this.addThemes(se,oe),this.addStyles(se,oe)]);case 21:return pe.next=23,this.addMedia(se,oe);case 23:return pe.next=25,Promise.all([this.addApp(se,oe),this.addCore(se,oe)]);case 25:return pe.next=27,this.addWorkbook(se,oe);case 27:return pe.abrupt("return",this._finalize(se));case 28:case"end":return pe.stop()}},F,this)}));function k(F,O){return H.apply(this,arguments)}return k}()},{key:"writeFile",value:function(k,F){var O=this,Q=y.createWriteStream(k);return new Promise(function(oe,se){Q.on("finish",function(){oe()}),Q.on("error",function(he){se(he)}),O.write(Q,F).then(function(){Q.end()})})}},{key:"writeBuffer",value:function(){var H=f(regeneratorRuntime.mark(function F(O){var Q;return regeneratorRuntime.wrap(function(se){for(;;)switch(se.prev=se.next){case 0:return Q=new d,se.next=3,this.write(Q,O);case 3:return se.abrupt("return",Q.read());case 4:case"end":return se.stop()}},F,this)}));function k(F){return H.apply(this,arguments)}return k}()}]),K}();U.RelType=t("./rel-type"),i.exports=U}).call(this,t("_process"),t("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,_process:467,buffer:216,fs:215,jszip:399,"readable-stream":491}],142:[function(t,i,a){i.exports=` + `},{}],143:[function(t,i,a){(function(l){function o(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(c){return typeof c}:o=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},o(s)}function r(s,h){if(!(s instanceof h))throw new TypeError("Cannot call a class as a function")}function f(s,h){for(var c=0;c"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function N(s){return N=Object.setPrototypeOf?Object.getPrototypeOf:function(c){return c.__proto__||Object.getPrototypeOf(c)},N(s)}Object.defineProperty(a,"__esModule",{value:!0}),a.CsvFormatterStream=void 0;var G=t("stream"),d=t("./formatter"),u=function(s){b(c,s);var h=p(c);function c(W){var M;return r(this,c),M=h.call(this,{writableObjectMode:W.objectMode}),M.hasWrittenBOM=!1,M.formatterOptions=W,M.rowFormatter=new d.RowFormatter(W),M.hasWrittenBOM=!W.writeBOM,M}return v(c,[{key:"transform",value:function(M){return this.rowFormatter.rowTransform=M,this}},{key:"_transform",value:function(M,I,w){var C=this,x=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(M,function(R,g){return R?(x=!0,w(R)):(g&&g.forEach(function(S){C.push(l.from(S,"utf8"))}),x=!0,w())})}catch(R){if(x)throw R;w(R)}}},{key:"_flush",value:function(M){var I=this;this.rowFormatter.finish(function(w,C){return w?M(w):(C&&C.forEach(function(x){I.push(l.from(x,"utf8"))}),M())})}}]),c}(G.Transform);a.CsvFormatterStream=u}).call(this,t("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(t,i,a){function l(r,f){if(!(r instanceof f))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(a,"__esModule",{value:!0}),a.FormatterOptions=void 0;var o=function r(){var f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};l(this,r);var v;this.objectMode=!0,this.delimiter=",",this.rowDelimiter=` +`,this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\uFEFF",this.alwaysWriteHeaders=!1,Object.assign(this,f||{}),typeof(f==null?void 0:f.quoteHeaders)>"u"&&(this.quoteHeaders=this.quoteColumns),(f==null?void 0:f.quote)===!0?this.quote='"':(f==null?void 0:f.quote)===!1&&(this.quote=""),typeof(f==null?void 0:f.escape)!="string"&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&((v=f.writeHeaders)!==null&&v!==void 0?v:!0),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};a.FormatterOptions=o},{}],145:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{},u=[],s=new Z.Writable({write:function(c,W,M){u.push(c),M()}});return new Promise(function(h,c){s.on("error",c).on("finish",function(){return h(l.concat(u))}),a.write(G,d).pipe(s)})},a.writeToString=function(G,d){return a.writeToBuffer(G,d).then(function(u){return u.toString()})},a.writeToPath=function(G,d,u){var s=p.createWriteStream(G,{encoding:"utf8"});return a.write(d,u).pipe(s)}}).call(this,t("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.isSyncTransform=void 0,a.isSyncTransform=function(l){return l.length===1}},{}],150:[function(t,i,a){(function(l){function o(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(w){return typeof w}:o=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},o(M)}function r(M,I){if(!(M instanceof I))throw new TypeError("Cannot call a class as a function")}function f(M,I){for(var w=0;w"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function d(M){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},d(M)}Object.defineProperty(a,"__esModule",{value:!0}),a.CsvParserStream=void 0;var u=t("string_decoder"),s=t("stream"),h=t("./transforms"),c=t("./parser"),W=function(M){p(w,M);var I=X(w);function w(C){var x;return r(this,w),x=I.call(this,{objectMode:C.objectMode}),x.lines="",x.rowCount=0,x.parsedRowCount=0,x.parsedLineCount=0,x.endEmitted=!1,x.headersEmitted=!1,x.parserOptions=C,x.parser=new c.Parser(C),x.headerTransformer=new h.HeaderTransformer(C),x.decoder=new u.StringDecoder(C.encoding),x.rowTransformerValidator=new h.RowTransformerValidator,x}return v(w,[{key:"transform",value:function(x){return this.rowTransformerValidator.rowTransform=x,this}},{key:"validate",value:function(x){return this.rowTransformerValidator.rowValidator=x,this}},{key:"emit",value:function(x){var R;if(x==="end")return this.endEmitted||(this.endEmitted=!0,b(d(w.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var g=arguments.length,S=new Array(g>1?g-1:0),L=1;L=S||g.hasHitRowLimit)return R();if(g.parsedLineCount+=1,g.shouldSkipLine)return T();var J=x[Y];g.rowCount+=1,g.parsedRowCount+=1;var U=g.rowCount;return g.transformRow(J,function(K,H){if(K)return g.rowCount-=1,T(K);if(!H)return T(new Error("expected transform result"));if(!H.isValid)g.emit("data-invalid",H.row,U,H.reason);else if(H.row)return g.pushRow(H.row,T);return T()})};L(0)}},{key:"transformRow",value:function(x,R){var g=this;try{this.headerTransformer.transform(x,function(S,L){return S?R(S):L?L.isValid?L.row?g.shouldEmitRows?g.rowTransformerValidator.transformAndValidate(L.row,R):g.skipRow(R):(g.rowCount-=1,g.parsedRowCount-=1,R(null,{row:null,isValid:!0})):g.shouldEmitRows?R(null,{isValid:!1,row:x}):g.skipRow(R):R(new Error("Expected result from header transform"))})}catch(S){R(S)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(x){return this.rowCount-=1,x(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(x,R){try{this.parserOptions.objectMode?this.push(x):this.push(JSON.stringify(x)),R()}catch(g){R(g)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),w}(s.Transform);a.CsvParserStream=W}).call(this,t("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(t,i,a){function l(b,Z){if(!(b instanceof Z))throw new TypeError("Cannot call a class as a function")}var o=function(b){return b&&b.__esModule?b:{default:b}};Object.defineProperty(a,"__esModule",{value:!0}),a.ParserOptions=void 0;var r=o(t("lodash.escaperegexp")),f=o(t("lodash.isnil")),v=function b(Z){l(this,b);var p;if(this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,Z||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=r.default(this.delimiter),this.escapeChar=(p=this.escape)!==null&&p!==void 0?p:this.quote,this.supportsComments=!f.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};a.ParserOptions=v},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(t,i,a){var l=Object.create?function(m,N,G,d){d===void 0&&(d=G),Object.defineProperty(m,d,{enumerable:!0,get:function(){return N[G]}})}:function(m,N,G,d){d===void 0&&(d=G),m[d]=N[G]},o=Object.create?function(m,N){Object.defineProperty(m,"default",{enumerable:!0,value:N})}:function(m,N){m.default=N},r=function(m){if(m&&m.__esModule)return m;var N={};if(m!=null)for(var G in m)G!=="default"&&Object.hasOwnProperty.call(m,G)&&l(N,m,G);return o(N,m),N},f=function(m,N){for(var G in m)G!=="default"&&!N.hasOwnProperty(G)&&l(N,m,G)};Object.defineProperty(a,"__esModule",{value:!0}),a.parseString=a.parseFile=a.parseStream=a.parse=void 0;var v=r(t("fs")),b=t("stream"),Z=t("./ParserOptions"),p=t("./CsvParserStream");f(t("./types"),a);var y=t("./CsvParserStream");Object.defineProperty(a,"CsvParserStream",{enumerable:!0,get:function(){return y.CsvParserStream}});var X=t("./ParserOptions");Object.defineProperty(a,"ParserOptions",{enumerable:!0,get:function(){return X.ParserOptions}}),a.parse=function(m){return new p.CsvParserStream(new Z.ParserOptions(m))},a.parseStream=function(m,N){return m.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},a.parseFile=function(m){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return v.createReadStream(m).pipe(new p.CsvParserStream(new Z.ParserOptions(N)))},a.parseString=function(m,N){var G=new b.Readable;return G.push(m),G.push(null),G.pipe(new p.CsvParserStream(new Z.ParserOptions(N)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(t,i,a){function l(y,X){if(!(y instanceof X))throw new TypeError("Cannot call a class as a function")}function o(y,X){for(var m=0;mthis.cursor}},{key:"nextNonSpaceToken",get:function(){var y=this.lineFromCursor,X=this.parserOptions.NEXT_TOKEN_REGEXP;if(y.search(X)===-1)return null;var m=X.exec(y);if(m==null)return null;var N=m[1],G=this.cursor+(m.index||0);return new f.Token({token:N,startCursor:G,endCursor:G+N.length-1})}},{key:"nextCharacterToken",get:function(){var y=this.cursor,X=this.lineLength;return X<=y?null:new f.Token({token:this.line[y],startCursor:y,endCursor:y})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),Z}();a.Scanner=b},{"./Token":156}],156:[function(t,i,a){function l(v,b){if(!(v instanceof b))throw new TypeError("Cannot call a class as a function")}function o(v,b){for(var Z=0;Zthis.headersLength){if(!G.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length));return{row:N,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length)}}return G.strictColumnHandling&&N.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(s)))}this.headers=N,this.receivedHeaders=!0,this.headersLength=((G=this.headers)===null||G===void 0?void 0:G.length)||0}}]),X}();l.HeaderTransformer=y},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(t,i,l){function a(p,y){if(!(p instanceof y))throw new TypeError("Cannot call a class as a function")}function o(p,y){for(var X=0;X>6],d=(N&32)===0;if((N&31)===31){var u=N;for(N=0;(u&128)===128;){if(u=X.readUInt8(m),X.isError(u))return u;N<<=7,N|=u&127}}else N&=31;var s=v.tag[N];return{cls:G,primitive:d,tag:N,tagStr:s}}function y(X,m,N){var G=X.readUInt8(N);if(X.isError(G))return G;if(!m&&G===128)return null;if(!(G&128))return G;var d=G&127;if(d>4)return X.error("length octect is too long");G=0;for(var u=0;u=256;h>>=8)s++;var c=o.alloc(1+1+s);c[0]=d,c[1]=128|s;for(var W=1+s,M=G.length;M>0;W--,M>>=8)c[W]=M&255;return this._createEncoderBuffer([c,G])},b.prototype._encodeStr=function(X,m){if(m==="bitstr")return this._createEncoderBuffer([X.unused|0,X.data]);if(m==="bmpstr"){for(var N=o.alloc(X.length*2),G=0;G=40)return this.reporter.error("Second objid identifier OOB");X.splice(0,2,X[0]*40+X[1])}for(var u=0,s=0;s=128;h>>=7)u++}for(var c=o.alloc(u),W=c.length-1,M=X.length-1;M>=0;M--){var I=X[M];for(c[W--]=I&127;(I>>=7)>0;)c[W--]=128|I&127}return this._createEncoderBuffer(c)};function Z(y){return y<10?"0"+y:y}b.prototype._encodeTime=function(X,m){var N,G=new Date(X);return m==="gentime"?N=[Z(G.getUTCFullYear()),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):m==="utctime"?N=[Z(G.getUTCFullYear()%100),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+m+" time is not supported yet"),this._encodeStr(N,"octstr")},b.prototype._encodeNull=function(){return this._createEncoderBuffer("")},b.prototype._encodeInt=function(X,m){if(typeof X=="string"){if(!m)return this.reporter.error("String int or enum given, but no values map");if(!m.hasOwnProperty(X))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(X));X=m[X]}if(typeof X!="number"&&!o.isBuffer(X)){var N=X.toArray();!X.sign&&N[0]&128&&N.unshift(0),X=o.from(N)}if(o.isBuffer(X)){var G=X.length;X.length===0&&G++;var d=o.alloc(G);return X.copy(d),X.length===0&&(d[0]=0),this._createEncoderBuffer(d)}if(X<128)return this._createEncoderBuffer(X);if(X<256)return this._createEncoderBuffer([0,X]);for(var u=1,s=X;s>=256;s>>=8)u++;for(var h=new Array(u),c=h.length-1;c>=0;c--)h[c]=X&255,X>>=8;return h[0]&128&&h.unshift(0),this._createEncoderBuffer(o.from(h))},b.prototype._encodeBool=function(X){return this._createEncoderBuffer(X?255:0)},b.prototype._use=function(X,m){return typeof X=="function"&&(X=X(m)),X._getEncoder("der").tree},b.prototype._skipDefault=function(X,m,N){var G=this._baseState,d;if(G.default===null)return!1;var u=X.join();if(G.defaultBuffer===void 0&&(G.defaultBuffer=this._encodeValue(G.default,m,N).join()),u.length!==G.defaultBuffer.length)return!1;for(d=0;d=31?N.error("Multi-octet tag encoding unsupported"):(X||(G|=32),G|=f.tagClassByName[m||"universal"]<<6,G)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(t,i,l){var a=l;a.der=t("./der"),a.pem=t("./pem")},{"./der":178,"./pem":180}],180:[function(t,i,l){var a=t("inherits"),o=t("./der");function r(f){o.call(this,f),this.enc="pem"}a(r,o),i.exports=r,r.prototype.encode=function(v,b){for(var Z=o.prototype.encode.call(this,v),p=Z.toString("base64"),y=["-----BEGIN "+b.label+"-----"],X=0;X0?L:V},b.min=function(L,V){return L.cmp(V)<0?L:V},b.prototype._init=function(L,V,Y){if(typeof L=="number")return this._initNumber(L,V,Y);if(a(L)==="object")return this._initArray(L,V,Y);V==="hex"&&(V=16),f(V===(V|0)&&V>=2&&V<=36),L=L.toString().replace(/\s+/g,"");var T=0;L[0]==="-"&&T++,V===16?this._parseHex(L,T):this._parseBase(L,V,T),L[0]==="-"&&(this.negative=1),this.strip(),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initNumber=function(L,V,Y){L<0&&(this.negative=1,L=-L),L<67108864?(this.words=[L&67108863],this.length=1):L<4503599627370496?(this.words=[L&67108863,L/67108864&67108863],this.length=2):(f(L<9007199254740992),this.words=[L&67108863,L/67108864&67108863,1],this.length=3),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initArray=function(L,V,Y){if(f(typeof L.length=="number"),L.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(L.length/3),this.words=new Array(this.length);for(var T=0;T=0;T-=3)U=L[T]|L[T-1]<<8|L[T-2]<<16,this.words[J]|=U<>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);else if(Y==="le")for(T=0,J=0;T>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);return this.strip()};function p(S,L,V){for(var Y=0,T=Math.min(S.length,V),J=L;J=49&&U<=54?Y|=U-49+10:U>=17&&U<=22?Y|=U-17+10:Y|=U&15}return Y}b.prototype._parseHex=function(L,V){this.length=Math.ceil((L.length-V)/6),this.words=new Array(this.length);for(var Y=0;Y=V;Y-=6)J=p(L,Y,Y+6),this.words[T]|=J<>>26-U&4194303,U+=24,U>=26&&(U-=26,T++);Y+6!==V&&(J=p(L,V,Y+6),this.words[T]|=J<>>26-U&4194303),this.strip()};function y(S,L,V,Y){for(var T=0,J=Math.min(S.length,V),U=L;U=49?T+=K-49+10:K>=17?T+=K-17+10:T+=K}return T}b.prototype._parseBase=function(L,V,Y){this.words=[0],this.length=1;for(var T=0,J=1;J<=67108863;J*=V)T++;T--,J=J/V|0;for(var U=L.length-Y,K=U%T,H=Math.min(U,U-K)+Y,k=0,F=Y;F1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},b.prototype.inspect=function(){return(this.red?""};var X=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],m=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(L,V){L=L||10,V=V|0||1;var Y;if(L===16||L==="hex"){Y="";for(var T=0,J=0,U=0;U>>24-T&16777215,J!==0||U!==this.length-1?Y=X[6-H.length]+H+Y:Y=H+Y,T+=2,T>=26&&(T-=26,U--)}for(J!==0&&(Y=J.toString(16)+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}if(L===(L|0)&&L>=2&&L<=36){var k=m[L],F=N[L];Y="";var O=this.clone();for(O.negative=0;!O.isZero();){var Q=O.modn(F).toString(L);O=O.idivn(F),O.isZero()?Y=Q+Y:Y=X[k-Q.length]+Q+Y}for(this.isZero()&&(Y="0"+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var L=this.words[0];return this.length===2?L+=this.words[1]*67108864:this.length===3&&this.words[2]===1?L+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-L:L},b.prototype.toJSON=function(){return this.toString(16)},b.prototype.toBuffer=function(L,V){return f(typeof Z<"u"),this.toArrayLike(Z,L,V)},b.prototype.toArray=function(L,V){return this.toArrayLike(Array,L,V)},b.prototype.toArrayLike=function(L,V,Y){var T=this.byteLength(),J=Y||Math.max(1,T);f(T<=J,"byte array longer than desired length"),f(J>0,"Requested array length <= 0"),this.strip();var U=V==="le",K=new L(J),H,k,F=this.clone();if(U){for(k=0;!F.isZero();k++)H=F.andln(255),F.iushrn(8),K[k]=H;for(;k=4096&&(Y+=13,V>>>=13),V>=64&&(Y+=7,V>>>=7),V>=8&&(Y+=4,V>>>=4),V>=2&&(Y+=2,V>>>=2),Y+V},b.prototype._zeroBits=function(L){if(L===0)return 26;var V=L,Y=0;return V&8191||(Y+=13,V>>>=13),V&127||(Y+=7,V>>>=7),V&15||(Y+=4,V>>>=4),V&3||(Y+=2,V>>>=2),V&1||Y++,Y},b.prototype.bitLength=function(){var L=this.words[this.length-1],V=this._countBits(L);return(this.length-1)*26+V};function G(S){for(var L=new Array(S.bitLength()),V=0;V>>T}return L}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var L=0,V=0;VL.length?this.clone().ior(L):L.clone().ior(this)},b.prototype.uor=function(L){return this.length>L.length?this.clone().iuor(L):L.clone().iuor(this)},b.prototype.iuand=function(L){var V;this.length>L.length?V=L:V=this;for(var Y=0;YL.length?this.clone().iand(L):L.clone().iand(this)},b.prototype.uand=function(L){return this.length>L.length?this.clone().iuand(L):L.clone().iuand(this)},b.prototype.iuxor=function(L){var V,Y;this.length>L.length?(V=this,Y=L):(V=L,Y=this);for(var T=0;TL.length?this.clone().ixor(L):L.clone().ixor(this)},b.prototype.uxor=function(L){return this.length>L.length?this.clone().iuxor(L):L.clone().iuxor(this)},b.prototype.inotn=function(L){f(typeof L=="number"&&L>=0);var V=Math.ceil(L/26)|0,Y=L%26;this._expand(V),Y>0&&V--;for(var T=0;T0&&(this.words[T]=~this.words[T]&67108863>>26-Y),this.strip()},b.prototype.notn=function(L){return this.clone().inotn(L)},b.prototype.setn=function(L,V){f(typeof L=="number"&&L>=0);var Y=L/26|0,T=L%26;return this._expand(Y+1),V?this.words[Y]=this.words[Y]|1<L.length?(Y=this,T=L):(Y=L,T=this);for(var J=0,U=0;U>>26;for(;J!==0&&U>>26;if(this.length=Y.length,J!==0)this.words[this.length]=J,this.length++;else if(Y!==this)for(;UL.length?this.clone().iadd(L):L.clone().iadd(this)},b.prototype.isub=function(L){if(L.negative!==0){L.negative=0;var V=this.iadd(L);return L.negative=1,V._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(L),this.negative=1,this._normSign();var Y=this.cmp(L);if(Y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var T,J;Y>0?(T=this,J=L):(T=L,J=this);for(var U=0,K=0;K>26,this.words[K]=V&67108863;for(;U!==0&&K>26,this.words[K]=V&67108863;if(U===0&&K>>26,O=H&67108863,Q=Math.min(k,L.length-1),oe=Math.max(0,k-S.length+1);oe<=Q;oe++){var se=k-oe|0;T=S.words[se]|0,J=L.words[oe]|0,U=T*J+O,F+=U/67108864|0,O=U&67108863}V.words[k]=O|0,H=F|0}return H!==0?V.words[k]=H|0:V.length--,V.strip()}var u=function(L,V,Y){var T=L.words,J=V.words,U=Y.words,K=0,H,k,F,O=T[0]|0,Q=O&8191,oe=O>>>13,se=T[1]|0,he=se&8191,pe=se>>>13,re=T[2]|0,_=re&8191,E=re>>>13,$=T[3]|0,ae=$&8191,le=$>>>13,ee=T[4]|0,te=ee&8191,be=ee>>>13,ne=T[5]|0,B=ne&8191,q=ne>>>13,ue=T[6]|0,ve=ue&8191,Ge=ue>>>13,Je=T[7]|0,xe=Je&8191,ke=Je>>>13,Pe=T[8]|0,Be=Pe&8191,Te=Pe>>>13,we=T[9]|0,Se=we&8191,De=we>>>13,me=J[0]|0,Ve=me&8191,Me=me>>>13,Ie=J[1]|0,Ze=Ie&8191,Ce=Ie>>>13,ye=J[2]|0,Ue=ye&8191,qe=ye>>>13,ie=J[3]|0,Oe=ie&8191,Ke=ie>>>13,Xe=J[4]|0,Re=Xe&8191,Ae=Xe>>>13,ct=J[5]|0,lt=ct&8191,ot=ct>>>13,wt=J[6]|0,Mt=wt&8191,xt=wt>>>13,Gt=J[7]|0,Zt=Gt&8191,Tt=Gt>>>13,Ct=J[8]|0,St=Ct&8191,Pt=Ct>>>13,Ut=J[9]|0,kt=Ut&8191,en=Ut>>>13;Y.negative=L.negative^V.negative,Y.length=19,H=Math.imul(Q,Ve),k=Math.imul(Q,Me),k=k+Math.imul(oe,Ve)|0,F=Math.imul(oe,Me);var nn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nn>>>26)|0,nn&=67108863,H=Math.imul(he,Ve),k=Math.imul(he,Me),k=k+Math.imul(pe,Ve)|0,F=Math.imul(pe,Me),H=H+Math.imul(Q,Ze)|0,k=k+Math.imul(Q,Ce)|0,k=k+Math.imul(oe,Ze)|0,F=F+Math.imul(oe,Ce)|0;var Ft=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,H=Math.imul(_,Ve),k=Math.imul(_,Me),k=k+Math.imul(E,Ve)|0,F=Math.imul(E,Me),H=H+Math.imul(he,Ze)|0,k=k+Math.imul(he,Ce)|0,k=k+Math.imul(pe,Ze)|0,F=F+Math.imul(pe,Ce)|0,H=H+Math.imul(Q,Ue)|0,k=k+Math.imul(Q,qe)|0,k=k+Math.imul(oe,Ue)|0,F=F+Math.imul(oe,qe)|0;var Ln=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,H=Math.imul(ae,Ve),k=Math.imul(ae,Me),k=k+Math.imul(le,Ve)|0,F=Math.imul(le,Me),H=H+Math.imul(_,Ze)|0,k=k+Math.imul(_,Ce)|0,k=k+Math.imul(E,Ze)|0,F=F+Math.imul(E,Ce)|0,H=H+Math.imul(he,Ue)|0,k=k+Math.imul(he,qe)|0,k=k+Math.imul(pe,Ue)|0,F=F+Math.imul(pe,qe)|0,H=H+Math.imul(Q,Oe)|0,k=k+Math.imul(Q,Ke)|0,k=k+Math.imul(oe,Oe)|0,F=F+Math.imul(oe,Ke)|0;var An=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(An>>>26)|0,An&=67108863,H=Math.imul(te,Ve),k=Math.imul(te,Me),k=k+Math.imul(be,Ve)|0,F=Math.imul(be,Me),H=H+Math.imul(ae,Ze)|0,k=k+Math.imul(ae,Ce)|0,k=k+Math.imul(le,Ze)|0,F=F+Math.imul(le,Ce)|0,H=H+Math.imul(_,Ue)|0,k=k+Math.imul(_,qe)|0,k=k+Math.imul(E,Ue)|0,F=F+Math.imul(E,qe)|0,H=H+Math.imul(he,Oe)|0,k=k+Math.imul(he,Ke)|0,k=k+Math.imul(pe,Oe)|0,F=F+Math.imul(pe,Ke)|0,H=H+Math.imul(Q,Re)|0,k=k+Math.imul(Q,Ae)|0,k=k+Math.imul(oe,Re)|0,F=F+Math.imul(oe,Ae)|0;var Gi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,H=Math.imul(B,Ve),k=Math.imul(B,Me),k=k+Math.imul(q,Ve)|0,F=Math.imul(q,Me),H=H+Math.imul(te,Ze)|0,k=k+Math.imul(te,Ce)|0,k=k+Math.imul(be,Ze)|0,F=F+Math.imul(be,Ce)|0,H=H+Math.imul(ae,Ue)|0,k=k+Math.imul(ae,qe)|0,k=k+Math.imul(le,Ue)|0,F=F+Math.imul(le,qe)|0,H=H+Math.imul(_,Oe)|0,k=k+Math.imul(_,Ke)|0,k=k+Math.imul(E,Oe)|0,F=F+Math.imul(E,Ke)|0,H=H+Math.imul(he,Re)|0,k=k+Math.imul(he,Ae)|0,k=k+Math.imul(pe,Re)|0,F=F+Math.imul(pe,Ae)|0,H=H+Math.imul(Q,lt)|0,k=k+Math.imul(Q,ot)|0,k=k+Math.imul(oe,lt)|0,F=F+Math.imul(oe,ot)|0;var Pi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,H=Math.imul(ve,Ve),k=Math.imul(ve,Me),k=k+Math.imul(Ge,Ve)|0,F=Math.imul(Ge,Me),H=H+Math.imul(B,Ze)|0,k=k+Math.imul(B,Ce)|0,k=k+Math.imul(q,Ze)|0,F=F+Math.imul(q,Ce)|0,H=H+Math.imul(te,Ue)|0,k=k+Math.imul(te,qe)|0,k=k+Math.imul(be,Ue)|0,F=F+Math.imul(be,qe)|0,H=H+Math.imul(ae,Oe)|0,k=k+Math.imul(ae,Ke)|0,k=k+Math.imul(le,Oe)|0,F=F+Math.imul(le,Ke)|0,H=H+Math.imul(_,Re)|0,k=k+Math.imul(_,Ae)|0,k=k+Math.imul(E,Re)|0,F=F+Math.imul(E,Ae)|0,H=H+Math.imul(he,lt)|0,k=k+Math.imul(he,ot)|0,k=k+Math.imul(pe,lt)|0,F=F+Math.imul(pe,ot)|0,H=H+Math.imul(Q,Mt)|0,k=k+Math.imul(Q,xt)|0,k=k+Math.imul(oe,Mt)|0,F=F+Math.imul(oe,xt)|0;var Gl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,H=Math.imul(xe,Ve),k=Math.imul(xe,Me),k=k+Math.imul(ke,Ve)|0,F=Math.imul(ke,Me),H=H+Math.imul(ve,Ze)|0,k=k+Math.imul(ve,Ce)|0,k=k+Math.imul(Ge,Ze)|0,F=F+Math.imul(Ge,Ce)|0,H=H+Math.imul(B,Ue)|0,k=k+Math.imul(B,qe)|0,k=k+Math.imul(q,Ue)|0,F=F+Math.imul(q,qe)|0,H=H+Math.imul(te,Oe)|0,k=k+Math.imul(te,Ke)|0,k=k+Math.imul(be,Oe)|0,F=F+Math.imul(be,Ke)|0,H=H+Math.imul(ae,Re)|0,k=k+Math.imul(ae,Ae)|0,k=k+Math.imul(le,Re)|0,F=F+Math.imul(le,Ae)|0,H=H+Math.imul(_,lt)|0,k=k+Math.imul(_,ot)|0,k=k+Math.imul(E,lt)|0,F=F+Math.imul(E,ot)|0,H=H+Math.imul(he,Mt)|0,k=k+Math.imul(he,xt)|0,k=k+Math.imul(pe,Mt)|0,F=F+Math.imul(pe,xt)|0,H=H+Math.imul(Q,Zt)|0,k=k+Math.imul(Q,Tt)|0,k=k+Math.imul(oe,Zt)|0,F=F+Math.imul(oe,Tt)|0;var Fn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,H=Math.imul(Be,Ve),k=Math.imul(Be,Me),k=k+Math.imul(Te,Ve)|0,F=Math.imul(Te,Me),H=H+Math.imul(xe,Ze)|0,k=k+Math.imul(xe,Ce)|0,k=k+Math.imul(ke,Ze)|0,F=F+Math.imul(ke,Ce)|0,H=H+Math.imul(ve,Ue)|0,k=k+Math.imul(ve,qe)|0,k=k+Math.imul(Ge,Ue)|0,F=F+Math.imul(Ge,qe)|0,H=H+Math.imul(B,Oe)|0,k=k+Math.imul(B,Ke)|0,k=k+Math.imul(q,Oe)|0,F=F+Math.imul(q,Ke)|0,H=H+Math.imul(te,Re)|0,k=k+Math.imul(te,Ae)|0,k=k+Math.imul(be,Re)|0,F=F+Math.imul(be,Ae)|0,H=H+Math.imul(ae,lt)|0,k=k+Math.imul(ae,ot)|0,k=k+Math.imul(le,lt)|0,F=F+Math.imul(le,ot)|0,H=H+Math.imul(_,Mt)|0,k=k+Math.imul(_,xt)|0,k=k+Math.imul(E,Mt)|0,F=F+Math.imul(E,xt)|0,H=H+Math.imul(he,Zt)|0,k=k+Math.imul(he,Tt)|0,k=k+Math.imul(pe,Zt)|0,F=F+Math.imul(pe,Tt)|0,H=H+Math.imul(Q,St)|0,k=k+Math.imul(Q,Pt)|0,k=k+Math.imul(oe,St)|0,F=F+Math.imul(oe,Pt)|0;var cl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(cl>>>26)|0,cl&=67108863,H=Math.imul(Se,Ve),k=Math.imul(Se,Me),k=k+Math.imul(De,Ve)|0,F=Math.imul(De,Me),H=H+Math.imul(Be,Ze)|0,k=k+Math.imul(Be,Ce)|0,k=k+Math.imul(Te,Ze)|0,F=F+Math.imul(Te,Ce)|0,H=H+Math.imul(xe,Ue)|0,k=k+Math.imul(xe,qe)|0,k=k+Math.imul(ke,Ue)|0,F=F+Math.imul(ke,qe)|0,H=H+Math.imul(ve,Oe)|0,k=k+Math.imul(ve,Ke)|0,k=k+Math.imul(Ge,Oe)|0,F=F+Math.imul(Ge,Ke)|0,H=H+Math.imul(B,Re)|0,k=k+Math.imul(B,Ae)|0,k=k+Math.imul(q,Re)|0,F=F+Math.imul(q,Ae)|0,H=H+Math.imul(te,lt)|0,k=k+Math.imul(te,ot)|0,k=k+Math.imul(be,lt)|0,F=F+Math.imul(be,ot)|0,H=H+Math.imul(ae,Mt)|0,k=k+Math.imul(ae,xt)|0,k=k+Math.imul(le,Mt)|0,F=F+Math.imul(le,xt)|0,H=H+Math.imul(_,Zt)|0,k=k+Math.imul(_,Tt)|0,k=k+Math.imul(E,Zt)|0,F=F+Math.imul(E,Tt)|0,H=H+Math.imul(he,St)|0,k=k+Math.imul(he,Pt)|0,k=k+Math.imul(pe,St)|0,F=F+Math.imul(pe,Pt)|0,H=H+Math.imul(Q,kt)|0,k=k+Math.imul(Q,en)|0,k=k+Math.imul(oe,kt)|0,F=F+Math.imul(oe,en)|0;var ki=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ki>>>26)|0,ki&=67108863,H=Math.imul(Se,Ze),k=Math.imul(Se,Ce),k=k+Math.imul(De,Ze)|0,F=Math.imul(De,Ce),H=H+Math.imul(Be,Ue)|0,k=k+Math.imul(Be,qe)|0,k=k+Math.imul(Te,Ue)|0,F=F+Math.imul(Te,qe)|0,H=H+Math.imul(xe,Oe)|0,k=k+Math.imul(xe,Ke)|0,k=k+Math.imul(ke,Oe)|0,F=F+Math.imul(ke,Ke)|0,H=H+Math.imul(ve,Re)|0,k=k+Math.imul(ve,Ae)|0,k=k+Math.imul(Ge,Re)|0,F=F+Math.imul(Ge,Ae)|0,H=H+Math.imul(B,lt)|0,k=k+Math.imul(B,ot)|0,k=k+Math.imul(q,lt)|0,F=F+Math.imul(q,ot)|0,H=H+Math.imul(te,Mt)|0,k=k+Math.imul(te,xt)|0,k=k+Math.imul(be,Mt)|0,F=F+Math.imul(be,xt)|0,H=H+Math.imul(ae,Zt)|0,k=k+Math.imul(ae,Tt)|0,k=k+Math.imul(le,Zt)|0,F=F+Math.imul(le,Tt)|0,H=H+Math.imul(_,St)|0,k=k+Math.imul(_,Pt)|0,k=k+Math.imul(E,St)|0,F=F+Math.imul(E,Pt)|0,H=H+Math.imul(he,kt)|0,k=k+Math.imul(he,en)|0,k=k+Math.imul(pe,kt)|0,F=F+Math.imul(pe,en)|0;var tl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tl>>>26)|0,tl&=67108863,H=Math.imul(Se,Ue),k=Math.imul(Se,qe),k=k+Math.imul(De,Ue)|0,F=Math.imul(De,qe),H=H+Math.imul(Be,Oe)|0,k=k+Math.imul(Be,Ke)|0,k=k+Math.imul(Te,Oe)|0,F=F+Math.imul(Te,Ke)|0,H=H+Math.imul(xe,Re)|0,k=k+Math.imul(xe,Ae)|0,k=k+Math.imul(ke,Re)|0,F=F+Math.imul(ke,Ae)|0,H=H+Math.imul(ve,lt)|0,k=k+Math.imul(ve,ot)|0,k=k+Math.imul(Ge,lt)|0,F=F+Math.imul(Ge,ot)|0,H=H+Math.imul(B,Mt)|0,k=k+Math.imul(B,xt)|0,k=k+Math.imul(q,Mt)|0,F=F+Math.imul(q,xt)|0,H=H+Math.imul(te,Zt)|0,k=k+Math.imul(te,Tt)|0,k=k+Math.imul(be,Zt)|0,F=F+Math.imul(be,Tt)|0,H=H+Math.imul(ae,St)|0,k=k+Math.imul(ae,Pt)|0,k=k+Math.imul(le,St)|0,F=F+Math.imul(le,Pt)|0,H=H+Math.imul(_,kt)|0,k=k+Math.imul(_,en)|0,k=k+Math.imul(E,kt)|0,F=F+Math.imul(E,en)|0;var nl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nl>>>26)|0,nl&=67108863,H=Math.imul(Se,Oe),k=Math.imul(Se,Ke),k=k+Math.imul(De,Oe)|0,F=Math.imul(De,Ke),H=H+Math.imul(Be,Re)|0,k=k+Math.imul(Be,Ae)|0,k=k+Math.imul(Te,Re)|0,F=F+Math.imul(Te,Ae)|0,H=H+Math.imul(xe,lt)|0,k=k+Math.imul(xe,ot)|0,k=k+Math.imul(ke,lt)|0,F=F+Math.imul(ke,ot)|0,H=H+Math.imul(ve,Mt)|0,k=k+Math.imul(ve,xt)|0,k=k+Math.imul(Ge,Mt)|0,F=F+Math.imul(Ge,xt)|0,H=H+Math.imul(B,Zt)|0,k=k+Math.imul(B,Tt)|0,k=k+Math.imul(q,Zt)|0,F=F+Math.imul(q,Tt)|0,H=H+Math.imul(te,St)|0,k=k+Math.imul(te,Pt)|0,k=k+Math.imul(be,St)|0,F=F+Math.imul(be,Pt)|0,H=H+Math.imul(ae,kt)|0,k=k+Math.imul(ae,en)|0,k=k+Math.imul(le,kt)|0,F=F+Math.imul(le,en)|0;var Dt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,H=Math.imul(Se,Re),k=Math.imul(Se,Ae),k=k+Math.imul(De,Re)|0,F=Math.imul(De,Ae),H=H+Math.imul(Be,lt)|0,k=k+Math.imul(Be,ot)|0,k=k+Math.imul(Te,lt)|0,F=F+Math.imul(Te,ot)|0,H=H+Math.imul(xe,Mt)|0,k=k+Math.imul(xe,xt)|0,k=k+Math.imul(ke,Mt)|0,F=F+Math.imul(ke,xt)|0,H=H+Math.imul(ve,Zt)|0,k=k+Math.imul(ve,Tt)|0,k=k+Math.imul(Ge,Zt)|0,F=F+Math.imul(Ge,Tt)|0,H=H+Math.imul(B,St)|0,k=k+Math.imul(B,Pt)|0,k=k+Math.imul(q,St)|0,F=F+Math.imul(q,Pt)|0,H=H+Math.imul(te,kt)|0,k=k+Math.imul(te,en)|0,k=k+Math.imul(be,kt)|0,F=F+Math.imul(be,en)|0;var ht=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ht>>>26)|0,ht&=67108863,H=Math.imul(Se,lt),k=Math.imul(Se,ot),k=k+Math.imul(De,lt)|0,F=Math.imul(De,ot),H=H+Math.imul(Be,Mt)|0,k=k+Math.imul(Be,xt)|0,k=k+Math.imul(Te,Mt)|0,F=F+Math.imul(Te,xt)|0,H=H+Math.imul(xe,Zt)|0,k=k+Math.imul(xe,Tt)|0,k=k+Math.imul(ke,Zt)|0,F=F+Math.imul(ke,Tt)|0,H=H+Math.imul(ve,St)|0,k=k+Math.imul(ve,Pt)|0,k=k+Math.imul(Ge,St)|0,F=F+Math.imul(Ge,Pt)|0,H=H+Math.imul(B,kt)|0,k=k+Math.imul(B,en)|0,k=k+Math.imul(q,kt)|0,F=F+Math.imul(q,en)|0;var Fe=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,H=Math.imul(Se,Mt),k=Math.imul(Se,xt),k=k+Math.imul(De,Mt)|0,F=Math.imul(De,xt),H=H+Math.imul(Be,Zt)|0,k=k+Math.imul(Be,Tt)|0,k=k+Math.imul(Te,Zt)|0,F=F+Math.imul(Te,Tt)|0,H=H+Math.imul(xe,St)|0,k=k+Math.imul(xe,Pt)|0,k=k+Math.imul(ke,St)|0,F=F+Math.imul(ke,Pt)|0,H=H+Math.imul(ve,kt)|0,k=k+Math.imul(ve,en)|0,k=k+Math.imul(Ge,kt)|0,F=F+Math.imul(Ge,en)|0;var tt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tt>>>26)|0,tt&=67108863,H=Math.imul(Se,Zt),k=Math.imul(Se,Tt),k=k+Math.imul(De,Zt)|0,F=Math.imul(De,Tt),H=H+Math.imul(Be,St)|0,k=k+Math.imul(Be,Pt)|0,k=k+Math.imul(Te,St)|0,F=F+Math.imul(Te,Pt)|0,H=H+Math.imul(xe,kt)|0,k=k+Math.imul(xe,en)|0,k=k+Math.imul(ke,kt)|0,F=F+Math.imul(ke,en)|0;var nt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nt>>>26)|0,nt&=67108863,H=Math.imul(Se,St),k=Math.imul(Se,Pt),k=k+Math.imul(De,St)|0,F=Math.imul(De,Pt),H=H+Math.imul(Be,kt)|0,k=k+Math.imul(Be,en)|0,k=k+Math.imul(Te,kt)|0,F=F+Math.imul(Te,en)|0;var Vt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,H=Math.imul(Se,kt),k=Math.imul(Se,en),k=k+Math.imul(De,kt)|0,F=Math.imul(De,en);var Bt=(K+H|0)+((k&8191)<<13)|0;return K=(F+(k>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,U[0]=nn,U[1]=Ft,U[2]=Ln,U[3]=An,U[4]=Gi,U[5]=Pi,U[6]=Gl,U[7]=Fn,U[8]=cl,U[9]=ki,U[10]=tl,U[11]=nl,U[12]=Dt,U[13]=ht,U[14]=Fe,U[15]=tt,U[16]=nt,U[17]=Vt,U[18]=Bt,K!==0&&(U[19]=K,Y.length++),Y};Math.imul||(u=d);function s(S,L,V){V.negative=L.negative^S.negative,V.length=S.length+L.length;for(var Y=0,T=0,J=0;J>>26)|0,T+=U>>>26,U&=67108863}V.words[J]=K,Y=U,U=T}return Y!==0?V.words[J]=Y:V.length--,V.strip()}function h(S,L,V){var Y=new c;return Y.mulp(S,L,V)}b.prototype.mulTo=function(L,V){var Y,T=this.length+L.length;return this.length===10&&L.length===10?Y=u(this,L,V):T<63?Y=d(this,L,V):T<1024?Y=s(this,L,V):Y=h(this,L,V),Y};function c(S,L){this.x=S,this.y=L}c.prototype.makeRBT=function(L){for(var V=new Array(L),Y=b.prototype._countBits(L)-1,T=0;T>=1;return T},c.prototype.permute=function(L,V,Y,T,J,U){for(var K=0;K>>1)J++;return 1<>>13,Y[2*U+1]=J&8191,J=J>>>13;for(U=2*V;U>=26,V+=T/67108864|0,V+=J>>>26,this.words[Y]=J&67108863}return V!==0&&(this.words[Y]=V,this.length++),this},b.prototype.muln=function(L){return this.clone().imuln(L)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(L){var V=G(L);if(V.length===0)return new b(1);for(var Y=this,T=0;T=0);var V=L%26,Y=(L-V)/26,T=67108863>>>26-V<<26-V,J;if(V!==0){var U=0;for(J=0;J>>26-V}U&&(this.words[J]=U,this.length++)}if(Y!==0){for(J=this.length-1;J>=0;J--)this.words[J+Y]=this.words[J];for(J=0;J=0);var T;V?T=(V-V%26)/26:T=0;var J=L%26,U=Math.min((L-J)/26,this.length),K=67108863^67108863>>>J<U)for(this.length-=U,k=0;k=0&&(F!==0||k>=T);k--){var O=this.words[k]|0;this.words[k]=F<<26-J|O>>>J,F=O&K}return H&&F!==0&&(H.words[H.length++]=F),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},b.prototype.ishrn=function(L,V,Y){return f(this.negative===0),this.iushrn(L,V,Y)},b.prototype.shln=function(L){return this.clone().ishln(L)},b.prototype.ushln=function(L){return this.clone().iushln(L)},b.prototype.shrn=function(L){return this.clone().ishrn(L)},b.prototype.ushrn=function(L){return this.clone().iushrn(L)},b.prototype.testn=function(L){f(typeof L=="number"&&L>=0);var V=L%26,Y=(L-V)/26,T=1<=0);var V=L%26,Y=(L-V)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=Y)return this;if(V!==0&&Y++,this.length=Math.min(Y,this.length),V!==0){var T=67108863^67108863>>>V<=67108864;V++)this.words[V]-=67108864,V===this.length-1?this.words[V+1]=1:this.words[V+1]++;return this.length=Math.max(this.length,V+1),this},b.prototype.isubn=function(L){if(f(typeof L=="number"),f(L<67108864),L<0)return this.iaddn(-L);if(this.negative!==0)return this.negative=0,this.iaddn(L),this.negative=1,this;if(this.words[0]-=L,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var V=0;V>26)-(H/67108864|0),this.words[J+Y]=U&67108863}for(;J>26,this.words[J+Y]=U&67108863;if(K===0)return this.strip();for(f(K===-1),K=0,J=0;J>26,this.words[J]=U&67108863;return this.negative=1,this.strip()},b.prototype._wordDiv=function(L,V){var Y=this.length-L.length,T=this.clone(),J=L,U=J.words[J.length-1]|0,K=this._countBits(U);Y=26-K,Y!==0&&(J=J.ushln(Y),T.iushln(Y),U=J.words[J.length-1]|0);var H=T.length-J.length,k;if(V!=="mod"){k=new b(null),k.length=H+1,k.words=new Array(k.length);for(var F=0;F=0;Q--){var oe=(T.words[J.length+Q]|0)*67108864+(T.words[J.length+Q-1]|0);for(oe=Math.min(oe/U|0,67108863),T._ishlnsubmul(J,oe,Q);T.negative!==0;)oe--,T.negative=0,T._ishlnsubmul(J,1,Q),T.isZero()||(T.negative^=1);k&&(k.words[Q]=oe)}return k&&k.strip(),T.strip(),V!=="div"&&Y!==0&&T.iushrn(Y),{div:k||null,mod:T}},b.prototype.divmod=function(L,V,Y){if(f(!L.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var T,J,U;return this.negative!==0&&L.negative===0?(U=this.neg().divmod(L,V),V!=="mod"&&(T=U.div.neg()),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.iadd(L)),{div:T,mod:J}):this.negative===0&&L.negative!==0?(U=this.divmod(L.neg(),V),V!=="mod"&&(T=U.div.neg()),{div:T,mod:U.mod}):this.negative&L.negative?(U=this.neg().divmod(L.neg(),V),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.isub(L)),{div:U.div,mod:J}):L.length>this.length||this.cmp(L)<0?{div:new b(0),mod:this}:L.length===1?V==="div"?{div:this.divn(L.words[0]),mod:null}:V==="mod"?{div:null,mod:new b(this.modn(L.words[0]))}:{div:this.divn(L.words[0]),mod:new b(this.modn(L.words[0]))}:this._wordDiv(L,V)},b.prototype.div=function(L){return this.divmod(L,"div",!1).div},b.prototype.mod=function(L){return this.divmod(L,"mod",!1).mod},b.prototype.umod=function(L){return this.divmod(L,"mod",!0).mod},b.prototype.divRound=function(L){var V=this.divmod(L);if(V.mod.isZero())return V.div;var Y=V.div.negative!==0?V.mod.isub(L):V.mod,T=L.ushrn(1),J=L.andln(1),U=Y.cmp(T);return U<0||J===1&&U===0?V.div:V.div.negative!==0?V.div.isubn(1):V.div.iaddn(1)},b.prototype.modn=function(L){f(L<=67108863);for(var V=(1<<26)%L,Y=0,T=this.length-1;T>=0;T--)Y=(V*Y+(this.words[T]|0))%L;return Y},b.prototype.idivn=function(L){f(L<=67108863);for(var V=0,Y=this.length-1;Y>=0;Y--){var T=(this.words[Y]|0)+V*67108864;this.words[Y]=T/L|0,V=T%L}return this.strip()},b.prototype.divn=function(L){return this.clone().idivn(L)},b.prototype.egcd=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=new b(0),K=new b(1),H=0;V.isEven()&&Y.isEven();)V.iushrn(1),Y.iushrn(1),++H;for(var k=Y.clone(),F=V.clone();!V.isZero();){for(var O=0,Q=1;!(V.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(V.iushrn(O);O-- >0;)(T.isOdd()||J.isOdd())&&(T.iadd(k),J.isub(F)),T.iushrn(1),J.iushrn(1);for(var oe=0,se=1;!(Y.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(Y.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(k),K.isub(F)),U.iushrn(1),K.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(U),J.isub(K)):(Y.isub(V),U.isub(T),K.isub(J))}return{a:U,b:K,gcd:Y.iushln(H)}},b.prototype._invmp=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=Y.clone();V.cmpn(1)>0&&Y.cmpn(1)>0;){for(var K=0,H=1;!(V.words[0]&H)&&K<26;++K,H<<=1);if(K>0)for(V.iushrn(K);K-- >0;)T.isOdd()&&T.iadd(U),T.iushrn(1);for(var k=0,F=1;!(Y.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(Y.iushrn(k);k-- >0;)J.isOdd()&&J.iadd(U),J.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(J)):(Y.isub(V),J.isub(T))}var O;return V.cmpn(1)===0?O=T:O=J,O.cmpn(0)<0&&O.iadd(L),O},b.prototype.gcd=function(L){if(this.isZero())return L.abs();if(L.isZero())return this.abs();var V=this.clone(),Y=L.clone();V.negative=0,Y.negative=0;for(var T=0;V.isEven()&&Y.isEven();T++)V.iushrn(1),Y.iushrn(1);do{for(;V.isEven();)V.iushrn(1);for(;Y.isEven();)Y.iushrn(1);var J=V.cmp(Y);if(J<0){var U=V;V=Y,Y=U}else if(J===0||Y.cmpn(1)===0)break;V.isub(Y)}while(!0);return Y.iushln(T)},b.prototype.invm=function(L){return this.egcd(L).a.umod(L)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(L){return this.words[0]&L},b.prototype.bincn=function(L){f(typeof L=="number");var V=L%26,Y=(L-V)/26,T=1<>>26,K&=67108863,this.words[U]=K}return J!==0&&(this.words[U]=J,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(L){var V=L<0;if(this.negative!==0&&!V)return-1;if(this.negative===0&&V)return 1;this.strip();var Y;if(this.length>1)Y=1;else{V&&(L=-L),f(L<=67108863,"Number is too big");var T=this.words[0]|0;Y=T===L?0:TL.length)return 1;if(this.length=0;Y--){var T=this.words[Y]|0,J=L.words[Y]|0;if(T!==J){TJ&&(V=1);break}}return V},b.prototype.gtn=function(L){return this.cmpn(L)===1},b.prototype.gt=function(L){return this.cmp(L)===1},b.prototype.gten=function(L){return this.cmpn(L)>=0},b.prototype.gte=function(L){return this.cmp(L)>=0},b.prototype.ltn=function(L){return this.cmpn(L)===-1},b.prototype.lt=function(L){return this.cmp(L)===-1},b.prototype.lten=function(L){return this.cmpn(L)<=0},b.prototype.lte=function(L){return this.cmp(L)<=0},b.prototype.eqn=function(L){return this.cmpn(L)===0},b.prototype.eq=function(L){return this.cmp(L)===0},b.red=function(L){return new R(L)},b.prototype.toRed=function(L){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),L.convertTo(this)._forceRed(L)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(L){return this.red=L,this},b.prototype.forceRed=function(L){return f(!this.red,"Already a number in reduction context"),this._forceRed(L)},b.prototype.redAdd=function(L){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,L)},b.prototype.redIAdd=function(L){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,L)},b.prototype.redSub=function(L){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,L)},b.prototype.redISub=function(L){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,L)},b.prototype.redShl=function(L){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,L)},b.prototype.redMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.mul(this,L)},b.prototype.redIMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.imul(this,L)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(L){return f(this.red&&!L.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,L)};var W={k256:null,p224:null,p192:null,p25519:null};function M(S,L){this.name=S,this.p=new b(L,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}M.prototype._tmp=function(){var L=new b(null);return L.words=new Array(Math.ceil(this.n/13)),L},M.prototype.ireduce=function(L){var V=L,Y;do this.split(V,this.tmp),V=this.imulK(V),V=V.iadd(this.tmp),Y=V.bitLength();while(Y>this.n);var T=Y0?V.isub(this.p):V.strip!==void 0?V.strip():V._strip(),V},M.prototype.split=function(L,V){L.iushrn(this.n,0,V)},M.prototype.imulK=function(L){return L.imul(this.k)};function I(){M.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(I,M),I.prototype.split=function(L,V){for(var Y=4194303,T=Math.min(L.length,9),J=0;J>>22,U=K}U>>>=22,L.words[J-10]=U,U===0&&L.length>10?L.length-=10:L.length-=9},I.prototype.imulK=function(L){L.words[L.length]=0,L.words[L.length+1]=0,L.length+=2;for(var V=0,Y=0;Y>>=26,L.words[Y]=J,V=T}return V!==0&&(L.words[L.length++]=V),L},b._prime=function(L){if(W[L])return W[L];var V;if(L==="k256")V=new I;else if(L==="p224")V=new w;else if(L==="p192")V=new C;else if(L==="p25519")V=new x;else throw new Error("Unknown prime "+L);return W[L]=V,V};function R(S){if(typeof S=="string"){var L=b._prime(S);this.m=L.p,this.prime=L}else f(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}R.prototype._verify1=function(L){f(L.negative===0,"red works only with positives"),f(L.red,"red works only with red numbers")},R.prototype._verify2=function(L,V){f((L.negative|V.negative)===0,"red works only with positives"),f(L.red&&L.red===V.red,"red works only with red numbers")},R.prototype.imod=function(L){return this.prime?this.prime.ireduce(L)._forceRed(this):L.umod(this.m)._forceRed(this)},R.prototype.neg=function(L){return L.isZero()?L.clone():this.m.sub(L)._forceRed(this)},R.prototype.add=function(L,V){this._verify2(L,V);var Y=L.add(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y._forceRed(this)},R.prototype.iadd=function(L,V){this._verify2(L,V);var Y=L.iadd(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y},R.prototype.sub=function(L,V){this._verify2(L,V);var Y=L.sub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y._forceRed(this)},R.prototype.isub=function(L,V){this._verify2(L,V);var Y=L.isub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y},R.prototype.shl=function(L,V){return this._verify1(L),this.imod(L.ushln(V))},R.prototype.imul=function(L,V){return this._verify2(L,V),this.imod(L.imul(V))},R.prototype.mul=function(L,V){return this._verify2(L,V),this.imod(L.mul(V))},R.prototype.isqr=function(L){return this.imul(L,L.clone())},R.prototype.sqr=function(L){return this.mul(L,L)},R.prototype.sqrt=function(L){if(L.isZero())return L.clone();var V=this.m.andln(3);if(f(V%2===1),V===3){var Y=this.m.add(new b(1)).iushrn(2);return this.pow(L,Y)}for(var T=this.m.subn(1),J=0;!T.isZero()&&T.andln(1)===0;)J++,T.iushrn(1);f(!T.isZero());var U=new b(1).toRed(this),K=U.redNeg(),H=this.m.subn(1).iushrn(1),k=this.m.bitLength();for(k=new b(2*k*k).toRed(this);this.pow(k,H).cmp(K)!==0;)k.redIAdd(K);for(var F=this.pow(k,T),O=this.pow(L,T.addn(1).iushrn(1)),Q=this.pow(L,T),oe=J;Q.cmp(U)!==0;){for(var se=Q,he=0;se.cmp(U)!==0;he++)se=se.redSqr();f(he=0;J--){for(var F=V.words[J],O=k-1;O>=0;O--){var Q=F>>O&1;if(U!==T[0]&&(U=this.sqr(U)),Q===0&&K===0){H=0;continue}K<<=1,K|=Q,H++,!(H!==Y&&(J!==0||O!==0))&&(U=this.mul(U,T[K]),H=0,K=0)}k=26}return U},R.prototype.convertTo=function(L){var V=L.umod(this.m);return V===L?V.clone():V},R.prototype.convertFrom=function(L){var V=L.clone();return V.red=null,V},b.mont=function(L){return new g(L)};function g(S){R.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(g,R),g.prototype.convertTo=function(L){return this.imod(L.ushln(this.shift))},g.prototype.convertFrom=function(L){var V=this.imod(L.mul(this.rinv));return V.red=null,V},g.prototype.imul=function(L,V){if(L.isZero()||V.isZero())return L.words[0]=0,L.length=1,L;var Y=L.imul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.mul=function(L,V){if(L.isZero()||V.isZero())return new b(0)._forceRed(this);var Y=L.mul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.invm=function(L){var V=this.imod(L._invmp(this.m).mul(this.r2));return V._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],182:[function(t,i,l){l.byteLength=p,l.toByteArray=X,l.fromByteArray=G;for(var a=[],o=[],r=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,b=f.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var s=d.indexOf("=");s===-1&&(s=u);var h=s===u?0:4-s%4;return[s,h]}function p(d){var u=Z(d),s=u[0],h=u[1];return(s+h)*3/4-h}function y(d,u,s){return(u+s)*3/4-s}function X(d){var u,s=Z(d),h=s[0],c=s[1],W=new r(y(d,h,c)),M=0,I=c>0?h-4:h,w;for(w=0;w>16&255,W[M++]=u>>8&255,W[M++]=u&255;return c===2&&(u=o[d.charCodeAt(w)]<<2|o[d.charCodeAt(w+1)]>>4,W[M++]=u&255),c===1&&(u=o[d.charCodeAt(w)]<<10|o[d.charCodeAt(w+1)]<<4|o[d.charCodeAt(w+2)]>>2,W[M++]=u>>8&255,W[M++]=u&255),W}function m(d){return a[d>>18&63]+a[d>>12&63]+a[d>>6&63]+a[d&63]}function N(d,u,s){for(var h,c=[],W=u;WI?I:M+W));return h===1?(u=d[s-1],c.push(a[u>>2]+a[u<<4&63]+"==")):h===2&&(u=(d[s-2]<<8)+d[s-1],c.push(a[u>>10]+a[u>>4&63]+a[u<<2&63]+"=")),c.join("")}},{}],183:[function(t,i,l){function a(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(o)}(function(o,r){function f(V,Y){if(!V)throw new Error(Y||"Assertion failed")}function v(V,Y){V.super_=Y;var T=function(){};T.prototype=Y.prototype,V.prototype=new T,V.prototype.constructor=V}function b(V,Y,T){if(b.isBN(V))return V;this.negative=0,this.words=null,this.length=0,this.red=null,V!==null&&((Y==="le"||Y==="be")&&(T=Y,Y=10),this._init(V||0,Y||10,T||"be"))}a(o)==="object"?o.exports=b:r.BN=b,b.BN=b,b.wordSize=26;var Z;try{Z=t("buffer").Buffer}catch{}b.isBN=function(Y){return Y instanceof b?!0:Y!==null&&a(Y)==="object"&&Y.constructor.wordSize===b.wordSize&&Array.isArray(Y.words)},b.max=function(Y,T){return Y.cmp(T)>0?Y:T},b.min=function(Y,T){return Y.cmp(T)<0?Y:T},b.prototype._init=function(Y,T,J){if(typeof Y=="number")return this._initNumber(Y,T,J);if(a(Y)==="object")return this._initArray(Y,T,J);T==="hex"&&(T=16),f(T===(T|0)&&T>=2&&T<=36),Y=Y.toString().replace(/\s+/g,"");var U=0;Y[0]==="-"&&U++,T===16?this._parseHex(Y,U):this._parseBase(Y,T,U),Y[0]==="-"&&(this.negative=1),this._strip(),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initNumber=function(Y,T,J){Y<0&&(this.negative=1,Y=-Y),Y<67108864?(this.words=[Y&67108863],this.length=1):Y<4503599627370496?(this.words=[Y&67108863,Y/67108864&67108863],this.length=2):(f(Y<9007199254740992),this.words=[Y&67108863,Y/67108864&67108863,1],this.length=3),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initArray=function(Y,T,J){if(f(typeof Y.length=="number"),Y.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(Y.length/3),this.words=new Array(this.length);for(var U=0;U=0;U-=3)H=Y[U]|Y[U-1]<<8|Y[U-2]<<16,this.words[K]|=H<>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);else if(J==="le")for(U=0,K=0;U>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);return this._strip()};function p(V,Y,T){for(var J=0,U=Math.min(V.length,T),K=0,H=Y;H=49&&k<=54?F=k-49+10:k>=17&&k<=22?F=k-17+10:F=k,J|=F,K|=F}return f(!(K&240),"Invalid character in "+V),J}b.prototype._parseHex=function(Y,T){this.length=Math.ceil((Y.length-T)/6),this.words=new Array(this.length);for(var J=0;J=T;J-=6)K=p(Y,J,J+6),this.words[U]|=K<>>26-H&4194303,H+=24,H>=26&&(H-=26,U++);J+6!==T&&(K=p(Y,T,J+6),this.words[U]|=K<>>26-H&4194303),this._strip()};function y(V,Y,T,J){for(var U=0,K=0,H=Math.min(V.length,T),k=Y;k=49?K=F-49+10:F>=17?K=F-17+10:K=F,f(F>=0&&K1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{b.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{b.prototype.inspect=m}else b.prototype.inspect=m;function m(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],G=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(Y,T){Y=Y||10,T=T|0||1;var J;if(Y===16||Y==="hex"){J="";for(var U=0,K=0,H=0;H>>24-U&16777215,K!==0||H!==this.length-1?J=N[6-F.length]+F+J:J=F+J,U+=2,U>=26&&(U-=26,H--)}for(K!==0&&(J=K.toString(16)+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}if(Y===(Y|0)&&Y>=2&&Y<=36){var O=G[Y],Q=d[Y];J="";var oe=this.clone();for(oe.negative=0;!oe.isZero();){var se=oe.modrn(Q).toString(Y);oe=oe.idivn(Q),oe.isZero()?J=se+J:J=N[O-se.length]+se+J}for(this.isZero()&&(J="0"+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var Y=this.words[0];return this.length===2?Y+=this.words[1]*67108864:this.length===3&&this.words[2]===1?Y+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-Y:Y},b.prototype.toJSON=function(){return this.toString(16,2)},Z&&(b.prototype.toBuffer=function(Y,T){return this.toArrayLike(Z,Y,T)}),b.prototype.toArray=function(Y,T){return this.toArrayLike(Array,Y,T)};var u=function(Y,T){return Y.allocUnsafe?Y.allocUnsafe(T):new Y(T)};b.prototype.toArrayLike=function(Y,T,J){this._strip();var U=this.byteLength(),K=J||Math.max(1,U);f(U<=K,"byte array longer than desired length"),f(K>0,"Requested array length <= 0");var H=u(Y,K),k=T==="le"?"LE":"BE";return this["_toArrayLike"+k](H,U),H},b.prototype._toArrayLikeLE=function(Y,T){for(var J=0,U=0,K=0,H=0;K>8&255),J>16&255),H===6?(J>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J=0&&(Y[J--]=k>>8&255),J>=0&&(Y[J--]=k>>16&255),H===6?(J>=0&&(Y[J--]=k>>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J>=0)for(Y[J--]=U;J>=0;)Y[J--]=0},Math.clz32?b.prototype._countBits=function(Y){return 32-Math.clz32(Y)}:b.prototype._countBits=function(Y){var T=Y,J=0;return T>=4096&&(J+=13,T>>>=13),T>=64&&(J+=7,T>>>=7),T>=8&&(J+=4,T>>>=4),T>=2&&(J+=2,T>>>=2),J+T},b.prototype._zeroBits=function(Y){if(Y===0)return 26;var T=Y,J=0;return T&8191||(J+=13,T>>>=13),T&127||(J+=7,T>>>=7),T&15||(J+=4,T>>>=4),T&3||(J+=2,T>>>=2),T&1||J++,J},b.prototype.bitLength=function(){var Y=this.words[this.length-1],T=this._countBits(Y);return(this.length-1)*26+T};function s(V){for(var Y=new Array(V.bitLength()),T=0;T>>U&1}return Y}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var Y=0,T=0;TY.length?this.clone().ior(Y):Y.clone().ior(this)},b.prototype.uor=function(Y){return this.length>Y.length?this.clone().iuor(Y):Y.clone().iuor(this)},b.prototype.iuand=function(Y){var T;this.length>Y.length?T=Y:T=this;for(var J=0;JY.length?this.clone().iand(Y):Y.clone().iand(this)},b.prototype.uand=function(Y){return this.length>Y.length?this.clone().iuand(Y):Y.clone().iuand(this)},b.prototype.iuxor=function(Y){var T,J;this.length>Y.length?(T=this,J=Y):(T=Y,J=this);for(var U=0;UY.length?this.clone().ixor(Y):Y.clone().ixor(this)},b.prototype.uxor=function(Y){return this.length>Y.length?this.clone().iuxor(Y):Y.clone().iuxor(this)},b.prototype.inotn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Math.ceil(Y/26)|0,J=Y%26;this._expand(T),J>0&&T--;for(var U=0;U0&&(this.words[U]=~this.words[U]&67108863>>26-J),this._strip()},b.prototype.notn=function(Y){return this.clone().inotn(Y)},b.prototype.setn=function(Y,T){f(typeof Y=="number"&&Y>=0);var J=Y/26|0,U=Y%26;return this._expand(J+1),T?this.words[J]=this.words[J]|1<Y.length?(J=this,U=Y):(J=Y,U=this);for(var K=0,H=0;H>>26;for(;K!==0&&H>>26;if(this.length=J.length,K!==0)this.words[this.length]=K,this.length++;else if(J!==this)for(;HY.length?this.clone().iadd(Y):Y.clone().iadd(this)},b.prototype.isub=function(Y){if(Y.negative!==0){Y.negative=0;var T=this.iadd(Y);return Y.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(Y),this.negative=1,this._normSign();var J=this.cmp(Y);if(J===0)return this.negative=0,this.length=1,this.words[0]=0,this;var U,K;J>0?(U=this,K=Y):(U=Y,K=this);for(var H=0,k=0;k>26,this.words[k]=T&67108863;for(;H!==0&&k>26,this.words[k]=T&67108863;if(H===0&&k>>26,oe=F&67108863,se=Math.min(O,Y.length-1),he=Math.max(0,O-V.length+1);he<=se;he++){var pe=O-he|0;U=V.words[pe]|0,K=Y.words[he]|0,H=U*K+oe,Q+=H/67108864|0,oe=H&67108863}T.words[O]=oe|0,F=Q|0}return F!==0?T.words[O]=F|0:T.length--,T._strip()}var c=function(Y,T,J){var U=Y.words,K=T.words,H=J.words,k=0,F,O,Q,oe=U[0]|0,se=oe&8191,he=oe>>>13,pe=U[1]|0,re=pe&8191,_=pe>>>13,E=U[2]|0,$=E&8191,ae=E>>>13,le=U[3]|0,ee=le&8191,te=le>>>13,be=U[4]|0,ne=be&8191,B=be>>>13,q=U[5]|0,ue=q&8191,ve=q>>>13,Ge=U[6]|0,Je=Ge&8191,xe=Ge>>>13,ke=U[7]|0,Pe=ke&8191,Be=ke>>>13,Te=U[8]|0,we=Te&8191,Se=Te>>>13,De=U[9]|0,me=De&8191,Ve=De>>>13,Me=K[0]|0,Ie=Me&8191,Ze=Me>>>13,Ce=K[1]|0,ye=Ce&8191,Ue=Ce>>>13,qe=K[2]|0,ie=qe&8191,Oe=qe>>>13,Ke=K[3]|0,Xe=Ke&8191,Re=Ke>>>13,Ae=K[4]|0,ct=Ae&8191,lt=Ae>>>13,ot=K[5]|0,wt=ot&8191,Mt=ot>>>13,xt=K[6]|0,Gt=xt&8191,Zt=xt>>>13,Tt=K[7]|0,Ct=Tt&8191,St=Tt>>>13,Pt=K[8]|0,Ut=Pt&8191,kt=Pt>>>13,en=K[9]|0,nn=en&8191,Ft=en>>>13;J.negative=Y.negative^T.negative,J.length=19,F=Math.imul(se,Ie),O=Math.imul(se,Ze),O=O+Math.imul(he,Ie)|0,Q=Math.imul(he,Ze);var Ln=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,F=Math.imul(re,Ie),O=Math.imul(re,Ze),O=O+Math.imul(_,Ie)|0,Q=Math.imul(_,Ze),F=F+Math.imul(se,ye)|0,O=O+Math.imul(se,Ue)|0,O=O+Math.imul(he,ye)|0,Q=Q+Math.imul(he,Ue)|0;var An=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(An>>>26)|0,An&=67108863,F=Math.imul($,Ie),O=Math.imul($,Ze),O=O+Math.imul(ae,Ie)|0,Q=Math.imul(ae,Ze),F=F+Math.imul(re,ye)|0,O=O+Math.imul(re,Ue)|0,O=O+Math.imul(_,ye)|0,Q=Q+Math.imul(_,Ue)|0,F=F+Math.imul(se,ie)|0,O=O+Math.imul(se,Oe)|0,O=O+Math.imul(he,ie)|0,Q=Q+Math.imul(he,Oe)|0;var Gi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,F=Math.imul(ee,Ie),O=Math.imul(ee,Ze),O=O+Math.imul(te,Ie)|0,Q=Math.imul(te,Ze),F=F+Math.imul($,ye)|0,O=O+Math.imul($,Ue)|0,O=O+Math.imul(ae,ye)|0,Q=Q+Math.imul(ae,Ue)|0,F=F+Math.imul(re,ie)|0,O=O+Math.imul(re,Oe)|0,O=O+Math.imul(_,ie)|0,Q=Q+Math.imul(_,Oe)|0,F=F+Math.imul(se,Xe)|0,O=O+Math.imul(se,Re)|0,O=O+Math.imul(he,Xe)|0,Q=Q+Math.imul(he,Re)|0;var Pi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,F=Math.imul(ne,Ie),O=Math.imul(ne,Ze),O=O+Math.imul(B,Ie)|0,Q=Math.imul(B,Ze),F=F+Math.imul(ee,ye)|0,O=O+Math.imul(ee,Ue)|0,O=O+Math.imul(te,ye)|0,Q=Q+Math.imul(te,Ue)|0,F=F+Math.imul($,ie)|0,O=O+Math.imul($,Oe)|0,O=O+Math.imul(ae,ie)|0,Q=Q+Math.imul(ae,Oe)|0,F=F+Math.imul(re,Xe)|0,O=O+Math.imul(re,Re)|0,O=O+Math.imul(_,Xe)|0,Q=Q+Math.imul(_,Re)|0,F=F+Math.imul(se,ct)|0,O=O+Math.imul(se,lt)|0,O=O+Math.imul(he,ct)|0,Q=Q+Math.imul(he,lt)|0;var Gl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,F=Math.imul(ue,Ie),O=Math.imul(ue,Ze),O=O+Math.imul(ve,Ie)|0,Q=Math.imul(ve,Ze),F=F+Math.imul(ne,ye)|0,O=O+Math.imul(ne,Ue)|0,O=O+Math.imul(B,ye)|0,Q=Q+Math.imul(B,Ue)|0,F=F+Math.imul(ee,ie)|0,O=O+Math.imul(ee,Oe)|0,O=O+Math.imul(te,ie)|0,Q=Q+Math.imul(te,Oe)|0,F=F+Math.imul($,Xe)|0,O=O+Math.imul($,Re)|0,O=O+Math.imul(ae,Xe)|0,Q=Q+Math.imul(ae,Re)|0,F=F+Math.imul(re,ct)|0,O=O+Math.imul(re,lt)|0,O=O+Math.imul(_,ct)|0,Q=Q+Math.imul(_,lt)|0,F=F+Math.imul(se,wt)|0,O=O+Math.imul(se,Mt)|0,O=O+Math.imul(he,wt)|0,Q=Q+Math.imul(he,Mt)|0;var Fn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,F=Math.imul(Je,Ie),O=Math.imul(Je,Ze),O=O+Math.imul(xe,Ie)|0,Q=Math.imul(xe,Ze),F=F+Math.imul(ue,ye)|0,O=O+Math.imul(ue,Ue)|0,O=O+Math.imul(ve,ye)|0,Q=Q+Math.imul(ve,Ue)|0,F=F+Math.imul(ne,ie)|0,O=O+Math.imul(ne,Oe)|0,O=O+Math.imul(B,ie)|0,Q=Q+Math.imul(B,Oe)|0,F=F+Math.imul(ee,Xe)|0,O=O+Math.imul(ee,Re)|0,O=O+Math.imul(te,Xe)|0,Q=Q+Math.imul(te,Re)|0,F=F+Math.imul($,ct)|0,O=O+Math.imul($,lt)|0,O=O+Math.imul(ae,ct)|0,Q=Q+Math.imul(ae,lt)|0,F=F+Math.imul(re,wt)|0,O=O+Math.imul(re,Mt)|0,O=O+Math.imul(_,wt)|0,Q=Q+Math.imul(_,Mt)|0,F=F+Math.imul(se,Gt)|0,O=O+Math.imul(se,Zt)|0,O=O+Math.imul(he,Gt)|0,Q=Q+Math.imul(he,Zt)|0;var cl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(cl>>>26)|0,cl&=67108863,F=Math.imul(Pe,Ie),O=Math.imul(Pe,Ze),O=O+Math.imul(Be,Ie)|0,Q=Math.imul(Be,Ze),F=F+Math.imul(Je,ye)|0,O=O+Math.imul(Je,Ue)|0,O=O+Math.imul(xe,ye)|0,Q=Q+Math.imul(xe,Ue)|0,F=F+Math.imul(ue,ie)|0,O=O+Math.imul(ue,Oe)|0,O=O+Math.imul(ve,ie)|0,Q=Q+Math.imul(ve,Oe)|0,F=F+Math.imul(ne,Xe)|0,O=O+Math.imul(ne,Re)|0,O=O+Math.imul(B,Xe)|0,Q=Q+Math.imul(B,Re)|0,F=F+Math.imul(ee,ct)|0,O=O+Math.imul(ee,lt)|0,O=O+Math.imul(te,ct)|0,Q=Q+Math.imul(te,lt)|0,F=F+Math.imul($,wt)|0,O=O+Math.imul($,Mt)|0,O=O+Math.imul(ae,wt)|0,Q=Q+Math.imul(ae,Mt)|0,F=F+Math.imul(re,Gt)|0,O=O+Math.imul(re,Zt)|0,O=O+Math.imul(_,Gt)|0,Q=Q+Math.imul(_,Zt)|0,F=F+Math.imul(se,Ct)|0,O=O+Math.imul(se,St)|0,O=O+Math.imul(he,Ct)|0,Q=Q+Math.imul(he,St)|0;var ki=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ki>>>26)|0,ki&=67108863,F=Math.imul(we,Ie),O=Math.imul(we,Ze),O=O+Math.imul(Se,Ie)|0,Q=Math.imul(Se,Ze),F=F+Math.imul(Pe,ye)|0,O=O+Math.imul(Pe,Ue)|0,O=O+Math.imul(Be,ye)|0,Q=Q+Math.imul(Be,Ue)|0,F=F+Math.imul(Je,ie)|0,O=O+Math.imul(Je,Oe)|0,O=O+Math.imul(xe,ie)|0,Q=Q+Math.imul(xe,Oe)|0,F=F+Math.imul(ue,Xe)|0,O=O+Math.imul(ue,Re)|0,O=O+Math.imul(ve,Xe)|0,Q=Q+Math.imul(ve,Re)|0,F=F+Math.imul(ne,ct)|0,O=O+Math.imul(ne,lt)|0,O=O+Math.imul(B,ct)|0,Q=Q+Math.imul(B,lt)|0,F=F+Math.imul(ee,wt)|0,O=O+Math.imul(ee,Mt)|0,O=O+Math.imul(te,wt)|0,Q=Q+Math.imul(te,Mt)|0,F=F+Math.imul($,Gt)|0,O=O+Math.imul($,Zt)|0,O=O+Math.imul(ae,Gt)|0,Q=Q+Math.imul(ae,Zt)|0,F=F+Math.imul(re,Ct)|0,O=O+Math.imul(re,St)|0,O=O+Math.imul(_,Ct)|0,Q=Q+Math.imul(_,St)|0,F=F+Math.imul(se,Ut)|0,O=O+Math.imul(se,kt)|0,O=O+Math.imul(he,Ut)|0,Q=Q+Math.imul(he,kt)|0;var tl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tl>>>26)|0,tl&=67108863,F=Math.imul(me,Ie),O=Math.imul(me,Ze),O=O+Math.imul(Ve,Ie)|0,Q=Math.imul(Ve,Ze),F=F+Math.imul(we,ye)|0,O=O+Math.imul(we,Ue)|0,O=O+Math.imul(Se,ye)|0,Q=Q+Math.imul(Se,Ue)|0,F=F+Math.imul(Pe,ie)|0,O=O+Math.imul(Pe,Oe)|0,O=O+Math.imul(Be,ie)|0,Q=Q+Math.imul(Be,Oe)|0,F=F+Math.imul(Je,Xe)|0,O=O+Math.imul(Je,Re)|0,O=O+Math.imul(xe,Xe)|0,Q=Q+Math.imul(xe,Re)|0,F=F+Math.imul(ue,ct)|0,O=O+Math.imul(ue,lt)|0,O=O+Math.imul(ve,ct)|0,Q=Q+Math.imul(ve,lt)|0,F=F+Math.imul(ne,wt)|0,O=O+Math.imul(ne,Mt)|0,O=O+Math.imul(B,wt)|0,Q=Q+Math.imul(B,Mt)|0,F=F+Math.imul(ee,Gt)|0,O=O+Math.imul(ee,Zt)|0,O=O+Math.imul(te,Gt)|0,Q=Q+Math.imul(te,Zt)|0,F=F+Math.imul($,Ct)|0,O=O+Math.imul($,St)|0,O=O+Math.imul(ae,Ct)|0,Q=Q+Math.imul(ae,St)|0,F=F+Math.imul(re,Ut)|0,O=O+Math.imul(re,kt)|0,O=O+Math.imul(_,Ut)|0,Q=Q+Math.imul(_,kt)|0,F=F+Math.imul(se,nn)|0,O=O+Math.imul(se,Ft)|0,O=O+Math.imul(he,nn)|0,Q=Q+Math.imul(he,Ft)|0;var nl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nl>>>26)|0,nl&=67108863,F=Math.imul(me,ye),O=Math.imul(me,Ue),O=O+Math.imul(Ve,ye)|0,Q=Math.imul(Ve,Ue),F=F+Math.imul(we,ie)|0,O=O+Math.imul(we,Oe)|0,O=O+Math.imul(Se,ie)|0,Q=Q+Math.imul(Se,Oe)|0,F=F+Math.imul(Pe,Xe)|0,O=O+Math.imul(Pe,Re)|0,O=O+Math.imul(Be,Xe)|0,Q=Q+Math.imul(Be,Re)|0,F=F+Math.imul(Je,ct)|0,O=O+Math.imul(Je,lt)|0,O=O+Math.imul(xe,ct)|0,Q=Q+Math.imul(xe,lt)|0,F=F+Math.imul(ue,wt)|0,O=O+Math.imul(ue,Mt)|0,O=O+Math.imul(ve,wt)|0,Q=Q+Math.imul(ve,Mt)|0,F=F+Math.imul(ne,Gt)|0,O=O+Math.imul(ne,Zt)|0,O=O+Math.imul(B,Gt)|0,Q=Q+Math.imul(B,Zt)|0,F=F+Math.imul(ee,Ct)|0,O=O+Math.imul(ee,St)|0,O=O+Math.imul(te,Ct)|0,Q=Q+Math.imul(te,St)|0,F=F+Math.imul($,Ut)|0,O=O+Math.imul($,kt)|0,O=O+Math.imul(ae,Ut)|0,Q=Q+Math.imul(ae,kt)|0,F=F+Math.imul(re,nn)|0,O=O+Math.imul(re,Ft)|0,O=O+Math.imul(_,nn)|0,Q=Q+Math.imul(_,Ft)|0;var Dt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,F=Math.imul(me,ie),O=Math.imul(me,Oe),O=O+Math.imul(Ve,ie)|0,Q=Math.imul(Ve,Oe),F=F+Math.imul(we,Xe)|0,O=O+Math.imul(we,Re)|0,O=O+Math.imul(Se,Xe)|0,Q=Q+Math.imul(Se,Re)|0,F=F+Math.imul(Pe,ct)|0,O=O+Math.imul(Pe,lt)|0,O=O+Math.imul(Be,ct)|0,Q=Q+Math.imul(Be,lt)|0,F=F+Math.imul(Je,wt)|0,O=O+Math.imul(Je,Mt)|0,O=O+Math.imul(xe,wt)|0,Q=Q+Math.imul(xe,Mt)|0,F=F+Math.imul(ue,Gt)|0,O=O+Math.imul(ue,Zt)|0,O=O+Math.imul(ve,Gt)|0,Q=Q+Math.imul(ve,Zt)|0,F=F+Math.imul(ne,Ct)|0,O=O+Math.imul(ne,St)|0,O=O+Math.imul(B,Ct)|0,Q=Q+Math.imul(B,St)|0,F=F+Math.imul(ee,Ut)|0,O=O+Math.imul(ee,kt)|0,O=O+Math.imul(te,Ut)|0,Q=Q+Math.imul(te,kt)|0,F=F+Math.imul($,nn)|0,O=O+Math.imul($,Ft)|0,O=O+Math.imul(ae,nn)|0,Q=Q+Math.imul(ae,Ft)|0;var ht=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ht>>>26)|0,ht&=67108863,F=Math.imul(me,Xe),O=Math.imul(me,Re),O=O+Math.imul(Ve,Xe)|0,Q=Math.imul(Ve,Re),F=F+Math.imul(we,ct)|0,O=O+Math.imul(we,lt)|0,O=O+Math.imul(Se,ct)|0,Q=Q+Math.imul(Se,lt)|0,F=F+Math.imul(Pe,wt)|0,O=O+Math.imul(Pe,Mt)|0,O=O+Math.imul(Be,wt)|0,Q=Q+Math.imul(Be,Mt)|0,F=F+Math.imul(Je,Gt)|0,O=O+Math.imul(Je,Zt)|0,O=O+Math.imul(xe,Gt)|0,Q=Q+Math.imul(xe,Zt)|0,F=F+Math.imul(ue,Ct)|0,O=O+Math.imul(ue,St)|0,O=O+Math.imul(ve,Ct)|0,Q=Q+Math.imul(ve,St)|0,F=F+Math.imul(ne,Ut)|0,O=O+Math.imul(ne,kt)|0,O=O+Math.imul(B,Ut)|0,Q=Q+Math.imul(B,kt)|0,F=F+Math.imul(ee,nn)|0,O=O+Math.imul(ee,Ft)|0,O=O+Math.imul(te,nn)|0,Q=Q+Math.imul(te,Ft)|0;var Fe=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,F=Math.imul(me,ct),O=Math.imul(me,lt),O=O+Math.imul(Ve,ct)|0,Q=Math.imul(Ve,lt),F=F+Math.imul(we,wt)|0,O=O+Math.imul(we,Mt)|0,O=O+Math.imul(Se,wt)|0,Q=Q+Math.imul(Se,Mt)|0,F=F+Math.imul(Pe,Gt)|0,O=O+Math.imul(Pe,Zt)|0,O=O+Math.imul(Be,Gt)|0,Q=Q+Math.imul(Be,Zt)|0,F=F+Math.imul(Je,Ct)|0,O=O+Math.imul(Je,St)|0,O=O+Math.imul(xe,Ct)|0,Q=Q+Math.imul(xe,St)|0,F=F+Math.imul(ue,Ut)|0,O=O+Math.imul(ue,kt)|0,O=O+Math.imul(ve,Ut)|0,Q=Q+Math.imul(ve,kt)|0,F=F+Math.imul(ne,nn)|0,O=O+Math.imul(ne,Ft)|0,O=O+Math.imul(B,nn)|0,Q=Q+Math.imul(B,Ft)|0;var tt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tt>>>26)|0,tt&=67108863,F=Math.imul(me,wt),O=Math.imul(me,Mt),O=O+Math.imul(Ve,wt)|0,Q=Math.imul(Ve,Mt),F=F+Math.imul(we,Gt)|0,O=O+Math.imul(we,Zt)|0,O=O+Math.imul(Se,Gt)|0,Q=Q+Math.imul(Se,Zt)|0,F=F+Math.imul(Pe,Ct)|0,O=O+Math.imul(Pe,St)|0,O=O+Math.imul(Be,Ct)|0,Q=Q+Math.imul(Be,St)|0,F=F+Math.imul(Je,Ut)|0,O=O+Math.imul(Je,kt)|0,O=O+Math.imul(xe,Ut)|0,Q=Q+Math.imul(xe,kt)|0,F=F+Math.imul(ue,nn)|0,O=O+Math.imul(ue,Ft)|0,O=O+Math.imul(ve,nn)|0,Q=Q+Math.imul(ve,Ft)|0;var nt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nt>>>26)|0,nt&=67108863,F=Math.imul(me,Gt),O=Math.imul(me,Zt),O=O+Math.imul(Ve,Gt)|0,Q=Math.imul(Ve,Zt),F=F+Math.imul(we,Ct)|0,O=O+Math.imul(we,St)|0,O=O+Math.imul(Se,Ct)|0,Q=Q+Math.imul(Se,St)|0,F=F+Math.imul(Pe,Ut)|0,O=O+Math.imul(Pe,kt)|0,O=O+Math.imul(Be,Ut)|0,Q=Q+Math.imul(Be,kt)|0,F=F+Math.imul(Je,nn)|0,O=O+Math.imul(Je,Ft)|0,O=O+Math.imul(xe,nn)|0,Q=Q+Math.imul(xe,Ft)|0;var Vt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,F=Math.imul(me,Ct),O=Math.imul(me,St),O=O+Math.imul(Ve,Ct)|0,Q=Math.imul(Ve,St),F=F+Math.imul(we,Ut)|0,O=O+Math.imul(we,kt)|0,O=O+Math.imul(Se,Ut)|0,Q=Q+Math.imul(Se,kt)|0,F=F+Math.imul(Pe,nn)|0,O=O+Math.imul(Pe,Ft)|0,O=O+Math.imul(Be,nn)|0,Q=Q+Math.imul(Be,Ft)|0;var Bt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,F=Math.imul(me,Ut),O=Math.imul(me,kt),O=O+Math.imul(Ve,Ut)|0,Q=Math.imul(Ve,kt),F=F+Math.imul(we,nn)|0,O=O+Math.imul(we,Ft)|0,O=O+Math.imul(Se,nn)|0,Q=Q+Math.imul(Se,Ft)|0;var Nn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,F=Math.imul(me,nn),O=Math.imul(me,Ft),O=O+Math.imul(Ve,nn)|0,Q=Math.imul(Ve,Ft);var oi=(k+F|0)+((O&8191)<<13)|0;return k=(Q+(O>>>13)|0)+(oi>>>26)|0,oi&=67108863,H[0]=Ln,H[1]=An,H[2]=Gi,H[3]=Pi,H[4]=Gl,H[5]=Fn,H[6]=cl,H[7]=ki,H[8]=tl,H[9]=nl,H[10]=Dt,H[11]=ht,H[12]=Fe,H[13]=tt,H[14]=nt,H[15]=Vt,H[16]=Bt,H[17]=Nn,H[18]=oi,k!==0&&(H[19]=k,J.length++),J};Math.imul||(c=h);function W(V,Y,T){T.negative=Y.negative^V.negative,T.length=V.length+Y.length;for(var J=0,U=0,K=0;K>>26)|0,U+=H>>>26,H&=67108863}T.words[K]=k,J=H,H=U}return J!==0?T.words[K]=J:T.length--,T._strip()}function M(V,Y,T){return W(V,Y,T)}b.prototype.mulTo=function(Y,T){var J,U=this.length+Y.length;return this.length===10&&Y.length===10?J=c(this,Y,T):U<63?J=h(this,Y,T):U<1024?J=W(this,Y,T):J=M(this,Y,T),J},b.prototype.mul=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),this.mulTo(Y,T)},b.prototype.mulf=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),M(this,Y,T)},b.prototype.imul=function(Y){return this.clone().mulTo(Y,this)},b.prototype.imuln=function(Y){var T=Y<0;T&&(Y=-Y),f(typeof Y=="number"),f(Y<67108864);for(var J=0,U=0;U>=26,J+=K/67108864|0,J+=H>>>26,this.words[U]=H&67108863}return J!==0&&(this.words[U]=J,this.length++),T?this.ineg():this},b.prototype.muln=function(Y){return this.clone().imuln(Y)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(Y){var T=s(Y);if(T.length===0)return new b(1);for(var J=this,U=0;U=0);var T=Y%26,J=(Y-T)/26,U=67108863>>>26-T<<26-T,K;if(T!==0){var H=0;for(K=0;K>>26-T}H&&(this.words[K]=H,this.length++)}if(J!==0){for(K=this.length-1;K>=0;K--)this.words[K+J]=this.words[K];for(K=0;K=0);var U;T?U=(T-T%26)/26:U=0;var K=Y%26,H=Math.min((Y-K)/26,this.length),k=67108863^67108863>>>K<H)for(this.length-=H,O=0;O=0&&(Q!==0||O>=U);O--){var oe=this.words[O]|0;this.words[O]=Q<<26-K|oe>>>K,Q=oe&k}return F&&Q!==0&&(F.words[F.length++]=Q),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},b.prototype.ishrn=function(Y,T,J){return f(this.negative===0),this.iushrn(Y,T,J)},b.prototype.shln=function(Y){return this.clone().ishln(Y)},b.prototype.ushln=function(Y){return this.clone().iushln(Y)},b.prototype.shrn=function(Y){return this.clone().ishrn(Y)},b.prototype.ushrn=function(Y){return this.clone().iushrn(Y)},b.prototype.testn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Y%26,J=(Y-T)/26,U=1<=0);var T=Y%26,J=(Y-T)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=J)return this;if(T!==0&&J++,this.length=Math.min(J,this.length),T!==0){var U=67108863^67108863>>>T<=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},b.prototype.isubn=function(Y){if(f(typeof Y=="number"),f(Y<67108864),Y<0)return this.iaddn(-Y);if(this.negative!==0)return this.negative=0,this.iaddn(Y),this.negative=1,this;if(this.words[0]-=Y,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T>26)-(F/67108864|0),this.words[K+J]=H&67108863}for(;K>26,this.words[K+J]=H&67108863;if(k===0)return this._strip();for(f(k===-1),k=0,K=0;K>26,this.words[K]=H&67108863;return this.negative=1,this._strip()},b.prototype._wordDiv=function(Y,T){var J=this.length-Y.length,U=this.clone(),K=Y,H=K.words[K.length-1]|0,k=this._countBits(H);J=26-k,J!==0&&(K=K.ushln(J),U.iushln(J),H=K.words[K.length-1]|0);var F=U.length-K.length,O;if(T!=="mod"){O=new b(null),O.length=F+1,O.words=new Array(O.length);for(var Q=0;Q=0;se--){var he=(U.words[K.length+se]|0)*67108864+(U.words[K.length+se-1]|0);for(he=Math.min(he/H|0,67108863),U._ishlnsubmul(K,he,se);U.negative!==0;)he--,U.negative=0,U._ishlnsubmul(K,1,se),U.isZero()||(U.negative^=1);O&&(O.words[se]=he)}return O&&O._strip(),U._strip(),T!=="div"&&J!==0&&U.iushrn(J),{div:O||null,mod:U}},b.prototype.divmod=function(Y,T,J){if(f(!Y.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var U,K,H;return this.negative!==0&&Y.negative===0?(H=this.neg().divmod(Y,T),T!=="mod"&&(U=H.div.neg()),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.iadd(Y)),{div:U,mod:K}):this.negative===0&&Y.negative!==0?(H=this.divmod(Y.neg(),T),T!=="mod"&&(U=H.div.neg()),{div:U,mod:H.mod}):this.negative&Y.negative?(H=this.neg().divmod(Y.neg(),T),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.isub(Y)),{div:H.div,mod:K}):Y.length>this.length||this.cmp(Y)<0?{div:new b(0),mod:this}:Y.length===1?T==="div"?{div:this.divn(Y.words[0]),mod:null}:T==="mod"?{div:null,mod:new b(this.modrn(Y.words[0]))}:{div:this.divn(Y.words[0]),mod:new b(this.modrn(Y.words[0]))}:this._wordDiv(Y,T)},b.prototype.div=function(Y){return this.divmod(Y,"div",!1).div},b.prototype.mod=function(Y){return this.divmod(Y,"mod",!1).mod},b.prototype.umod=function(Y){return this.divmod(Y,"mod",!0).mod},b.prototype.divRound=function(Y){var T=this.divmod(Y);if(T.mod.isZero())return T.div;var J=T.div.negative!==0?T.mod.isub(Y):T.mod,U=Y.ushrn(1),K=Y.andln(1),H=J.cmp(U);return H<0||K===1&&H===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},b.prototype.modrn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=(1<<26)%Y,U=0,K=this.length-1;K>=0;K--)U=(J*U+(this.words[K]|0))%Y;return T?-U:U},b.prototype.modn=function(Y){return this.modrn(Y)},b.prototype.idivn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=0,U=this.length-1;U>=0;U--){var K=(this.words[U]|0)+J*67108864;this.words[U]=K/Y|0,J=K%Y}return this._strip(),T?this.ineg():this},b.prototype.divn=function(Y){return this.clone().idivn(Y)},b.prototype.egcd=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=new b(0),k=new b(1),F=0;T.isEven()&&J.isEven();)T.iushrn(1),J.iushrn(1),++F;for(var O=J.clone(),Q=T.clone();!T.isZero();){for(var oe=0,se=1;!(T.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(T.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(O),K.isub(Q)),U.iushrn(1),K.iushrn(1);for(var he=0,pe=1;!(J.words[0]&pe)&&he<26;++he,pe<<=1);if(he>0)for(J.iushrn(he);he-- >0;)(H.isOdd()||k.isOdd())&&(H.iadd(O),k.isub(Q)),H.iushrn(1),k.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(H),K.isub(k)):(J.isub(T),H.isub(U),k.isub(K))}return{a:H,b:k,gcd:J.iushln(F)}},b.prototype._invmp=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=J.clone();T.cmpn(1)>0&&J.cmpn(1)>0;){for(var k=0,F=1;!(T.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(T.iushrn(k);k-- >0;)U.isOdd()&&U.iadd(H),U.iushrn(1);for(var O=0,Q=1;!(J.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(J.iushrn(O);O-- >0;)K.isOdd()&&K.iadd(H),K.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(K)):(J.isub(T),K.isub(U))}var oe;return T.cmpn(1)===0?oe=U:oe=K,oe.cmpn(0)<0&&oe.iadd(Y),oe},b.prototype.gcd=function(Y){if(this.isZero())return Y.abs();if(Y.isZero())return this.abs();var T=this.clone(),J=Y.clone();T.negative=0,J.negative=0;for(var U=0;T.isEven()&&J.isEven();U++)T.iushrn(1),J.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;J.isEven();)J.iushrn(1);var K=T.cmp(J);if(K<0){var H=T;T=J,J=H}else if(K===0||J.cmpn(1)===0)break;T.isub(J)}while(!0);return J.iushln(U)},b.prototype.invm=function(Y){return this.egcd(Y).a.umod(Y)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(Y){return this.words[0]&Y},b.prototype.bincn=function(Y){f(typeof Y=="number");var T=Y%26,J=(Y-T)/26,U=1<>>26,k&=67108863,this.words[H]=k}return K!==0&&(this.words[H]=K,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(Y){var T=Y<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this._strip();var J;if(this.length>1)J=1;else{T&&(Y=-Y),f(Y<=67108863,"Number is too big");var U=this.words[0]|0;J=U===Y?0:UY.length)return 1;if(this.length=0;J--){var U=this.words[J]|0,K=Y.words[J]|0;if(U!==K){UK&&(T=1);break}}return T},b.prototype.gtn=function(Y){return this.cmpn(Y)===1},b.prototype.gt=function(Y){return this.cmp(Y)===1},b.prototype.gten=function(Y){return this.cmpn(Y)>=0},b.prototype.gte=function(Y){return this.cmp(Y)>=0},b.prototype.ltn=function(Y){return this.cmpn(Y)===-1},b.prototype.lt=function(Y){return this.cmp(Y)===-1},b.prototype.lten=function(Y){return this.cmpn(Y)<=0},b.prototype.lte=function(Y){return this.cmp(Y)<=0},b.prototype.eqn=function(Y){return this.cmpn(Y)===0},b.prototype.eq=function(Y){return this.cmp(Y)===0},b.red=function(Y){return new S(Y)},b.prototype.toRed=function(Y){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),Y.convertTo(this)._forceRed(Y)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(Y){return this.red=Y,this},b.prototype.forceRed=function(Y){return f(!this.red,"Already a number in reduction context"),this._forceRed(Y)},b.prototype.redAdd=function(Y){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,Y)},b.prototype.redIAdd=function(Y){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,Y)},b.prototype.redSub=function(Y){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,Y)},b.prototype.redISub=function(Y){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,Y)},b.prototype.redShl=function(Y){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,Y)},b.prototype.redMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.mul(this,Y)},b.prototype.redIMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.imul(this,Y)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(Y){return f(this.red&&!Y.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,Y)};var I={k256:null,p224:null,p192:null,p25519:null};function w(V,Y){this.name=V,this.p=new b(Y,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}w.prototype._tmp=function(){var Y=new b(null);return Y.words=new Array(Math.ceil(this.n/13)),Y},w.prototype.ireduce=function(Y){var T=Y,J;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),J=T.bitLength();while(J>this.n);var U=J0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},w.prototype.split=function(Y,T){Y.iushrn(this.n,0,T)},w.prototype.imulK=function(Y){return Y.imul(this.k)};function C(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(C,w),C.prototype.split=function(Y,T){for(var J=4194303,U=Math.min(Y.length,9),K=0;K>>22,H=k}H>>>=22,Y.words[K-10]=H,H===0&&Y.length>10?Y.length-=10:Y.length-=9},C.prototype.imulK=function(Y){Y.words[Y.length]=0,Y.words[Y.length+1]=0,Y.length+=2;for(var T=0,J=0;J>>=26,Y.words[J]=K,T=U}return T!==0&&(Y.words[Y.length++]=T),Y},b._prime=function(Y){if(I[Y])return I[Y];var T;if(Y==="k256")T=new C;else if(Y==="p224")T=new x;else if(Y==="p192")T=new R;else if(Y==="p25519")T=new g;else throw new Error("Unknown prime "+Y);return I[Y]=T,T};function S(V){if(typeof V=="string"){var Y=b._prime(V);this.m=Y.p,this.prime=Y}else f(V.gtn(1),"modulus must be greater than 1"),this.m=V,this.prime=null}S.prototype._verify1=function(Y){f(Y.negative===0,"red works only with positives"),f(Y.red,"red works only with red numbers")},S.prototype._verify2=function(Y,T){f((Y.negative|T.negative)===0,"red works only with positives"),f(Y.red&&Y.red===T.red,"red works only with red numbers")},S.prototype.imod=function(Y){return this.prime?this.prime.ireduce(Y)._forceRed(this):(X(Y,Y.umod(this.m)._forceRed(this)),Y)},S.prototype.neg=function(Y){return Y.isZero()?Y.clone():this.m.sub(Y)._forceRed(this)},S.prototype.add=function(Y,T){this._verify2(Y,T);var J=Y.add(T);return J.cmp(this.m)>=0&&J.isub(this.m),J._forceRed(this)},S.prototype.iadd=function(Y,T){this._verify2(Y,T);var J=Y.iadd(T);return J.cmp(this.m)>=0&&J.isub(this.m),J},S.prototype.sub=function(Y,T){this._verify2(Y,T);var J=Y.sub(T);return J.cmpn(0)<0&&J.iadd(this.m),J._forceRed(this)},S.prototype.isub=function(Y,T){this._verify2(Y,T);var J=Y.isub(T);return J.cmpn(0)<0&&J.iadd(this.m),J},S.prototype.shl=function(Y,T){return this._verify1(Y),this.imod(Y.ushln(T))},S.prototype.imul=function(Y,T){return this._verify2(Y,T),this.imod(Y.imul(T))},S.prototype.mul=function(Y,T){return this._verify2(Y,T),this.imod(Y.mul(T))},S.prototype.isqr=function(Y){return this.imul(Y,Y.clone())},S.prototype.sqr=function(Y){return this.mul(Y,Y)},S.prototype.sqrt=function(Y){if(Y.isZero())return Y.clone();var T=this.m.andln(3);if(f(T%2===1),T===3){var J=this.m.add(new b(1)).iushrn(2);return this.pow(Y,J)}for(var U=this.m.subn(1),K=0;!U.isZero()&&U.andln(1)===0;)K++,U.iushrn(1);f(!U.isZero());var H=new b(1).toRed(this),k=H.redNeg(),F=this.m.subn(1).iushrn(1),O=this.m.bitLength();for(O=new b(2*O*O).toRed(this);this.pow(O,F).cmp(k)!==0;)O.redIAdd(k);for(var Q=this.pow(O,U),oe=this.pow(Y,U.addn(1).iushrn(1)),se=this.pow(Y,U),he=K;se.cmp(H)!==0;){for(var pe=se,re=0;pe.cmp(H)!==0;re++)pe=pe.redSqr();f(re=0;K--){for(var Q=T.words[K],oe=O-1;oe>=0;oe--){var se=Q>>oe&1;if(H!==U[0]&&(H=this.sqr(H)),se===0&&k===0){F=0;continue}k<<=1,k|=se,F++,!(F!==J&&(K!==0||oe!==0))&&(H=this.mul(H,U[k]),F=0,k=0)}O=26}return H},S.prototype.convertTo=function(Y){var T=Y.umod(this.m);return T===Y?T.clone():T},S.prototype.convertFrom=function(Y){var T=Y.clone();return T.red=null,T},b.mont=function(Y){return new L(Y)};function L(V){S.call(this,V),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(L,S),L.prototype.convertTo=function(Y){return this.imod(Y.ushln(this.shift))},L.prototype.convertFrom=function(Y){var T=this.imod(Y.mul(this.rinv));return T.red=null,T},L.prototype.imul=function(Y,T){if(Y.isZero()||T.isZero())return Y.words[0]=0,Y.length=1,Y;var J=Y.imul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.mul=function(Y,T){if(Y.isZero()||T.isZero())return new b(0)._forceRed(this);var J=Y.mul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.invm=function(Y){var T=this.imod(Y._invmp(this.m).mul(this.r2));return T._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],184:[function(t,i,l){function a(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(Z){return typeof Z}:a=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},a(v)}var o;i.exports=function(b){return o||(o=new r(null)),o.generate(b)};function r(v){this.rand=v}if(i.exports.Rand=r,r.prototype.generate=function(b){return this._rand(b)},r.prototype._rand=function(b){if(this.rand.getBytes)return this.rand.getBytes(b);for(var Z=new Uint8Array(b),p=0;p"u"?"undefined":a(self))==="object")self.crypto&&self.crypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.crypto.getRandomValues(Z),Z}:self.msCrypto&&self.msCrypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.msCrypto.getRandomValues(Z),Z}:(typeof window>"u"?"undefined":a(window))==="object"&&(r.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var f=t("crypto");if(typeof f.randomBytes!="function")throw new Error("Not supported");r.prototype._rand=function(b){return f.randomBytes(b)}}catch{}},{crypto:185}],185:[function(t,i,l){},{}],186:[function(t,i,l){var a=t("safe-buffer").Buffer;function o(p){a.isBuffer(p)||(p=a.from(p));for(var y=p.length/4|0,X=new Array(y),m=0;m>>24]^d[c>>>16&255]^u[W>>>8&255]^s[M&255]^y[R++],w=G[c>>>24]^d[W>>>16&255]^u[M>>>8&255]^s[h&255]^y[R++],C=G[W>>>24]^d[M>>>16&255]^u[h>>>8&255]^s[c&255]^y[R++],x=G[M>>>24]^d[h>>>16&255]^u[c>>>8&255]^s[W&255]^y[R++],h=I,c=w,W=C,M=x;return I=(m[h>>>24]<<24|m[c>>>16&255]<<16|m[W>>>8&255]<<8|m[M&255])^y[R++],w=(m[c>>>24]<<24|m[W>>>16&255]<<16|m[M>>>8&255]<<8|m[h&255])^y[R++],C=(m[W>>>24]<<24|m[M>>>16&255]<<16|m[h>>>8&255]<<8|m[c&255])^y[R++],x=(m[M>>>24]<<24|m[h>>>16&255]<<16|m[c>>>8&255]<<8|m[W&255])^y[R++],I=I>>>0,w=w>>>0,C=C>>>0,x=x>>>0,[I,w,C,x]}var v=[0,1,2,4,8,16,32,64,128,27,54],b=function(){for(var p=new Array(256),y=0;y<256;y++)y<128?p[y]=y<<1:p[y]=y<<1^283;for(var X=[],m=[],N=[[],[],[],[]],G=[[],[],[],[]],d=0,u=0,s=0;s<256;++s){var h=u^u<<1^u<<2^u<<3^u<<4;h=h>>>8^h&255^99,X[d]=h,m[h]=d;var c=p[d],W=p[c],M=p[W],I=p[h]*257^h*16843008;N[0][d]=I<<24|I>>>8,N[1][d]=I<<16|I>>>16,N[2][d]=I<<8|I>>>24,N[3][d]=I,I=M*16843009^W*65537^c*257^d*16843008,G[0][h]=I<<24|I>>>8,G[1][h]=I<<16|I>>>16,G[2][h]=I<<8|I>>>24,G[3][h]=I,d===0?d=u=1:(d=c^p[p[p[M^c]]],u^=p[p[u]])}return{SBOX:X,INV_SBOX:m,SUB_MIX:N,INV_SUB_MIX:G}}();function Z(p){this._key=o(p),this._reset()}Z.blockSize=4*4,Z.keySize=256/8,Z.prototype.blockSize=Z.blockSize,Z.prototype.keySize=Z.keySize,Z.prototype._reset=function(){for(var p=this._key,y=p.length,X=y+6,m=(X+1)*4,N=[],G=0;G>>24,d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255],d^=v[G/y|0]<<24):y>6&&G%y===4&&(d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255]),N[G]=N[G-y]^d}for(var u=[],s=0;s>>24]]^b.INV_SUB_MIX[1][b.SBOX[c>>>16&255]]^b.INV_SUB_MIX[2][b.SBOX[c>>>8&255]]^b.INV_SUB_MIX[3][b.SBOX[c&255]]}this._nRounds=X,this._keySchedule=N,this._invKeySchedule=u},Z.prototype.encryptBlockRaw=function(p){return p=o(p),f(p,this._keySchedule,b.SUB_MIX,b.SBOX,this._nRounds)},Z.prototype.encryptBlock=function(p){var y=this.encryptBlockRaw(p),X=a.allocUnsafe(16);return X.writeUInt32BE(y[0],0),X.writeUInt32BE(y[1],4),X.writeUInt32BE(y[2],8),X.writeUInt32BE(y[3],12),X},Z.prototype.decryptBlock=function(p){p=o(p);var y=p[1];p[1]=p[3],p[3]=y;var X=f(p,this._invKeySchedule,b.INV_SUB_MIX,b.INV_SBOX,this._nRounds),m=a.allocUnsafe(16);return m.writeUInt32BE(X[0],0),m.writeUInt32BE(X[3],4),m.writeUInt32BE(X[2],8),m.writeUInt32BE(X[1],12),m},Z.prototype.scrub=function(){r(this._keySchedule),r(this._invKeySchedule),r(this._key)},i.exports.AES=Z},{"safe-buffer":494}],187:[function(t,i,l){var a=t("./aes"),o=t("safe-buffer").Buffer,r=t("cipher-base"),f=t("inherits"),v=t("./ghash"),b=t("buffer-xor"),Z=t("./incr32");function p(m,N){var G=0;m.length!==N.length&&G++;for(var d=Math.min(m.length,N.length),u=0;u16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u}else if(this.cache.length>=16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u;return null},X.prototype.flush=function(){if(this.cache.length)return this.cache};function m(d){var u=d[15];if(u<1||u>16)throw new Error("unable to decrypt data");for(var s=-1;++s15){var d=this.cache.slice(0,16);return this.cache=this.cache.slice(16),d}return null},m.prototype.flush=function(){for(var d=16-this.cache.length,u=r.allocUnsafe(d),s=-1;++s>>0,0),Z.writeUInt32BE(b[1]>>>0,4),Z.writeUInt32BE(b[2]>>>0,8),Z.writeUInt32BE(b[3]>>>0,12),Z}function v(b){this.h=b,this.state=a.alloc(16,0),this.cache=a.allocUnsafe(0)}v.prototype.ghash=function(b){for(var Z=-1;++Z0;p--)b[p]=b[p]>>>1|(b[p-1]&1)<<31;b[0]=b[0]>>>1,X&&(b[0]=b[0]^225<<24)}this.state=f(Z)},v.prototype.update=function(b){this.cache=a.concat([this.cache,b]);for(var Z;this.cache.length>=16;)Z=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(Z)},v.prototype.final=function(b,Z){return this.cache.length&&this.ghash(a.concat([this.cache,o],16)),this.ghash(f([0,b,0,Z])),this.state},i.exports=v},{"safe-buffer":494}],192:[function(t,i,l){function a(o){for(var r=o.length,f;r--;)if(f=o.readUInt8(r),f===255)o.writeUInt8(0,r);else{f++,o.writeUInt8(f,r);break}}i.exports=a},{}],193:[function(t,i,l){var a=t("buffer-xor");l.encrypt=function(o,r){var f=a(r,o._prev);return o._prev=o._cipher.encryptBlock(f),o._prev},l.decrypt=function(o,r){var f=o._prev;o._prev=r;var v=o._cipher.decryptBlock(r);return a(v,f)}},{"buffer-xor":217}],194:[function(t,i,l){var a=t("safe-buffer").Buffer,o=t("buffer-xor");function r(f,v,b){var Z=v.length,p=o(v,f._cache);return f._cache=f._cache.slice(Z),f._prev=a.concat([f._prev,b?v:p]),p}l.encrypt=function(f,v,b){for(var Z=a.allocUnsafe(0),p;v.length;)if(f._cache.length===0&&(f._cache=f._cipher.encryptBlock(f._prev),f._prev=a.allocUnsafe(0)),f._cache.length<=v.length)p=f._cache.length,Z=a.concat([Z,r(f,v.slice(0,p),b)]),v=v.slice(p);else{Z=a.concat([Z,r(f,v,b)]);break}return Z}},{"buffer-xor":217,"safe-buffer":494}],195:[function(t,i,l){var a=t("safe-buffer").Buffer;function o(f,v,b){for(var Z,p=-1,y=8,X=0,m,N;++p>p%8,f._prev=r(f._prev,b?m:N);return X}function r(f,v){var b=f.length,Z=-1,p=a.allocUnsafe(f.length);for(f=a.concat([f,a.from([v])]);++Z>7;return p}l.encrypt=function(f,v,b){for(var Z=v.length,p=a.allocUnsafe(Z),y=-1;++y=0||!y.umod(Z.prime1)||!y.umod(Z.prime2);)y=new o(r(p));return y}}).call(this,t("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(t,i,l){arguments[4][181][0].apply(l,arguments)},{buffer:185,dup:181}],208:[function(t,i,l){i.exports=t("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(t,i,l){i.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(t,i,l){i.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(t,i,l){var a=t("safe-buffer").Buffer,o=t("create-hash"),r=t("readable-stream"),f=t("inherits"),v=t("./sign"),b=t("./verify"),Z=t("./algorithms.json");Object.keys(Z).forEach(function(N){Z[N].id=a.from(Z[N].id,"hex"),Z[N.toLowerCase()]=Z[N]});function p(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hashType=G.hash,this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(p,r.Writable),p.prototype._write=function(G,d,u){this._hash.update(G),u()},p.prototype.update=function(G,d){return typeof G=="string"&&(G=a.from(G,d)),this._hash.update(G),this},p.prototype.sign=function(G,d){this.end();var u=this._hash.digest(),s=v(u,G,this._hashType,this._signType,this._tag);return d?s.toString(d):s};function y(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(y,r.Writable),y.prototype._write=function(G,d,u){this._hash.update(G),u()},y.prototype.update=function(G,d){return typeof G=="string"&&(G=a.from(G,d)),this._hash.update(G),this},y.prototype.verify=function(G,d,u){typeof d=="string"&&(d=a.from(d,u)),this.end();var s=this._hash.digest();return b(d,s,G,this._signType,this._tag)};function X(N){return new p(N)}function m(N){return new y(N)}i.exports={Sign:X,Verify:m,createSign:X,createVerify:m}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(t,i,l){var a=t("safe-buffer").Buffer,o=t("create-hmac"),r=t("browserify-rsa"),f=t("elliptic").ec,v=t("bn.js"),b=t("parse-asn1"),Z=t("./curves.json");function p(h,c,W,M,I){var w=b(c);if(w.curve){if(M!=="ecdsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");return y(h,w)}else if(w.type==="dsa"){if(M!=="dsa")throw new Error("wrong private key type");return X(h,w,W)}else if(M!=="rsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");h=a.concat([I,h]);for(var C=w.modulus.byteLength(),x=[0,1];h.length+x.length+10&&W.ishrn(M),W}function d(h,c){h=G(h,c),h=h.mod(c);var W=a.from(h.toArray());if(W.length=m)throw new Error("invalid sig")}i.exports=b},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(t,i,l){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var a=t("buffer"),o=a.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=a:(r(a,l),l.Buffer=f);function f(v,b,Z){return o(v,b,Z)}f.prototype=Object.create(o.prototype),r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return a.SlowBuffer(v)}},{buffer:216}],215:[function(t,i,l){arguments[4][185][0].apply(l,arguments)},{dup:185}],216:[function(t,i,l){(function(p){function o(ne){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(q){return typeof q}:o=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},o(ne)}var r=t("base64-js"),f=t("ieee754");l.Buffer=p,l.SlowBuffer=c,l.INSPECT_MAX_BYTES=50;var v=2147483647;l.kMaxLength=v,p.TYPED_ARRAY_SUPPORT=b(),!p.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function b(){try{var ne=new Uint8Array(1);return ne.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},ne.foo()===42}catch{return!1}}Object.defineProperty(p.prototype,"parent",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.buffer}}),Object.defineProperty(p.prototype,"offset",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.byteOffset}});function Z(ne){if(ne>v)throw new RangeError('The value "'+ne+'" is invalid for option "size"');var B=new Uint8Array(ne);return B.__proto__=p.prototype,B}function p(ne,B,q){if(typeof ne=="number"){if(typeof B=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return N(ne)}return y(ne,B,q)}typeof Symbol<"u"&&Symbol.species!=null&&p[Symbol.species]===p&&Object.defineProperty(p,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),p.poolSize=8192;function y(ne,B,q){if(typeof ne=="string")return G(ne,B);if(ArrayBuffer.isView(ne))return d(ne);if(ne==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne));if(te(ne,ArrayBuffer)||ne&&te(ne.buffer,ArrayBuffer))return u(ne,B,q);if(typeof ne=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ue=ne.valueOf&&ne.valueOf();if(ue!=null&&ue!==ne)return p.from(ue,B,q);var ve=s(ne);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ne[Symbol.toPrimitive]=="function")return p.from(ne[Symbol.toPrimitive]("string"),B,q);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne))}p.from=function(ne,B,q){return y(ne,B,q)},p.prototype.__proto__=Uint8Array.prototype,p.__proto__=Uint8Array;function X(ne){if(typeof ne!="number")throw new TypeError('"size" argument must be of type number');if(ne<0)throw new RangeError('The value "'+ne+'" is invalid for option "size"')}function m(ne,B,q){return X(ne),ne<=0?Z(ne):B!==void 0?typeof q=="string"?Z(ne).fill(B,q):Z(ne).fill(B):Z(ne)}p.alloc=function(ne,B,q){return m(ne,B,q)};function N(ne){return X(ne),Z(ne<0?0:h(ne)|0)}p.allocUnsafe=function(ne){return N(ne)},p.allocUnsafeSlow=function(ne){return N(ne)};function G(ne,B){if((typeof B!="string"||B==="")&&(B="utf8"),!p.isEncoding(B))throw new TypeError("Unknown encoding: "+B);var q=W(ne,B)|0,ue=Z(q),ve=ue.write(ne,B);return ve!==q&&(ue=ue.slice(0,ve)),ue}function d(ne){for(var B=ne.length<0?0:h(ne.length)|0,q=Z(B),ue=0;ue=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return ne|0}function c(ne){return+ne!=ne&&(ne=0),p.alloc(+ne)}p.isBuffer=function(B){return B!=null&&B._isBuffer===!0&&B!==p.prototype},p.compare=function(B,q){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),te(q,Uint8Array)&&(q=p.from(q,q.offset,q.byteLength)),!p.isBuffer(B)||!p.isBuffer(q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(B===q)return 0;for(var ue=B.length,ve=q.length,Ge=0,Je=Math.min(ue,ve);Ge2&&arguments[2]===!0;if(!ue&&q===0)return 0;for(var ve=!1;;)switch(B){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return E(ne).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return le(ne).length;default:if(ve)return ue?-1:E(ne).length;B=(""+B).toLowerCase(),ve=!0}}p.byteLength=W;function M(ne,B,q){var ue=!1;if((B===void 0||B<0)&&(B=0),B>this.length||((q===void 0||q>this.length)&&(q=this.length),q<=0)||(q>>>=0,B>>>=0,q<=B))return"";for(ne||(ne="utf8");;)switch(ne){case"hex":return k(this,B,q);case"utf8":case"utf-8":return T(this,B,q);case"ascii":return K(this,B,q);case"latin1":case"binary":return H(this,B,q);case"base64":return Y(this,B,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,B,q);default:if(ue)throw new TypeError("Unknown encoding: "+ne);ne=(ne+"").toLowerCase(),ue=!0}}p.prototype._isBuffer=!0;function I(ne,B,q){var ue=ne[B];ne[B]=ne[q],ne[q]=ue}p.prototype.swap16=function(){var B=this.length;if(B%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var q=0;qq&&(B+=" ... "),""},p.prototype.compare=function(B,q,ue,ve,Ge){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),!p.isBuffer(B))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+o(B));if(q===void 0&&(q=0),ue===void 0&&(ue=B?B.length:0),ve===void 0&&(ve=0),Ge===void 0&&(Ge=this.length),q<0||ue>B.length||ve<0||Ge>this.length)throw new RangeError("out of range index");if(ve>=Ge&&q>=ue)return 0;if(ve>=Ge)return-1;if(q>=ue)return 1;if(q>>>=0,ue>>>=0,ve>>>=0,Ge>>>=0,this===B)return 0;for(var Je=Ge-ve,xe=ue-q,ke=Math.min(Je,xe),Pe=this.slice(ve,Ge),Be=B.slice(q,ue),Te=0;Te2147483647?q=2147483647:q<-2147483648&&(q=-2147483648),q=+q,be(q)&&(q=ve?0:ne.length-1),q<0&&(q=ne.length+q),q>=ne.length){if(ve)return-1;q=ne.length-1}else if(q<0)if(ve)q=0;else return-1;if(typeof B=="string"&&(B=p.from(B,ue)),p.isBuffer(B))return B.length===0?-1:C(ne,B,q,ue,ve);if(typeof B=="number")return B=B&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(ne,B,q):Uint8Array.prototype.lastIndexOf.call(ne,B,q):C(ne,[B],q,ue,ve);throw new TypeError("val must be string, number or Buffer")}function C(ne,B,q,ue,ve){var Ge=1,Je=ne.length,xe=B.length;if(ue!==void 0&&(ue=String(ue).toLowerCase(),ue==="ucs2"||ue==="ucs-2"||ue==="utf16le"||ue==="utf-16le")){if(ne.length<2||B.length<2)return-1;Ge=2,Je/=2,xe/=2,q/=2}function ke(Se,De){return Ge===1?Se[De]:Se.readUInt16BE(De*Ge)}var Pe;if(ve){var Be=-1;for(Pe=q;PeJe&&(q=Je-xe),Pe=q;Pe>=0;Pe--){for(var Te=!0,we=0;weve&&(ue=ve)):ue=ve;var Ge=B.length;ue>Ge/2&&(ue=Ge/2);for(var Je=0;Je>>0,isFinite(ue)?(ue=ue>>>0,ve===void 0&&(ve="utf8")):(ve=ue,ue=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Ge=this.length-q;if((ue===void 0||ue>Ge)&&(ue=Ge),B.length>0&&(ue<0||q<0)||q>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var Je=!1;;)switch(ve){case"hex":return x(this,B,q,ue);case"utf8":case"utf-8":return R(this,B,q,ue);case"ascii":return g(this,B,q,ue);case"latin1":case"binary":return S(this,B,q,ue);case"base64":return L(this,B,q,ue);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,B,q,ue);default:if(Je)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),Je=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(ne,B,q){return B===0&&q===ne.length?r.fromByteArray(ne):r.fromByteArray(ne.slice(B,q))}function T(ne,B,q){q=Math.min(ne.length,q);for(var ue=[],ve=B;ve239?4:Ge>223?3:Ge>191?2:1;if(ve+xe<=q){var ke,Pe,Be,Te;switch(xe){case 1:Ge<128&&(Je=Ge);break;case 2:ke=ne[ve+1],(ke&192)===128&&(Te=(Ge&31)<<6|ke&63,Te>127&&(Je=Te));break;case 3:ke=ne[ve+1],Pe=ne[ve+2],(ke&192)===128&&(Pe&192)===128&&(Te=(Ge&15)<<12|(ke&63)<<6|Pe&63,Te>2047&&(Te<55296||Te>57343)&&(Je=Te));break;case 4:ke=ne[ve+1],Pe=ne[ve+2],Be=ne[ve+3],(ke&192)===128&&(Pe&192)===128&&(Be&192)===128&&(Te=(Ge&15)<<18|(ke&63)<<12|(Pe&63)<<6|Be&63,Te>65535&&Te<1114112&&(Je=Te))}}Je===null?(Je=65533,xe=1):Je>65535&&(Je-=65536,ue.push(Je>>>10&1023|55296),Je=56320|Je&1023),ue.push(Je),ve+=xe}return U(ue)}var J=4096;function U(ne){var B=ne.length;if(B<=J)return String.fromCharCode.apply(String,ne);for(var q="",ue=0;ueue)&&(q=ue);for(var ve="",Ge=B;Geue&&(B=ue),q<0?(q+=ue,q<0&&(q=0)):q>ue&&(q=ue),qq)throw new RangeError("Trying to access beyond buffer length")}p.prototype.readUIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B+--q],Ge=1;q>0&&(Ge*=256);)ve+=this[B+--q]*Ge;return ve},p.prototype.readUInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]},p.prototype.readUInt16LE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]|this[B+1]<<8},p.prototype.readUInt16BE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]<<8|this[B+1]},p.prototype.readUInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),(this[B]|this[B+1]<<8|this[B+2]<<16)+this[B+3]*16777216},p.prototype.readUInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]*16777216+(this[B+1]<<16|this[B+2]<<8|this[B+3])},p.prototype.readIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je=Ge&&(ve-=Math.pow(2,8*q)),ve},p.prototype.readIntBE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=q,Ge=1,Je=this[B+--ve];ve>0&&(Ge*=256);)Je+=this[B+--ve]*Ge;return Ge*=128,Je>=Ge&&(Je-=Math.pow(2,8*q)),Je},p.prototype.readInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]&128?(255-this[B]+1)*-1:this[B]},p.prototype.readInt16LE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B]|this[B+1]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt16BE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B+1]|this[B]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]|this[B+1]<<8|this[B+2]<<16|this[B+3]<<24},p.prototype.readInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]<<24|this[B+1]<<16|this[B+2]<<8|this[B+3]},p.prototype.readFloatLE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!0,23,4)},p.prototype.readFloatBE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!1,23,4)},p.prototype.readDoubleLE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!0,52,8)},p.prototype.readDoubleBE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!1,52,8)};function Q(ne,B,q,ue,ve,Ge){if(!p.isBuffer(ne))throw new TypeError('"buffer" argument must be a Buffer instance');if(B>ve||Bne.length)throw new RangeError("Index out of range")}p.prototype.writeUIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=1,xe=0;for(this[q]=B&255;++xe>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=ue-1,xe=1;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)this[q+Je]=B/xe&255;return q+ue},p.prototype.writeUInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,255,0),this[q]=B&255,q+1},p.prototype.writeUInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeUInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeUInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q+3]=B>>>24,this[q+2]=B>>>16,this[q+1]=B>>>8,this[q]=B&255,q+4},p.prototype.writeUInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4},p.prototype.writeIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=0,xe=1,ke=0;for(this[q]=B&255;++Je>0)-ke&255;return q+ue},p.prototype.writeIntBE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=ue-1,xe=1,ke=0;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)B<0&&ke===0&&this[q+Je+1]!==0&&(ke=1),this[q+Je]=(B/xe>>0)-ke&255;return q+ue},p.prototype.writeInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,127,-128),B<0&&(B=255+B+1),this[q]=B&255,q+1},p.prototype.writeInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),this[q]=B&255,this[q+1]=B>>>8,this[q+2]=B>>>16,this[q+3]=B>>>24,q+4},p.prototype.writeInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),B<0&&(B=4294967295+B+1),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4};function oe(ne,B,q,ue,ve,Ge){if(q+ue>ne.length)throw new RangeError("Index out of range");if(q<0)throw new RangeError("Index out of range")}function se(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,4),f.write(ne,B,q,ue,23,4),q+4}p.prototype.writeFloatLE=function(B,q,ue){return se(this,B,q,!0,ue)},p.prototype.writeFloatBE=function(B,q,ue){return se(this,B,q,!1,ue)};function he(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,8),f.write(ne,B,q,ue,52,8),q+8}p.prototype.writeDoubleLE=function(B,q,ue){return he(this,B,q,!0,ue)},p.prototype.writeDoubleBE=function(B,q,ue){return he(this,B,q,!1,ue)},p.prototype.copy=function(B,q,ue,ve){if(!p.isBuffer(B))throw new TypeError("argument should be a Buffer");if(ue||(ue=0),!ve&&ve!==0&&(ve=this.length),q>=B.length&&(q=B.length),q||(q=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),B.length-q=0;--Je)B[Je+q]=this[Je+ue];else Uint8Array.prototype.set.call(B,this.subarray(ue,ve),q);return Ge},p.prototype.fill=function(B,q,ue,ve){if(typeof B=="string"){if(typeof q=="string"?(ve=q,q=0,ue=this.length):typeof ue=="string"&&(ve=ue,ue=this.length),ve!==void 0&&typeof ve!="string")throw new TypeError("encoding must be a string");if(typeof ve=="string"&&!p.isEncoding(ve))throw new TypeError("Unknown encoding: "+ve);if(B.length===1){var Ge=B.charCodeAt(0);(ve==="utf8"&&Ge<128||ve==="latin1")&&(B=Ge)}}else typeof B=="number"&&(B=B&255);if(q<0||this.length>>0,ue=ue===void 0?this.length:ue>>>0,B||(B=0);var Je;if(typeof B=="number")for(Je=q;Je55295&&q<57344){if(!ve){if(q>56319){(B-=3)>-1&&Ge.push(239,191,189);continue}else if(Je+1===ue){(B-=3)>-1&&Ge.push(239,191,189);continue}ve=q;continue}if(q<56320){(B-=3)>-1&&Ge.push(239,191,189),ve=q;continue}q=(ve-55296<<10|q-56320)+65536}else ve&&(B-=3)>-1&&Ge.push(239,191,189);if(ve=null,q<128){if((B-=1)<0)break;Ge.push(q)}else if(q<2048){if((B-=2)<0)break;Ge.push(q>>6|192,q&63|128)}else if(q<65536){if((B-=3)<0)break;Ge.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if((B-=4)<0)break;Ge.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw new Error("Invalid code point")}return Ge}function $(ne){for(var B=[],q=0;q>8,ve=q%256,Ge.push(ve),Ge.push(ue);return Ge}function le(ne){return r.toByteArray(re(ne))}function ee(ne,B,q,ue){for(var ve=0;ve=B.length||ve>=ne.length);++ve)B[ve+q]=ne[ve];return ve}function te(ne,B){return ne instanceof B||ne!=null&&ne.constructor!=null&&ne.constructor.name!=null&&ne.constructor.name===B.name}function be(ne){return ne!==ne}}).call(this,t("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(t,i,l){(function(a){i.exports=function(r,f){for(var v=Math.min(r.length,f.length),b=new a(v),Z=0;Zm;)if(N=y[m++],N!=N)return!0}else for(;X>m;m++)if((v||m in y)&&y[m]===Z)return v||m||0;return!v&&-1}};i.exports={includes:f(!0),indexOf:f(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(t,i,l){var a=t("../internals/function-bind-context"),o=t("../internals/indexed-object"),r=t("../internals/to-object"),f=t("../internals/to-length"),v=t("../internals/array-species-create"),b=[].push,Z=function(p){var y=p==1,X=p==2,m=p==3,N=p==4,G=p==6,d=p==5||G;return function(u,s,h,c){for(var W=r(u),M=o(W),I=a(s,h,3),w=f(M.length),C=0,x=c||v,R=y?x(u,w):X?x(u,0):void 0,g,S;w>C;C++)if((d||C in M)&&(g=M[C],S=I(g,C,W),p)){if(y)R[C]=S;else if(S)switch(p){case 3:return!0;case 5:return g;case 6:return C;case 2:b.call(R,g)}else if(N)return!1}return G?-1:m||N?N:R}};i.exports={forEach:Z(0),map:Z(1),filter:Z(2),some:Z(3),every:Z(4),find:Z(5),findIndex:Z(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/has"),f=Object.defineProperty,v={},b=function(Z){throw Z};i.exports=function(Z,p){if(r(v,Z))return v[Z];p||(p={});var y=[][Z],X=r(p,"ACCESSORS")?p.ACCESSORS:!1,m=r(p,0)?p[0]:b,N=r(p,1)?p[1]:void 0;return v[Z]=!!y&&!o(function(){if(X&&!a)return!0;var G={length:-1};X?f(G,1,{enumerable:!0,get:b}):G[1]=1,y.call(G,m,N)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(t,i,l){var a=t("../internals/is-object"),o=t("../internals/is-array"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z;return o(v)&&(Z=v.constructor,typeof Z=="function"&&(Z===Array||o(Z.prototype))?Z=void 0:a(Z)&&(Z=Z[f],Z===null&&(Z=void 0))),new(Z===void 0?Array:Z)(b===0?0:b)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(t,i,l){var a=t("../internals/an-object");i.exports=function(o,r,f,v){try{return v?r(a(f)[0],f[1]):r(f)}catch(Z){var b=o.return;throw b!==void 0&&a(b.call(o)),Z}}},{"../internals/an-object":223}],229:[function(t,i,l){var a=t("../internals/well-known-symbol"),o=a("iterator"),r=!1;try{var f=0,v={next:function(){return{done:!!f++}},return:function(){r=!0}};v[o]=function(){return this},Array.from(v,function(){throw 2})}catch{}i.exports=function(b,Z){if(!Z&&!r)return!1;var p=!1;try{var y={};y[o]=function(){return{next:function(){return{done:p=!0}}}},b(y)}catch{}return p}},{"../internals/well-known-symbol":314}],230:[function(t,i,l){var a={}.toString;i.exports=function(o){return a.call(o).slice(8,-1)}},{}],231:[function(t,i,l){var a=t("../internals/to-string-tag-support"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("toStringTag"),v=o(function(){return arguments}())=="Arguments",b=function(Z,p){try{return Z[p]}catch{}};i.exports=a?o:function(Z){var p,y,X;return Z===void 0?"Undefined":Z===null?"Null":typeof(y=b(p=Object(Z),f))=="string"?y:v?o(p):(X=o(p))=="Object"&&typeof p.callee=="function"?"Arguments":X}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(t,i,l){var a=t("../internals/has"),o=t("../internals/own-keys"),r=t("../internals/object-get-own-property-descriptor"),f=t("../internals/object-define-property");i.exports=function(v,b){for(var Z=o(b),p=f.f,y=r.f,X=0;X=74)&&(b=o.match(/Chrome\/(\d+)/),b&&(Z=b[1]))),i.exports=Z&&+Z},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(t,i,l){i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/create-non-enumerable-property"),f=t("../internals/redefine"),v=t("../internals/set-global"),b=t("../internals/copy-constructor-properties"),Z=t("../internals/is-forced");i.exports=function(p,y){var X=p.target,m=p.global,N=p.stat,G,d,u,s,h,c;if(m?d=a:N?d=a[X]||v(X,{}):d=(a[X]||{}).prototype,d)for(u in y){if(h=y[u],p.noTargetGet?(c=o(d,u),s=c&&c.value):s=d[u],G=Z(m?u:X+(N?".":"#")+u,p.forced),!G&&s!==void 0){if(typeof h==typeof s)continue;b(h,s)}(p.sham||s&&s.sham)&&r(h,"sham",!0),f(d,u,h,p)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(t,i,l){i.exports=function(a){try{return!!a()}catch{return!0}}},{}],248:[function(t,i,l){var a=t("../internals/a-function");i.exports=function(o,r,f){if(a(o),r===void 0)return o;switch(f){case 0:return function(){return o.call(r)};case 1:return function(v){return o.call(r,v)};case 2:return function(v,b){return o.call(r,v,b)};case 3:return function(v,b,Z){return o.call(r,v,b,Z)}}return function(){return o.apply(r,arguments)}}},{"../internals/a-function":219}],249:[function(t,i,l){var a=t("../internals/path"),o=t("../internals/global"),r=function(f){return typeof f=="function"?f:void 0};i.exports=function(f,v){return arguments.length<2?r(a[f])||r(o[f]):a[f]&&a[f][v]||o[f]&&o[f][v]}},{"../internals/global":251,"../internals/path":290}],250:[function(t,i,l){var a=t("../internals/classof"),o=t("../internals/iterators"),r=t("../internals/well-known-symbol"),f=r("iterator");i.exports=function(v){if(v!=null)return v[f]||v["@@iterator"]||o[a(v)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(t,i,l){(function(a){var o=function(r){return r&&r.Math==Math&&r};i.exports=o(typeof globalThis=="object"&&globalThis)||o(typeof window=="object"&&window)||o(typeof self=="object"&&self)||o(typeof a=="object"&&a)||Function("return this")()}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(t,i,l){var a={}.hasOwnProperty;i.exports=function(o,r){return a.call(o,r)}},{}],253:[function(t,i,l){i.exports={}},{}],254:[function(t,i,l){var a=t("../internals/global");i.exports=function(o,r){var f=a.console;f&&f.error&&(arguments.length===1?f.error(o):f.error(o,r))}},{"../internals/global":251}],255:[function(t,i,l){var a=t("../internals/get-built-in");i.exports=a("document","documentElement")},{"../internals/get-built-in":249}],256:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/document-create-element");i.exports=!a&&!o(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(t,i,l){var a=t("../internals/fails"),o=t("../internals/classof-raw"),r="".split;i.exports=a(function(){return!Object("z").propertyIsEnumerable(0)})?function(f){return o(f)=="String"?r.call(f,""):Object(f)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(t,i,l){var a=t("../internals/shared-store"),o=Function.toString;typeof a.inspectSource!="function"&&(a.inspectSource=function(r){return o.call(r)}),i.exports=a.inspectSource},{"../internals/shared-store":300}],259:[function(t,i,l){var a=t("../internals/native-weak-map"),o=t("../internals/global"),r=t("../internals/is-object"),f=t("../internals/create-non-enumerable-property"),v=t("../internals/has"),b=t("../internals/shared-key"),Z=t("../internals/hidden-keys"),p=o.WeakMap,y,X,m,N=function(W){return m(W)?X(W):y(W,{})},G=function(W){return function(M){var I;if(!r(M)||(I=X(M)).type!==W)throw TypeError("Incompatible receiver, "+W+" required");return I}};if(a){var d=new p,u=d.get,s=d.has,h=d.set;y=function(W,M){return h.call(d,W,M),M},X=function(W){return u.call(d,W)||{}},m=function(W){return s.call(d,W)}}else{var c=b("state");Z[c]=!0,y=function(W,M){return f(W,c,M),M},X=function(W){return v(W,c)?W[c]:{}},m=function(W){return v(W,c)}}i.exports={set:y,get:X,has:m,enforce:N,getterFor:G}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(t,i,l){var a=t("../internals/well-known-symbol"),o=t("../internals/iterators"),r=a("iterator"),f=Array.prototype;i.exports=function(v){return v!==void 0&&(o.Array===v||f[r]===v)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(t,i,l){var a=t("../internals/classof-raw");i.exports=Array.isArray||function(r){return a(r)=="Array"}},{"../internals/classof-raw":230}],262:[function(t,i,l){var a=t("../internals/fails"),o=/#|\.prototype\./,r=function(p,y){var X=v[f(p)];return X==Z?!0:X==b?!1:typeof y=="function"?a(y):!!y},f=r.normalize=function(p){return String(p).replace(o,".").toLowerCase()},v=r.data={},b=r.NATIVE="N",Z=r.POLYFILL="P";i.exports=r},{"../internals/fails":247}],263:[function(t,i,l){i.exports=function(a){return typeof a=="object"?a!==null:typeof a=="function"}},{}],264:[function(t,i,l){i.exports=!1},{}],265:[function(t,i,l){var a=t("../internals/is-object"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("match");i.exports=function(v){var b;return a(v)&&((b=v[f])!==void 0?!!b:o(v)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(t,i,l){var a=t("../internals/an-object"),o=t("../internals/is-array-iterator-method"),r=t("../internals/to-length"),f=t("../internals/function-bind-context"),v=t("../internals/get-iterator-method"),b=t("../internals/call-with-safe-iteration-closing"),Z=function(y,X){this.stopped=y,this.result=X},p=i.exports=function(y,X,m,N,G){var d=f(X,m,N?2:1),u,s,h,c,W,M,I;if(G)u=y;else{if(s=v(y),typeof s!="function")throw TypeError("Target is not iterable");if(o(s)){for(h=0,c=r(y.length);c>h;h++)if(W=N?d(a(I=y[h])[0],I[1]):d(y[h]),W&&W instanceof Z)return W;return new Z(!1)}u=s.call(y)}for(M=u.next;!(I=M.call(u)).done;)if(W=b(u,d,I.value,N),typeof W=="object"&&W&&W instanceof Z)return W;return new Z(!1)};p.stop=function(y){return new Z(!0,y)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(t,i,l){var a=t("../internals/object-get-prototype-of"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/well-known-symbol"),v=t("../internals/is-pure"),b=f("iterator"),Z=!1,p=function(){return this},y,X,m;[].keys&&(m=[].keys(),"next"in m?(X=a(a(m)),X!==Object.prototype&&(y=X)):Z=!0),y==null&&(y={}),!v&&!r(y,b)&&o(y,b,p),i.exports={IteratorPrototype:y,BUGGY_SAFARI_ITERATORS:Z}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(t,i,l){arguments[4][253][0].apply(l,arguments)},{dup:253}],269:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/classof-raw"),f=t("../internals/task").set,v=t("../internals/engine-is-ios"),b=a.MutationObserver||a.WebKitMutationObserver,Z=a.process,p=a.Promise,y=r(Z)=="process",X=o(a,"queueMicrotask"),m=X&&X.value,N,G,d,u,s,h,c,W;m||(N=function(){var M,I;for(y&&(M=Z.domain)&&M.exit();G;){I=G.fn,G=G.next;try{I()}catch(w){throw G?u():d=void 0,w}}d=void 0,M&&M.enter()},y?u=function(){Z.nextTick(N)}:b&&!v?(s=!0,h=document.createTextNode(""),new b(N).observe(h,{characterData:!0}),u=function(){h.data=s=!s}):p&&p.resolve?(c=p.resolve(void 0),W=c.then,u=function(){W.call(c,N)}):u=function(){f.call(a,N)}),i.exports=m||function(M){var I={fn:M,next:void 0};d&&(d.next=I),G||(G=I,u()),d=I}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(t,i,l){var a=t("../internals/global");i.exports=a.Promise},{"../internals/global":251}],271:[function(t,i,l){var a=t("../internals/fails");i.exports=!!Object.getOwnPropertySymbols&&!a(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/inspect-source"),r=a.WeakMap;i.exports=typeof r=="function"&&/native code/.test(o(r))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(t,i,l){var a=t("../internals/a-function"),o=function(r){var f,v;this.promise=new r(function(b,Z){if(f!==void 0||v!==void 0)throw TypeError("Bad Promise constructor");f=b,v=Z}),this.resolve=a(f),this.reject=a(v)};i.exports.f=function(r){return new o(r)}},{"../internals/a-function":219}],274:[function(t,i,l){var a=t("../internals/is-regexp");i.exports=function(o){if(a(o))throw TypeError("The method doesn't accept regular expressions");return o}},{"../internals/is-regexp":265}],275:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/object-keys"),f=t("../internals/object-get-own-property-symbols"),v=t("../internals/object-property-is-enumerable"),b=t("../internals/to-object"),Z=t("../internals/indexed-object"),p=Object.assign,y=Object.defineProperty;i.exports=!p||o(function(){if(a&&p({b:1},p(y({},"a",{enumerable:!0,get:function(){y(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var X={},m={},N=Symbol(),G="abcdefghijklmnopqrst";return X[N]=7,G.split("").forEach(function(d){m[d]=d}),p({},X)[N]!=7||r(p({},m)).join("")!=G})?function(m,N){for(var G=b(m),d=arguments.length,u=1,s=f.f,h=v.f;d>u;)for(var c=Z(arguments[u++]),W=s?r(c).concat(s(c)):r(c),M=W.length,I=0,w;M>I;)w=W[I++],(!a||h.call(c,w))&&(G[w]=c[w]);return G}:p},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(t,i,l){var a=t("../internals/an-object"),o=t("../internals/object-define-properties"),r=t("../internals/enum-bug-keys"),f=t("../internals/hidden-keys"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/shared-key"),p=">",y="<",X="prototype",m="script",N=Z("IE_PROTO"),G=function(){},d=function(W){return y+m+p+W+y+"/"+m+p},u=function(W){W.write(d("")),W.close();var M=W.parentWindow.Object;return W=null,M},s=function(){var W=b("iframe"),M="java"+m+":",I;return W.style.display="none",v.appendChild(W),W.src=String(M),I=W.contentWindow.document,I.open(),I.write(d("document.F=Object")),I.close(),I.F},h,c=function(){try{h=document.domain&&new ActiveXObject("htmlfile")}catch{}c=h?u(h):s();for(var W=r.length;W--;)delete c[X][r[W]];return c()};f[N]=!0,i.exports=Object.create||function(M,I){var w;return M!==null?(G[X]=a(M),w=new G,G[X]=null,w[N]=M):w=c(),I===void 0?w:o(w,I)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/object-define-property"),r=t("../internals/an-object"),f=t("../internals/object-keys");i.exports=a?Object.defineProperties:function(b,Z){r(b);for(var p=f(Z),y=p.length,X=0,m;y>X;)o.f(b,m=p[X++],Z[m]);return b}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/ie8-dom-define"),r=t("../internals/an-object"),f=t("../internals/to-primitive"),v=Object.defineProperty;l.f=a?v:function(Z,p,y){if(r(Z),p=f(p,!0),r(y),o)try{return v(Z,p,y)}catch{}if("get"in y||"set"in y)throw TypeError("Accessors not supported");return"value"in y&&(Z[p]=y.value),Z}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/object-property-is-enumerable"),r=t("../internals/create-property-descriptor"),f=t("../internals/to-indexed-object"),v=t("../internals/to-primitive"),b=t("../internals/has"),Z=t("../internals/ie8-dom-define"),p=Object.getOwnPropertyDescriptor;l.f=a?p:function(X,m){if(X=f(X),m=v(m,!0),Z)try{return p(X,m)}catch{}if(b(X,m))return r(!o.f.call(X,m),X[m])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(t,i,l){var a=t("../internals/to-indexed-object"),o=t("../internals/object-get-own-property-names").f,r={}.toString,f=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],v=function(b){try{return o(b)}catch{return f.slice()}};i.exports.f=function(Z){return f&&r.call(Z)=="[object Window]"?v(Z):o(a(Z))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(t,i,l){var a=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys"),r=o.concat("length","prototype");l.f=Object.getOwnPropertyNames||function(v){return a(v,r)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(t,i,l){l.f=Object.getOwnPropertySymbols},{}],283:[function(t,i,l){var a=t("../internals/has"),o=t("../internals/to-object"),r=t("../internals/shared-key"),f=t("../internals/correct-prototype-getter"),v=r("IE_PROTO"),b=Object.prototype;i.exports=f?Object.getPrototypeOf:function(Z){return Z=o(Z),a(Z,v)?Z[v]:typeof Z.constructor=="function"&&Z instanceof Z.constructor?Z.constructor.prototype:Z instanceof Object?b:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(t,i,l){var a=t("../internals/has"),o=t("../internals/to-indexed-object"),r=t("../internals/array-includes").indexOf,f=t("../internals/hidden-keys");i.exports=function(v,b){var Z=o(v),p=0,y=[],X;for(X in Z)!a(f,X)&&a(Z,X)&&y.push(X);for(;b.length>p;)a(Z,X=b[p++])&&(~r(y,X)||y.push(X));return y}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(t,i,l){var a=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys");i.exports=Object.keys||function(f){return a(f,o)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(t,i,l){var a={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!a.call({1:2},1);l.f=r?function(v){var b=o(this,v);return!!b&&b.enumerable}:a},{}],287:[function(t,i,l){var a=t("../internals/an-object"),o=t("../internals/a-possible-prototype");i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,f={},v;try{v=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,v.call(f,[]),r=f instanceof Array}catch{}return function(Z,p){return a(Z),o(p),r?v.call(Z,p):Z.__proto__=p,Z}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(t,i,l){var a=t("../internals/descriptors"),o=t("../internals/object-keys"),r=t("../internals/to-indexed-object"),f=t("../internals/object-property-is-enumerable").f,v=function(b){return function(Z){for(var p=r(Z),y=o(p),X=y.length,m=0,N=[],G;X>m;)G=y[m++],(!a||f.call(p,G))&&N.push(b?[G,p[G]]:p[G]);return N}};i.exports={entries:v(!0),values:v(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(t,i,l){var a=t("../internals/get-built-in"),o=t("../internals/object-get-own-property-names"),r=t("../internals/object-get-own-property-symbols"),f=t("../internals/an-object");i.exports=a("Reflect","ownKeys")||function(b){var Z=o.f(f(b)),p=r.f;return p?Z.concat(p(b)):Z}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(t,i,l){var a=t("../internals/global");i.exports=a},{"../internals/global":251}],291:[function(t,i,l){i.exports=function(a){try{return{error:!1,value:a()}}catch(o){return{error:!0,value:o}}}},{}],292:[function(t,i,l){var a=t("../internals/an-object"),o=t("../internals/is-object"),r=t("../internals/new-promise-capability");i.exports=function(f,v){if(a(f),o(v)&&v.constructor===f)return v;var b=r.f(f),Z=b.resolve;return Z(v),b.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(t,i,l){var a=t("../internals/redefine");i.exports=function(o,r,f){for(var v in r)a(o,v,r[v],f);return o}},{"../internals/redefine":294}],294:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/set-global"),v=t("../internals/inspect-source"),b=t("../internals/internal-state"),Z=b.get,p=b.enforce,y=String(String).split("String");(i.exports=function(X,m,N,G){var d=G?!!G.unsafe:!1,u=G?!!G.enumerable:!1,s=G?!!G.noTargetGet:!1;if(typeof N=="function"&&(typeof m=="string"&&!r(N,"name")&&o(N,"name",m),p(N).source=y.join(typeof m=="string"?m:"")),X===a){u?X[m]=N:f(m,N);return}else d?!s&&X[m]&&(u=!0):delete X[m];u?X[m]=N:o(X,m,N)})(Function.prototype,"toString",function(){return typeof this=="function"&&Z(this).source||v(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(t,i,l){i.exports=function(a){if(a==null)throw TypeError("Can't call method on "+a);return a}},{}],296:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/create-non-enumerable-property");i.exports=function(r,f){try{o(a,r,f)}catch{a[r]=f}return f}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(t,i,l){var a=t("../internals/get-built-in"),o=t("../internals/object-define-property"),r=t("../internals/well-known-symbol"),f=t("../internals/descriptors"),v=r("species");i.exports=function(b){var Z=a(b),p=o.f;f&&Z&&!Z[v]&&p(Z,v,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(t,i,l){var a=t("../internals/object-define-property").f,o=t("../internals/has"),r=t("../internals/well-known-symbol"),f=r("toStringTag");i.exports=function(v,b,Z){v&&!o(v=Z?v:v.prototype,f)&&a(v,f,{configurable:!0,value:b})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(t,i,l){var a=t("../internals/shared"),o=t("../internals/uid"),r=a("keys");i.exports=function(f){return r[f]||(r[f]=o(f))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/set-global"),r="__core-js_shared__",f=a[r]||o(r,{});i.exports=f},{"../internals/global":251,"../internals/set-global":296}],301:[function(t,i,l){var a=t("../internals/is-pure"),o=t("../internals/shared-store");(i.exports=function(r,f){return o[r]||(o[r]=f!==void 0?f:{})})("versions",[]).push({version:"3.6.5",mode:a?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(t,i,l){var a=t("../internals/an-object"),o=t("../internals/a-function"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z=a(v).constructor,p;return Z===void 0||(p=a(Z)[f])==null?b:o(p)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/fails"),r=t("../internals/classof-raw"),f=t("../internals/function-bind-context"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/engine-is-ios"),p=a.location,y=a.setImmediate,X=a.clearImmediate,m=a.process,N=a.MessageChannel,G=a.Dispatch,d=0,u={},s="onreadystatechange",h,c,W,M=function(x){if(u.hasOwnProperty(x)){var R=u[x];delete u[x],R()}},I=function(x){return function(){M(x)}},w=function(x){M(x.data)},C=function(x){a.postMessage(x+"",p.protocol+"//"+p.host)};(!y||!X)&&(y=function(R){for(var g=[],S=1;arguments.length>S;)g.push(arguments[S++]);return u[++d]=function(){(typeof R=="function"?R:Function(R)).apply(void 0,g)},h(d),d},X=function(R){delete u[R]},r(m)=="process"?h=function(x){m.nextTick(I(x))}:G&&G.now?h=function(x){G.now(I(x))}:N&&!Z?(c=new N,W=c.port2,c.port1.onmessage=w,h=f(W.postMessage,W,1)):a.addEventListener&&typeof postMessage=="function"&&!a.importScripts&&!o(C)&&p.protocol!=="file:"?(h=C,a.addEventListener("message",w,!1)):s in b("script")?h=function(x){v.appendChild(b("script"))[s]=function(){v.removeChild(this),M(x)}}:h=function(x){setTimeout(I(x),0)}),i.exports={set:y,clear:X}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(t,i,l){var a=t("../internals/to-integer"),o=Math.max,r=Math.min;i.exports=function(f,v){var b=a(f);return b<0?o(b+v,0):r(b,v)}},{"../internals/to-integer":306}],305:[function(t,i,l){var a=t("../internals/indexed-object"),o=t("../internals/require-object-coercible");i.exports=function(r){return a(o(r))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(t,i,l){var a=Math.ceil,o=Math.floor;i.exports=function(r){return isNaN(r=+r)?0:(r>0?o:a)(r)}},{}],307:[function(t,i,l){var a=t("../internals/to-integer"),o=Math.min;i.exports=function(r){return r>0?o(a(r),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(t,i,l){var a=t("../internals/require-object-coercible");i.exports=function(o){return Object(a(o))}},{"../internals/require-object-coercible":295}],309:[function(t,i,l){var a=t("../internals/is-object");i.exports=function(o,r){if(!a(o))return o;var f,v;if(r&&typeof(f=o.toString)=="function"&&!a(v=f.call(o))||typeof(f=o.valueOf)=="function"&&!a(v=f.call(o))||!r&&typeof(f=o.toString)=="function"&&!a(v=f.call(o)))return v;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(t,i,l){var a=t("../internals/well-known-symbol"),o=a("toStringTag"),r={};r[o]="z",i.exports=String(r)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(t,i,l){var a=0,o=Math.random();i.exports=function(r){return"Symbol("+String(r===void 0?"":r)+")_"+(++a+o).toString(36)}},{}],312:[function(t,i,l){var a=t("../internals/native-symbol");i.exports=a&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(t,i,l){var a=t("../internals/well-known-symbol");l.f=a},{"../internals/well-known-symbol":314}],314:[function(t,i,l){var a=t("../internals/global"),o=t("../internals/shared"),r=t("../internals/has"),f=t("../internals/uid"),v=t("../internals/native-symbol"),b=t("../internals/use-symbol-as-uid"),Z=o("wks"),p=a.Symbol,y=b?p:p&&p.withoutSetter||f;i.exports=function(X){return r(Z,X)||(v&&r(p,X)?Z[X]=p[X]:Z[X]=y("Symbol."+X)),Z[X]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/array-iteration").findIndex,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="findIndex",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),a({target:"Array",proto:!0,forced:b||!Z},{findIndex:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/array-iteration").find,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="find",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),a({target:"Array",proto:!0,forced:b||!Z},{find:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/array-includes").includes,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v=f("indexOf",{ACCESSORS:!0,1:0});a({target:"Array",proto:!0,forced:!v},{includes:function(Z){return o(this,Z,arguments.length>1?arguments[1]:void 0)}}),r("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(t,i,l){var a=t("../internals/to-indexed-object"),o=t("../internals/add-to-unscopables"),r=t("../internals/iterators"),f=t("../internals/internal-state"),v=t("../internals/define-iterator"),b="Array Iterator",Z=f.set,p=f.getterFor(b);i.exports=v(Array,"Array",function(y,X){Z(this,{type:b,target:a(y),index:0,kind:X})},function(){var y=p(this),X=y.target,m=y.kind,N=y.index++;return!X||N>=X.length?(y.target=void 0,{value:void 0,done:!0}):m=="keys"?{value:N,done:!1}:m=="values"?{value:X[N],done:!1}:{value:[N,X[N]],done:!1}},"values"),r.Arguments=r.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(t,i,l){var a=t("../internals/export");a({target:"Number",stat:!0},{isNaN:function(r){return r!=r}})},{"../internals/export":246}],320:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/object-assign");a({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/to-object"),r=t("../internals/object-keys"),f=t("../internals/fails"),v=f(function(){r(1)});a({target:"Object",stat:!0,forced:v},{keys:function(Z){return r(o(Z))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/object-to-array").values;a({target:"Object",stat:!0},{values:function(f){return o(f)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/is-pure"),r=t("../internals/global"),f=t("../internals/get-built-in"),v=t("../internals/native-promise-constructor"),b=t("../internals/redefine"),Z=t("../internals/redefine-all"),p=t("../internals/set-to-string-tag"),y=t("../internals/set-species"),X=t("../internals/is-object"),m=t("../internals/a-function"),N=t("../internals/an-instance"),G=t("../internals/classof-raw"),d=t("../internals/inspect-source"),u=t("../internals/iterate"),s=t("../internals/check-correctness-of-iteration"),h=t("../internals/species-constructor"),c=t("../internals/task").set,W=t("../internals/microtask"),M=t("../internals/promise-resolve"),I=t("../internals/host-report-errors"),w=t("../internals/new-promise-capability"),C=t("../internals/perform"),x=t("../internals/internal-state"),R=t("../internals/is-forced"),g=t("../internals/well-known-symbol"),S=t("../internals/engine-v8-version"),L=g("species"),V="Promise",Y=x.get,T=x.set,J=x.getterFor(V),U=v,K=r.TypeError,H=r.document,k=r.process,F=f("fetch"),O=w.f,Q=O,oe=G(k)=="process",se=!!(H&&H.createEvent&&r.dispatchEvent),he="unhandledrejection",pe="rejectionhandled",re=0,_=1,E=2,$=1,ae=2,le,ee,te,be,ne=R(V,function(){var Te=d(U)!==String(U);if(!Te&&(S===66||!oe&&typeof PromiseRejectionEvent!="function")||o&&!U.prototype.finally)return!0;if(S>=51&&/native code/.test(U))return!1;var we=U.resolve(1),Se=function(me){me(function(){},function(){})},De=we.constructor={};return De[L]=Se,!(we.then(function(){})instanceof Se)}),B=ne||!s(function(Te){U.all(Te).catch(function(){})}),q=function(Te){var we;return X(Te)&&typeof(we=Te.then)=="function"?we:!1},ue=function(Te,we,Se){if(!we.notified){we.notified=!0;var De=we.reactions;W(function(){for(var me=we.value,Ve=we.state==_,Me=0;De.length>Me;){var Ie=De[Me++],Ze=Ve?Ie.ok:Ie.fail,Ce=Ie.resolve,ye=Ie.reject,Ue=Ie.domain,qe,ie,Oe;try{Ze?(Ve||(we.rejection===ae&&xe(Te,we),we.rejection=$),Ze===!0?qe=me:(Ue&&Ue.enter(),qe=Ze(me),Ue&&(Ue.exit(),Oe=!0)),qe===Ie.promise?ye(K("Promise-chain cycle")):(ie=q(qe))?ie.call(qe,Ce,ye):Ce(qe)):ye(me)}catch(Ke){Ue&&!Oe&&Ue.exit(),ye(Ke)}}we.reactions=[],we.notified=!1,Se&&!we.rejection&&Ge(Te,we)})}},ve=function(Te,we,Se){var De,me;se?(De=H.createEvent("Event"),De.promise=we,De.reason=Se,De.initEvent(Te,!1,!0),r.dispatchEvent(De)):De={promise:we,reason:Se},(me=r["on"+Te])?me(De):Te===he&&I("Unhandled promise rejection",Se)},Ge=function(Te,we){c.call(r,function(){var Se=we.value,De=Je(we),me;if(De&&(me=C(function(){oe?k.emit("unhandledRejection",Se,Te):ve(he,Te,Se)}),we.rejection=oe||Je(we)?ae:$,me.error))throw me.value})},Je=function(Te){return Te.rejection!==$&&!Te.parent},xe=function(Te,we){c.call(r,function(){oe?k.emit("rejectionHandled",Te):ve(pe,Te,we.value)})},ke=function(Te,we,Se,De){return function(me){Te(we,Se,me,De)}},Pe=function(Te,we,Se,De){we.done||(we.done=!0,De&&(we=De),we.value=Se,we.state=E,ue(Te,we,!0))},Be=function(Te,we,Se,De){if(!we.done){we.done=!0,De&&(we=De);try{if(Te===Se)throw K("Promise can't be resolved itself");var me=q(Se);me?W(function(){var Ve={done:!1};try{me.call(Se,ke(Be,Te,Ve,we),ke(Pe,Te,Ve,we))}catch(Me){Pe(Te,Ve,Me,we)}}):(we.value=Se,we.state=_,ue(Te,we,!1))}catch(Ve){Pe(Te,{done:!1},Ve,we)}}};ne&&(U=function(we){N(this,U,V),m(we),le.call(this);var Se=Y(this);try{we(ke(Be,this,Se),ke(Pe,this,Se))}catch(De){Pe(this,Se,De)}},le=function(we){T(this,{type:V,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:re,value:void 0})},le.prototype=Z(U.prototype,{then:function(we,Se){var De=J(this),me=O(h(this,U));return me.ok=typeof we=="function"?we:!0,me.fail=typeof Se=="function"&&Se,me.domain=oe?k.domain:void 0,De.parent=!0,De.reactions.push(me),De.state!=re&&ue(this,De,!1),me.promise},catch:function(Te){return this.then(void 0,Te)}}),ee=function(){var Te=new le,we=Y(Te);this.promise=Te,this.resolve=ke(Be,Te,we),this.reject=ke(Pe,Te,we)},w.f=O=function(Te){return Te===U||Te===te?new ee(Te):Q(Te)},!o&&typeof v=="function"&&(be=v.prototype.then,b(v.prototype,"then",function(we,Se){var De=this;return new U(function(me,Ve){be.call(De,me,Ve)}).then(we,Se)},{unsafe:!0}),typeof F=="function"&&a({global:!0,enumerable:!0,forced:!0},{fetch:function(we){return M(U,F.apply(r,arguments))}}))),a({global:!0,wrap:!0,forced:ne},{Promise:U}),p(U,V,!1,!0),y(V),te=f(V),a({target:V,stat:!0,forced:ne},{reject:function(we){var Se=O(this);return Se.reject.call(void 0,we),Se.promise}}),a({target:V,stat:!0,forced:o||ne},{resolve:function(we){return M(o&&this===te?U:this,we)}}),a({target:V,stat:!0,forced:B},{all:function(we){var Se=this,De=O(Se),me=De.resolve,Ve=De.reject,Me=C(function(){var Ie=m(Se.resolve),Ze=[],Ce=0,ye=1;u(we,function(Ue){var qe=Ce++,ie=!1;Ze.push(void 0),ye++,Ie.call(Se,Ue).then(function(Oe){ie||(ie=!0,Ze[qe]=Oe,--ye||me(Ze))},Ve)}),--ye||me(Ze)});return Me.error&&Ve(Me.value),De.promise},race:function(we){var Se=this,De=O(Se),me=De.reject,Ve=C(function(){var Me=m(Se.resolve);u(we,function(Ie){Me.call(Se,Ie).then(De.resolve,me)})});return Ve.error&&me(Ve.value),De.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/to-absolute-index"),r=String.fromCharCode,f=String.fromCodePoint,v=!!f&&f.length!=1;a({target:"String",stat:!0,forced:v},{fromCodePoint:function(Z){for(var p=[],y=arguments.length,X=0,m;y>X;){if(m=+arguments[X++],o(m,1114111)!==m)throw RangeError(m+" is not a valid code point");p.push(m<65536?r(m):r(((m-=65536)>>10)+55296,m%1024+56320))}return p.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/not-a-regexp"),r=t("../internals/require-object-coercible"),f=t("../internals/correct-is-regexp-logic");a({target:"String",proto:!0,forced:!f("includes")},{includes:function(b){return!!~String(r(this)).indexOf(o(b),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(t,i,l){var a=t("../internals/define-well-known-symbol");a("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(t,i,l){var a=t("../internals/export"),o=t("../internals/global"),r=t("../internals/get-built-in"),f=t("../internals/is-pure"),v=t("../internals/descriptors"),b=t("../internals/native-symbol"),Z=t("../internals/use-symbol-as-uid"),p=t("../internals/fails"),y=t("../internals/has"),X=t("../internals/is-array"),m=t("../internals/is-object"),N=t("../internals/an-object"),G=t("../internals/to-object"),d=t("../internals/to-indexed-object"),u=t("../internals/to-primitive"),s=t("../internals/create-property-descriptor"),h=t("../internals/object-create"),c=t("../internals/object-keys"),W=t("../internals/object-get-own-property-names"),M=t("../internals/object-get-own-property-names-external"),I=t("../internals/object-get-own-property-symbols"),w=t("../internals/object-get-own-property-descriptor"),C=t("../internals/object-define-property"),x=t("../internals/object-property-is-enumerable"),R=t("../internals/create-non-enumerable-property"),g=t("../internals/redefine"),S=t("../internals/shared"),L=t("../internals/shared-key"),V=t("../internals/hidden-keys"),Y=t("../internals/uid"),T=t("../internals/well-known-symbol"),J=t("../internals/well-known-symbol-wrapped"),U=t("../internals/define-well-known-symbol"),K=t("../internals/set-to-string-tag"),H=t("../internals/internal-state"),k=t("../internals/array-iteration").forEach,F=L("hidden"),O="Symbol",Q="prototype",oe=T("toPrimitive"),se=H.set,he=H.getterFor(O),pe=Object[Q],re=o.Symbol,_=r("JSON","stringify"),E=w.f,$=C.f,ae=M.f,le=x.f,ee=S("symbols"),te=S("op-symbols"),be=S("string-to-symbol-registry"),ne=S("symbol-to-string-registry"),B=S("wks"),q=o.QObject,ue=!q||!q[Q]||!q[Q].findChild,ve=v&&p(function(){return h($({},"a",{get:function(){return $(this,"a",{value:7}).a}})).a!=7})?function(me,Ve,Me){var Ie=E(pe,Ve);Ie&&delete pe[Ve],$(me,Ve,Me),Ie&&me!==pe&&$(pe,Ve,Ie)}:$,Ge=function(me,Ve){var Me=ee[me]=h(re[Q]);return se(Me,{type:O,tag:me,description:Ve}),v||(Me.description=Ve),Me},Je=Z?function(me){return typeof me=="symbol"}:function(me){return Object(me)instanceof re},xe=function(Ve,Me,Ie){Ve===pe&&xe(te,Me,Ie),N(Ve);var Ze=u(Me,!0);return N(Ie),y(ee,Ze)?(Ie.enumerable?(y(Ve,F)&&Ve[F][Ze]&&(Ve[F][Ze]=!1),Ie=h(Ie,{enumerable:s(0,!1)})):(y(Ve,F)||$(Ve,F,s(1,{})),Ve[F][Ze]=!0),ve(Ve,Ze,Ie)):$(Ve,Ze,Ie)},ke=function(Ve,Me){N(Ve);var Ie=d(Me),Ze=c(Ie).concat(Se(Ie));return k(Ze,function(Ce){(!v||Be.call(Ie,Ce))&&xe(Ve,Ce,Ie[Ce])}),Ve},Pe=function(Ve,Me){return Me===void 0?h(Ve):ke(h(Ve),Me)},Be=function(Ve){var Me=u(Ve,!0),Ie=le.call(this,Me);return this===pe&&y(ee,Me)&&!y(te,Me)?!1:Ie||!y(this,Me)||!y(ee,Me)||y(this,F)&&this[F][Me]?Ie:!0},Te=function(Ve,Me){var Ie=d(Ve),Ze=u(Me,!0);if(!(Ie===pe&&y(ee,Ze)&&!y(te,Ze))){var Ce=E(Ie,Ze);return Ce&&y(ee,Ze)&&!(y(Ie,F)&&Ie[F][Ze])&&(Ce.enumerable=!0),Ce}},we=function(Ve){var Me=ae(d(Ve)),Ie=[];return k(Me,function(Ze){!y(ee,Ze)&&!y(V,Ze)&&Ie.push(Ze)}),Ie},Se=function(Ve){var Me=Ve===pe,Ie=ae(Me?te:d(Ve)),Ze=[];return k(Ie,function(Ce){y(ee,Ce)&&(!Me||y(pe,Ce))&&Ze.push(ee[Ce])}),Ze};if(b||(re=function(){if(this instanceof re)throw TypeError("Symbol is not a constructor");var Ve=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=Y(Ve),Ie=function(Ze){this===pe&&Ie.call(te,Ze),y(this,F)&&y(this[F],Me)&&(this[F][Me]=!1),ve(this,Me,s(1,Ze))};return v&&ue&&ve(pe,Me,{configurable:!0,set:Ie}),Ge(Me,Ve)},g(re[Q],"toString",function(){return he(this).tag}),g(re,"withoutSetter",function(me){return Ge(Y(me),me)}),x.f=Be,C.f=xe,w.f=Te,W.f=M.f=we,I.f=Se,J.f=function(me){return Ge(T(me),me)},v&&($(re[Q],"description",{configurable:!0,get:function(){return he(this).description}}),f||g(pe,"propertyIsEnumerable",Be,{unsafe:!0}))),a({global:!0,wrap:!0,forced:!b,sham:!b},{Symbol:re}),k(c(B),function(me){U(me)}),a({target:O,stat:!0,forced:!b},{for:function(me){var Ve=String(me);if(y(be,Ve))return be[Ve];var Me=re(Ve);return be[Ve]=Me,ne[Me]=Ve,Me},keyFor:function(Ve){if(!Je(Ve))throw TypeError(Ve+" is not a symbol");if(y(ne,Ve))return ne[Ve]},useSetter:function(){ue=!0},useSimple:function(){ue=!1}}),a({target:"Object",stat:!0,forced:!b,sham:!v},{create:Pe,defineProperty:xe,defineProperties:ke,getOwnPropertyDescriptor:Te}),a({target:"Object",stat:!0,forced:!b},{getOwnPropertyNames:we,getOwnPropertySymbols:Se}),a({target:"Object",stat:!0,forced:p(function(){I.f(1)})},{getOwnPropertySymbols:function(Ve){return I.f(G(Ve))}}),_){var De=!b||p(function(){var me=re();return _([me])!="[null]"||_({a:me})!="{}"||_(Object(me))!="{}"});a({target:"JSON",stat:!0,forced:De},{stringify:function(Ve,Me,Ie){for(var Ze=[Ve],Ce=1,ye;arguments.length>Ce;)Ze.push(arguments[Ce++]);if(ye=Me,!(!m(Me)&&Ve===void 0||Je(Ve)))return X(Me)||(Me=function(Ue,qe){if(typeof ye=="function"&&(qe=ye.call(this,Ue,qe)),!Je(qe))return qe}),Ze[1]=Me,_.apply(null,Ze)}})}re[Q][oe]||R(re[Q],oe,re[Q].valueOf),K(re,O),V[F]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(t,i,l){(function(a){function o(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(M){return typeof M}:o=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},o(c)}function r(c){return Array.isArray?Array.isArray(c):h(c)==="[object Array]"}l.isArray=r;function f(c){return typeof c=="boolean"}l.isBoolean=f;function v(c){return c===null}l.isNull=v;function b(c){return c==null}l.isNullOrUndefined=b;function Z(c){return typeof c=="number"}l.isNumber=Z;function p(c){return typeof c=="string"}l.isString=p;function y(c){return o(c)==="symbol"}l.isSymbol=y;function X(c){return c===void 0}l.isUndefined=X;function m(c){return h(c)==="[object RegExp]"}l.isRegExp=m;function N(c){return o(c)==="object"&&c!==null}l.isObject=N;function G(c){return h(c)==="[object Date]"}l.isDate=G;function d(c){return h(c)==="[object Error]"||c instanceof Error}l.isError=d;function u(c){return typeof c=="function"}l.isFunction=u;function s(c){return c===null||typeof c=="boolean"||typeof c=="number"||typeof c=="string"||o(c)==="symbol"||typeof c>"u"}l.isPrimitive=s,l.isBuffer=a.isBuffer;function h(c){return Object.prototype.toString.call(c)}}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(t,i,l){(function(a){var o=t("elliptic"),r=t("bn.js");i.exports=function(p){return new v(p)};var f={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};f.p224=f.secp224r1,f.p256=f.secp256r1=f.prime256v1,f.p192=f.secp192r1=f.prime192v1,f.p384=f.secp384r1,f.p521=f.secp521r1;function v(Z){this.curveType=f[Z],this.curveType||(this.curveType={name:Z}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}v.prototype.generateKeys=function(Z,p){return this.keys=this.curve.genKeyPair(),this.getPublicKey(Z,p)},v.prototype.computeSecret=function(Z,p,y){p=p||"utf8",a.isBuffer(Z)||(Z=new a(Z,p));var X=this.curve.keyFromPublic(Z).getPublic(),m=X.mul(this.keys.getPrivate()).getX();return b(m,y,this.curveType.byteLength)},v.prototype.getPublicKey=function(Z,p){var y=this.keys.getPublic(p==="compressed",!0);return p==="hybrid"&&(y[y.length-1]%2?y[0]=7:y[0]=6),b(y,Z)},v.prototype.getPrivateKey=function(Z){return b(this.keys.getPrivate(),Z)},v.prototype.setPublicKey=function(Z,p){return p=p||"utf8",a.isBuffer(Z)||(Z=new a(Z,p)),this.keys._importPublic(Z),this},v.prototype.setPrivateKey=function(Z,p){p=p||"utf8",a.isBuffer(Z)||(Z=new a(Z,p));var y=new r(Z);return y=y.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(y),this};function b(Z,p,y){Array.isArray(Z)||(Z=Z.toArray());var X=new a(Z);if(y&&X.lengthN){var G=X==="rmd160"?new b:Z(X);m=G.update(m).digest()}else m.lengthv?p=Z(p):p.length"u"?"undefined":a(l))=="object"&&typeof i<"u"?i.exports=r():o.dayjs=r()})(void 0,function(){var o="millisecond",r="second",f="minute",v="hour",b="day",Z="week",p="month",y="quarter",X="year",m="date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,G=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(g,S,L){var V=String(g);return!V||V.length>=S?g:""+Array(S+1-V.length).join(L)+g},u={s:d,z:function(g){var S=-g.utcOffset(),L=Math.abs(S),V=Math.floor(L/60),Y=L%60;return(S<=0?"+":"-")+d(V,2,"0")+":"+d(Y,2,"0")},m:function R(g,S){if(g.date()"u"?"undefined":a(l))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_customParseFormat=r()})(void 0,function(){var o,r=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,f=/\d\d/,v=/\d\d?/,b=/\d*[^\s\d-:/()]+/,Z=function(G){return function(d){this[G]=+d}},p=[/[+-]\d\d:?\d\d/,function(N){var G,d;(this.zone||(this.zone={})).offset=(G=N.match(/([+-]|\d\d)/g),(d=60*G[1]+ +G[2])===0?0:G[0]==="+"?-d:d)}],y=function(G){var d=o[G];return d&&(d.indexOf?d:d.s.concat(d.f))},X={A:[/[AP]M/,function(N){this.afternoon=N==="PM"}],a:[/[ap]m/,function(N){this.afternoon=N==="pm"}],S:[/\d/,function(N){this.milliseconds=100*+N}],SS:[f,function(N){this.milliseconds=10*+N}],SSS:[/\d{3}/,function(N){this.milliseconds=+N}],s:[v,Z("seconds")],ss:[v,Z("seconds")],m:[v,Z("minutes")],mm:[v,Z("minutes")],H:[v,Z("hours")],h:[v,Z("hours")],HH:[v,Z("hours")],hh:[v,Z("hours")],D:[v,Z("day")],DD:[f,Z("day")],Do:[b,function(N){var G=o.ordinal,d=N.match(/\d+/);if(this.day=d[0],G)for(var u=1;u<=31;u+=1)G(u).replace(/\[|\]/g,"")===N&&(this.day=u)}],M:[v,Z("month")],MM:[f,Z("month")],MMM:[b,function(N){var G=y("months"),d=(y("monthsShort")||G.map(function(u){return u.substr(0,3)})).indexOf(N)+1;if(d<1)throw new Error;this.month=d%12||d}],MMMM:[b,function(N){var G=y("months").indexOf(N)+1;if(G<1)throw new Error;this.month=G%12||G}],Y:[/[+-]?\d+/,Z("year")],YY:[f,function(N){N=+N,this.year=N+(N>68?1900:2e3)}],YYYY:[/\d{4}/,Z("year")],Z:p,ZZ:p},m=function(G,d,u){try{var s=function(U){for(var K=U.match(r),H=K.length,k=0;k0?c-1:R.getMonth());var V=M||0,Y=I||0,T=w||0,J=C||0;return x?new Date(Date.UTC(S,L,g,V,Y,T,J+60*x.offset*1e3)):u?new Date(Date.UTC(S,L,g,V,Y,T,J)):new Date(S,L,g,V,Y,T,J)}catch{return new Date("")}};return function(N,G,d){var u=G.prototype,s=u.parse;u.parse=function(h){var c=h.date,W=h.utc,M=h.args;this.$u=W;var I=M[1];if(typeof I=="string"){var w=M[2]===!0,C=M[3]===!0,x=w||C,R=M[2];C&&(R=M[2]),w||(o=R?d.Ls[R]:this.$locale()),this.$d=m(c,I,W),this.init(),R&&R!==!0&&(this.$L=this.locale(R).$L),x&&c!==this.format(I)&&(this.$d=new Date(""))}else if(I instanceof Array)for(var g=I.length,S=1;S<=g;S+=1){M[1]=I[S-1];var L=d.apply(this,M);if(L.isValid()){this.$d=L.$d,this.$L=L.$L,this.init();break}S===g&&(this.$d=new Date(""))}else s.call(this,h)}}})},{}],338:[function(t,i,l){function a(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(o)}(function(o,r){(typeof l>"u"?"undefined":a(l))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_utc=r()})(void 0,function(){return function(o,r,f){var v=new Date().getTimezoneOffset(),b=r.prototype;f.utc=function(G){return new r({date:G,utc:!0,args:arguments})},b.utc=function(){return f(this.toDate(),{locale:this.$L,utc:!0})},b.local=function(){return f(this.toDate(),{locale:this.$L,utc:!1})};var Z=b.parse;b.parse=function(G){G.utc&&(this.$u=!0),this.$utils().u(G.$offset)||(this.$offset=G.$offset),Z.call(this,G)};var p=b.init;b.init=function(){if(this.$u){var G=this.$d;this.$y=G.getUTCFullYear(),this.$M=G.getUTCMonth(),this.$D=G.getUTCDate(),this.$W=G.getUTCDay(),this.$H=G.getUTCHours(),this.$m=G.getUTCMinutes(),this.$s=G.getUTCSeconds(),this.$ms=G.getUTCMilliseconds()}else p.call(this)};var y=b.utcOffset;b.utcOffset=function(G,d){var u=this.$utils().u;if(u(G))return this.$u?0:u(this.$offset)?y.call(this):this.$offset;var s=Math.abs(G)<=16?60*G:G,h=this;return d?(h.$offset=s,h.$u=G===0,h):(G!==0?(h=this.local().add(s+v,"minute")).$offset=s:h=this.utc(),h)};var X=b.format;b.format=function(G){var d=G||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return X.call(this,d)},b.valueOf=function(){var G=this.$utils().u(this.$offset)?0:this.$offset+v;return this.$d.valueOf()-6e4*G},b.isUTC=function(){return!!this.$u},b.toISOString=function(){return this.toDate().toISOString()},b.toString=function(){return this.toDate().toUTCString()};var m=b.toDate;b.toDate=function(G){return G==="s"&&this.$offset?f(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():m.call(this)};var N=b.diff;b.diff=function(G,d,u){var s=this.local(),h=f(G).local();return N.call(s,h,d,u)}}})},{}],339:[function(t,i,l){l.utils=t("./des/utils"),l.Cipher=t("./des/cipher"),l.DES=t("./des/des"),l.CBC=t("./des/cbc"),l.EDE=t("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(t,i,l){var a=t("minimalistic-assert"),o=t("inherits"),r={};function f(b){a.equal(b.length,8,"Invalid IV length"),this.iv=new Array(8);for(var Z=0;Z0;Z--)v+=this._buffer(f,v),b+=this._flushBuffer(p,b);return v+=this._buffer(f,v),p},o.prototype.final=function(f){var v;f&&(v=this.update(f));var b;return this.type==="encrypt"?b=this._finalEncrypt():b=this._finalDecrypt(),v?v.concat(b):b},o.prototype._pad=function(f,v){if(v===0)return!1;for(;v>>1];m=r.r28shl(m,d),N=r.r28shl(N,d),r.pc2(m,N,y.keys,G)}},b.prototype._update=function(y,X,m,N){var G=this._desState,d=r.readUInt32BE(y,X),u=r.readUInt32BE(y,X+4);r.ip(d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],this.type==="encrypt"?this._encrypt(G,d,u,G.tmp,0):this._decrypt(G,d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],r.writeUInt32BE(m,d,N),r.writeUInt32BE(m,u,N+4)},b.prototype._pad=function(y,X){for(var m=y.length-X,N=X;N>>0,d=I}r.rip(u,d,N,G)},b.prototype._decrypt=function(y,X,m,N,G){for(var d=m,u=X,s=y.keys.length-2;s>=0;s-=2){var h=y.keys[s],c=y.keys[s+1];r.expand(d,y.tmp,0),h^=y.tmp[0],c^=y.tmp[1];var W=r.substitute(h,c),M=r.permute(W),I=d;d=(u^M)>>>0,u=I}r.rip(d,u,N,G)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(t,i,l){var a=t("minimalistic-assert"),o=t("inherits"),r=t("./cipher"),f=t("./des");function v(Z,p){a.equal(p.length,24,"Invalid key length");var y=p.slice(0,8),X=p.slice(8,16),m=p.slice(16,24);Z==="encrypt"?this.ciphers=[f.create({type:"encrypt",key:y}),f.create({type:"decrypt",key:X}),f.create({type:"encrypt",key:m})]:this.ciphers=[f.create({type:"decrypt",key:m}),f.create({type:"encrypt",key:X}),f.create({type:"decrypt",key:y})]}function b(Z){r.call(this,Z);var p=new v(this.type,this.options.key);this._edeState=p}o(b,r),i.exports=b,b.create=function(p){return new b(p)},b.prototype._update=function(p,y,X,m){var N=this._edeState;N.ciphers[0]._update(p,y,X,m),N.ciphers[1]._update(X,m,X,m),N.ciphers[2]._update(X,m,X,m)},b.prototype._pad=f.prototype._pad,b.prototype._unpad=f.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(t,i,l){l.readUInt32BE=function(v,b){var Z=v[0+b]<<24|v[1+b]<<16|v[2+b]<<8|v[3+b];return Z>>>0},l.writeUInt32BE=function(v,b,Z){v[0+Z]=b>>>24,v[1+Z]=b>>>16&255,v[2+Z]=b>>>8&255,v[3+Z]=b&255},l.ip=function(v,b,Z,p){for(var y=0,X=0,m=6;m>=0;m-=2){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>>N+m&1}for(var m=6;m>=0;m-=2){for(var N=1;N<=25;N+=8)X<<=1,X|=b>>>N+m&1;for(var N=1;N<=25;N+=8)X<<=1,X|=v>>>N+m&1}Z[p+0]=y>>>0,Z[p+1]=X>>>0},l.rip=function(v,b,Z,p){for(var y=0,X=0,m=0;m<4;m++)for(var N=24;N>=0;N-=8)y<<=1,y|=b>>>N+m&1,y<<=1,y|=v>>>N+m&1;for(var m=4;m<8;m++)for(var N=24;N>=0;N-=8)X<<=1,X|=b>>>N+m&1,X<<=1,X|=v>>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},l.pc1=function(v,b,Z,p){for(var y=0,X=0,m=7;m>=5;m--){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>N+m&1}for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var m=1;m<=3;m++){for(var N=0;N<=24;N+=8)X<<=1,X|=b>>N+m&1;for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1}for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},l.r28shl=function(v,b){return v<>>28-b};var a=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];l.pc2=function(v,b,Z,p){for(var y=0,X=0,m=a.length>>>1,N=0;N>>a[N]&1;for(var N=m;N>>a[N]&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},l.expand=function(v,b,Z){var p=0,y=0;p=(v&1)<<5|v>>>27;for(var X=23;X>=15;X-=4)p<<=6,p|=v>>>X&63;for(var X=11;X>=3;X-=4)y|=v>>>X&63,y<<=6;y|=(v&31)<<1|v>>>31,b[Z+0]=p>>>0,b[Z+1]=y>>>0};var o=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];l.substitute=function(v,b){for(var Z=0,p=0;p<4;p++){var y=v>>>18-p*6&63,X=o[p*64+y];Z<<=4,Z|=X}for(var p=0;p<4;p++){var y=b>>>18-p*6&63,X=o[4*64+p*64+y];Z<<=4,Z|=X}return Z>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];l.permute=function(v){for(var b=0,Z=0;Z>>r[Z]&1;return b>>>0},l.padSplit=function(v,b,Z){for(var p=v.toString(2);p.lengthc;)M.ishrn(1);if(M.isEven()&&M.iadd(b),M.testn(1)||M.iadd(Z),W.cmp(Z)){if(!W.cmp(p))for(;M.mod(y).cmp(X);)M.iadd(N)}else for(;M.mod(r).cmp(m);)M.iadd(N);if(I=M.shrn(1),u(I)&&u(M)&&s(I)&&s(M)&&v.test(I)&&v.test(M))return M}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(t,i,l){i.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(t,i,l){arguments[4][181][0].apply(l,arguments)},{buffer:185,dup:181}],350:[function(t,i,l){var a=l;a.version=t("../package.json").version,a.utils=t("./elliptic/utils"),a.rand=t("brorand"),a.curve=t("./elliptic/curve"),a.curves=t("./elliptic/curves"),a.ec=t("./elliptic/ec"),a.eddsa=t("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(t,i,l){var a=t("bn.js"),o=t("../utils"),r=o.getNAF,f=o.getJSF,v=o.assert;function b(p,y){this.type=p,this.p=new a(y.p,16),this.red=y.prime?a.red(y.prime):a.mont(this.p),this.zero=new a(0).toRed(this.red),this.one=new a(1).toRed(this.red),this.two=new a(2).toRed(this.red),this.n=y.n&&new a(y.n,16),this.g=y.g&&this.pointFromJSON(y.g,y.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var X=this.n&&this.p.div(this.n);!X||X.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}i.exports=b,b.prototype.point=function(){throw new Error("Not implemented")},b.prototype.validate=function(){throw new Error("Not implemented")},b.prototype._fixedNafMul=function(y,X){v(y.precomputed);var m=y._getDoubles(),N=r(X,1,this._bitLength),G=(1<=u;X--)s=(s<<1)+N[X];d.push(s)}for(var h=this.jpoint(null,null,null),c=this.jpoint(null,null,null),W=G;W>0;W--){for(var u=0;u=0;s--){for(var X=0;s>=0&&d[s]===0;s--)X++;if(s>=0&&X++,u=u.dblp(X),s<0)break;var h=d[s];v(h!==0),y.type==="affine"?h>0?u=u.mixedAdd(G[h-1>>1]):u=u.mixedAdd(G[-h-1>>1].neg()):h>0?u=u.add(G[h-1>>1]):u=u.add(G[-h-1>>1].neg())}return y.type==="affine"?u.toP():u},b.prototype._wnafMulAdd=function(y,X,m,N,G){for(var d=this._wnafT1,u=this._wnafT2,s=this._wnafT3,h=0,c=0;c=1;c-=2){var I=c-1,w=c;if(d[I]!==1||d[w]!==1){s[I]=r(m[I],d[I],this._bitLength),s[w]=r(m[w],d[w],this._bitLength),h=Math.max(s[I].length,h),h=Math.max(s[w].length,h);continue}var C=[X[I],null,null,X[w]];X[I].y.cmp(X[w].y)===0?(C[1]=X[I].add(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg())):X[I].y.cmp(X[w].y.redNeg())===0?(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].add(X[w].neg())):(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg()));var x=[-3,-1,-5,-7,0,7,5,1,3],R=f(m[I],m[w]);h=Math.max(R[0].length,h),s[I]=new Array(h),s[w]=new Array(h);for(var g=0;g=0;c--){for(var T=0;c>=0;){for(var J=!0,g=0;g=0&&T++,V=V.dblp(T),c<0)break;for(var g=0;g0?W=u[g][U-1>>1]:U<0&&(W=u[g][-U-1>>1].neg()),W.type==="affine"?V=V.mixedAdd(W):V=V.add(W))}}for(var c=0;c=Math.ceil((y.bitLength()+1)/X.step):!1},Z.prototype._getDoubles=function(y,X){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var m=[this],N=this,G=0;G":""},Z.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},Z.prototype._extDbl=function(){var y=this.x.redSqr(),X=this.y.redSqr(),m=this.z.redSqr();m=m.redIAdd(m);var N=this.curve._mulA(y),G=this.x.redAdd(this.y).redSqr().redISub(y).redISub(X),d=N.redAdd(X),u=d.redSub(m),s=N.redSub(X),h=G.redMul(u),c=d.redMul(s),W=G.redMul(s),M=u.redMul(d);return this.curve.point(h,c,M,W)},Z.prototype._projDbl=function(){var y=this.x.redAdd(this.y).redSqr(),X=this.x.redSqr(),m=this.y.redSqr(),N,G,d;if(this.curve.twisted){var u=this.curve._mulA(X),s=u.redAdd(m);if(this.zOne)N=y.redSub(X).redSub(m).redMul(s.redSub(this.curve.two)),G=s.redMul(u.redSub(m)),d=s.redSqr().redSub(s).redSub(s);else{var h=this.z.redSqr(),c=s.redSub(h).redISub(h);N=y.redSub(X).redISub(m).redMul(c),G=s.redMul(u.redSub(m)),d=s.redMul(c)}}else{var u=X.redAdd(m),h=this.curve._mulC(this.z).redSqr(),c=u.redSub(h).redSub(h);N=this.curve._mulC(y.redISub(u)).redMul(c),G=this.curve._mulC(u).redMul(X.redISub(m)),d=u.redMul(c)}return this.curve.point(N,G,d)},Z.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},Z.prototype._extAdd=function(y){var X=this.y.redSub(this.x).redMul(y.y.redSub(y.x)),m=this.y.redAdd(this.x).redMul(y.y.redAdd(y.x)),N=this.t.redMul(this.curve.dd).redMul(y.t),G=this.z.redMul(y.z.redAdd(y.z)),d=m.redSub(X),u=G.redSub(N),s=G.redAdd(N),h=m.redAdd(X),c=d.redMul(u),W=s.redMul(h),M=d.redMul(h),I=u.redMul(s);return this.curve.point(c,W,I,M)},Z.prototype._projAdd=function(y){var X=this.z.redMul(y.z),m=X.redSqr(),N=this.x.redMul(y.x),G=this.y.redMul(y.y),d=this.curve.d.redMul(N).redMul(G),u=m.redSub(d),s=m.redAdd(d),h=this.x.redAdd(this.y).redMul(y.x.redAdd(y.y)).redISub(N).redISub(G),c=X.redMul(u).redMul(h),W,M;return this.curve.twisted?(W=X.redMul(s).redMul(G.redSub(this.curve._mulA(N))),M=u.redMul(s)):(W=X.redMul(s).redMul(G.redSub(N)),M=this.curve._mulC(u).redMul(s)),this.curve.point(c,W,M)},Z.prototype.add=function(y){return this.isInfinity()?y:y.isInfinity()?this:this.curve.extended?this._extAdd(y):this._projAdd(y)},Z.prototype.mul=function(y){return this._hasDoubles(y)?this.curve._fixedNafMul(this,y):this.curve._wnafMul(this,y)},Z.prototype.mulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!1)},Z.prototype.jmulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!0)},Z.prototype.normalize=function(){if(this.zOne)return this;var y=this.z.redInvm();return this.x=this.x.redMul(y),this.y=this.y.redMul(y),this.t&&(this.t=this.t.redMul(y)),this.z=this.curve.one,this.zOne=!0,this},Z.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},Z.prototype.getX=function(){return this.normalize(),this.x.fromRed()},Z.prototype.getY=function(){return this.normalize(),this.y.fromRed()},Z.prototype.eq=function(y){return this===y||this.getX().cmp(y.getX())===0&&this.getY().cmp(y.getY())===0},Z.prototype.eqXToP=function(y){var X=y.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(X)===0)return!0;for(var m=y.clone(),N=this.curve.redN.redMul(this.z);;){if(m.iadd(this.curve.n),m.cmp(this.curve.p)>=0)return!1;if(X.redIAdd(N),this.x.cmp(X)===0)return!0}},Z.prototype.toP=Z.prototype.normalize,Z.prototype.mixedAdd=Z.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(t,i,l){var a=l;a.base=t("./base"),a.short=t("./short"),a.mont=t("./mont"),a.edwards=t("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(t,i,l){var a=t("bn.js"),o=t("inherits"),r=t("./base"),f=t("../utils");function v(Z){r.call(this,"mont",Z),this.a=new a(Z.a,16).toRed(this.red),this.b=new a(Z.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}o(v,r),i.exports=v,v.prototype.validate=function(p){var y=p.normalize().x,X=y.redSqr(),m=X.redMul(y).redAdd(X.redMul(this.a)).redAdd(y),N=m.redSqrt();return N.redSqr().cmp(m)===0};function b(Z,p,y){r.BasePoint.call(this,Z,"projective"),p===null&&y===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(p,16),this.z=new a(y,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}o(b,r.BasePoint),v.prototype.decodePoint=function(p,y){return this.point(f.toArray(p,y),1)},v.prototype.point=function(p,y){return new b(this,p,y)},v.prototype.pointFromJSON=function(p){return b.fromJSON(this,p)},b.prototype.precompute=function(){},b.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},b.fromJSON=function(p,y){return new b(p,y[0],y[1]||p.one)},b.prototype.inspect=function(){return this.isInfinity()?"":""},b.prototype.isInfinity=function(){return this.z.cmpn(0)===0},b.prototype.dbl=function(){var p=this.x.redAdd(this.z),y=p.redSqr(),X=this.x.redSub(this.z),m=X.redSqr(),N=y.redSub(m),G=y.redMul(m),d=N.redMul(m.redAdd(this.curve.a24.redMul(N)));return this.curve.point(G,d)},b.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.diffAdd=function(p,y){var X=this.x.redAdd(this.z),m=this.x.redSub(this.z),N=p.x.redAdd(p.z),G=p.x.redSub(p.z),d=G.redMul(X),u=N.redMul(m),s=y.z.redMul(d.redAdd(u).redSqr()),h=y.x.redMul(d.redISub(u).redSqr());return this.curve.point(s,h)},b.prototype.mul=function(p){for(var y=p.clone(),X=this,m=this.curve.point(null,null),N=this,G=[];y.cmpn(0)!==0;y.iushrn(1))G.push(y.andln(1));for(var d=G.length-1;d>=0;d--)G[d]===0?(X=X.diffAdd(m,N),m=m.dbl()):(m=X.diffAdd(m,N),X=X.dbl());return m},b.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.eq=function(p){return this.getX().cmp(p.getX())===0},b.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},b.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(t,i,l){var a=t("../utils"),o=t("bn.js"),r=t("inherits"),f=t("./base"),v=a.assert;function b(y){f.call(this,"short",y),this.a=new o(y.a,16).toRed(this.red),this.b=new o(y.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(y),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}r(b,f),i.exports=b,b.prototype._getEndomorphism=function(X){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var m,N;if(X.beta)m=new o(X.beta,16).toRed(this.red);else{var G=this._getEndoRoots(this.p);m=G[0].cmp(G[1])<0?G[0]:G[1],m=m.toRed(this.red)}if(X.lambda)N=new o(X.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(m))===0?N=d[0]:(N=d[1],v(this.g.mul(N).x.cmp(this.g.x.redMul(m))===0))}var u;return X.basis?u=X.basis.map(function(s){return{a:new o(s.a,16),b:new o(s.b,16)}}):u=this._getEndoBasis(N),{beta:m,lambda:N,basis:u}}},b.prototype._getEndoRoots=function(X){var m=X===this.p?this.red:o.mont(X),N=new o(2).toRed(m).redInvm(),G=N.redNeg(),d=new o(3).toRed(m).redNeg().redSqrt().redMul(N),u=G.redAdd(d).fromRed(),s=G.redSub(d).fromRed();return[u,s]},b.prototype._getEndoBasis=function(X){for(var m=this.n.ushrn(Math.floor(this.n.bitLength()/2)),N=X,G=this.n.clone(),d=new o(1),u=new o(0),s=new o(0),h=new o(1),c,W,M,I,w,C,x,R=0,g,S;N.cmpn(0)!==0;){var L=G.div(N);g=G.sub(L.mul(N)),S=s.sub(L.mul(d));var V=h.sub(L.mul(u));if(!M&&g.cmp(m)<0)c=x.neg(),W=d,M=g.neg(),I=S;else if(M&&++R===2)break;x=g,G=N,N=g,s=d,d=S,h=u,u=V}w=g.neg(),C=S;var Y=M.sqr().add(I.sqr()),T=w.sqr().add(C.sqr());return T.cmp(Y)>=0&&(w=c,C=W),M.negative&&(M=M.neg(),I=I.neg()),w.negative&&(w=w.neg(),C=C.neg()),[{a:M,b:I},{a:w,b:C}]},b.prototype._endoSplit=function(X){var m=this.endo.basis,N=m[0],G=m[1],d=G.b.mul(X).divRound(this.n),u=N.b.neg().mul(X).divRound(this.n),s=d.mul(N.a),h=u.mul(G.a),c=d.mul(N.b),W=u.mul(G.b),M=X.sub(s).sub(h),I=c.add(W).neg();return{k1:M,k2:I}},b.prototype.pointFromX=function(X,m){X=new o(X,16),X.red||(X=X.toRed(this.red));var N=X.redSqr().redMul(X).redIAdd(X.redMul(this.a)).redIAdd(this.b),G=N.redSqrt();if(G.redSqr().redSub(N).cmp(this.zero)!==0)throw new Error("invalid point");var d=G.fromRed().isOdd();return(m&&!d||!m&&d)&&(G=G.redNeg()),this.point(X,G)},b.prototype.validate=function(X){if(X.inf)return!0;var m=X.x,N=X.y,G=this.a.redMul(m),d=m.redSqr().redMul(m).redIAdd(G).redIAdd(this.b);return N.redSqr().redISub(d).cmpn(0)===0},b.prototype._endoWnafMulAdd=function(X,m,N){for(var G=this._endoWnafT1,d=this._endoWnafT2,u=0;u":""},Z.prototype.isInfinity=function(){return this.inf},Z.prototype.add=function(X){if(this.inf)return X;if(X.inf)return this;if(this.eq(X))return this.dbl();if(this.neg().eq(X))return this.curve.point(null,null);if(this.x.cmp(X.x)===0)return this.curve.point(null,null);var m=this.y.redSub(X.y);m.cmpn(0)!==0&&(m=m.redMul(this.x.redSub(X.x).redInvm()));var N=m.redSqr().redISub(this.x).redISub(X.x),G=m.redMul(this.x.redSub(N)).redISub(this.y);return this.curve.point(N,G)},Z.prototype.dbl=function(){if(this.inf)return this;var X=this.y.redAdd(this.y);if(X.cmpn(0)===0)return this.curve.point(null,null);var m=this.curve.a,N=this.x.redSqr(),G=X.redInvm(),d=N.redAdd(N).redIAdd(N).redIAdd(m).redMul(G),u=d.redSqr().redISub(this.x.redAdd(this.x)),s=d.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,s)},Z.prototype.getX=function(){return this.x.fromRed()},Z.prototype.getY=function(){return this.y.fromRed()},Z.prototype.mul=function(X){return X=new o(X,16),this.isInfinity()?this:this._hasDoubles(X)?this.curve._fixedNafMul(this,X):this.curve.endo?this.curve._endoWnafMulAdd([this],[X]):this.curve._wnafMul(this,X)},Z.prototype.mulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d):this.curve._wnafMulAdd(1,G,d,2)},Z.prototype.jmulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d,!0):this.curve._wnafMulAdd(1,G,d,2,!0)},Z.prototype.eq=function(X){return this===X||this.inf===X.inf&&(this.inf||this.x.cmp(X.x)===0&&this.y.cmp(X.y)===0)},Z.prototype.neg=function(X){if(this.inf)return this;var m=this.curve.point(this.x,this.y.redNeg());if(X&&this.precomputed){var N=this.precomputed,G=function(u){return u.neg()};m.precomputed={naf:N.naf&&{wnd:N.naf.wnd,points:N.naf.points.map(G)},doubles:N.doubles&&{step:N.doubles.step,points:N.doubles.points.map(G)}}}return m},Z.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var X=this.curve.jpoint(this.x,this.y,this.curve.one);return X};function p(y,X,m,N){f.BasePoint.call(this,y,"jacobian"),X===null&&m===null&&N===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new o(0)):(this.x=new o(X,16),this.y=new o(m,16),this.z=new o(N,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}r(p,f.BasePoint),b.prototype.jpoint=function(X,m,N){return new p(this,X,m,N)},p.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var X=this.z.redInvm(),m=X.redSqr(),N=this.x.redMul(m),G=this.y.redMul(m).redMul(X);return this.curve.point(N,G)},p.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},p.prototype.add=function(X){if(this.isInfinity())return X;if(X.isInfinity())return this;var m=X.z.redSqr(),N=this.z.redSqr(),G=this.x.redMul(m),d=X.x.redMul(N),u=this.y.redMul(m.redMul(X.z)),s=X.y.redMul(N.redMul(this.z)),h=G.redSub(d),c=u.redSub(s);if(h.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var W=h.redSqr(),M=W.redMul(h),I=G.redMul(W),w=c.redSqr().redIAdd(M).redISub(I).redISub(I),C=c.redMul(I.redISub(w)).redISub(u.redMul(M)),x=this.z.redMul(X.z).redMul(h);return this.curve.jpoint(w,C,x)},p.prototype.mixedAdd=function(X){if(this.isInfinity())return X.toJ();if(X.isInfinity())return this;var m=this.z.redSqr(),N=this.x,G=X.x.redMul(m),d=this.y,u=X.y.redMul(m).redMul(this.z),s=N.redSub(G),h=d.redSub(u);if(s.cmpn(0)===0)return h.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),W=c.redMul(s),M=N.redMul(c),I=h.redSqr().redIAdd(W).redISub(M).redISub(M),w=h.redMul(M.redISub(I)).redISub(d.redMul(W)),C=this.z.redMul(s);return this.curve.jpoint(I,w,C)},p.prototype.dblp=function(X){if(X===0)return this;if(this.isInfinity())return this;if(!X)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var m=this,N=0;N=0)return!1;if(N.redIAdd(d),this.x.cmp(N)===0)return!0}},p.prototype.inspect=function(){return this.isInfinity()?"":""},p.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(t,i,l){var a=l,o=t("hash.js"),r=t("./curve"),f=t("./utils"),v=f.assert;function b(y){y.type==="short"?this.curve=new r.short(y):y.type==="edwards"?this.curve=new r.edwards(y):this.curve=new r.mont(y),this.g=this.curve.g,this.n=this.curve.n,this.hash=y.hash,v(this.g.validate(),"Invalid curve"),v(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}a.PresetCurve=b;function Z(y,X){Object.defineProperty(a,y,{configurable:!0,enumerable:!0,get:function(){var N=new b(X);return Object.defineProperty(a,y,{configurable:!0,enumerable:!0,value:N}),N}})}Z("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),Z("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),Z("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),Z("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),Z("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),Z("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),Z("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var p;try{p=t("./precomputed/secp256k1")}catch{p=void 0}Z("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",p]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(t,i,l){function a(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(G){return typeof G}:a=function(G){return G&&typeof Symbol=="function"&&G.constructor===Symbol&&G!==Symbol.prototype?"symbol":typeof G},a(m)}var o=t("bn.js"),r=t("hmac-drbg"),f=t("../utils"),v=t("../curves"),b=t("brorand"),Z=f.assert,p=t("./key"),y=t("./signature");function X(m){if(!(this instanceof X))return new X(m);typeof m=="string"&&(Z(v.hasOwnProperty(m),"Unknown curve "+m),m=v[m]),m instanceof v.PresetCurve&&(m={curve:m}),this.curve=m.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=m.curve.g,this.g.precompute(m.curve.n.bitLength()+1),this.hash=m.hash||m.curve.hash}i.exports=X,X.prototype.keyPair=function(N){return new p(this,N)},X.prototype.keyFromPrivate=function(N,G){return p.fromPrivate(this,N,G)},X.prototype.keyFromPublic=function(N,G){return p.fromPublic(this,N,G)},X.prototype.genKeyPair=function(N){N||(N={});var G=new r({hash:this.hash,pers:N.pers,persEnc:N.persEnc||"utf8",entropy:N.entropy||b(this.hash.hmacStrength),entropyEnc:N.entropy&&N.entropyEnc||"utf8",nonce:this.n.toArray()}),d=this.n.byteLength(),u=this.n.sub(new o(2));do{var s=new o(G.generate(d));if(!(s.cmp(u)>0))return s.iaddn(1),this.keyFromPrivate(s)}while(!0)},X.prototype._truncateToN=function(N,G){var d=N.byteLength()*8-this.n.bitLength();return d>0&&(N=N.ushrn(d)),!G&&N.cmp(this.n)>=0?N.sub(this.n):N},X.prototype.sign=function(N,G,d,u){a(d)==="object"&&(u=d,d=null),u||(u={}),G=this.keyFromPrivate(G,d),N=this._truncateToN(new o(N,16));for(var s=this.n.byteLength(),h=G.getPrivate().toArray("be",s),c=N.toArray("be",s),W=new r({hash:this.hash,entropy:h,nonce:c,pers:u.pers,persEnc:u.persEnc||"utf8"}),M=this.n.sub(new o(1)),I=0;;I++){var w=u.k?u.k(I):new o(W.generate(this.n.byteLength()));if(w=this._truncateToN(w,!0),!(w.cmpn(1)<=0||w.cmp(M)>=0)){var C=this.g.mul(w);if(!C.isInfinity()){var x=C.getX(),R=x.umod(this.n);if(R.cmpn(0)!==0){var g=w.invm(this.n).mul(R.mul(G.getPrivate()).iadd(N));if(g=g.umod(this.n),g.cmpn(0)!==0){var S=(C.getY().isOdd()?1:0)|(x.cmp(R)!==0?2:0);return u.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),S^=1),new y({r:R,s:g,recoveryParam:S})}}}}}},X.prototype.verify=function(N,G,d,u){N=this._truncateToN(new o(N,16)),d=this.keyFromPublic(d,u),G=new y(G,"hex");var s=G.r,h=G.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var c=h.invm(this.n),W=c.mul(N).umod(this.n),M=c.mul(s).umod(this.n);if(!this.curve._maxwellTrick){var I=this.g.mulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.getX().umod(this.n).cmp(s)===0}var I=this.g.jmulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.eqXToP(s)},X.prototype.recoverPubKey=function(m,N,G,d){Z((3&G)===G,"The recovery param is more than two bits"),N=new y(N,d);var u=this.n,s=new o(m),h=N.r,c=N.s,W=G&1,M=G>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?h=this.curve.pointFromX(h.add(this.curve.n),W):h=this.curve.pointFromX(h,W);var I=N.r.invm(u),w=u.sub(s).mul(I).umod(u),C=c.mul(I).umod(u);return this.g.mulAdd(w,h,C)},X.prototype.getKeyRecoveryParam=function(m,N,G,d){if(N=new y(N,d),N.recoveryParam!==null)return N.recoveryParam;for(var u=0;u<4;u++){var s;try{s=this.recoverPubKey(m,N,u)}catch{continue}if(s.eq(G))return u}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(t,i,l){var a=t("bn.js"),o=t("../utils"),r=o.assert;function f(v,b){this.ec=v,this.priv=null,this.pub=null,b.priv&&this._importPrivate(b.priv,b.privEnc),b.pub&&this._importPublic(b.pub,b.pubEnc)}i.exports=f,f.fromPublic=function(b,Z,p){return Z instanceof f?Z:new f(b,{pub:Z,pubEnc:p})},f.fromPrivate=function(b,Z,p){return Z instanceof f?Z:new f(b,{priv:Z,privEnc:p})},f.prototype.validate=function(){var b=this.getPublic();return b.isInfinity()?{result:!1,reason:"Invalid public key"}:b.validate()?b.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},f.prototype.getPublic=function(b,Z){return typeof b=="string"&&(Z=b,b=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),Z?this.pub.encode(Z,b):this.pub},f.prototype.getPrivate=function(b){return b==="hex"?this.priv.toString(16,2):this.priv},f.prototype._importPrivate=function(b,Z){this.priv=new a(b,Z||16),this.priv=this.priv.umod(this.ec.curve.n)},f.prototype._importPublic=function(b,Z){if(b.x||b.y){this.ec.curve.type==="mont"?r(b.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&r(b.x&&b.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(b.x,b.y);return}this.pub=this.ec.curve.decodePoint(b,Z)},f.prototype.derive=function(b){return b.mul(this.priv).getX()},f.prototype.sign=function(b,Z,p){return this.ec.sign(b,this,Z,p)},f.prototype.verify=function(b,Z){return this.ec.verify(b,Z,this)},f.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(t,i,l){var a=t("bn.js"),o=t("../utils"),r=o.assert;function f(y,X){if(y instanceof f)return y;this._importDER(y,X)||(r(y.r&&y.s,"Signature without r or s"),this.r=new a(y.r,16),this.s=new a(y.s,16),y.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=y.recoveryParam)}i.exports=f;function v(){this.place=0}function b(y,X){var m=y[X.place++];if(!(m&128))return m;var N=m&15;if(N===0||N>4)return!1;for(var G=0,d=0,u=X.place;d>>=0;return G<=127?!1:(X.place=u,G)}function Z(y){for(var X=0,m=y.length-1;!y[X]&&!(y[X+1]&128)&&X>>3);for(y.push(m|128);--m;)y.push(X>>>(m<<3)&255);y.push(X)}f.prototype.toDER=function(X){var m=this.r.toArray(),N=this.s.toArray();for(m[0]&128&&(m=[0].concat(m)),N[0]&128&&(N=[0].concat(N)),m=Z(m),N=Z(N);!N[0]&&!(N[1]&128);)N=N.slice(1);var G=[2];p(G,m.length),G=G.concat(m),G.push(2),p(G,N.length);var d=G.concat(N),u=[48];return p(u,d.length),u=u.concat(d),o.encode(u,X)}},{"../utils":364,"bn.js":365}],360:[function(t,i,l){var a=t("hash.js"),o=t("../curves"),r=t("../utils"),f=r.assert,v=r.parseBytes,b=t("./key"),Z=t("./signature");function p(X){if(f(X==="ed25519","only tested with ed25519 so far"),!(this instanceof p))return new p(X);var X=o[X].curve;this.curve=X,this.g=X.g,this.g.precompute(X.n.bitLength()+1),this.pointClass=X.point().constructor,this.encodingLength=Math.ceil(X.n.bitLength()/8),this.hash=a.sha512}i.exports=p,p.prototype.sign=function(X,m){X=v(X);var N=this.keyFromSecret(m),G=this.hashInt(N.messagePrefix(),X),d=this.g.mul(G),u=this.encodePoint(d),s=this.hashInt(u,N.pubBytes(),X).mul(N.priv()),h=G.add(s).umod(this.curve.n);return this.makeSignature({R:d,S:h,Rencoded:u})},p.prototype.verify=function(X,m,N){X=v(X),m=this.makeSignature(m);var G=this.keyFromPublic(N),d=this.hashInt(m.Rencoded(),G.pubBytes(),X),u=this.g.mul(m.S()),s=m.R().add(G.pub().mul(d));return s.eq(u)},p.prototype.hashInt=function(){for(var X=this.hash(),m=0;m(d>>1)-1?h=(d>>1)-c:h=c,u.isubn(h)):h=0,G[s]=h,u.iushrn(1)}return G}a.getNAF=v;function b(X,m){var N=[[],[]];X=X.clone(),m=m.clone();for(var G=0,d=0;X.cmpn(-G)>0||m.cmpn(-d)>0;){var u=X.andln(3)+G&3,s=m.andln(3)+d&3;u===3&&(u=-1),s===3&&(s=-1);var h;if(!(u&1))h=0;else{var c=X.andln(7)+G&7;(c===3||c===5)&&s===2?h=-u:h=u}N[0].push(h);var W;if(!(s&1))W=0;else{var c=m.andln(7)+d&7;(c===3||c===5)&&u===2?W=-s:W=s}N[1].push(W),2*G===h+1&&(G=1-G),2*d===W+1&&(d=1-d),X.iushrn(1),m.iushrn(1)}return N}a.getJSF=b;function Z(X,m,N){var G="_"+m;X.prototype[m]=function(){return this[G]!==void 0?this[G]:this[G]=N.call(this)}}a.cachedProperty=Z;function p(X){return typeof X=="string"?a.toArray(X,"hex"):X}a.parseBytes=p;function y(X){return new o(X,"hex","le")}a.intFromLE=y},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(t,i,l){arguments[4][181][0].apply(l,arguments)},{buffer:185,dup:181}],366:[function(t,i,l){i.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(t,i,l){function a(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(L){return typeof L}:a=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},a(g)}var o=Object.create||C,r=Object.keys||x,f=Function.prototype.bind||R;function v(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=o(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}i.exports=v,v.EventEmitter=v,v.prototype._events=void 0,v.prototype._maxListeners=void 0;var b=10,Z;try{var p={};Object.defineProperty&&Object.defineProperty(p,"x",{value:0}),Z=p.x===0}catch{Z=!1}Z?Object.defineProperty(v,"defaultMaxListeners",{enumerable:!0,get:function(){return b},set:function(S){if(typeof S!="number"||S<0||S!==S)throw new TypeError('"defaultMaxListeners" must be a positive number');b=S}}):v.defaultMaxListeners=b,v.prototype.setMaxListeners=function(S){if(typeof S!="number"||S<0||isNaN(S))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=S,this};function y(g){return g._maxListeners===void 0?v.defaultMaxListeners:g._maxListeners}v.prototype.getMaxListeners=function(){return y(this)};function X(g,S,L){if(S)g.call(L);else for(var V=g.length,Y=I(g,V),T=0;T1&&(L=arguments[1]),L instanceof Error)throw L;var H=new Error('Unhandled "error" event. ('+L+")");throw H.context=L,H}if(V=U[S],!V)return!1;var k=typeof V=="function";switch(Y=arguments.length,Y){case 1:X(V,k,this);break;case 2:m(V,k,this,arguments[1]);break;case 3:N(V,k,this,arguments[1],arguments[2]);break;case 4:G(V,k,this,arguments[1],arguments[2],arguments[3]);break;default:for(T=new Array(Y-1),J=1;J0&&J.length>Y)){J.warned=!0;var U=new Error("Possible EventEmitter memory leak detected. "+J.length+' "'+String(S)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');U.name="MaxListenersExceededWarning",U.emitter=g,U.type=S,U.count=J.length,(typeof console>"u"?"undefined":a(console))==="object"&&console.warn&&console.warn("%s: %s",U.name,U.message)}return g}v.prototype.addListener=function(S,L){return u(this,S,L,!1)},v.prototype.on=v.prototype.addListener,v.prototype.prependListener=function(S,L){return u(this,S,L,!0)};function s(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var g=new Array(arguments.length),S=0;S=0;J--)if(V[J]===L||V[J].listener===L){U=V[J].listener,T=J;break}if(T<0)return this;T===0?V.shift():M(V,T),V.length===1&&(Y[S]=V[0]),Y.removeListener&&this.emit("removeListener",S,U||L)}return this},v.prototype.removeAllListeners=function(S){var L,V,Y;if(V=this._events,!V)return this;if(!V.removeListener)return arguments.length===0?(this._events=o(null),this._eventsCount=0):V[S]&&(--this._eventsCount===0?this._events=o(null):delete V[S]),this;if(arguments.length===0){var T=r(V),J;for(Y=0;Y=0;Y--)this.removeListener(S,L[Y]);return this};function c(g,S,L){var V=g._events;if(!V)return[];var Y=V[S];return Y?typeof Y=="function"?L?[Y.listener||Y]:[Y]:L?w(Y):I(Y,Y.length):[]}v.prototype.listeners=function(S){return c(this,S,!0)},v.prototype.rawListeners=function(S){return c(this,S,!1)},v.listenerCount=function(g,S){return typeof g.listenerCount=="function"?g.listenerCount(S):W.call(g,S)},v.prototype.listenerCount=W;function W(g){var S=this._events;if(S){var L=S[g];if(typeof L=="function")return 1;if(L)return L.length}return 0}v.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function M(g,S){for(var L=S,V=L+1,Y=g.length;V0||Z>0;){var N=new o;N.update(m),N.update(f),v&&N.update(v),m=N.digest();var G=0;if(p>0){var d=y.length-p;G=Math.min(p,m.length),m.copy(y,d,0,G),p-=G}if(G0){var u=X.length-Z,s=Math.min(Z,m.length-G);m.copy(X,u,G,G+s),Z-=s}}return m.fill(0),{key:y,iv:X}}i.exports=r},{"md5.js":434,"safe-buffer":494}],369:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0});var a=t("@fast-csv/format");Object.defineProperty(l,"format",{enumerable:!0,get:function(){return a.format}}),Object.defineProperty(l,"write",{enumerable:!0,get:function(){return a.write}}),Object.defineProperty(l,"writeToStream",{enumerable:!0,get:function(){return a.writeToStream}}),Object.defineProperty(l,"writeToBuffer",{enumerable:!0,get:function(){return a.writeToBuffer}}),Object.defineProperty(l,"writeToString",{enumerable:!0,get:function(){return a.writeToString}}),Object.defineProperty(l,"writeToPath",{enumerable:!0,get:function(){return a.writeToPath}}),Object.defineProperty(l,"CsvFormatterStream",{enumerable:!0,get:function(){return a.CsvFormatterStream}}),Object.defineProperty(l,"FormatterOptions",{enumerable:!0,get:function(){return a.FormatterOptions}});var o=t("@fast-csv/parse");Object.defineProperty(l,"parse",{enumerable:!0,get:function(){return o.parse}}),Object.defineProperty(l,"parseString",{enumerable:!0,get:function(){return o.parseString}}),Object.defineProperty(l,"parseStream",{enumerable:!0,get:function(){return o.parseStream}}),Object.defineProperty(l,"parseFile",{enumerable:!0,get:function(){return o.parseFile}}),Object.defineProperty(l,"ParserOptions",{enumerable:!0,get:function(){return o.ParserOptions}}),Object.defineProperty(l,"CsvParserStream",{enumerable:!0,get:function(){return o.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(t,i,l){var a=t("safe-buffer").Buffer,o=t("readable-stream").Transform,r=t("inherits");function f(b,Z){if(!a.isBuffer(b)&&typeof b!="string")throw new TypeError(Z+" must be a string or a buffer")}function v(b){o.call(this),this._block=a.allocUnsafe(b),this._blockSize=b,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(v,o),v.prototype._transform=function(b,Z,p){var y=null;try{this.update(b,Z)}catch(X){y=X}p(y)},v.prototype._flush=function(b){var Z=null;try{this.push(this.digest())}catch(p){Z=p}b(Z)},v.prototype.update=function(b,Z){if(f(b,"Data"),this._finalized)throw new Error("Digest already called");a.isBuffer(b)||(b=a.from(b,Z));for(var p=this._block,y=0;this._blockOffset+b.length-y>=this._blockSize;){for(var X=this._blockOffset;X0;++m)this._length[m]+=N,N=this._length[m]/4294967296|0,N>0&&(this._length[m]-=4294967296*N);return this},v.prototype._update=function(){throw new Error("_update is not implemented")},v.prototype.digest=function(b){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var Z=this._digest();b!==void 0&&(Z=Z.toString(b)),this._block.fill(0),this._blockOffset=0;for(var p=0;p<4;++p)this._length[p]=0;return Z},v.prototype._digest=function(){throw new Error("_digest is not implemented")},i.exports=v},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(t,i,l){arguments[4][214][0].apply(l,arguments)},{buffer:216,dup:214}],372:[function(t,i,l){var a=l;a.utils=t("./hash/utils"),a.common=t("./hash/common"),a.sha=t("./hash/sha"),a.ripemd=t("./hash/ripemd"),a.hmac=t("./hash/hmac"),a.sha1=a.sha.sha1,a.sha256=a.sha.sha256,a.sha224=a.sha.sha224,a.sha384=a.sha.sha384,a.sha512=a.sha.sha512,a.ripemd160=a.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(t,i,l){var a=t("./utils"),o=t("minimalistic-assert");function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}l.BlockHash=r,r.prototype.update=function(v,b){if(v=a.toArray(v,b),this.pending?this.pending=this.pending.concat(v):this.pending=v,this.pendingTotal+=v.length,this.pending.length>=this._delta8){v=this.pending;var Z=v.length%this._delta8;this.pending=v.slice(v.length-Z,v.length),this.pending.length===0&&(this.pending=null),v=a.join32(v,0,v.length-Z,this.endian);for(var p=0;p>>24&255,p[y++]=v>>>16&255,p[y++]=v>>>8&255,p[y++]=v&255}else for(p[y++]=v&255,p[y++]=v>>>8&255,p[y++]=v>>>16&255,p[y++]=v>>>24&255,p[y++]=0,p[y++]=0,p[y++]=0,p[y++]=0,X=8;Xthis.blockSize&&(v=new this.Hash().update(v).digest()),o(v.length<=this.blockSize);for(var b=v.length;b>>3}l.g0_256=y;function X(m){return o(m,17)^o(m,19)^m>>>10}l.g1_256=X},{"../utils":383}],383:[function(t,i,l){var a=t("minimalistic-assert"),o=t("inherits");l.inherits=o;function r(V,Y){return(V.charCodeAt(Y)&64512)!==55296||Y<0||Y+1>=V.length?!1:(V.charCodeAt(Y+1)&64512)===56320}function f(V,Y){if(Array.isArray(V))return V.slice();if(!V)return[];var T=[];if(typeof V=="string")if(Y){if(Y==="hex")for(V=V.replace(/[^a-z0-9]+/ig,""),V.length%2!==0&&(V="0"+V),U=0;U>6|192,T[J++]=K&63|128):r(V,U)?(K=65536+((K&1023)<<10)+(V.charCodeAt(++U)&1023),T[J++]=K>>18|240,T[J++]=K>>12&63|128,T[J++]=K>>6&63|128,T[J++]=K&63|128):(T[J++]=K>>12|224,T[J++]=K>>6&63|128,T[J++]=K&63|128)}else for(U=0;U>>24|V>>>8&65280|V<<8&16711680|(V&255)<<24;return Y>>>0}l.htonl=b;function Z(V,Y){for(var T="",J=0;J>>0}return K}l.join32=X;function m(V,Y){for(var T=new Array(V.length*4),J=0,U=0;J>>24,T[U+1]=K>>>16&255,T[U+2]=K>>>8&255,T[U+3]=K&255):(T[U+3]=K>>>24,T[U+2]=K>>>16&255,T[U+1]=K>>>8&255,T[U]=K&255)}return T}l.split32=m;function N(V,Y){return V>>>Y|V<<32-Y}l.rotr32=N;function G(V,Y){return V<>>32-Y}l.rotl32=G;function d(V,Y){return V+Y>>>0}l.sum32=d;function u(V,Y,T){return V+Y+T>>>0}l.sum32_3=u;function s(V,Y,T,J){return V+Y+T+J>>>0}l.sum32_4=s;function h(V,Y,T,J,U){return V+Y+T+J+U>>>0}l.sum32_5=h;function c(V,Y,T,J){var U=V[Y],K=V[Y+1],H=J+K>>>0,k=(H>>0,V[Y+1]=H}l.sum64=c;function W(V,Y,T,J){var U=Y+J>>>0,K=(U>>0}l.sum64_hi=W;function M(V,Y,T,J){var U=Y+J;return U>>>0}l.sum64_lo=M;function I(V,Y,T,J,U,K,H,k){var F=0,O=Y;O=O+J>>>0,F+=O>>0,F+=O>>0,F+=O>>0}l.sum64_4_hi=I;function w(V,Y,T,J,U,K,H,k){var F=Y+J+K+k;return F>>>0}l.sum64_4_lo=w;function C(V,Y,T,J,U,K,H,k,F,O){var Q=0,oe=Y;oe=oe+J>>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0}l.sum64_5_hi=C;function x(V,Y,T,J,U,K,H,k,F,O){var Q=Y+J+K+k+O;return Q>>>0}l.sum64_5_lo=x;function R(V,Y,T){var J=Y<<32-T|V>>>T;return J>>>0}l.rotr64_hi=R;function g(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}l.rotr64_lo=g;function S(V,Y,T){return V>>>T}l.shr64_hi=S;function L(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}l.shr64_lo=L},{inherits:387,"minimalistic-assert":437}],384:[function(t,i,l){var a=t("hash.js"),o=t("minimalistic-crypto-utils"),r=t("minimalistic-assert");function f(v){if(!(this instanceof f))return new f(v);this.hash=v.hash,this.predResist=!!v.predResist,this.outLen=this.hash.outSize,this.minEntropy=v.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var b=o.toArray(v.entropy,v.entropyEnc||"hex"),Z=o.toArray(v.nonce,v.nonceEnc||"hex"),p=o.toArray(v.pers,v.persEnc||"hex");r(b.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(b,Z,p)}i.exports=f,f.prototype._init=function(b,Z,p){var y=b.concat(Z).concat(p);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var X=0;X=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(b.concat(p||[])),this._reseed=1},f.prototype.generate=function(b,Z,p,y){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof Z!="string"&&(y=p,p=Z,Z=null),p&&(p=o.toArray(p,y||"hex"),this._update(p));for(var X=[];X.length>1,m=-7,N=r?v-1:0,G=r?-1:1,d=a[o+N];for(N+=G,b=d&(1<<-m)-1,d>>=-m,m+=p;m>0;b=b*256+a[o+N],N+=G,m-=8);for(Z=b&(1<<-m)-1,b>>=-m,m+=f;m>0;Z=Z*256+a[o+N],N+=G,m-=8);if(b===0)b=1-X;else{if(b===y)return Z?NaN:(d?-1:1)*(1/0);Z=Z+Math.pow(2,f),b=b-X}return(d?-1:1)*Z*Math.pow(2,b-f)},l.write=function(a,o,r,f,v,b){var Z,p,y,X=b*8-v-1,m=(1<>1,G=v===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=f?0:b-1,u=f?1:-1,s=o<0||o===0&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(p=isNaN(o)?1:0,Z=m):(Z=Math.floor(Math.log(o)/Math.LN2),o*(y=Math.pow(2,-Z))<1&&(Z--,y*=2),Z+N>=1?o+=G/y:o+=G*Math.pow(2,1-N),o*y>=2&&(Z++,y/=2),Z+N>=m?(p=0,Z=m):Z+N>=1?(p=(o*y-1)*Math.pow(2,v),Z=Z+N):(p=o*Math.pow(2,N-1)*Math.pow(2,v),Z=0));v>=8;a[r+d]=p&255,d+=u,p/=256,v-=8);for(Z=Z<0;a[r+d]=Z&255,d+=u,Z/=256,X-=8);a[r+d-u]|=s*128}},{}],386:[function(t,i,l){(function(a){var o=a.MutationObserver||a.WebKitMutationObserver,r;if(o){var f=0,v=new o(X),b=a.document.createTextNode("");v.observe(b,{characterData:!0}),r=function(){b.data=f=++f%2}}else if(!a.setImmediate&&typeof a.MessageChannel<"u"){var Z=new a.MessageChannel;Z.port1.onmessage=X,r=function(){Z.port2.postMessage(0)}}else"document"in a&&"onreadystatechange"in a.document.createElement("script")?r=function(){var G=a.document.createElement("script");G.onreadystatechange=function(){X(),G.onreadystatechange=null,G.parentNode.removeChild(G),G=null},a.document.documentElement.appendChild(G)}:r=function(){setTimeout(X,0)};var p,y=[];function X(){p=!0;for(var N,G,d=y.length;d;){for(G=y,y=[],N=-1;++Nthis.headersLength){if(!G.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length));return{row:N,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(N.length)}}return G.strictColumnHandling&&N.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(s)))}this.headers=N,this.receivedHeaders=!0,this.headersLength=((G=this.headers)===null||G===void 0?void 0:G.length)||0}}]),X}();a.HeaderTransformer=y},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(t,i,a){function l(p,y){if(!(p instanceof y))throw new TypeError("Cannot call a class as a function")}function o(p,y){for(var X=0;X>6],d=(N&32)===0;if((N&31)===31){var u=N;for(N=0;(u&128)===128;){if(u=X.readUInt8(m),X.isError(u))return u;N<<=7,N|=u&127}}else N&=31;var s=v.tag[N];return{cls:G,primitive:d,tag:N,tagStr:s}}function y(X,m,N){var G=X.readUInt8(N);if(X.isError(G))return G;if(!m&&G===128)return null;if(!(G&128))return G;var d=G&127;if(d>4)return X.error("length octect is too long");G=0;for(var u=0;u=256;h>>=8)s++;var c=o.alloc(1+1+s);c[0]=d,c[1]=128|s;for(var W=1+s,M=G.length;M>0;W--,M>>=8)c[W]=M&255;return this._createEncoderBuffer([c,G])},b.prototype._encodeStr=function(X,m){if(m==="bitstr")return this._createEncoderBuffer([X.unused|0,X.data]);if(m==="bmpstr"){for(var N=o.alloc(X.length*2),G=0;G=40)return this.reporter.error("Second objid identifier OOB");X.splice(0,2,X[0]*40+X[1])}for(var u=0,s=0;s=128;h>>=7)u++}for(var c=o.alloc(u),W=c.length-1,M=X.length-1;M>=0;M--){var I=X[M];for(c[W--]=I&127;(I>>=7)>0;)c[W--]=128|I&127}return this._createEncoderBuffer(c)};function Z(y){return y<10?"0"+y:y}b.prototype._encodeTime=function(X,m){var N,G=new Date(X);return m==="gentime"?N=[Z(G.getUTCFullYear()),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):m==="utctime"?N=[Z(G.getUTCFullYear()%100),Z(G.getUTCMonth()+1),Z(G.getUTCDate()),Z(G.getUTCHours()),Z(G.getUTCMinutes()),Z(G.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+m+" time is not supported yet"),this._encodeStr(N,"octstr")},b.prototype._encodeNull=function(){return this._createEncoderBuffer("")},b.prototype._encodeInt=function(X,m){if(typeof X=="string"){if(!m)return this.reporter.error("String int or enum given, but no values map");if(!m.hasOwnProperty(X))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(X));X=m[X]}if(typeof X!="number"&&!o.isBuffer(X)){var N=X.toArray();!X.sign&&N[0]&128&&N.unshift(0),X=o.from(N)}if(o.isBuffer(X)){var G=X.length;X.length===0&&G++;var d=o.alloc(G);return X.copy(d),X.length===0&&(d[0]=0),this._createEncoderBuffer(d)}if(X<128)return this._createEncoderBuffer(X);if(X<256)return this._createEncoderBuffer([0,X]);for(var u=1,s=X;s>=256;s>>=8)u++;for(var h=new Array(u),c=h.length-1;c>=0;c--)h[c]=X&255,X>>=8;return h[0]&128&&h.unshift(0),this._createEncoderBuffer(o.from(h))},b.prototype._encodeBool=function(X){return this._createEncoderBuffer(X?255:0)},b.prototype._use=function(X,m){return typeof X=="function"&&(X=X(m)),X._getEncoder("der").tree},b.prototype._skipDefault=function(X,m,N){var G=this._baseState,d;if(G.default===null)return!1;var u=X.join();if(G.defaultBuffer===void 0&&(G.defaultBuffer=this._encodeValue(G.default,m,N).join()),u.length!==G.defaultBuffer.length)return!1;for(d=0;d=31?N.error("Multi-octet tag encoding unsupported"):(X||(G|=32),G|=f.tagClassByName[m||"universal"]<<6,G)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(t,i,a){var l=a;l.der=t("./der"),l.pem=t("./pem")},{"./der":178,"./pem":180}],180:[function(t,i,a){var l=t("inherits"),o=t("./der");function r(f){o.call(this,f),this.enc="pem"}l(r,o),i.exports=r,r.prototype.encode=function(v,b){for(var Z=o.prototype.encode.call(this,v),p=Z.toString("base64"),y=["-----BEGIN "+b.label+"-----"],X=0;X0?L:V},b.min=function(L,V){return L.cmp(V)<0?L:V},b.prototype._init=function(L,V,Y){if(typeof L=="number")return this._initNumber(L,V,Y);if(l(L)==="object")return this._initArray(L,V,Y);V==="hex"&&(V=16),f(V===(V|0)&&V>=2&&V<=36),L=L.toString().replace(/\s+/g,"");var T=0;L[0]==="-"&&T++,V===16?this._parseHex(L,T):this._parseBase(L,V,T),L[0]==="-"&&(this.negative=1),this.strip(),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initNumber=function(L,V,Y){L<0&&(this.negative=1,L=-L),L<67108864?(this.words=[L&67108863],this.length=1):L<4503599627370496?(this.words=[L&67108863,L/67108864&67108863],this.length=2):(f(L<9007199254740992),this.words=[L&67108863,L/67108864&67108863,1],this.length=3),Y==="le"&&this._initArray(this.toArray(),V,Y)},b.prototype._initArray=function(L,V,Y){if(f(typeof L.length=="number"),L.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(L.length/3),this.words=new Array(this.length);for(var T=0;T=0;T-=3)U=L[T]|L[T-1]<<8|L[T-2]<<16,this.words[J]|=U<>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);else if(Y==="le")for(T=0,J=0;T>>26-K&67108863,K+=24,K>=26&&(K-=26,J++);return this.strip()};function p(S,L,V){for(var Y=0,T=Math.min(S.length,V),J=L;J=49&&U<=54?Y|=U-49+10:U>=17&&U<=22?Y|=U-17+10:Y|=U&15}return Y}b.prototype._parseHex=function(L,V){this.length=Math.ceil((L.length-V)/6),this.words=new Array(this.length);for(var Y=0;Y=V;Y-=6)J=p(L,Y,Y+6),this.words[T]|=J<>>26-U&4194303,U+=24,U>=26&&(U-=26,T++);Y+6!==V&&(J=p(L,V,Y+6),this.words[T]|=J<>>26-U&4194303),this.strip()};function y(S,L,V,Y){for(var T=0,J=Math.min(S.length,V),U=L;U=49?T+=K-49+10:K>=17?T+=K-17+10:T+=K}return T}b.prototype._parseBase=function(L,V,Y){this.words=[0],this.length=1;for(var T=0,J=1;J<=67108863;J*=V)T++;T--,J=J/V|0;for(var U=L.length-Y,K=U%T,H=Math.min(U,U-K)+Y,k=0,F=Y;F1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},b.prototype.inspect=function(){return(this.red?""};var X=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],m=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],N=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(L,V){L=L||10,V=V|0||1;var Y;if(L===16||L==="hex"){Y="";for(var T=0,J=0,U=0;U>>24-T&16777215,J!==0||U!==this.length-1?Y=X[6-H.length]+H+Y:Y=H+Y,T+=2,T>=26&&(T-=26,U--)}for(J!==0&&(Y=J.toString(16)+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}if(L===(L|0)&&L>=2&&L<=36){var k=m[L],F=N[L];Y="";var O=this.clone();for(O.negative=0;!O.isZero();){var Q=O.modn(F).toString(L);O=O.idivn(F),O.isZero()?Y=Q+Y:Y=X[k-Q.length]+Q+Y}for(this.isZero()&&(Y="0"+Y);Y.length%V!==0;)Y="0"+Y;return this.negative!==0&&(Y="-"+Y),Y}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var L=this.words[0];return this.length===2?L+=this.words[1]*67108864:this.length===3&&this.words[2]===1?L+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-L:L},b.prototype.toJSON=function(){return this.toString(16)},b.prototype.toBuffer=function(L,V){return f(typeof Z<"u"),this.toArrayLike(Z,L,V)},b.prototype.toArray=function(L,V){return this.toArrayLike(Array,L,V)},b.prototype.toArrayLike=function(L,V,Y){var T=this.byteLength(),J=Y||Math.max(1,T);f(T<=J,"byte array longer than desired length"),f(J>0,"Requested array length <= 0"),this.strip();var U=V==="le",K=new L(J),H,k,F=this.clone();if(U){for(k=0;!F.isZero();k++)H=F.andln(255),F.iushrn(8),K[k]=H;for(;k=4096&&(Y+=13,V>>>=13),V>=64&&(Y+=7,V>>>=7),V>=8&&(Y+=4,V>>>=4),V>=2&&(Y+=2,V>>>=2),Y+V},b.prototype._zeroBits=function(L){if(L===0)return 26;var V=L,Y=0;return V&8191||(Y+=13,V>>>=13),V&127||(Y+=7,V>>>=7),V&15||(Y+=4,V>>>=4),V&3||(Y+=2,V>>>=2),V&1||Y++,Y},b.prototype.bitLength=function(){var L=this.words[this.length-1],V=this._countBits(L);return(this.length-1)*26+V};function G(S){for(var L=new Array(S.bitLength()),V=0;V>>T}return L}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var L=0,V=0;VL.length?this.clone().ior(L):L.clone().ior(this)},b.prototype.uor=function(L){return this.length>L.length?this.clone().iuor(L):L.clone().iuor(this)},b.prototype.iuand=function(L){var V;this.length>L.length?V=L:V=this;for(var Y=0;YL.length?this.clone().iand(L):L.clone().iand(this)},b.prototype.uand=function(L){return this.length>L.length?this.clone().iuand(L):L.clone().iuand(this)},b.prototype.iuxor=function(L){var V,Y;this.length>L.length?(V=this,Y=L):(V=L,Y=this);for(var T=0;TL.length?this.clone().ixor(L):L.clone().ixor(this)},b.prototype.uxor=function(L){return this.length>L.length?this.clone().iuxor(L):L.clone().iuxor(this)},b.prototype.inotn=function(L){f(typeof L=="number"&&L>=0);var V=Math.ceil(L/26)|0,Y=L%26;this._expand(V),Y>0&&V--;for(var T=0;T0&&(this.words[T]=~this.words[T]&67108863>>26-Y),this.strip()},b.prototype.notn=function(L){return this.clone().inotn(L)},b.prototype.setn=function(L,V){f(typeof L=="number"&&L>=0);var Y=L/26|0,T=L%26;return this._expand(Y+1),V?this.words[Y]=this.words[Y]|1<L.length?(Y=this,T=L):(Y=L,T=this);for(var J=0,U=0;U>>26;for(;J!==0&&U>>26;if(this.length=Y.length,J!==0)this.words[this.length]=J,this.length++;else if(Y!==this)for(;UL.length?this.clone().iadd(L):L.clone().iadd(this)},b.prototype.isub=function(L){if(L.negative!==0){L.negative=0;var V=this.iadd(L);return L.negative=1,V._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(L),this.negative=1,this._normSign();var Y=this.cmp(L);if(Y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var T,J;Y>0?(T=this,J=L):(T=L,J=this);for(var U=0,K=0;K>26,this.words[K]=V&67108863;for(;U!==0&&K>26,this.words[K]=V&67108863;if(U===0&&K>>26,O=H&67108863,Q=Math.min(k,L.length-1),oe=Math.max(0,k-S.length+1);oe<=Q;oe++){var se=k-oe|0;T=S.words[se]|0,J=L.words[oe]|0,U=T*J+O,F+=U/67108864|0,O=U&67108863}V.words[k]=O|0,H=F|0}return H!==0?V.words[k]=H|0:V.length--,V.strip()}var u=function(L,V,Y){var T=L.words,J=V.words,U=Y.words,K=0,H,k,F,O=T[0]|0,Q=O&8191,oe=O>>>13,se=T[1]|0,he=se&8191,pe=se>>>13,re=T[2]|0,_=re&8191,E=re>>>13,$=T[3]|0,ae=$&8191,le=$>>>13,ee=T[4]|0,te=ee&8191,be=ee>>>13,ne=T[5]|0,B=ne&8191,q=ne>>>13,ue=T[6]|0,ve=ue&8191,Ge=ue>>>13,Je=T[7]|0,xe=Je&8191,ke=Je>>>13,Pe=T[8]|0,Be=Pe&8191,Te=Pe>>>13,we=T[9]|0,Se=we&8191,De=we>>>13,me=J[0]|0,Ve=me&8191,Me=me>>>13,Ie=J[1]|0,Ze=Ie&8191,Ce=Ie>>>13,ye=J[2]|0,Ue=ye&8191,qe=ye>>>13,ie=J[3]|0,Oe=ie&8191,Ke=ie>>>13,Xe=J[4]|0,Re=Xe&8191,Ae=Xe>>>13,ct=J[5]|0,lt=ct&8191,ot=ct>>>13,wt=J[6]|0,Mt=wt&8191,xt=wt>>>13,Gt=J[7]|0,Zt=Gt&8191,Tt=Gt>>>13,Ct=J[8]|0,St=Ct&8191,Pt=Ct>>>13,Ut=J[9]|0,kt=Ut&8191,en=Ut>>>13;Y.negative=L.negative^V.negative,Y.length=19,H=Math.imul(Q,Ve),k=Math.imul(Q,Me),k=k+Math.imul(oe,Ve)|0,F=Math.imul(oe,Me);var nn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nn>>>26)|0,nn&=67108863,H=Math.imul(he,Ve),k=Math.imul(he,Me),k=k+Math.imul(pe,Ve)|0,F=Math.imul(pe,Me),H=H+Math.imul(Q,Ze)|0,k=k+Math.imul(Q,Ce)|0,k=k+Math.imul(oe,Ze)|0,F=F+Math.imul(oe,Ce)|0;var Ft=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ft>>>26)|0,Ft&=67108863,H=Math.imul(_,Ve),k=Math.imul(_,Me),k=k+Math.imul(E,Ve)|0,F=Math.imul(E,Me),H=H+Math.imul(he,Ze)|0,k=k+Math.imul(he,Ce)|0,k=k+Math.imul(pe,Ze)|0,F=F+Math.imul(pe,Ce)|0,H=H+Math.imul(Q,Ue)|0,k=k+Math.imul(Q,qe)|0,k=k+Math.imul(oe,Ue)|0,F=F+Math.imul(oe,qe)|0;var Ln=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,H=Math.imul(ae,Ve),k=Math.imul(ae,Me),k=k+Math.imul(le,Ve)|0,F=Math.imul(le,Me),H=H+Math.imul(_,Ze)|0,k=k+Math.imul(_,Ce)|0,k=k+Math.imul(E,Ze)|0,F=F+Math.imul(E,Ce)|0,H=H+Math.imul(he,Ue)|0,k=k+Math.imul(he,qe)|0,k=k+Math.imul(pe,Ue)|0,F=F+Math.imul(pe,qe)|0,H=H+Math.imul(Q,Oe)|0,k=k+Math.imul(Q,Ke)|0,k=k+Math.imul(oe,Oe)|0,F=F+Math.imul(oe,Ke)|0;var An=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(An>>>26)|0,An&=67108863,H=Math.imul(te,Ve),k=Math.imul(te,Me),k=k+Math.imul(be,Ve)|0,F=Math.imul(be,Me),H=H+Math.imul(ae,Ze)|0,k=k+Math.imul(ae,Ce)|0,k=k+Math.imul(le,Ze)|0,F=F+Math.imul(le,Ce)|0,H=H+Math.imul(_,Ue)|0,k=k+Math.imul(_,qe)|0,k=k+Math.imul(E,Ue)|0,F=F+Math.imul(E,qe)|0,H=H+Math.imul(he,Oe)|0,k=k+Math.imul(he,Ke)|0,k=k+Math.imul(pe,Oe)|0,F=F+Math.imul(pe,Ke)|0,H=H+Math.imul(Q,Re)|0,k=k+Math.imul(Q,Ae)|0,k=k+Math.imul(oe,Re)|0,F=F+Math.imul(oe,Ae)|0;var Gi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,H=Math.imul(B,Ve),k=Math.imul(B,Me),k=k+Math.imul(q,Ve)|0,F=Math.imul(q,Me),H=H+Math.imul(te,Ze)|0,k=k+Math.imul(te,Ce)|0,k=k+Math.imul(be,Ze)|0,F=F+Math.imul(be,Ce)|0,H=H+Math.imul(ae,Ue)|0,k=k+Math.imul(ae,qe)|0,k=k+Math.imul(le,Ue)|0,F=F+Math.imul(le,qe)|0,H=H+Math.imul(_,Oe)|0,k=k+Math.imul(_,Ke)|0,k=k+Math.imul(E,Oe)|0,F=F+Math.imul(E,Ke)|0,H=H+Math.imul(he,Re)|0,k=k+Math.imul(he,Ae)|0,k=k+Math.imul(pe,Re)|0,F=F+Math.imul(pe,Ae)|0,H=H+Math.imul(Q,lt)|0,k=k+Math.imul(Q,ot)|0,k=k+Math.imul(oe,lt)|0,F=F+Math.imul(oe,ot)|0;var Pi=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,H=Math.imul(ve,Ve),k=Math.imul(ve,Me),k=k+Math.imul(Ge,Ve)|0,F=Math.imul(Ge,Me),H=H+Math.imul(B,Ze)|0,k=k+Math.imul(B,Ce)|0,k=k+Math.imul(q,Ze)|0,F=F+Math.imul(q,Ce)|0,H=H+Math.imul(te,Ue)|0,k=k+Math.imul(te,qe)|0,k=k+Math.imul(be,Ue)|0,F=F+Math.imul(be,qe)|0,H=H+Math.imul(ae,Oe)|0,k=k+Math.imul(ae,Ke)|0,k=k+Math.imul(le,Oe)|0,F=F+Math.imul(le,Ke)|0,H=H+Math.imul(_,Re)|0,k=k+Math.imul(_,Ae)|0,k=k+Math.imul(E,Re)|0,F=F+Math.imul(E,Ae)|0,H=H+Math.imul(he,lt)|0,k=k+Math.imul(he,ot)|0,k=k+Math.imul(pe,lt)|0,F=F+Math.imul(pe,ot)|0,H=H+Math.imul(Q,Mt)|0,k=k+Math.imul(Q,xt)|0,k=k+Math.imul(oe,Mt)|0,F=F+Math.imul(oe,xt)|0;var Gl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,H=Math.imul(xe,Ve),k=Math.imul(xe,Me),k=k+Math.imul(ke,Ve)|0,F=Math.imul(ke,Me),H=H+Math.imul(ve,Ze)|0,k=k+Math.imul(ve,Ce)|0,k=k+Math.imul(Ge,Ze)|0,F=F+Math.imul(Ge,Ce)|0,H=H+Math.imul(B,Ue)|0,k=k+Math.imul(B,qe)|0,k=k+Math.imul(q,Ue)|0,F=F+Math.imul(q,qe)|0,H=H+Math.imul(te,Oe)|0,k=k+Math.imul(te,Ke)|0,k=k+Math.imul(be,Oe)|0,F=F+Math.imul(be,Ke)|0,H=H+Math.imul(ae,Re)|0,k=k+Math.imul(ae,Ae)|0,k=k+Math.imul(le,Re)|0,F=F+Math.imul(le,Ae)|0,H=H+Math.imul(_,lt)|0,k=k+Math.imul(_,ot)|0,k=k+Math.imul(E,lt)|0,F=F+Math.imul(E,ot)|0,H=H+Math.imul(he,Mt)|0,k=k+Math.imul(he,xt)|0,k=k+Math.imul(pe,Mt)|0,F=F+Math.imul(pe,xt)|0,H=H+Math.imul(Q,Zt)|0,k=k+Math.imul(Q,Tt)|0,k=k+Math.imul(oe,Zt)|0,F=F+Math.imul(oe,Tt)|0;var Fn=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,H=Math.imul(Be,Ve),k=Math.imul(Be,Me),k=k+Math.imul(Te,Ve)|0,F=Math.imul(Te,Me),H=H+Math.imul(xe,Ze)|0,k=k+Math.imul(xe,Ce)|0,k=k+Math.imul(ke,Ze)|0,F=F+Math.imul(ke,Ce)|0,H=H+Math.imul(ve,Ue)|0,k=k+Math.imul(ve,qe)|0,k=k+Math.imul(Ge,Ue)|0,F=F+Math.imul(Ge,qe)|0,H=H+Math.imul(B,Oe)|0,k=k+Math.imul(B,Ke)|0,k=k+Math.imul(q,Oe)|0,F=F+Math.imul(q,Ke)|0,H=H+Math.imul(te,Re)|0,k=k+Math.imul(te,Ae)|0,k=k+Math.imul(be,Re)|0,F=F+Math.imul(be,Ae)|0,H=H+Math.imul(ae,lt)|0,k=k+Math.imul(ae,ot)|0,k=k+Math.imul(le,lt)|0,F=F+Math.imul(le,ot)|0,H=H+Math.imul(_,Mt)|0,k=k+Math.imul(_,xt)|0,k=k+Math.imul(E,Mt)|0,F=F+Math.imul(E,xt)|0,H=H+Math.imul(he,Zt)|0,k=k+Math.imul(he,Tt)|0,k=k+Math.imul(pe,Zt)|0,F=F+Math.imul(pe,Tt)|0,H=H+Math.imul(Q,St)|0,k=k+Math.imul(Q,Pt)|0,k=k+Math.imul(oe,St)|0,F=F+Math.imul(oe,Pt)|0;var cl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(cl>>>26)|0,cl&=67108863,H=Math.imul(Se,Ve),k=Math.imul(Se,Me),k=k+Math.imul(De,Ve)|0,F=Math.imul(De,Me),H=H+Math.imul(Be,Ze)|0,k=k+Math.imul(Be,Ce)|0,k=k+Math.imul(Te,Ze)|0,F=F+Math.imul(Te,Ce)|0,H=H+Math.imul(xe,Ue)|0,k=k+Math.imul(xe,qe)|0,k=k+Math.imul(ke,Ue)|0,F=F+Math.imul(ke,qe)|0,H=H+Math.imul(ve,Oe)|0,k=k+Math.imul(ve,Ke)|0,k=k+Math.imul(Ge,Oe)|0,F=F+Math.imul(Ge,Ke)|0,H=H+Math.imul(B,Re)|0,k=k+Math.imul(B,Ae)|0,k=k+Math.imul(q,Re)|0,F=F+Math.imul(q,Ae)|0,H=H+Math.imul(te,lt)|0,k=k+Math.imul(te,ot)|0,k=k+Math.imul(be,lt)|0,F=F+Math.imul(be,ot)|0,H=H+Math.imul(ae,Mt)|0,k=k+Math.imul(ae,xt)|0,k=k+Math.imul(le,Mt)|0,F=F+Math.imul(le,xt)|0,H=H+Math.imul(_,Zt)|0,k=k+Math.imul(_,Tt)|0,k=k+Math.imul(E,Zt)|0,F=F+Math.imul(E,Tt)|0,H=H+Math.imul(he,St)|0,k=k+Math.imul(he,Pt)|0,k=k+Math.imul(pe,St)|0,F=F+Math.imul(pe,Pt)|0,H=H+Math.imul(Q,kt)|0,k=k+Math.imul(Q,en)|0,k=k+Math.imul(oe,kt)|0,F=F+Math.imul(oe,en)|0;var ki=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ki>>>26)|0,ki&=67108863,H=Math.imul(Se,Ze),k=Math.imul(Se,Ce),k=k+Math.imul(De,Ze)|0,F=Math.imul(De,Ce),H=H+Math.imul(Be,Ue)|0,k=k+Math.imul(Be,qe)|0,k=k+Math.imul(Te,Ue)|0,F=F+Math.imul(Te,qe)|0,H=H+Math.imul(xe,Oe)|0,k=k+Math.imul(xe,Ke)|0,k=k+Math.imul(ke,Oe)|0,F=F+Math.imul(ke,Ke)|0,H=H+Math.imul(ve,Re)|0,k=k+Math.imul(ve,Ae)|0,k=k+Math.imul(Ge,Re)|0,F=F+Math.imul(Ge,Ae)|0,H=H+Math.imul(B,lt)|0,k=k+Math.imul(B,ot)|0,k=k+Math.imul(q,lt)|0,F=F+Math.imul(q,ot)|0,H=H+Math.imul(te,Mt)|0,k=k+Math.imul(te,xt)|0,k=k+Math.imul(be,Mt)|0,F=F+Math.imul(be,xt)|0,H=H+Math.imul(ae,Zt)|0,k=k+Math.imul(ae,Tt)|0,k=k+Math.imul(le,Zt)|0,F=F+Math.imul(le,Tt)|0,H=H+Math.imul(_,St)|0,k=k+Math.imul(_,Pt)|0,k=k+Math.imul(E,St)|0,F=F+Math.imul(E,Pt)|0,H=H+Math.imul(he,kt)|0,k=k+Math.imul(he,en)|0,k=k+Math.imul(pe,kt)|0,F=F+Math.imul(pe,en)|0;var tl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tl>>>26)|0,tl&=67108863,H=Math.imul(Se,Ue),k=Math.imul(Se,qe),k=k+Math.imul(De,Ue)|0,F=Math.imul(De,qe),H=H+Math.imul(Be,Oe)|0,k=k+Math.imul(Be,Ke)|0,k=k+Math.imul(Te,Oe)|0,F=F+Math.imul(Te,Ke)|0,H=H+Math.imul(xe,Re)|0,k=k+Math.imul(xe,Ae)|0,k=k+Math.imul(ke,Re)|0,F=F+Math.imul(ke,Ae)|0,H=H+Math.imul(ve,lt)|0,k=k+Math.imul(ve,ot)|0,k=k+Math.imul(Ge,lt)|0,F=F+Math.imul(Ge,ot)|0,H=H+Math.imul(B,Mt)|0,k=k+Math.imul(B,xt)|0,k=k+Math.imul(q,Mt)|0,F=F+Math.imul(q,xt)|0,H=H+Math.imul(te,Zt)|0,k=k+Math.imul(te,Tt)|0,k=k+Math.imul(be,Zt)|0,F=F+Math.imul(be,Tt)|0,H=H+Math.imul(ae,St)|0,k=k+Math.imul(ae,Pt)|0,k=k+Math.imul(le,St)|0,F=F+Math.imul(le,Pt)|0,H=H+Math.imul(_,kt)|0,k=k+Math.imul(_,en)|0,k=k+Math.imul(E,kt)|0,F=F+Math.imul(E,en)|0;var nl=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nl>>>26)|0,nl&=67108863,H=Math.imul(Se,Oe),k=Math.imul(Se,Ke),k=k+Math.imul(De,Oe)|0,F=Math.imul(De,Ke),H=H+Math.imul(Be,Re)|0,k=k+Math.imul(Be,Ae)|0,k=k+Math.imul(Te,Re)|0,F=F+Math.imul(Te,Ae)|0,H=H+Math.imul(xe,lt)|0,k=k+Math.imul(xe,ot)|0,k=k+Math.imul(ke,lt)|0,F=F+Math.imul(ke,ot)|0,H=H+Math.imul(ve,Mt)|0,k=k+Math.imul(ve,xt)|0,k=k+Math.imul(Ge,Mt)|0,F=F+Math.imul(Ge,xt)|0,H=H+Math.imul(B,Zt)|0,k=k+Math.imul(B,Tt)|0,k=k+Math.imul(q,Zt)|0,F=F+Math.imul(q,Tt)|0,H=H+Math.imul(te,St)|0,k=k+Math.imul(te,Pt)|0,k=k+Math.imul(be,St)|0,F=F+Math.imul(be,Pt)|0,H=H+Math.imul(ae,kt)|0,k=k+Math.imul(ae,en)|0,k=k+Math.imul(le,kt)|0,F=F+Math.imul(le,en)|0;var Dt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,H=Math.imul(Se,Re),k=Math.imul(Se,Ae),k=k+Math.imul(De,Re)|0,F=Math.imul(De,Ae),H=H+Math.imul(Be,lt)|0,k=k+Math.imul(Be,ot)|0,k=k+Math.imul(Te,lt)|0,F=F+Math.imul(Te,ot)|0,H=H+Math.imul(xe,Mt)|0,k=k+Math.imul(xe,xt)|0,k=k+Math.imul(ke,Mt)|0,F=F+Math.imul(ke,xt)|0,H=H+Math.imul(ve,Zt)|0,k=k+Math.imul(ve,Tt)|0,k=k+Math.imul(Ge,Zt)|0,F=F+Math.imul(Ge,Tt)|0,H=H+Math.imul(B,St)|0,k=k+Math.imul(B,Pt)|0,k=k+Math.imul(q,St)|0,F=F+Math.imul(q,Pt)|0,H=H+Math.imul(te,kt)|0,k=k+Math.imul(te,en)|0,k=k+Math.imul(be,kt)|0,F=F+Math.imul(be,en)|0;var ht=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(ht>>>26)|0,ht&=67108863,H=Math.imul(Se,lt),k=Math.imul(Se,ot),k=k+Math.imul(De,lt)|0,F=Math.imul(De,ot),H=H+Math.imul(Be,Mt)|0,k=k+Math.imul(Be,xt)|0,k=k+Math.imul(Te,Mt)|0,F=F+Math.imul(Te,xt)|0,H=H+Math.imul(xe,Zt)|0,k=k+Math.imul(xe,Tt)|0,k=k+Math.imul(ke,Zt)|0,F=F+Math.imul(ke,Tt)|0,H=H+Math.imul(ve,St)|0,k=k+Math.imul(ve,Pt)|0,k=k+Math.imul(Ge,St)|0,F=F+Math.imul(Ge,Pt)|0,H=H+Math.imul(B,kt)|0,k=k+Math.imul(B,en)|0,k=k+Math.imul(q,kt)|0,F=F+Math.imul(q,en)|0;var Fe=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,H=Math.imul(Se,Mt),k=Math.imul(Se,xt),k=k+Math.imul(De,Mt)|0,F=Math.imul(De,xt),H=H+Math.imul(Be,Zt)|0,k=k+Math.imul(Be,Tt)|0,k=k+Math.imul(Te,Zt)|0,F=F+Math.imul(Te,Tt)|0,H=H+Math.imul(xe,St)|0,k=k+Math.imul(xe,Pt)|0,k=k+Math.imul(ke,St)|0,F=F+Math.imul(ke,Pt)|0,H=H+Math.imul(ve,kt)|0,k=k+Math.imul(ve,en)|0,k=k+Math.imul(Ge,kt)|0,F=F+Math.imul(Ge,en)|0;var tt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(tt>>>26)|0,tt&=67108863,H=Math.imul(Se,Zt),k=Math.imul(Se,Tt),k=k+Math.imul(De,Zt)|0,F=Math.imul(De,Tt),H=H+Math.imul(Be,St)|0,k=k+Math.imul(Be,Pt)|0,k=k+Math.imul(Te,St)|0,F=F+Math.imul(Te,Pt)|0,H=H+Math.imul(xe,kt)|0,k=k+Math.imul(xe,en)|0,k=k+Math.imul(ke,kt)|0,F=F+Math.imul(ke,en)|0;var nt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(nt>>>26)|0,nt&=67108863,H=Math.imul(Se,St),k=Math.imul(Se,Pt),k=k+Math.imul(De,St)|0,F=Math.imul(De,Pt),H=H+Math.imul(Be,kt)|0,k=k+Math.imul(Be,en)|0,k=k+Math.imul(Te,kt)|0,F=F+Math.imul(Te,en)|0;var Vt=(K+H|0)+((k&8191)<<13)|0;K=(F+(k>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,H=Math.imul(Se,kt),k=Math.imul(Se,en),k=k+Math.imul(De,kt)|0,F=Math.imul(De,en);var Bt=(K+H|0)+((k&8191)<<13)|0;return K=(F+(k>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,U[0]=nn,U[1]=Ft,U[2]=Ln,U[3]=An,U[4]=Gi,U[5]=Pi,U[6]=Gl,U[7]=Fn,U[8]=cl,U[9]=ki,U[10]=tl,U[11]=nl,U[12]=Dt,U[13]=ht,U[14]=Fe,U[15]=tt,U[16]=nt,U[17]=Vt,U[18]=Bt,K!==0&&(U[19]=K,Y.length++),Y};Math.imul||(u=d);function s(S,L,V){V.negative=L.negative^S.negative,V.length=S.length+L.length;for(var Y=0,T=0,J=0;J>>26)|0,T+=U>>>26,U&=67108863}V.words[J]=K,Y=U,U=T}return Y!==0?V.words[J]=Y:V.length--,V.strip()}function h(S,L,V){var Y=new c;return Y.mulp(S,L,V)}b.prototype.mulTo=function(L,V){var Y,T=this.length+L.length;return this.length===10&&L.length===10?Y=u(this,L,V):T<63?Y=d(this,L,V):T<1024?Y=s(this,L,V):Y=h(this,L,V),Y};function c(S,L){this.x=S,this.y=L}c.prototype.makeRBT=function(L){for(var V=new Array(L),Y=b.prototype._countBits(L)-1,T=0;T>=1;return T},c.prototype.permute=function(L,V,Y,T,J,U){for(var K=0;K>>1)J++;return 1<>>13,Y[2*U+1]=J&8191,J=J>>>13;for(U=2*V;U>=26,V+=T/67108864|0,V+=J>>>26,this.words[Y]=J&67108863}return V!==0&&(this.words[Y]=V,this.length++),this},b.prototype.muln=function(L){return this.clone().imuln(L)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(L){var V=G(L);if(V.length===0)return new b(1);for(var Y=this,T=0;T=0);var V=L%26,Y=(L-V)/26,T=67108863>>>26-V<<26-V,J;if(V!==0){var U=0;for(J=0;J>>26-V}U&&(this.words[J]=U,this.length++)}if(Y!==0){for(J=this.length-1;J>=0;J--)this.words[J+Y]=this.words[J];for(J=0;J=0);var T;V?T=(V-V%26)/26:T=0;var J=L%26,U=Math.min((L-J)/26,this.length),K=67108863^67108863>>>J<U)for(this.length-=U,k=0;k=0&&(F!==0||k>=T);k--){var O=this.words[k]|0;this.words[k]=F<<26-J|O>>>J,F=O&K}return H&&F!==0&&(H.words[H.length++]=F),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},b.prototype.ishrn=function(L,V,Y){return f(this.negative===0),this.iushrn(L,V,Y)},b.prototype.shln=function(L){return this.clone().ishln(L)},b.prototype.ushln=function(L){return this.clone().iushln(L)},b.prototype.shrn=function(L){return this.clone().ishrn(L)},b.prototype.ushrn=function(L){return this.clone().iushrn(L)},b.prototype.testn=function(L){f(typeof L=="number"&&L>=0);var V=L%26,Y=(L-V)/26,T=1<=0);var V=L%26,Y=(L-V)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=Y)return this;if(V!==0&&Y++,this.length=Math.min(Y,this.length),V!==0){var T=67108863^67108863>>>V<=67108864;V++)this.words[V]-=67108864,V===this.length-1?this.words[V+1]=1:this.words[V+1]++;return this.length=Math.max(this.length,V+1),this},b.prototype.isubn=function(L){if(f(typeof L=="number"),f(L<67108864),L<0)return this.iaddn(-L);if(this.negative!==0)return this.negative=0,this.iaddn(L),this.negative=1,this;if(this.words[0]-=L,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var V=0;V>26)-(H/67108864|0),this.words[J+Y]=U&67108863}for(;J>26,this.words[J+Y]=U&67108863;if(K===0)return this.strip();for(f(K===-1),K=0,J=0;J>26,this.words[J]=U&67108863;return this.negative=1,this.strip()},b.prototype._wordDiv=function(L,V){var Y=this.length-L.length,T=this.clone(),J=L,U=J.words[J.length-1]|0,K=this._countBits(U);Y=26-K,Y!==0&&(J=J.ushln(Y),T.iushln(Y),U=J.words[J.length-1]|0);var H=T.length-J.length,k;if(V!=="mod"){k=new b(null),k.length=H+1,k.words=new Array(k.length);for(var F=0;F=0;Q--){var oe=(T.words[J.length+Q]|0)*67108864+(T.words[J.length+Q-1]|0);for(oe=Math.min(oe/U|0,67108863),T._ishlnsubmul(J,oe,Q);T.negative!==0;)oe--,T.negative=0,T._ishlnsubmul(J,1,Q),T.isZero()||(T.negative^=1);k&&(k.words[Q]=oe)}return k&&k.strip(),T.strip(),V!=="div"&&Y!==0&&T.iushrn(Y),{div:k||null,mod:T}},b.prototype.divmod=function(L,V,Y){if(f(!L.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var T,J,U;return this.negative!==0&&L.negative===0?(U=this.neg().divmod(L,V),V!=="mod"&&(T=U.div.neg()),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.iadd(L)),{div:T,mod:J}):this.negative===0&&L.negative!==0?(U=this.divmod(L.neg(),V),V!=="mod"&&(T=U.div.neg()),{div:T,mod:U.mod}):this.negative&L.negative?(U=this.neg().divmod(L.neg(),V),V!=="div"&&(J=U.mod.neg(),Y&&J.negative!==0&&J.isub(L)),{div:U.div,mod:J}):L.length>this.length||this.cmp(L)<0?{div:new b(0),mod:this}:L.length===1?V==="div"?{div:this.divn(L.words[0]),mod:null}:V==="mod"?{div:null,mod:new b(this.modn(L.words[0]))}:{div:this.divn(L.words[0]),mod:new b(this.modn(L.words[0]))}:this._wordDiv(L,V)},b.prototype.div=function(L){return this.divmod(L,"div",!1).div},b.prototype.mod=function(L){return this.divmod(L,"mod",!1).mod},b.prototype.umod=function(L){return this.divmod(L,"mod",!0).mod},b.prototype.divRound=function(L){var V=this.divmod(L);if(V.mod.isZero())return V.div;var Y=V.div.negative!==0?V.mod.isub(L):V.mod,T=L.ushrn(1),J=L.andln(1),U=Y.cmp(T);return U<0||J===1&&U===0?V.div:V.div.negative!==0?V.div.isubn(1):V.div.iaddn(1)},b.prototype.modn=function(L){f(L<=67108863);for(var V=(1<<26)%L,Y=0,T=this.length-1;T>=0;T--)Y=(V*Y+(this.words[T]|0))%L;return Y},b.prototype.idivn=function(L){f(L<=67108863);for(var V=0,Y=this.length-1;Y>=0;Y--){var T=(this.words[Y]|0)+V*67108864;this.words[Y]=T/L|0,V=T%L}return this.strip()},b.prototype.divn=function(L){return this.clone().idivn(L)},b.prototype.egcd=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=new b(0),K=new b(1),H=0;V.isEven()&&Y.isEven();)V.iushrn(1),Y.iushrn(1),++H;for(var k=Y.clone(),F=V.clone();!V.isZero();){for(var O=0,Q=1;!(V.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(V.iushrn(O);O-- >0;)(T.isOdd()||J.isOdd())&&(T.iadd(k),J.isub(F)),T.iushrn(1),J.iushrn(1);for(var oe=0,se=1;!(Y.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(Y.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(k),K.isub(F)),U.iushrn(1),K.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(U),J.isub(K)):(Y.isub(V),U.isub(T),K.isub(J))}return{a:U,b:K,gcd:Y.iushln(H)}},b.prototype._invmp=function(L){f(L.negative===0),f(!L.isZero());var V=this,Y=L.clone();V.negative!==0?V=V.umod(L):V=V.clone();for(var T=new b(1),J=new b(0),U=Y.clone();V.cmpn(1)>0&&Y.cmpn(1)>0;){for(var K=0,H=1;!(V.words[0]&H)&&K<26;++K,H<<=1);if(K>0)for(V.iushrn(K);K-- >0;)T.isOdd()&&T.iadd(U),T.iushrn(1);for(var k=0,F=1;!(Y.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(Y.iushrn(k);k-- >0;)J.isOdd()&&J.iadd(U),J.iushrn(1);V.cmp(Y)>=0?(V.isub(Y),T.isub(J)):(Y.isub(V),J.isub(T))}var O;return V.cmpn(1)===0?O=T:O=J,O.cmpn(0)<0&&O.iadd(L),O},b.prototype.gcd=function(L){if(this.isZero())return L.abs();if(L.isZero())return this.abs();var V=this.clone(),Y=L.clone();V.negative=0,Y.negative=0;for(var T=0;V.isEven()&&Y.isEven();T++)V.iushrn(1),Y.iushrn(1);do{for(;V.isEven();)V.iushrn(1);for(;Y.isEven();)Y.iushrn(1);var J=V.cmp(Y);if(J<0){var U=V;V=Y,Y=U}else if(J===0||Y.cmpn(1)===0)break;V.isub(Y)}while(!0);return Y.iushln(T)},b.prototype.invm=function(L){return this.egcd(L).a.umod(L)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(L){return this.words[0]&L},b.prototype.bincn=function(L){f(typeof L=="number");var V=L%26,Y=(L-V)/26,T=1<>>26,K&=67108863,this.words[U]=K}return J!==0&&(this.words[U]=J,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(L){var V=L<0;if(this.negative!==0&&!V)return-1;if(this.negative===0&&V)return 1;this.strip();var Y;if(this.length>1)Y=1;else{V&&(L=-L),f(L<=67108863,"Number is too big");var T=this.words[0]|0;Y=T===L?0:TL.length)return 1;if(this.length=0;Y--){var T=this.words[Y]|0,J=L.words[Y]|0;if(T!==J){TJ&&(V=1);break}}return V},b.prototype.gtn=function(L){return this.cmpn(L)===1},b.prototype.gt=function(L){return this.cmp(L)===1},b.prototype.gten=function(L){return this.cmpn(L)>=0},b.prototype.gte=function(L){return this.cmp(L)>=0},b.prototype.ltn=function(L){return this.cmpn(L)===-1},b.prototype.lt=function(L){return this.cmp(L)===-1},b.prototype.lten=function(L){return this.cmpn(L)<=0},b.prototype.lte=function(L){return this.cmp(L)<=0},b.prototype.eqn=function(L){return this.cmpn(L)===0},b.prototype.eq=function(L){return this.cmp(L)===0},b.red=function(L){return new R(L)},b.prototype.toRed=function(L){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),L.convertTo(this)._forceRed(L)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(L){return this.red=L,this},b.prototype.forceRed=function(L){return f(!this.red,"Already a number in reduction context"),this._forceRed(L)},b.prototype.redAdd=function(L){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,L)},b.prototype.redIAdd=function(L){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,L)},b.prototype.redSub=function(L){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,L)},b.prototype.redISub=function(L){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,L)},b.prototype.redShl=function(L){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,L)},b.prototype.redMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.mul(this,L)},b.prototype.redIMul=function(L){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,L),this.red.imul(this,L)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(L){return f(this.red&&!L.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,L)};var W={k256:null,p224:null,p192:null,p25519:null};function M(S,L){this.name=S,this.p=new b(L,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}M.prototype._tmp=function(){var L=new b(null);return L.words=new Array(Math.ceil(this.n/13)),L},M.prototype.ireduce=function(L){var V=L,Y;do this.split(V,this.tmp),V=this.imulK(V),V=V.iadd(this.tmp),Y=V.bitLength();while(Y>this.n);var T=Y0?V.isub(this.p):V.strip!==void 0?V.strip():V._strip(),V},M.prototype.split=function(L,V){L.iushrn(this.n,0,V)},M.prototype.imulK=function(L){return L.imul(this.k)};function I(){M.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(I,M),I.prototype.split=function(L,V){for(var Y=4194303,T=Math.min(L.length,9),J=0;J>>22,U=K}U>>>=22,L.words[J-10]=U,U===0&&L.length>10?L.length-=10:L.length-=9},I.prototype.imulK=function(L){L.words[L.length]=0,L.words[L.length+1]=0,L.length+=2;for(var V=0,Y=0;Y>>=26,L.words[Y]=J,V=T}return V!==0&&(L.words[L.length++]=V),L},b._prime=function(L){if(W[L])return W[L];var V;if(L==="k256")V=new I;else if(L==="p224")V=new w;else if(L==="p192")V=new C;else if(L==="p25519")V=new x;else throw new Error("Unknown prime "+L);return W[L]=V,V};function R(S){if(typeof S=="string"){var L=b._prime(S);this.m=L.p,this.prime=L}else f(S.gtn(1),"modulus must be greater than 1"),this.m=S,this.prime=null}R.prototype._verify1=function(L){f(L.negative===0,"red works only with positives"),f(L.red,"red works only with red numbers")},R.prototype._verify2=function(L,V){f((L.negative|V.negative)===0,"red works only with positives"),f(L.red&&L.red===V.red,"red works only with red numbers")},R.prototype.imod=function(L){return this.prime?this.prime.ireduce(L)._forceRed(this):L.umod(this.m)._forceRed(this)},R.prototype.neg=function(L){return L.isZero()?L.clone():this.m.sub(L)._forceRed(this)},R.prototype.add=function(L,V){this._verify2(L,V);var Y=L.add(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y._forceRed(this)},R.prototype.iadd=function(L,V){this._verify2(L,V);var Y=L.iadd(V);return Y.cmp(this.m)>=0&&Y.isub(this.m),Y},R.prototype.sub=function(L,V){this._verify2(L,V);var Y=L.sub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y._forceRed(this)},R.prototype.isub=function(L,V){this._verify2(L,V);var Y=L.isub(V);return Y.cmpn(0)<0&&Y.iadd(this.m),Y},R.prototype.shl=function(L,V){return this._verify1(L),this.imod(L.ushln(V))},R.prototype.imul=function(L,V){return this._verify2(L,V),this.imod(L.imul(V))},R.prototype.mul=function(L,V){return this._verify2(L,V),this.imod(L.mul(V))},R.prototype.isqr=function(L){return this.imul(L,L.clone())},R.prototype.sqr=function(L){return this.mul(L,L)},R.prototype.sqrt=function(L){if(L.isZero())return L.clone();var V=this.m.andln(3);if(f(V%2===1),V===3){var Y=this.m.add(new b(1)).iushrn(2);return this.pow(L,Y)}for(var T=this.m.subn(1),J=0;!T.isZero()&&T.andln(1)===0;)J++,T.iushrn(1);f(!T.isZero());var U=new b(1).toRed(this),K=U.redNeg(),H=this.m.subn(1).iushrn(1),k=this.m.bitLength();for(k=new b(2*k*k).toRed(this);this.pow(k,H).cmp(K)!==0;)k.redIAdd(K);for(var F=this.pow(k,T),O=this.pow(L,T.addn(1).iushrn(1)),Q=this.pow(L,T),oe=J;Q.cmp(U)!==0;){for(var se=Q,he=0;se.cmp(U)!==0;he++)se=se.redSqr();f(he=0;J--){for(var F=V.words[J],O=k-1;O>=0;O--){var Q=F>>O&1;if(U!==T[0]&&(U=this.sqr(U)),Q===0&&K===0){H=0;continue}K<<=1,K|=Q,H++,!(H!==Y&&(J!==0||O!==0))&&(U=this.mul(U,T[K]),H=0,K=0)}k=26}return U},R.prototype.convertTo=function(L){var V=L.umod(this.m);return V===L?V.clone():V},R.prototype.convertFrom=function(L){var V=L.clone();return V.red=null,V},b.mont=function(L){return new g(L)};function g(S){R.call(this,S),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(g,R),g.prototype.convertTo=function(L){return this.imod(L.ushln(this.shift))},g.prototype.convertFrom=function(L){var V=this.imod(L.mul(this.rinv));return V.red=null,V},g.prototype.imul=function(L,V){if(L.isZero()||V.isZero())return L.words[0]=0,L.length=1,L;var Y=L.imul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.mul=function(L,V){if(L.isZero()||V.isZero())return new b(0)._forceRed(this);var Y=L.mul(V),T=Y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),J=Y.isub(T).iushrn(this.shift),U=J;return J.cmp(this.m)>=0?U=J.isub(this.m):J.cmpn(0)<0&&(U=J.iadd(this.m)),U._forceRed(this)},g.prototype.invm=function(L){var V=this.imod(L._invmp(this.m).mul(this.r2));return V._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],182:[function(t,i,a){a.byteLength=p,a.toByteArray=X,a.fromByteArray=G;for(var l=[],o=[],r=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",v=0,b=f.length;v0)throw new Error("Invalid string. Length must be a multiple of 4");var s=d.indexOf("=");s===-1&&(s=u);var h=s===u?0:4-s%4;return[s,h]}function p(d){var u=Z(d),s=u[0],h=u[1];return(s+h)*3/4-h}function y(d,u,s){return(u+s)*3/4-s}function X(d){var u,s=Z(d),h=s[0],c=s[1],W=new r(y(d,h,c)),M=0,I=c>0?h-4:h,w;for(w=0;w>16&255,W[M++]=u>>8&255,W[M++]=u&255;return c===2&&(u=o[d.charCodeAt(w)]<<2|o[d.charCodeAt(w+1)]>>4,W[M++]=u&255),c===1&&(u=o[d.charCodeAt(w)]<<10|o[d.charCodeAt(w+1)]<<4|o[d.charCodeAt(w+2)]>>2,W[M++]=u>>8&255,W[M++]=u&255),W}function m(d){return l[d>>18&63]+l[d>>12&63]+l[d>>6&63]+l[d&63]}function N(d,u,s){for(var h,c=[],W=u;WI?I:M+W));return h===1?(u=d[s-1],c.push(l[u>>2]+l[u<<4&63]+"==")):h===2&&(u=(d[s-2]<<8)+d[s-1],c.push(l[u>>10]+l[u>>4&63]+l[u<<2&63]+"=")),c.join("")}},{}],183:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}(function(o,r){function f(V,Y){if(!V)throw new Error(Y||"Assertion failed")}function v(V,Y){V.super_=Y;var T=function(){};T.prototype=Y.prototype,V.prototype=new T,V.prototype.constructor=V}function b(V,Y,T){if(b.isBN(V))return V;this.negative=0,this.words=null,this.length=0,this.red=null,V!==null&&((Y==="le"||Y==="be")&&(T=Y,Y=10),this._init(V||0,Y||10,T||"be"))}l(o)==="object"?o.exports=b:r.BN=b,b.BN=b,b.wordSize=26;var Z;try{Z=t("buffer").Buffer}catch{}b.isBN=function(Y){return Y instanceof b?!0:Y!==null&&l(Y)==="object"&&Y.constructor.wordSize===b.wordSize&&Array.isArray(Y.words)},b.max=function(Y,T){return Y.cmp(T)>0?Y:T},b.min=function(Y,T){return Y.cmp(T)<0?Y:T},b.prototype._init=function(Y,T,J){if(typeof Y=="number")return this._initNumber(Y,T,J);if(l(Y)==="object")return this._initArray(Y,T,J);T==="hex"&&(T=16),f(T===(T|0)&&T>=2&&T<=36),Y=Y.toString().replace(/\s+/g,"");var U=0;Y[0]==="-"&&U++,T===16?this._parseHex(Y,U):this._parseBase(Y,T,U),Y[0]==="-"&&(this.negative=1),this._strip(),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initNumber=function(Y,T,J){Y<0&&(this.negative=1,Y=-Y),Y<67108864?(this.words=[Y&67108863],this.length=1):Y<4503599627370496?(this.words=[Y&67108863,Y/67108864&67108863],this.length=2):(f(Y<9007199254740992),this.words=[Y&67108863,Y/67108864&67108863,1],this.length=3),J==="le"&&this._initArray(this.toArray(),T,J)},b.prototype._initArray=function(Y,T,J){if(f(typeof Y.length=="number"),Y.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(Y.length/3),this.words=new Array(this.length);for(var U=0;U=0;U-=3)H=Y[U]|Y[U-1]<<8|Y[U-2]<<16,this.words[K]|=H<>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);else if(J==="le")for(U=0,K=0;U>>26-k&67108863,k+=24,k>=26&&(k-=26,K++);return this._strip()};function p(V,Y,T){for(var J=0,U=Math.min(V.length,T),K=0,H=Y;H=49&&k<=54?F=k-49+10:k>=17&&k<=22?F=k-17+10:F=k,J|=F,K|=F}return f(!(K&240),"Invalid character in "+V),J}b.prototype._parseHex=function(Y,T){this.length=Math.ceil((Y.length-T)/6),this.words=new Array(this.length);for(var J=0;J=T;J-=6)K=p(Y,J,J+6),this.words[U]|=K<>>26-H&4194303,H+=24,H>=26&&(H-=26,U++);J+6!==T&&(K=p(Y,T,J+6),this.words[U]|=K<>>26-H&4194303),this._strip()};function y(V,Y,T,J){for(var U=0,K=0,H=Math.min(V.length,T),k=Y;k=49?K=F-49+10:F>=17?K=F-17+10:K=F,f(F>=0&&K1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},b.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{b.prototype[Symbol.for("nodejs.util.inspect.custom")]=m}catch{b.prototype.inspect=m}else b.prototype.inspect=m;function m(){return(this.red?""}var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],G=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];b.prototype.toString=function(Y,T){Y=Y||10,T=T|0||1;var J;if(Y===16||Y==="hex"){J="";for(var U=0,K=0,H=0;H>>24-U&16777215,K!==0||H!==this.length-1?J=N[6-F.length]+F+J:J=F+J,U+=2,U>=26&&(U-=26,H--)}for(K!==0&&(J=K.toString(16)+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}if(Y===(Y|0)&&Y>=2&&Y<=36){var O=G[Y],Q=d[Y];J="";var oe=this.clone();for(oe.negative=0;!oe.isZero();){var se=oe.modrn(Q).toString(Y);oe=oe.idivn(Q),oe.isZero()?J=se+J:J=N[O-se.length]+se+J}for(this.isZero()&&(J="0"+J);J.length%T!==0;)J="0"+J;return this.negative!==0&&(J="-"+J),J}f(!1,"Base should be between 2 and 36")},b.prototype.toNumber=function(){var Y=this.words[0];return this.length===2?Y+=this.words[1]*67108864:this.length===3&&this.words[2]===1?Y+=4503599627370496+this.words[1]*67108864:this.length>2&&f(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-Y:Y},b.prototype.toJSON=function(){return this.toString(16,2)},Z&&(b.prototype.toBuffer=function(Y,T){return this.toArrayLike(Z,Y,T)}),b.prototype.toArray=function(Y,T){return this.toArrayLike(Array,Y,T)};var u=function(Y,T){return Y.allocUnsafe?Y.allocUnsafe(T):new Y(T)};b.prototype.toArrayLike=function(Y,T,J){this._strip();var U=this.byteLength(),K=J||Math.max(1,U);f(U<=K,"byte array longer than desired length"),f(K>0,"Requested array length <= 0");var H=u(Y,K),k=T==="le"?"LE":"BE";return this["_toArrayLike"+k](H,U),H},b.prototype._toArrayLikeLE=function(Y,T){for(var J=0,U=0,K=0,H=0;K>8&255),J>16&255),H===6?(J>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J=0&&(Y[J--]=k>>8&255),J>=0&&(Y[J--]=k>>16&255),H===6?(J>=0&&(Y[J--]=k>>24&255),U=0,H=0):(U=k>>>24,H+=2)}if(J>=0)for(Y[J--]=U;J>=0;)Y[J--]=0},Math.clz32?b.prototype._countBits=function(Y){return 32-Math.clz32(Y)}:b.prototype._countBits=function(Y){var T=Y,J=0;return T>=4096&&(J+=13,T>>>=13),T>=64&&(J+=7,T>>>=7),T>=8&&(J+=4,T>>>=4),T>=2&&(J+=2,T>>>=2),J+T},b.prototype._zeroBits=function(Y){if(Y===0)return 26;var T=Y,J=0;return T&8191||(J+=13,T>>>=13),T&127||(J+=7,T>>>=7),T&15||(J+=4,T>>>=4),T&3||(J+=2,T>>>=2),T&1||J++,J},b.prototype.bitLength=function(){var Y=this.words[this.length-1],T=this._countBits(Y);return(this.length-1)*26+T};function s(V){for(var Y=new Array(V.bitLength()),T=0;T>>U&1}return Y}b.prototype.zeroBits=function(){if(this.isZero())return 0;for(var Y=0,T=0;TY.length?this.clone().ior(Y):Y.clone().ior(this)},b.prototype.uor=function(Y){return this.length>Y.length?this.clone().iuor(Y):Y.clone().iuor(this)},b.prototype.iuand=function(Y){var T;this.length>Y.length?T=Y:T=this;for(var J=0;JY.length?this.clone().iand(Y):Y.clone().iand(this)},b.prototype.uand=function(Y){return this.length>Y.length?this.clone().iuand(Y):Y.clone().iuand(this)},b.prototype.iuxor=function(Y){var T,J;this.length>Y.length?(T=this,J=Y):(T=Y,J=this);for(var U=0;UY.length?this.clone().ixor(Y):Y.clone().ixor(this)},b.prototype.uxor=function(Y){return this.length>Y.length?this.clone().iuxor(Y):Y.clone().iuxor(this)},b.prototype.inotn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Math.ceil(Y/26)|0,J=Y%26;this._expand(T),J>0&&T--;for(var U=0;U0&&(this.words[U]=~this.words[U]&67108863>>26-J),this._strip()},b.prototype.notn=function(Y){return this.clone().inotn(Y)},b.prototype.setn=function(Y,T){f(typeof Y=="number"&&Y>=0);var J=Y/26|0,U=Y%26;return this._expand(J+1),T?this.words[J]=this.words[J]|1<Y.length?(J=this,U=Y):(J=Y,U=this);for(var K=0,H=0;H>>26;for(;K!==0&&H>>26;if(this.length=J.length,K!==0)this.words[this.length]=K,this.length++;else if(J!==this)for(;HY.length?this.clone().iadd(Y):Y.clone().iadd(this)},b.prototype.isub=function(Y){if(Y.negative!==0){Y.negative=0;var T=this.iadd(Y);return Y.negative=1,T._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(Y),this.negative=1,this._normSign();var J=this.cmp(Y);if(J===0)return this.negative=0,this.length=1,this.words[0]=0,this;var U,K;J>0?(U=this,K=Y):(U=Y,K=this);for(var H=0,k=0;k>26,this.words[k]=T&67108863;for(;H!==0&&k>26,this.words[k]=T&67108863;if(H===0&&k>>26,oe=F&67108863,se=Math.min(O,Y.length-1),he=Math.max(0,O-V.length+1);he<=se;he++){var pe=O-he|0;U=V.words[pe]|0,K=Y.words[he]|0,H=U*K+oe,Q+=H/67108864|0,oe=H&67108863}T.words[O]=oe|0,F=Q|0}return F!==0?T.words[O]=F|0:T.length--,T._strip()}var c=function(Y,T,J){var U=Y.words,K=T.words,H=J.words,k=0,F,O,Q,oe=U[0]|0,se=oe&8191,he=oe>>>13,pe=U[1]|0,re=pe&8191,_=pe>>>13,E=U[2]|0,$=E&8191,ae=E>>>13,le=U[3]|0,ee=le&8191,te=le>>>13,be=U[4]|0,ne=be&8191,B=be>>>13,q=U[5]|0,ue=q&8191,ve=q>>>13,Ge=U[6]|0,Je=Ge&8191,xe=Ge>>>13,ke=U[7]|0,Pe=ke&8191,Be=ke>>>13,Te=U[8]|0,we=Te&8191,Se=Te>>>13,De=U[9]|0,me=De&8191,Ve=De>>>13,Me=K[0]|0,Ie=Me&8191,Ze=Me>>>13,Ce=K[1]|0,ye=Ce&8191,Ue=Ce>>>13,qe=K[2]|0,ie=qe&8191,Oe=qe>>>13,Ke=K[3]|0,Xe=Ke&8191,Re=Ke>>>13,Ae=K[4]|0,ct=Ae&8191,lt=Ae>>>13,ot=K[5]|0,wt=ot&8191,Mt=ot>>>13,xt=K[6]|0,Gt=xt&8191,Zt=xt>>>13,Tt=K[7]|0,Ct=Tt&8191,St=Tt>>>13,Pt=K[8]|0,Ut=Pt&8191,kt=Pt>>>13,en=K[9]|0,nn=en&8191,Ft=en>>>13;J.negative=Y.negative^T.negative,J.length=19,F=Math.imul(se,Ie),O=Math.imul(se,Ze),O=O+Math.imul(he,Ie)|0,Q=Math.imul(he,Ze);var Ln=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Ln>>>26)|0,Ln&=67108863,F=Math.imul(re,Ie),O=Math.imul(re,Ze),O=O+Math.imul(_,Ie)|0,Q=Math.imul(_,Ze),F=F+Math.imul(se,ye)|0,O=O+Math.imul(se,Ue)|0,O=O+Math.imul(he,ye)|0,Q=Q+Math.imul(he,Ue)|0;var An=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(An>>>26)|0,An&=67108863,F=Math.imul($,Ie),O=Math.imul($,Ze),O=O+Math.imul(ae,Ie)|0,Q=Math.imul(ae,Ze),F=F+Math.imul(re,ye)|0,O=O+Math.imul(re,Ue)|0,O=O+Math.imul(_,ye)|0,Q=Q+Math.imul(_,Ue)|0,F=F+Math.imul(se,ie)|0,O=O+Math.imul(se,Oe)|0,O=O+Math.imul(he,ie)|0,Q=Q+Math.imul(he,Oe)|0;var Gi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,F=Math.imul(ee,Ie),O=Math.imul(ee,Ze),O=O+Math.imul(te,Ie)|0,Q=Math.imul(te,Ze),F=F+Math.imul($,ye)|0,O=O+Math.imul($,Ue)|0,O=O+Math.imul(ae,ye)|0,Q=Q+Math.imul(ae,Ue)|0,F=F+Math.imul(re,ie)|0,O=O+Math.imul(re,Oe)|0,O=O+Math.imul(_,ie)|0,Q=Q+Math.imul(_,Oe)|0,F=F+Math.imul(se,Xe)|0,O=O+Math.imul(se,Re)|0,O=O+Math.imul(he,Xe)|0,Q=Q+Math.imul(he,Re)|0;var Pi=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,F=Math.imul(ne,Ie),O=Math.imul(ne,Ze),O=O+Math.imul(B,Ie)|0,Q=Math.imul(B,Ze),F=F+Math.imul(ee,ye)|0,O=O+Math.imul(ee,Ue)|0,O=O+Math.imul(te,ye)|0,Q=Q+Math.imul(te,Ue)|0,F=F+Math.imul($,ie)|0,O=O+Math.imul($,Oe)|0,O=O+Math.imul(ae,ie)|0,Q=Q+Math.imul(ae,Oe)|0,F=F+Math.imul(re,Xe)|0,O=O+Math.imul(re,Re)|0,O=O+Math.imul(_,Xe)|0,Q=Q+Math.imul(_,Re)|0,F=F+Math.imul(se,ct)|0,O=O+Math.imul(se,lt)|0,O=O+Math.imul(he,ct)|0,Q=Q+Math.imul(he,lt)|0;var Gl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Gl>>>26)|0,Gl&=67108863,F=Math.imul(ue,Ie),O=Math.imul(ue,Ze),O=O+Math.imul(ve,Ie)|0,Q=Math.imul(ve,Ze),F=F+Math.imul(ne,ye)|0,O=O+Math.imul(ne,Ue)|0,O=O+Math.imul(B,ye)|0,Q=Q+Math.imul(B,Ue)|0,F=F+Math.imul(ee,ie)|0,O=O+Math.imul(ee,Oe)|0,O=O+Math.imul(te,ie)|0,Q=Q+Math.imul(te,Oe)|0,F=F+Math.imul($,Xe)|0,O=O+Math.imul($,Re)|0,O=O+Math.imul(ae,Xe)|0,Q=Q+Math.imul(ae,Re)|0,F=F+Math.imul(re,ct)|0,O=O+Math.imul(re,lt)|0,O=O+Math.imul(_,ct)|0,Q=Q+Math.imul(_,lt)|0,F=F+Math.imul(se,wt)|0,O=O+Math.imul(se,Mt)|0,O=O+Math.imul(he,wt)|0,Q=Q+Math.imul(he,Mt)|0;var Fn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fn>>>26)|0,Fn&=67108863,F=Math.imul(Je,Ie),O=Math.imul(Je,Ze),O=O+Math.imul(xe,Ie)|0,Q=Math.imul(xe,Ze),F=F+Math.imul(ue,ye)|0,O=O+Math.imul(ue,Ue)|0,O=O+Math.imul(ve,ye)|0,Q=Q+Math.imul(ve,Ue)|0,F=F+Math.imul(ne,ie)|0,O=O+Math.imul(ne,Oe)|0,O=O+Math.imul(B,ie)|0,Q=Q+Math.imul(B,Oe)|0,F=F+Math.imul(ee,Xe)|0,O=O+Math.imul(ee,Re)|0,O=O+Math.imul(te,Xe)|0,Q=Q+Math.imul(te,Re)|0,F=F+Math.imul($,ct)|0,O=O+Math.imul($,lt)|0,O=O+Math.imul(ae,ct)|0,Q=Q+Math.imul(ae,lt)|0,F=F+Math.imul(re,wt)|0,O=O+Math.imul(re,Mt)|0,O=O+Math.imul(_,wt)|0,Q=Q+Math.imul(_,Mt)|0,F=F+Math.imul(se,Gt)|0,O=O+Math.imul(se,Zt)|0,O=O+Math.imul(he,Gt)|0,Q=Q+Math.imul(he,Zt)|0;var cl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(cl>>>26)|0,cl&=67108863,F=Math.imul(Pe,Ie),O=Math.imul(Pe,Ze),O=O+Math.imul(Be,Ie)|0,Q=Math.imul(Be,Ze),F=F+Math.imul(Je,ye)|0,O=O+Math.imul(Je,Ue)|0,O=O+Math.imul(xe,ye)|0,Q=Q+Math.imul(xe,Ue)|0,F=F+Math.imul(ue,ie)|0,O=O+Math.imul(ue,Oe)|0,O=O+Math.imul(ve,ie)|0,Q=Q+Math.imul(ve,Oe)|0,F=F+Math.imul(ne,Xe)|0,O=O+Math.imul(ne,Re)|0,O=O+Math.imul(B,Xe)|0,Q=Q+Math.imul(B,Re)|0,F=F+Math.imul(ee,ct)|0,O=O+Math.imul(ee,lt)|0,O=O+Math.imul(te,ct)|0,Q=Q+Math.imul(te,lt)|0,F=F+Math.imul($,wt)|0,O=O+Math.imul($,Mt)|0,O=O+Math.imul(ae,wt)|0,Q=Q+Math.imul(ae,Mt)|0,F=F+Math.imul(re,Gt)|0,O=O+Math.imul(re,Zt)|0,O=O+Math.imul(_,Gt)|0,Q=Q+Math.imul(_,Zt)|0,F=F+Math.imul(se,Ct)|0,O=O+Math.imul(se,St)|0,O=O+Math.imul(he,Ct)|0,Q=Q+Math.imul(he,St)|0;var ki=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ki>>>26)|0,ki&=67108863,F=Math.imul(we,Ie),O=Math.imul(we,Ze),O=O+Math.imul(Se,Ie)|0,Q=Math.imul(Se,Ze),F=F+Math.imul(Pe,ye)|0,O=O+Math.imul(Pe,Ue)|0,O=O+Math.imul(Be,ye)|0,Q=Q+Math.imul(Be,Ue)|0,F=F+Math.imul(Je,ie)|0,O=O+Math.imul(Je,Oe)|0,O=O+Math.imul(xe,ie)|0,Q=Q+Math.imul(xe,Oe)|0,F=F+Math.imul(ue,Xe)|0,O=O+Math.imul(ue,Re)|0,O=O+Math.imul(ve,Xe)|0,Q=Q+Math.imul(ve,Re)|0,F=F+Math.imul(ne,ct)|0,O=O+Math.imul(ne,lt)|0,O=O+Math.imul(B,ct)|0,Q=Q+Math.imul(B,lt)|0,F=F+Math.imul(ee,wt)|0,O=O+Math.imul(ee,Mt)|0,O=O+Math.imul(te,wt)|0,Q=Q+Math.imul(te,Mt)|0,F=F+Math.imul($,Gt)|0,O=O+Math.imul($,Zt)|0,O=O+Math.imul(ae,Gt)|0,Q=Q+Math.imul(ae,Zt)|0,F=F+Math.imul(re,Ct)|0,O=O+Math.imul(re,St)|0,O=O+Math.imul(_,Ct)|0,Q=Q+Math.imul(_,St)|0,F=F+Math.imul(se,Ut)|0,O=O+Math.imul(se,kt)|0,O=O+Math.imul(he,Ut)|0,Q=Q+Math.imul(he,kt)|0;var tl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tl>>>26)|0,tl&=67108863,F=Math.imul(me,Ie),O=Math.imul(me,Ze),O=O+Math.imul(Ve,Ie)|0,Q=Math.imul(Ve,Ze),F=F+Math.imul(we,ye)|0,O=O+Math.imul(we,Ue)|0,O=O+Math.imul(Se,ye)|0,Q=Q+Math.imul(Se,Ue)|0,F=F+Math.imul(Pe,ie)|0,O=O+Math.imul(Pe,Oe)|0,O=O+Math.imul(Be,ie)|0,Q=Q+Math.imul(Be,Oe)|0,F=F+Math.imul(Je,Xe)|0,O=O+Math.imul(Je,Re)|0,O=O+Math.imul(xe,Xe)|0,Q=Q+Math.imul(xe,Re)|0,F=F+Math.imul(ue,ct)|0,O=O+Math.imul(ue,lt)|0,O=O+Math.imul(ve,ct)|0,Q=Q+Math.imul(ve,lt)|0,F=F+Math.imul(ne,wt)|0,O=O+Math.imul(ne,Mt)|0,O=O+Math.imul(B,wt)|0,Q=Q+Math.imul(B,Mt)|0,F=F+Math.imul(ee,Gt)|0,O=O+Math.imul(ee,Zt)|0,O=O+Math.imul(te,Gt)|0,Q=Q+Math.imul(te,Zt)|0,F=F+Math.imul($,Ct)|0,O=O+Math.imul($,St)|0,O=O+Math.imul(ae,Ct)|0,Q=Q+Math.imul(ae,St)|0,F=F+Math.imul(re,Ut)|0,O=O+Math.imul(re,kt)|0,O=O+Math.imul(_,Ut)|0,Q=Q+Math.imul(_,kt)|0,F=F+Math.imul(se,nn)|0,O=O+Math.imul(se,Ft)|0,O=O+Math.imul(he,nn)|0,Q=Q+Math.imul(he,Ft)|0;var nl=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nl>>>26)|0,nl&=67108863,F=Math.imul(me,ye),O=Math.imul(me,Ue),O=O+Math.imul(Ve,ye)|0,Q=Math.imul(Ve,Ue),F=F+Math.imul(we,ie)|0,O=O+Math.imul(we,Oe)|0,O=O+Math.imul(Se,ie)|0,Q=Q+Math.imul(Se,Oe)|0,F=F+Math.imul(Pe,Xe)|0,O=O+Math.imul(Pe,Re)|0,O=O+Math.imul(Be,Xe)|0,Q=Q+Math.imul(Be,Re)|0,F=F+Math.imul(Je,ct)|0,O=O+Math.imul(Je,lt)|0,O=O+Math.imul(xe,ct)|0,Q=Q+Math.imul(xe,lt)|0,F=F+Math.imul(ue,wt)|0,O=O+Math.imul(ue,Mt)|0,O=O+Math.imul(ve,wt)|0,Q=Q+Math.imul(ve,Mt)|0,F=F+Math.imul(ne,Gt)|0,O=O+Math.imul(ne,Zt)|0,O=O+Math.imul(B,Gt)|0,Q=Q+Math.imul(B,Zt)|0,F=F+Math.imul(ee,Ct)|0,O=O+Math.imul(ee,St)|0,O=O+Math.imul(te,Ct)|0,Q=Q+Math.imul(te,St)|0,F=F+Math.imul($,Ut)|0,O=O+Math.imul($,kt)|0,O=O+Math.imul(ae,Ut)|0,Q=Q+Math.imul(ae,kt)|0,F=F+Math.imul(re,nn)|0,O=O+Math.imul(re,Ft)|0,O=O+Math.imul(_,nn)|0,Q=Q+Math.imul(_,Ft)|0;var Dt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,F=Math.imul(me,ie),O=Math.imul(me,Oe),O=O+Math.imul(Ve,ie)|0,Q=Math.imul(Ve,Oe),F=F+Math.imul(we,Xe)|0,O=O+Math.imul(we,Re)|0,O=O+Math.imul(Se,Xe)|0,Q=Q+Math.imul(Se,Re)|0,F=F+Math.imul(Pe,ct)|0,O=O+Math.imul(Pe,lt)|0,O=O+Math.imul(Be,ct)|0,Q=Q+Math.imul(Be,lt)|0,F=F+Math.imul(Je,wt)|0,O=O+Math.imul(Je,Mt)|0,O=O+Math.imul(xe,wt)|0,Q=Q+Math.imul(xe,Mt)|0,F=F+Math.imul(ue,Gt)|0,O=O+Math.imul(ue,Zt)|0,O=O+Math.imul(ve,Gt)|0,Q=Q+Math.imul(ve,Zt)|0,F=F+Math.imul(ne,Ct)|0,O=O+Math.imul(ne,St)|0,O=O+Math.imul(B,Ct)|0,Q=Q+Math.imul(B,St)|0,F=F+Math.imul(ee,Ut)|0,O=O+Math.imul(ee,kt)|0,O=O+Math.imul(te,Ut)|0,Q=Q+Math.imul(te,kt)|0,F=F+Math.imul($,nn)|0,O=O+Math.imul($,Ft)|0,O=O+Math.imul(ae,nn)|0,Q=Q+Math.imul(ae,Ft)|0;var ht=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(ht>>>26)|0,ht&=67108863,F=Math.imul(me,Xe),O=Math.imul(me,Re),O=O+Math.imul(Ve,Xe)|0,Q=Math.imul(Ve,Re),F=F+Math.imul(we,ct)|0,O=O+Math.imul(we,lt)|0,O=O+Math.imul(Se,ct)|0,Q=Q+Math.imul(Se,lt)|0,F=F+Math.imul(Pe,wt)|0,O=O+Math.imul(Pe,Mt)|0,O=O+Math.imul(Be,wt)|0,Q=Q+Math.imul(Be,Mt)|0,F=F+Math.imul(Je,Gt)|0,O=O+Math.imul(Je,Zt)|0,O=O+Math.imul(xe,Gt)|0,Q=Q+Math.imul(xe,Zt)|0,F=F+Math.imul(ue,Ct)|0,O=O+Math.imul(ue,St)|0,O=O+Math.imul(ve,Ct)|0,Q=Q+Math.imul(ve,St)|0,F=F+Math.imul(ne,Ut)|0,O=O+Math.imul(ne,kt)|0,O=O+Math.imul(B,Ut)|0,Q=Q+Math.imul(B,kt)|0,F=F+Math.imul(ee,nn)|0,O=O+Math.imul(ee,Ft)|0,O=O+Math.imul(te,nn)|0,Q=Q+Math.imul(te,Ft)|0;var Fe=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,F=Math.imul(me,ct),O=Math.imul(me,lt),O=O+Math.imul(Ve,ct)|0,Q=Math.imul(Ve,lt),F=F+Math.imul(we,wt)|0,O=O+Math.imul(we,Mt)|0,O=O+Math.imul(Se,wt)|0,Q=Q+Math.imul(Se,Mt)|0,F=F+Math.imul(Pe,Gt)|0,O=O+Math.imul(Pe,Zt)|0,O=O+Math.imul(Be,Gt)|0,Q=Q+Math.imul(Be,Zt)|0,F=F+Math.imul(Je,Ct)|0,O=O+Math.imul(Je,St)|0,O=O+Math.imul(xe,Ct)|0,Q=Q+Math.imul(xe,St)|0,F=F+Math.imul(ue,Ut)|0,O=O+Math.imul(ue,kt)|0,O=O+Math.imul(ve,Ut)|0,Q=Q+Math.imul(ve,kt)|0,F=F+Math.imul(ne,nn)|0,O=O+Math.imul(ne,Ft)|0,O=O+Math.imul(B,nn)|0,Q=Q+Math.imul(B,Ft)|0;var tt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(tt>>>26)|0,tt&=67108863,F=Math.imul(me,wt),O=Math.imul(me,Mt),O=O+Math.imul(Ve,wt)|0,Q=Math.imul(Ve,Mt),F=F+Math.imul(we,Gt)|0,O=O+Math.imul(we,Zt)|0,O=O+Math.imul(Se,Gt)|0,Q=Q+Math.imul(Se,Zt)|0,F=F+Math.imul(Pe,Ct)|0,O=O+Math.imul(Pe,St)|0,O=O+Math.imul(Be,Ct)|0,Q=Q+Math.imul(Be,St)|0,F=F+Math.imul(Je,Ut)|0,O=O+Math.imul(Je,kt)|0,O=O+Math.imul(xe,Ut)|0,Q=Q+Math.imul(xe,kt)|0,F=F+Math.imul(ue,nn)|0,O=O+Math.imul(ue,Ft)|0,O=O+Math.imul(ve,nn)|0,Q=Q+Math.imul(ve,Ft)|0;var nt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(nt>>>26)|0,nt&=67108863,F=Math.imul(me,Gt),O=Math.imul(me,Zt),O=O+Math.imul(Ve,Gt)|0,Q=Math.imul(Ve,Zt),F=F+Math.imul(we,Ct)|0,O=O+Math.imul(we,St)|0,O=O+Math.imul(Se,Ct)|0,Q=Q+Math.imul(Se,St)|0,F=F+Math.imul(Pe,Ut)|0,O=O+Math.imul(Pe,kt)|0,O=O+Math.imul(Be,Ut)|0,Q=Q+Math.imul(Be,kt)|0,F=F+Math.imul(Je,nn)|0,O=O+Math.imul(Je,Ft)|0,O=O+Math.imul(xe,nn)|0,Q=Q+Math.imul(xe,Ft)|0;var Vt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,F=Math.imul(me,Ct),O=Math.imul(me,St),O=O+Math.imul(Ve,Ct)|0,Q=Math.imul(Ve,St),F=F+Math.imul(we,Ut)|0,O=O+Math.imul(we,kt)|0,O=O+Math.imul(Se,Ut)|0,Q=Q+Math.imul(Se,kt)|0,F=F+Math.imul(Pe,nn)|0,O=O+Math.imul(Pe,Ft)|0,O=O+Math.imul(Be,nn)|0,Q=Q+Math.imul(Be,Ft)|0;var Bt=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,F=Math.imul(me,Ut),O=Math.imul(me,kt),O=O+Math.imul(Ve,Ut)|0,Q=Math.imul(Ve,kt),F=F+Math.imul(we,nn)|0,O=O+Math.imul(we,Ft)|0,O=O+Math.imul(Se,nn)|0,Q=Q+Math.imul(Se,Ft)|0;var Nn=(k+F|0)+((O&8191)<<13)|0;k=(Q+(O>>>13)|0)+(Nn>>>26)|0,Nn&=67108863,F=Math.imul(me,nn),O=Math.imul(me,Ft),O=O+Math.imul(Ve,nn)|0,Q=Math.imul(Ve,Ft);var oi=(k+F|0)+((O&8191)<<13)|0;return k=(Q+(O>>>13)|0)+(oi>>>26)|0,oi&=67108863,H[0]=Ln,H[1]=An,H[2]=Gi,H[3]=Pi,H[4]=Gl,H[5]=Fn,H[6]=cl,H[7]=ki,H[8]=tl,H[9]=nl,H[10]=Dt,H[11]=ht,H[12]=Fe,H[13]=tt,H[14]=nt,H[15]=Vt,H[16]=Bt,H[17]=Nn,H[18]=oi,k!==0&&(H[19]=k,J.length++),J};Math.imul||(c=h);function W(V,Y,T){T.negative=Y.negative^V.negative,T.length=V.length+Y.length;for(var J=0,U=0,K=0;K>>26)|0,U+=H>>>26,H&=67108863}T.words[K]=k,J=H,H=U}return J!==0?T.words[K]=J:T.length--,T._strip()}function M(V,Y,T){return W(V,Y,T)}b.prototype.mulTo=function(Y,T){var J,U=this.length+Y.length;return this.length===10&&Y.length===10?J=c(this,Y,T):U<63?J=h(this,Y,T):U<1024?J=W(this,Y,T):J=M(this,Y,T),J},b.prototype.mul=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),this.mulTo(Y,T)},b.prototype.mulf=function(Y){var T=new b(null);return T.words=new Array(this.length+Y.length),M(this,Y,T)},b.prototype.imul=function(Y){return this.clone().mulTo(Y,this)},b.prototype.imuln=function(Y){var T=Y<0;T&&(Y=-Y),f(typeof Y=="number"),f(Y<67108864);for(var J=0,U=0;U>=26,J+=K/67108864|0,J+=H>>>26,this.words[U]=H&67108863}return J!==0&&(this.words[U]=J,this.length++),T?this.ineg():this},b.prototype.muln=function(Y){return this.clone().imuln(Y)},b.prototype.sqr=function(){return this.mul(this)},b.prototype.isqr=function(){return this.imul(this.clone())},b.prototype.pow=function(Y){var T=s(Y);if(T.length===0)return new b(1);for(var J=this,U=0;U=0);var T=Y%26,J=(Y-T)/26,U=67108863>>>26-T<<26-T,K;if(T!==0){var H=0;for(K=0;K>>26-T}H&&(this.words[K]=H,this.length++)}if(J!==0){for(K=this.length-1;K>=0;K--)this.words[K+J]=this.words[K];for(K=0;K=0);var U;T?U=(T-T%26)/26:U=0;var K=Y%26,H=Math.min((Y-K)/26,this.length),k=67108863^67108863>>>K<H)for(this.length-=H,O=0;O=0&&(Q!==0||O>=U);O--){var oe=this.words[O]|0;this.words[O]=Q<<26-K|oe>>>K,Q=oe&k}return F&&Q!==0&&(F.words[F.length++]=Q),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},b.prototype.ishrn=function(Y,T,J){return f(this.negative===0),this.iushrn(Y,T,J)},b.prototype.shln=function(Y){return this.clone().ishln(Y)},b.prototype.ushln=function(Y){return this.clone().iushln(Y)},b.prototype.shrn=function(Y){return this.clone().ishrn(Y)},b.prototype.ushrn=function(Y){return this.clone().iushrn(Y)},b.prototype.testn=function(Y){f(typeof Y=="number"&&Y>=0);var T=Y%26,J=(Y-T)/26,U=1<=0);var T=Y%26,J=(Y-T)/26;if(f(this.negative===0,"imaskn works only with positive numbers"),this.length<=J)return this;if(T!==0&&J++,this.length=Math.min(J,this.length),T!==0){var U=67108863^67108863>>>T<=67108864;T++)this.words[T]-=67108864,T===this.length-1?this.words[T+1]=1:this.words[T+1]++;return this.length=Math.max(this.length,T+1),this},b.prototype.isubn=function(Y){if(f(typeof Y=="number"),f(Y<67108864),Y<0)return this.iaddn(-Y);if(this.negative!==0)return this.negative=0,this.iaddn(Y),this.negative=1,this;if(this.words[0]-=Y,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var T=0;T>26)-(F/67108864|0),this.words[K+J]=H&67108863}for(;K>26,this.words[K+J]=H&67108863;if(k===0)return this._strip();for(f(k===-1),k=0,K=0;K>26,this.words[K]=H&67108863;return this.negative=1,this._strip()},b.prototype._wordDiv=function(Y,T){var J=this.length-Y.length,U=this.clone(),K=Y,H=K.words[K.length-1]|0,k=this._countBits(H);J=26-k,J!==0&&(K=K.ushln(J),U.iushln(J),H=K.words[K.length-1]|0);var F=U.length-K.length,O;if(T!=="mod"){O=new b(null),O.length=F+1,O.words=new Array(O.length);for(var Q=0;Q=0;se--){var he=(U.words[K.length+se]|0)*67108864+(U.words[K.length+se-1]|0);for(he=Math.min(he/H|0,67108863),U._ishlnsubmul(K,he,se);U.negative!==0;)he--,U.negative=0,U._ishlnsubmul(K,1,se),U.isZero()||(U.negative^=1);O&&(O.words[se]=he)}return O&&O._strip(),U._strip(),T!=="div"&&J!==0&&U.iushrn(J),{div:O||null,mod:U}},b.prototype.divmod=function(Y,T,J){if(f(!Y.isZero()),this.isZero())return{div:new b(0),mod:new b(0)};var U,K,H;return this.negative!==0&&Y.negative===0?(H=this.neg().divmod(Y,T),T!=="mod"&&(U=H.div.neg()),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.iadd(Y)),{div:U,mod:K}):this.negative===0&&Y.negative!==0?(H=this.divmod(Y.neg(),T),T!=="mod"&&(U=H.div.neg()),{div:U,mod:H.mod}):this.negative&Y.negative?(H=this.neg().divmod(Y.neg(),T),T!=="div"&&(K=H.mod.neg(),J&&K.negative!==0&&K.isub(Y)),{div:H.div,mod:K}):Y.length>this.length||this.cmp(Y)<0?{div:new b(0),mod:this}:Y.length===1?T==="div"?{div:this.divn(Y.words[0]),mod:null}:T==="mod"?{div:null,mod:new b(this.modrn(Y.words[0]))}:{div:this.divn(Y.words[0]),mod:new b(this.modrn(Y.words[0]))}:this._wordDiv(Y,T)},b.prototype.div=function(Y){return this.divmod(Y,"div",!1).div},b.prototype.mod=function(Y){return this.divmod(Y,"mod",!1).mod},b.prototype.umod=function(Y){return this.divmod(Y,"mod",!0).mod},b.prototype.divRound=function(Y){var T=this.divmod(Y);if(T.mod.isZero())return T.div;var J=T.div.negative!==0?T.mod.isub(Y):T.mod,U=Y.ushrn(1),K=Y.andln(1),H=J.cmp(U);return H<0||K===1&&H===0?T.div:T.div.negative!==0?T.div.isubn(1):T.div.iaddn(1)},b.prototype.modrn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=(1<<26)%Y,U=0,K=this.length-1;K>=0;K--)U=(J*U+(this.words[K]|0))%Y;return T?-U:U},b.prototype.modn=function(Y){return this.modrn(Y)},b.prototype.idivn=function(Y){var T=Y<0;T&&(Y=-Y),f(Y<=67108863);for(var J=0,U=this.length-1;U>=0;U--){var K=(this.words[U]|0)+J*67108864;this.words[U]=K/Y|0,J=K%Y}return this._strip(),T?this.ineg():this},b.prototype.divn=function(Y){return this.clone().idivn(Y)},b.prototype.egcd=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=new b(0),k=new b(1),F=0;T.isEven()&&J.isEven();)T.iushrn(1),J.iushrn(1),++F;for(var O=J.clone(),Q=T.clone();!T.isZero();){for(var oe=0,se=1;!(T.words[0]&se)&&oe<26;++oe,se<<=1);if(oe>0)for(T.iushrn(oe);oe-- >0;)(U.isOdd()||K.isOdd())&&(U.iadd(O),K.isub(Q)),U.iushrn(1),K.iushrn(1);for(var he=0,pe=1;!(J.words[0]&pe)&&he<26;++he,pe<<=1);if(he>0)for(J.iushrn(he);he-- >0;)(H.isOdd()||k.isOdd())&&(H.iadd(O),k.isub(Q)),H.iushrn(1),k.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(H),K.isub(k)):(J.isub(T),H.isub(U),k.isub(K))}return{a:H,b:k,gcd:J.iushln(F)}},b.prototype._invmp=function(Y){f(Y.negative===0),f(!Y.isZero());var T=this,J=Y.clone();T.negative!==0?T=T.umod(Y):T=T.clone();for(var U=new b(1),K=new b(0),H=J.clone();T.cmpn(1)>0&&J.cmpn(1)>0;){for(var k=0,F=1;!(T.words[0]&F)&&k<26;++k,F<<=1);if(k>0)for(T.iushrn(k);k-- >0;)U.isOdd()&&U.iadd(H),U.iushrn(1);for(var O=0,Q=1;!(J.words[0]&Q)&&O<26;++O,Q<<=1);if(O>0)for(J.iushrn(O);O-- >0;)K.isOdd()&&K.iadd(H),K.iushrn(1);T.cmp(J)>=0?(T.isub(J),U.isub(K)):(J.isub(T),K.isub(U))}var oe;return T.cmpn(1)===0?oe=U:oe=K,oe.cmpn(0)<0&&oe.iadd(Y),oe},b.prototype.gcd=function(Y){if(this.isZero())return Y.abs();if(Y.isZero())return this.abs();var T=this.clone(),J=Y.clone();T.negative=0,J.negative=0;for(var U=0;T.isEven()&&J.isEven();U++)T.iushrn(1),J.iushrn(1);do{for(;T.isEven();)T.iushrn(1);for(;J.isEven();)J.iushrn(1);var K=T.cmp(J);if(K<0){var H=T;T=J,J=H}else if(K===0||J.cmpn(1)===0)break;T.isub(J)}while(!0);return J.iushln(U)},b.prototype.invm=function(Y){return this.egcd(Y).a.umod(Y)},b.prototype.isEven=function(){return(this.words[0]&1)===0},b.prototype.isOdd=function(){return(this.words[0]&1)===1},b.prototype.andln=function(Y){return this.words[0]&Y},b.prototype.bincn=function(Y){f(typeof Y=="number");var T=Y%26,J=(Y-T)/26,U=1<>>26,k&=67108863,this.words[H]=k}return K!==0&&(this.words[H]=K,this.length++),this},b.prototype.isZero=function(){return this.length===1&&this.words[0]===0},b.prototype.cmpn=function(Y){var T=Y<0;if(this.negative!==0&&!T)return-1;if(this.negative===0&&T)return 1;this._strip();var J;if(this.length>1)J=1;else{T&&(Y=-Y),f(Y<=67108863,"Number is too big");var U=this.words[0]|0;J=U===Y?0:UY.length)return 1;if(this.length=0;J--){var U=this.words[J]|0,K=Y.words[J]|0;if(U!==K){UK&&(T=1);break}}return T},b.prototype.gtn=function(Y){return this.cmpn(Y)===1},b.prototype.gt=function(Y){return this.cmp(Y)===1},b.prototype.gten=function(Y){return this.cmpn(Y)>=0},b.prototype.gte=function(Y){return this.cmp(Y)>=0},b.prototype.ltn=function(Y){return this.cmpn(Y)===-1},b.prototype.lt=function(Y){return this.cmp(Y)===-1},b.prototype.lten=function(Y){return this.cmpn(Y)<=0},b.prototype.lte=function(Y){return this.cmp(Y)<=0},b.prototype.eqn=function(Y){return this.cmpn(Y)===0},b.prototype.eq=function(Y){return this.cmp(Y)===0},b.red=function(Y){return new S(Y)},b.prototype.toRed=function(Y){return f(!this.red,"Already a number in reduction context"),f(this.negative===0,"red works only with positives"),Y.convertTo(this)._forceRed(Y)},b.prototype.fromRed=function(){return f(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},b.prototype._forceRed=function(Y){return this.red=Y,this},b.prototype.forceRed=function(Y){return f(!this.red,"Already a number in reduction context"),this._forceRed(Y)},b.prototype.redAdd=function(Y){return f(this.red,"redAdd works only with red numbers"),this.red.add(this,Y)},b.prototype.redIAdd=function(Y){return f(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,Y)},b.prototype.redSub=function(Y){return f(this.red,"redSub works only with red numbers"),this.red.sub(this,Y)},b.prototype.redISub=function(Y){return f(this.red,"redISub works only with red numbers"),this.red.isub(this,Y)},b.prototype.redShl=function(Y){return f(this.red,"redShl works only with red numbers"),this.red.shl(this,Y)},b.prototype.redMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.mul(this,Y)},b.prototype.redIMul=function(Y){return f(this.red,"redMul works only with red numbers"),this.red._verify2(this,Y),this.red.imul(this,Y)},b.prototype.redSqr=function(){return f(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},b.prototype.redISqr=function(){return f(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},b.prototype.redSqrt=function(){return f(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},b.prototype.redInvm=function(){return f(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},b.prototype.redNeg=function(){return f(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},b.prototype.redPow=function(Y){return f(this.red&&!Y.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,Y)};var I={k256:null,p224:null,p192:null,p25519:null};function w(V,Y){this.name=V,this.p=new b(Y,16),this.n=this.p.bitLength(),this.k=new b(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}w.prototype._tmp=function(){var Y=new b(null);return Y.words=new Array(Math.ceil(this.n/13)),Y},w.prototype.ireduce=function(Y){var T=Y,J;do this.split(T,this.tmp),T=this.imulK(T),T=T.iadd(this.tmp),J=T.bitLength();while(J>this.n);var U=J0?T.isub(this.p):T.strip!==void 0?T.strip():T._strip(),T},w.prototype.split=function(Y,T){Y.iushrn(this.n,0,T)},w.prototype.imulK=function(Y){return Y.imul(this.k)};function C(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}v(C,w),C.prototype.split=function(Y,T){for(var J=4194303,U=Math.min(Y.length,9),K=0;K>>22,H=k}H>>>=22,Y.words[K-10]=H,H===0&&Y.length>10?Y.length-=10:Y.length-=9},C.prototype.imulK=function(Y){Y.words[Y.length]=0,Y.words[Y.length+1]=0,Y.length+=2;for(var T=0,J=0;J>>=26,Y.words[J]=K,T=U}return T!==0&&(Y.words[Y.length++]=T),Y},b._prime=function(Y){if(I[Y])return I[Y];var T;if(Y==="k256")T=new C;else if(Y==="p224")T=new x;else if(Y==="p192")T=new R;else if(Y==="p25519")T=new g;else throw new Error("Unknown prime "+Y);return I[Y]=T,T};function S(V){if(typeof V=="string"){var Y=b._prime(V);this.m=Y.p,this.prime=Y}else f(V.gtn(1),"modulus must be greater than 1"),this.m=V,this.prime=null}S.prototype._verify1=function(Y){f(Y.negative===0,"red works only with positives"),f(Y.red,"red works only with red numbers")},S.prototype._verify2=function(Y,T){f((Y.negative|T.negative)===0,"red works only with positives"),f(Y.red&&Y.red===T.red,"red works only with red numbers")},S.prototype.imod=function(Y){return this.prime?this.prime.ireduce(Y)._forceRed(this):(X(Y,Y.umod(this.m)._forceRed(this)),Y)},S.prototype.neg=function(Y){return Y.isZero()?Y.clone():this.m.sub(Y)._forceRed(this)},S.prototype.add=function(Y,T){this._verify2(Y,T);var J=Y.add(T);return J.cmp(this.m)>=0&&J.isub(this.m),J._forceRed(this)},S.prototype.iadd=function(Y,T){this._verify2(Y,T);var J=Y.iadd(T);return J.cmp(this.m)>=0&&J.isub(this.m),J},S.prototype.sub=function(Y,T){this._verify2(Y,T);var J=Y.sub(T);return J.cmpn(0)<0&&J.iadd(this.m),J._forceRed(this)},S.prototype.isub=function(Y,T){this._verify2(Y,T);var J=Y.isub(T);return J.cmpn(0)<0&&J.iadd(this.m),J},S.prototype.shl=function(Y,T){return this._verify1(Y),this.imod(Y.ushln(T))},S.prototype.imul=function(Y,T){return this._verify2(Y,T),this.imod(Y.imul(T))},S.prototype.mul=function(Y,T){return this._verify2(Y,T),this.imod(Y.mul(T))},S.prototype.isqr=function(Y){return this.imul(Y,Y.clone())},S.prototype.sqr=function(Y){return this.mul(Y,Y)},S.prototype.sqrt=function(Y){if(Y.isZero())return Y.clone();var T=this.m.andln(3);if(f(T%2===1),T===3){var J=this.m.add(new b(1)).iushrn(2);return this.pow(Y,J)}for(var U=this.m.subn(1),K=0;!U.isZero()&&U.andln(1)===0;)K++,U.iushrn(1);f(!U.isZero());var H=new b(1).toRed(this),k=H.redNeg(),F=this.m.subn(1).iushrn(1),O=this.m.bitLength();for(O=new b(2*O*O).toRed(this);this.pow(O,F).cmp(k)!==0;)O.redIAdd(k);for(var Q=this.pow(O,U),oe=this.pow(Y,U.addn(1).iushrn(1)),se=this.pow(Y,U),he=K;se.cmp(H)!==0;){for(var pe=se,re=0;pe.cmp(H)!==0;re++)pe=pe.redSqr();f(re=0;K--){for(var Q=T.words[K],oe=O-1;oe>=0;oe--){var se=Q>>oe&1;if(H!==U[0]&&(H=this.sqr(H)),se===0&&k===0){F=0;continue}k<<=1,k|=se,F++,!(F!==J&&(K!==0||oe!==0))&&(H=this.mul(H,U[k]),F=0,k=0)}O=26}return H},S.prototype.convertTo=function(Y){var T=Y.umod(this.m);return T===Y?T.clone():T},S.prototype.convertFrom=function(Y){var T=Y.clone();return T.red=null,T},b.mont=function(Y){return new L(Y)};function L(V){S.call(this,V),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new b(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v(L,S),L.prototype.convertTo=function(Y){return this.imod(Y.ushln(this.shift))},L.prototype.convertFrom=function(Y){var T=this.imod(Y.mul(this.rinv));return T.red=null,T},L.prototype.imul=function(Y,T){if(Y.isZero()||T.isZero())return Y.words[0]=0,Y.length=1,Y;var J=Y.imul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.mul=function(Y,T){if(Y.isZero()||T.isZero())return new b(0)._forceRed(this);var J=Y.mul(T),U=J.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),K=J.isub(U).iushrn(this.shift),H=K;return K.cmp(this.m)>=0?H=K.isub(this.m):K.cmpn(0)<0&&(H=K.iadd(this.m)),H._forceRed(this)},L.prototype.invm=function(Y){var T=this.imod(Y._invmp(this.m).mul(this.r2));return T._forceRed(this)}})(typeof i>"u"||i,void 0)},{buffer:185}],184:[function(t,i,a){function l(v){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(Z){return typeof Z}:l=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},l(v)}var o;i.exports=function(b){return o||(o=new r(null)),o.generate(b)};function r(v){this.rand=v}if(i.exports.Rand=r,r.prototype.generate=function(b){return this._rand(b)},r.prototype._rand=function(b){if(this.rand.getBytes)return this.rand.getBytes(b);for(var Z=new Uint8Array(b),p=0;p"u"?"undefined":l(self))==="object")self.crypto&&self.crypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.crypto.getRandomValues(Z),Z}:self.msCrypto&&self.msCrypto.getRandomValues?r.prototype._rand=function(b){var Z=new Uint8Array(b);return self.msCrypto.getRandomValues(Z),Z}:(typeof window>"u"?"undefined":l(window))==="object"&&(r.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var f=t("crypto");if(typeof f.randomBytes!="function")throw new Error("Not supported");r.prototype._rand=function(b){return f.randomBytes(b)}}catch{}},{crypto:185}],185:[function(t,i,a){},{}],186:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(p){l.isBuffer(p)||(p=l.from(p));for(var y=p.length/4|0,X=new Array(y),m=0;m>>24]^d[c>>>16&255]^u[W>>>8&255]^s[M&255]^y[R++],w=G[c>>>24]^d[W>>>16&255]^u[M>>>8&255]^s[h&255]^y[R++],C=G[W>>>24]^d[M>>>16&255]^u[h>>>8&255]^s[c&255]^y[R++],x=G[M>>>24]^d[h>>>16&255]^u[c>>>8&255]^s[W&255]^y[R++],h=I,c=w,W=C,M=x;return I=(m[h>>>24]<<24|m[c>>>16&255]<<16|m[W>>>8&255]<<8|m[M&255])^y[R++],w=(m[c>>>24]<<24|m[W>>>16&255]<<16|m[M>>>8&255]<<8|m[h&255])^y[R++],C=(m[W>>>24]<<24|m[M>>>16&255]<<16|m[h>>>8&255]<<8|m[c&255])^y[R++],x=(m[M>>>24]<<24|m[h>>>16&255]<<16|m[c>>>8&255]<<8|m[W&255])^y[R++],I=I>>>0,w=w>>>0,C=C>>>0,x=x>>>0,[I,w,C,x]}var v=[0,1,2,4,8,16,32,64,128,27,54],b=function(){for(var p=new Array(256),y=0;y<256;y++)y<128?p[y]=y<<1:p[y]=y<<1^283;for(var X=[],m=[],N=[[],[],[],[]],G=[[],[],[],[]],d=0,u=0,s=0;s<256;++s){var h=u^u<<1^u<<2^u<<3^u<<4;h=h>>>8^h&255^99,X[d]=h,m[h]=d;var c=p[d],W=p[c],M=p[W],I=p[h]*257^h*16843008;N[0][d]=I<<24|I>>>8,N[1][d]=I<<16|I>>>16,N[2][d]=I<<8|I>>>24,N[3][d]=I,I=M*16843009^W*65537^c*257^d*16843008,G[0][h]=I<<24|I>>>8,G[1][h]=I<<16|I>>>16,G[2][h]=I<<8|I>>>24,G[3][h]=I,d===0?d=u=1:(d=c^p[p[p[M^c]]],u^=p[p[u]])}return{SBOX:X,INV_SBOX:m,SUB_MIX:N,INV_SUB_MIX:G}}();function Z(p){this._key=o(p),this._reset()}Z.blockSize=4*4,Z.keySize=256/8,Z.prototype.blockSize=Z.blockSize,Z.prototype.keySize=Z.keySize,Z.prototype._reset=function(){for(var p=this._key,y=p.length,X=y+6,m=(X+1)*4,N=[],G=0;G>>24,d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255],d^=v[G/y|0]<<24):y>6&&G%y===4&&(d=b.SBOX[d>>>24]<<24|b.SBOX[d>>>16&255]<<16|b.SBOX[d>>>8&255]<<8|b.SBOX[d&255]),N[G]=N[G-y]^d}for(var u=[],s=0;s>>24]]^b.INV_SUB_MIX[1][b.SBOX[c>>>16&255]]^b.INV_SUB_MIX[2][b.SBOX[c>>>8&255]]^b.INV_SUB_MIX[3][b.SBOX[c&255]]}this._nRounds=X,this._keySchedule=N,this._invKeySchedule=u},Z.prototype.encryptBlockRaw=function(p){return p=o(p),f(p,this._keySchedule,b.SUB_MIX,b.SBOX,this._nRounds)},Z.prototype.encryptBlock=function(p){var y=this.encryptBlockRaw(p),X=l.allocUnsafe(16);return X.writeUInt32BE(y[0],0),X.writeUInt32BE(y[1],4),X.writeUInt32BE(y[2],8),X.writeUInt32BE(y[3],12),X},Z.prototype.decryptBlock=function(p){p=o(p);var y=p[1];p[1]=p[3],p[3]=y;var X=f(p,this._invKeySchedule,b.INV_SUB_MIX,b.INV_SBOX,this._nRounds),m=l.allocUnsafe(16);return m.writeUInt32BE(X[0],0),m.writeUInt32BE(X[3],4),m.writeUInt32BE(X[2],8),m.writeUInt32BE(X[1],12),m},Z.prototype.scrub=function(){r(this._keySchedule),r(this._invKeySchedule),r(this._key)},i.exports.AES=Z},{"safe-buffer":494}],187:[function(t,i,a){var l=t("./aes"),o=t("safe-buffer").Buffer,r=t("cipher-base"),f=t("inherits"),v=t("./ghash"),b=t("buffer-xor"),Z=t("./incr32");function p(m,N){var G=0;m.length!==N.length&&G++;for(var d=Math.min(m.length,N.length),u=0;u16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u}else if(this.cache.length>=16)return u=this.cache.slice(0,16),this.cache=this.cache.slice(16),u;return null},X.prototype.flush=function(){if(this.cache.length)return this.cache};function m(d){var u=d[15];if(u<1||u>16)throw new Error("unable to decrypt data");for(var s=-1;++s15){var d=this.cache.slice(0,16);return this.cache=this.cache.slice(16),d}return null},m.prototype.flush=function(){for(var d=16-this.cache.length,u=r.allocUnsafe(d),s=-1;++s>>0,0),Z.writeUInt32BE(b[1]>>>0,4),Z.writeUInt32BE(b[2]>>>0,8),Z.writeUInt32BE(b[3]>>>0,12),Z}function v(b){this.h=b,this.state=l.alloc(16,0),this.cache=l.allocUnsafe(0)}v.prototype.ghash=function(b){for(var Z=-1;++Z0;p--)b[p]=b[p]>>>1|(b[p-1]&1)<<31;b[0]=b[0]>>>1,X&&(b[0]=b[0]^225<<24)}this.state=f(Z)},v.prototype.update=function(b){this.cache=l.concat([this.cache,b]);for(var Z;this.cache.length>=16;)Z=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(Z)},v.prototype.final=function(b,Z){return this.cache.length&&this.ghash(l.concat([this.cache,o],16)),this.ghash(f([0,b,0,Z])),this.state},i.exports=v},{"safe-buffer":494}],192:[function(t,i,a){function l(o){for(var r=o.length,f;r--;)if(f=o.readUInt8(r),f===255)o.writeUInt8(0,r);else{f++,o.writeUInt8(f,r);break}}i.exports=l},{}],193:[function(t,i,a){var l=t("buffer-xor");a.encrypt=function(o,r){var f=l(r,o._prev);return o._prev=o._cipher.encryptBlock(f),o._prev},a.decrypt=function(o,r){var f=o._prev;o._prev=r;var v=o._cipher.decryptBlock(r);return l(v,f)}},{"buffer-xor":217}],194:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("buffer-xor");function r(f,v,b){var Z=v.length,p=o(v,f._cache);return f._cache=f._cache.slice(Z),f._prev=l.concat([f._prev,b?v:p]),p}a.encrypt=function(f,v,b){for(var Z=l.allocUnsafe(0),p;v.length;)if(f._cache.length===0&&(f._cache=f._cipher.encryptBlock(f._prev),f._prev=l.allocUnsafe(0)),f._cache.length<=v.length)p=f._cache.length,Z=l.concat([Z,r(f,v.slice(0,p),b)]),v=v.slice(p);else{Z=l.concat([Z,r(f,v,b)]);break}return Z}},{"buffer-xor":217,"safe-buffer":494}],195:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(f,v,b){for(var Z,p=-1,y=8,X=0,m,N;++p>p%8,f._prev=r(f._prev,b?m:N);return X}function r(f,v){var b=f.length,Z=-1,p=l.allocUnsafe(f.length);for(f=l.concat([f,l.from([v])]);++Z>7;return p}a.encrypt=function(f,v,b){for(var Z=v.length,p=l.allocUnsafe(Z),y=-1;++y=0||!y.umod(Z.prime1)||!y.umod(Z.prime2);)y=new o(r(p));return y}}).call(this,t("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],208:[function(t,i,a){i.exports=t("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(t,i,a){i.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(t,i,a){i.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hash"),r=t("readable-stream"),f=t("inherits"),v=t("./sign"),b=t("./verify"),Z=t("./algorithms.json");Object.keys(Z).forEach(function(N){Z[N].id=l.from(Z[N].id,"hex"),Z[N.toLowerCase()]=Z[N]});function p(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hashType=G.hash,this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(p,r.Writable),p.prototype._write=function(G,d,u){this._hash.update(G),u()},p.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},p.prototype.sign=function(G,d){this.end();var u=this._hash.digest(),s=v(u,G,this._hashType,this._signType,this._tag);return d?s.toString(d):s};function y(N){r.Writable.call(this);var G=Z[N];if(!G)throw new Error("Unknown message digest");this._hash=o(G.hash),this._tag=G.id,this._signType=G.sign}f(y,r.Writable),y.prototype._write=function(G,d,u){this._hash.update(G),u()},y.prototype.update=function(G,d){return typeof G=="string"&&(G=l.from(G,d)),this._hash.update(G),this},y.prototype.verify=function(G,d,u){typeof d=="string"&&(d=l.from(d,u)),this.end();var s=this._hash.digest();return b(d,s,G,this._signType,this._tag)};function X(N){return new p(N)}function m(N){return new y(N)}i.exports={Sign:X,Verify:m,createSign:X,createVerify:m}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("create-hmac"),r=t("browserify-rsa"),f=t("elliptic").ec,v=t("bn.js"),b=t("parse-asn1"),Z=t("./curves.json");function p(h,c,W,M,I){var w=b(c);if(w.curve){if(M!=="ecdsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");return y(h,w)}else if(w.type==="dsa"){if(M!=="dsa")throw new Error("wrong private key type");return X(h,w,W)}else if(M!=="rsa"&&M!=="ecdsa/rsa")throw new Error("wrong private key type");h=l.concat([I,h]);for(var C=w.modulus.byteLength(),x=[0,1];h.length+x.length+10&&W.ishrn(M),W}function d(h,c){h=G(h,c),h=h.mod(c);var W=l.from(h.toArray());if(W.length=m)throw new Error("invalid sig")}i.exports=b},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(t,i,a){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var l=t("buffer"),o=l.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=l:(r(l,a),a.Buffer=f);function f(v,b,Z){return o(v,b,Z)}f.prototype=Object.create(o.prototype),r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return l.SlowBuffer(v)}},{buffer:216}],215:[function(t,i,a){arguments[4][185][0].apply(a,arguments)},{dup:185}],216:[function(t,i,a){(function(p){function o(ne){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(q){return typeof q}:o=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},o(ne)}var r=t("base64-js"),f=t("ieee754");a.Buffer=p,a.SlowBuffer=c,a.INSPECT_MAX_BYTES=50;var v=2147483647;a.kMaxLength=v,p.TYPED_ARRAY_SUPPORT=b(),!p.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function b(){try{var ne=new Uint8Array(1);return ne.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},ne.foo()===42}catch{return!1}}Object.defineProperty(p.prototype,"parent",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.buffer}}),Object.defineProperty(p.prototype,"offset",{enumerable:!0,get:function(){if(p.isBuffer(this))return this.byteOffset}});function Z(ne){if(ne>v)throw new RangeError('The value "'+ne+'" is invalid for option "size"');var B=new Uint8Array(ne);return B.__proto__=p.prototype,B}function p(ne,B,q){if(typeof ne=="number"){if(typeof B=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return N(ne)}return y(ne,B,q)}typeof Symbol<"u"&&Symbol.species!=null&&p[Symbol.species]===p&&Object.defineProperty(p,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),p.poolSize=8192;function y(ne,B,q){if(typeof ne=="string")return G(ne,B);if(ArrayBuffer.isView(ne))return d(ne);if(ne==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne));if(te(ne,ArrayBuffer)||ne&&te(ne.buffer,ArrayBuffer))return u(ne,B,q);if(typeof ne=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var ue=ne.valueOf&&ne.valueOf();if(ue!=null&&ue!==ne)return p.from(ue,B,q);var ve=s(ne);if(ve)return ve;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ne[Symbol.toPrimitive]=="function")return p.from(ne[Symbol.toPrimitive]("string"),B,q);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(ne))}p.from=function(ne,B,q){return y(ne,B,q)},p.prototype.__proto__=Uint8Array.prototype,p.__proto__=Uint8Array;function X(ne){if(typeof ne!="number")throw new TypeError('"size" argument must be of type number');if(ne<0)throw new RangeError('The value "'+ne+'" is invalid for option "size"')}function m(ne,B,q){return X(ne),ne<=0?Z(ne):B!==void 0?typeof q=="string"?Z(ne).fill(B,q):Z(ne).fill(B):Z(ne)}p.alloc=function(ne,B,q){return m(ne,B,q)};function N(ne){return X(ne),Z(ne<0?0:h(ne)|0)}p.allocUnsafe=function(ne){return N(ne)},p.allocUnsafeSlow=function(ne){return N(ne)};function G(ne,B){if((typeof B!="string"||B==="")&&(B="utf8"),!p.isEncoding(B))throw new TypeError("Unknown encoding: "+B);var q=W(ne,B)|0,ue=Z(q),ve=ue.write(ne,B);return ve!==q&&(ue=ue.slice(0,ve)),ue}function d(ne){for(var B=ne.length<0?0:h(ne.length)|0,q=Z(B),ue=0;ue=v)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+v.toString(16)+" bytes");return ne|0}function c(ne){return+ne!=ne&&(ne=0),p.alloc(+ne)}p.isBuffer=function(B){return B!=null&&B._isBuffer===!0&&B!==p.prototype},p.compare=function(B,q){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),te(q,Uint8Array)&&(q=p.from(q,q.offset,q.byteLength)),!p.isBuffer(B)||!p.isBuffer(q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(B===q)return 0;for(var ue=B.length,ve=q.length,Ge=0,Je=Math.min(ue,ve);Ge2&&arguments[2]===!0;if(!ue&&q===0)return 0;for(var ve=!1;;)switch(B){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return E(ne).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return le(ne).length;default:if(ve)return ue?-1:E(ne).length;B=(""+B).toLowerCase(),ve=!0}}p.byteLength=W;function M(ne,B,q){var ue=!1;if((B===void 0||B<0)&&(B=0),B>this.length||((q===void 0||q>this.length)&&(q=this.length),q<=0)||(q>>>=0,B>>>=0,q<=B))return"";for(ne||(ne="utf8");;)switch(ne){case"hex":return k(this,B,q);case"utf8":case"utf-8":return T(this,B,q);case"ascii":return K(this,B,q);case"latin1":case"binary":return H(this,B,q);case"base64":return Y(this,B,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,B,q);default:if(ue)throw new TypeError("Unknown encoding: "+ne);ne=(ne+"").toLowerCase(),ue=!0}}p.prototype._isBuffer=!0;function I(ne,B,q){var ue=ne[B];ne[B]=ne[q],ne[q]=ue}p.prototype.swap16=function(){var B=this.length;if(B%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var q=0;qq&&(B+=" ... "),""},p.prototype.compare=function(B,q,ue,ve,Ge){if(te(B,Uint8Array)&&(B=p.from(B,B.offset,B.byteLength)),!p.isBuffer(B))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+o(B));if(q===void 0&&(q=0),ue===void 0&&(ue=B?B.length:0),ve===void 0&&(ve=0),Ge===void 0&&(Ge=this.length),q<0||ue>B.length||ve<0||Ge>this.length)throw new RangeError("out of range index");if(ve>=Ge&&q>=ue)return 0;if(ve>=Ge)return-1;if(q>=ue)return 1;if(q>>>=0,ue>>>=0,ve>>>=0,Ge>>>=0,this===B)return 0;for(var Je=Ge-ve,xe=ue-q,ke=Math.min(Je,xe),Pe=this.slice(ve,Ge),Be=B.slice(q,ue),Te=0;Te2147483647?q=2147483647:q<-2147483648&&(q=-2147483648),q=+q,be(q)&&(q=ve?0:ne.length-1),q<0&&(q=ne.length+q),q>=ne.length){if(ve)return-1;q=ne.length-1}else if(q<0)if(ve)q=0;else return-1;if(typeof B=="string"&&(B=p.from(B,ue)),p.isBuffer(B))return B.length===0?-1:C(ne,B,q,ue,ve);if(typeof B=="number")return B=B&255,typeof Uint8Array.prototype.indexOf=="function"?ve?Uint8Array.prototype.indexOf.call(ne,B,q):Uint8Array.prototype.lastIndexOf.call(ne,B,q):C(ne,[B],q,ue,ve);throw new TypeError("val must be string, number or Buffer")}function C(ne,B,q,ue,ve){var Ge=1,Je=ne.length,xe=B.length;if(ue!==void 0&&(ue=String(ue).toLowerCase(),ue==="ucs2"||ue==="ucs-2"||ue==="utf16le"||ue==="utf-16le")){if(ne.length<2||B.length<2)return-1;Ge=2,Je/=2,xe/=2,q/=2}function ke(Se,De){return Ge===1?Se[De]:Se.readUInt16BE(De*Ge)}var Pe;if(ve){var Be=-1;for(Pe=q;PeJe&&(q=Je-xe),Pe=q;Pe>=0;Pe--){for(var Te=!0,we=0;weve&&(ue=ve)):ue=ve;var Ge=B.length;ue>Ge/2&&(ue=Ge/2);for(var Je=0;Je>>0,isFinite(ue)?(ue=ue>>>0,ve===void 0&&(ve="utf8")):(ve=ue,ue=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Ge=this.length-q;if((ue===void 0||ue>Ge)&&(ue=Ge),B.length>0&&(ue<0||q<0)||q>this.length)throw new RangeError("Attempt to write outside buffer bounds");ve||(ve="utf8");for(var Je=!1;;)switch(ve){case"hex":return x(this,B,q,ue);case"utf8":case"utf-8":return R(this,B,q,ue);case"ascii":return g(this,B,q,ue);case"latin1":case"binary":return S(this,B,q,ue);case"base64":return L(this,B,q,ue);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V(this,B,q,ue);default:if(Je)throw new TypeError("Unknown encoding: "+ve);ve=(""+ve).toLowerCase(),Je=!0}},p.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(ne,B,q){return B===0&&q===ne.length?r.fromByteArray(ne):r.fromByteArray(ne.slice(B,q))}function T(ne,B,q){q=Math.min(ne.length,q);for(var ue=[],ve=B;ve239?4:Ge>223?3:Ge>191?2:1;if(ve+xe<=q){var ke,Pe,Be,Te;switch(xe){case 1:Ge<128&&(Je=Ge);break;case 2:ke=ne[ve+1],(ke&192)===128&&(Te=(Ge&31)<<6|ke&63,Te>127&&(Je=Te));break;case 3:ke=ne[ve+1],Pe=ne[ve+2],(ke&192)===128&&(Pe&192)===128&&(Te=(Ge&15)<<12|(ke&63)<<6|Pe&63,Te>2047&&(Te<55296||Te>57343)&&(Je=Te));break;case 4:ke=ne[ve+1],Pe=ne[ve+2],Be=ne[ve+3],(ke&192)===128&&(Pe&192)===128&&(Be&192)===128&&(Te=(Ge&15)<<18|(ke&63)<<12|(Pe&63)<<6|Be&63,Te>65535&&Te<1114112&&(Je=Te))}}Je===null?(Je=65533,xe=1):Je>65535&&(Je-=65536,ue.push(Je>>>10&1023|55296),Je=56320|Je&1023),ue.push(Je),ve+=xe}return U(ue)}var J=4096;function U(ne){var B=ne.length;if(B<=J)return String.fromCharCode.apply(String,ne);for(var q="",ue=0;ueue)&&(q=ue);for(var ve="",Ge=B;Geue&&(B=ue),q<0?(q+=ue,q<0&&(q=0)):q>ue&&(q=ue),qq)throw new RangeError("Trying to access beyond buffer length")}p.prototype.readUIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B+--q],Ge=1;q>0&&(Ge*=256);)ve+=this[B+--q]*Ge;return ve},p.prototype.readUInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]},p.prototype.readUInt16LE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]|this[B+1]<<8},p.prototype.readUInt16BE=function(B,q){return B=B>>>0,q||O(B,2,this.length),this[B]<<8|this[B+1]},p.prototype.readUInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),(this[B]|this[B+1]<<8|this[B+2]<<16)+this[B+3]*16777216},p.prototype.readUInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]*16777216+(this[B+1]<<16|this[B+2]<<8|this[B+3])},p.prototype.readIntLE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=this[B],Ge=1,Je=0;++Je=Ge&&(ve-=Math.pow(2,8*q)),ve},p.prototype.readIntBE=function(B,q,ue){B=B>>>0,q=q>>>0,ue||O(B,q,this.length);for(var ve=q,Ge=1,Je=this[B+--ve];ve>0&&(Ge*=256);)Je+=this[B+--ve]*Ge;return Ge*=128,Je>=Ge&&(Je-=Math.pow(2,8*q)),Je},p.prototype.readInt8=function(B,q){return B=B>>>0,q||O(B,1,this.length),this[B]&128?(255-this[B]+1)*-1:this[B]},p.prototype.readInt16LE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B]|this[B+1]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt16BE=function(B,q){B=B>>>0,q||O(B,2,this.length);var ue=this[B+1]|this[B]<<8;return ue&32768?ue|4294901760:ue},p.prototype.readInt32LE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]|this[B+1]<<8|this[B+2]<<16|this[B+3]<<24},p.prototype.readInt32BE=function(B,q){return B=B>>>0,q||O(B,4,this.length),this[B]<<24|this[B+1]<<16|this[B+2]<<8|this[B+3]},p.prototype.readFloatLE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!0,23,4)},p.prototype.readFloatBE=function(B,q){return B=B>>>0,q||O(B,4,this.length),f.read(this,B,!1,23,4)},p.prototype.readDoubleLE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!0,52,8)},p.prototype.readDoubleBE=function(B,q){return B=B>>>0,q||O(B,8,this.length),f.read(this,B,!1,52,8)};function Q(ne,B,q,ue,ve,Ge){if(!p.isBuffer(ne))throw new TypeError('"buffer" argument must be a Buffer instance');if(B>ve||Bne.length)throw new RangeError("Index out of range")}p.prototype.writeUIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=1,xe=0;for(this[q]=B&255;++xe>>0,ue=ue>>>0,!ve){var Ge=Math.pow(2,8*ue)-1;Q(this,B,q,ue,Ge,0)}var Je=ue-1,xe=1;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)this[q+Je]=B/xe&255;return q+ue},p.prototype.writeUInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,255,0),this[q]=B&255,q+1},p.prototype.writeUInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeUInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,65535,0),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeUInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q+3]=B>>>24,this[q+2]=B>>>16,this[q+1]=B>>>8,this[q]=B&255,q+4},p.prototype.writeUInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,4294967295,0),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4},p.prototype.writeIntLE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=0,xe=1,ke=0;for(this[q]=B&255;++Je>0)-ke&255;return q+ue},p.prototype.writeIntBE=function(B,q,ue,ve){if(B=+B,q=q>>>0,!ve){var Ge=Math.pow(2,8*ue-1);Q(this,B,q,ue,Ge-1,-Ge)}var Je=ue-1,xe=1,ke=0;for(this[q+Je]=B&255;--Je>=0&&(xe*=256);)B<0&&ke===0&&this[q+Je+1]!==0&&(ke=1),this[q+Je]=(B/xe>>0)-ke&255;return q+ue},p.prototype.writeInt8=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,1,127,-128),B<0&&(B=255+B+1),this[q]=B&255,q+1},p.prototype.writeInt16LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B&255,this[q+1]=B>>>8,q+2},p.prototype.writeInt16BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,2,32767,-32768),this[q]=B>>>8,this[q+1]=B&255,q+2},p.prototype.writeInt32LE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),this[q]=B&255,this[q+1]=B>>>8,this[q+2]=B>>>16,this[q+3]=B>>>24,q+4},p.prototype.writeInt32BE=function(B,q,ue){return B=+B,q=q>>>0,ue||Q(this,B,q,4,2147483647,-2147483648),B<0&&(B=4294967295+B+1),this[q]=B>>>24,this[q+1]=B>>>16,this[q+2]=B>>>8,this[q+3]=B&255,q+4};function oe(ne,B,q,ue,ve,Ge){if(q+ue>ne.length)throw new RangeError("Index out of range");if(q<0)throw new RangeError("Index out of range")}function se(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,4),f.write(ne,B,q,ue,23,4),q+4}p.prototype.writeFloatLE=function(B,q,ue){return se(this,B,q,!0,ue)},p.prototype.writeFloatBE=function(B,q,ue){return se(this,B,q,!1,ue)};function he(ne,B,q,ue,ve){return B=+B,q=q>>>0,ve||oe(ne,B,q,8),f.write(ne,B,q,ue,52,8),q+8}p.prototype.writeDoubleLE=function(B,q,ue){return he(this,B,q,!0,ue)},p.prototype.writeDoubleBE=function(B,q,ue){return he(this,B,q,!1,ue)},p.prototype.copy=function(B,q,ue,ve){if(!p.isBuffer(B))throw new TypeError("argument should be a Buffer");if(ue||(ue=0),!ve&&ve!==0&&(ve=this.length),q>=B.length&&(q=B.length),q||(q=0),ve>0&&ve=this.length)throw new RangeError("Index out of range");if(ve<0)throw new RangeError("sourceEnd out of bounds");ve>this.length&&(ve=this.length),B.length-q=0;--Je)B[Je+q]=this[Je+ue];else Uint8Array.prototype.set.call(B,this.subarray(ue,ve),q);return Ge},p.prototype.fill=function(B,q,ue,ve){if(typeof B=="string"){if(typeof q=="string"?(ve=q,q=0,ue=this.length):typeof ue=="string"&&(ve=ue,ue=this.length),ve!==void 0&&typeof ve!="string")throw new TypeError("encoding must be a string");if(typeof ve=="string"&&!p.isEncoding(ve))throw new TypeError("Unknown encoding: "+ve);if(B.length===1){var Ge=B.charCodeAt(0);(ve==="utf8"&&Ge<128||ve==="latin1")&&(B=Ge)}}else typeof B=="number"&&(B=B&255);if(q<0||this.length>>0,ue=ue===void 0?this.length:ue>>>0,B||(B=0);var Je;if(typeof B=="number")for(Je=q;Je55295&&q<57344){if(!ve){if(q>56319){(B-=3)>-1&&Ge.push(239,191,189);continue}else if(Je+1===ue){(B-=3)>-1&&Ge.push(239,191,189);continue}ve=q;continue}if(q<56320){(B-=3)>-1&&Ge.push(239,191,189),ve=q;continue}q=(ve-55296<<10|q-56320)+65536}else ve&&(B-=3)>-1&&Ge.push(239,191,189);if(ve=null,q<128){if((B-=1)<0)break;Ge.push(q)}else if(q<2048){if((B-=2)<0)break;Ge.push(q>>6|192,q&63|128)}else if(q<65536){if((B-=3)<0)break;Ge.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if((B-=4)<0)break;Ge.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw new Error("Invalid code point")}return Ge}function $(ne){for(var B=[],q=0;q>8,ve=q%256,Ge.push(ve),Ge.push(ue);return Ge}function le(ne){return r.toByteArray(re(ne))}function ee(ne,B,q,ue){for(var ve=0;ve=B.length||ve>=ne.length);++ve)B[ve+q]=ne[ve];return ve}function te(ne,B){return ne instanceof B||ne!=null&&ne.constructor!=null&&ne.constructor.name!=null&&ne.constructor.name===B.name}function be(ne){return ne!==ne}}).call(this,t("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(t,i,a){(function(l){i.exports=function(r,f){for(var v=Math.min(r.length,f.length),b=new l(v),Z=0;Zm;)if(N=y[m++],N!=N)return!0}else for(;X>m;m++)if((v||m in y)&&y[m]===Z)return v||m||0;return!v&&-1}};i.exports={includes:f(!0),indexOf:f(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(t,i,a){var l=t("../internals/function-bind-context"),o=t("../internals/indexed-object"),r=t("../internals/to-object"),f=t("../internals/to-length"),v=t("../internals/array-species-create"),b=[].push,Z=function(p){var y=p==1,X=p==2,m=p==3,N=p==4,G=p==6,d=p==5||G;return function(u,s,h,c){for(var W=r(u),M=o(W),I=l(s,h,3),w=f(M.length),C=0,x=c||v,R=y?x(u,w):X?x(u,0):void 0,g,S;w>C;C++)if((d||C in M)&&(g=M[C],S=I(g,C,W),p)){if(y)R[C]=S;else if(S)switch(p){case 3:return!0;case 5:return g;case 6:return C;case 2:b.call(R,g)}else if(N)return!1}return G?-1:m||N?N:R}};i.exports={forEach:Z(0),map:Z(1),filter:Z(2),some:Z(3),every:Z(4),find:Z(5),findIndex:Z(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/has"),f=Object.defineProperty,v={},b=function(Z){throw Z};i.exports=function(Z,p){if(r(v,Z))return v[Z];p||(p={});var y=[][Z],X=r(p,"ACCESSORS")?p.ACCESSORS:!1,m=r(p,0)?p[0]:b,N=r(p,1)?p[1]:void 0;return v[Z]=!!y&&!o(function(){if(X&&!l)return!0;var G={length:-1};X?f(G,1,{enumerable:!0,get:b}):G[1]=1,y.call(G,m,N)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/is-array"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z;return o(v)&&(Z=v.constructor,typeof Z=="function"&&(Z===Array||o(Z.prototype))?Z=void 0:l(Z)&&(Z=Z[f],Z===null&&(Z=void 0))),new(Z===void 0?Array:Z)(b===0?0:b)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(t,i,a){var l=t("../internals/an-object");i.exports=function(o,r,f,v){try{return v?r(l(f)[0],f[1]):r(f)}catch(Z){var b=o.return;throw b!==void 0&&l(b.call(o)),Z}}},{"../internals/an-object":223}],229:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("iterator"),r=!1;try{var f=0,v={next:function(){return{done:!!f++}},return:function(){r=!0}};v[o]=function(){return this},Array.from(v,function(){throw 2})}catch{}i.exports=function(b,Z){if(!Z&&!r)return!1;var p=!1;try{var y={};y[o]=function(){return{next:function(){return{done:p=!0}}}},b(y)}catch{}return p}},{"../internals/well-known-symbol":314}],230:[function(t,i,a){var l={}.toString;i.exports=function(o){return l.call(o).slice(8,-1)}},{}],231:[function(t,i,a){var l=t("../internals/to-string-tag-support"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("toStringTag"),v=o(function(){return arguments}())=="Arguments",b=function(Z,p){try{return Z[p]}catch{}};i.exports=l?o:function(Z){var p,y,X;return Z===void 0?"Undefined":Z===null?"Null":typeof(y=b(p=Object(Z),f))=="string"?y:v?o(p):(X=o(p))=="Object"&&typeof p.callee=="function"?"Arguments":X}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/own-keys"),r=t("../internals/object-get-own-property-descriptor"),f=t("../internals/object-define-property");i.exports=function(v,b){for(var Z=o(b),p=f.f,y=r.f,X=0;X=74)&&(b=o.match(/Chrome\/(\d+)/),b&&(Z=b[1]))),i.exports=Z&&+Z},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(t,i,a){i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/create-non-enumerable-property"),f=t("../internals/redefine"),v=t("../internals/set-global"),b=t("../internals/copy-constructor-properties"),Z=t("../internals/is-forced");i.exports=function(p,y){var X=p.target,m=p.global,N=p.stat,G,d,u,s,h,c;if(m?d=l:N?d=l[X]||v(X,{}):d=(l[X]||{}).prototype,d)for(u in y){if(h=y[u],p.noTargetGet?(c=o(d,u),s=c&&c.value):s=d[u],G=Z(m?u:X+(N?".":"#")+u,p.forced),!G&&s!==void 0){if(typeof h==typeof s)continue;b(h,s)}(p.sham||s&&s.sham)&&r(h,"sham",!0),f(d,u,h,p)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(t,i,a){i.exports=function(l){try{return!!l()}catch{return!0}}},{}],248:[function(t,i,a){var l=t("../internals/a-function");i.exports=function(o,r,f){if(l(o),r===void 0)return o;switch(f){case 0:return function(){return o.call(r)};case 1:return function(v){return o.call(r,v)};case 2:return function(v,b){return o.call(r,v,b)};case 3:return function(v,b,Z){return o.call(r,v,b,Z)}}return function(){return o.apply(r,arguments)}}},{"../internals/a-function":219}],249:[function(t,i,a){var l=t("../internals/path"),o=t("../internals/global"),r=function(f){return typeof f=="function"?f:void 0};i.exports=function(f,v){return arguments.length<2?r(l[f])||r(o[f]):l[f]&&l[f][v]||o[f]&&o[f][v]}},{"../internals/global":251,"../internals/path":290}],250:[function(t,i,a){var l=t("../internals/classof"),o=t("../internals/iterators"),r=t("../internals/well-known-symbol"),f=r("iterator");i.exports=function(v){if(v!=null)return v[f]||v["@@iterator"]||o[l(v)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(t,i,a){(function(l){var o=function(r){return r&&r.Math==Math&&r};i.exports=o(typeof globalThis=="object"&&globalThis)||o(typeof window=="object"&&window)||o(typeof self=="object"&&self)||o(typeof l=="object"&&l)||Function("return this")()}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(t,i,a){var l={}.hasOwnProperty;i.exports=function(o,r){return l.call(o,r)}},{}],253:[function(t,i,a){i.exports={}},{}],254:[function(t,i,a){var l=t("../internals/global");i.exports=function(o,r){var f=l.console;f&&f.error&&(arguments.length===1?f.error(o):f.error(o,r))}},{"../internals/global":251}],255:[function(t,i,a){var l=t("../internals/get-built-in");i.exports=l("document","documentElement")},{"../internals/get-built-in":249}],256:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/document-create-element");i.exports=!l&&!o(function(){return Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(t,i,a){var l=t("../internals/fails"),o=t("../internals/classof-raw"),r="".split;i.exports=l(function(){return!Object("z").propertyIsEnumerable(0)})?function(f){return o(f)=="String"?r.call(f,""):Object(f)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(t,i,a){var l=t("../internals/shared-store"),o=Function.toString;typeof l.inspectSource!="function"&&(l.inspectSource=function(r){return o.call(r)}),i.exports=l.inspectSource},{"../internals/shared-store":300}],259:[function(t,i,a){var l=t("../internals/native-weak-map"),o=t("../internals/global"),r=t("../internals/is-object"),f=t("../internals/create-non-enumerable-property"),v=t("../internals/has"),b=t("../internals/shared-key"),Z=t("../internals/hidden-keys"),p=o.WeakMap,y,X,m,N=function(W){return m(W)?X(W):y(W,{})},G=function(W){return function(M){var I;if(!r(M)||(I=X(M)).type!==W)throw TypeError("Incompatible receiver, "+W+" required");return I}};if(l){var d=new p,u=d.get,s=d.has,h=d.set;y=function(W,M){return h.call(d,W,M),M},X=function(W){return u.call(d,W)||{}},m=function(W){return s.call(d,W)}}else{var c=b("state");Z[c]=!0,y=function(W,M){return f(W,c,M),M},X=function(W){return v(W,c)?W[c]:{}},m=function(W){return v(W,c)}}i.exports={set:y,get:X,has:m,enforce:N,getterFor:G}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=t("../internals/iterators"),r=l("iterator"),f=Array.prototype;i.exports=function(v){return v!==void 0&&(o.Array===v||f[r]===v)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(t,i,a){var l=t("../internals/classof-raw");i.exports=Array.isArray||function(r){return l(r)=="Array"}},{"../internals/classof-raw":230}],262:[function(t,i,a){var l=t("../internals/fails"),o=/#|\.prototype\./,r=function(p,y){var X=v[f(p)];return X==Z?!0:X==b?!1:typeof y=="function"?l(y):!!y},f=r.normalize=function(p){return String(p).replace(o,".").toLowerCase()},v=r.data={},b=r.NATIVE="N",Z=r.POLYFILL="P";i.exports=r},{"../internals/fails":247}],263:[function(t,i,a){i.exports=function(l){return typeof l=="object"?l!==null:typeof l=="function"}},{}],264:[function(t,i,a){i.exports=!1},{}],265:[function(t,i,a){var l=t("../internals/is-object"),o=t("../internals/classof-raw"),r=t("../internals/well-known-symbol"),f=r("match");i.exports=function(v){var b;return l(v)&&((b=v[f])!==void 0?!!b:o(v)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-array-iterator-method"),r=t("../internals/to-length"),f=t("../internals/function-bind-context"),v=t("../internals/get-iterator-method"),b=t("../internals/call-with-safe-iteration-closing"),Z=function(y,X){this.stopped=y,this.result=X},p=i.exports=function(y,X,m,N,G){var d=f(X,m,N?2:1),u,s,h,c,W,M,I;if(G)u=y;else{if(s=v(y),typeof s!="function")throw TypeError("Target is not iterable");if(o(s)){for(h=0,c=r(y.length);c>h;h++)if(W=N?d(l(I=y[h])[0],I[1]):d(y[h]),W&&W instanceof Z)return W;return new Z(!1)}u=s.call(y)}for(M=u.next;!(I=M.call(u)).done;)if(W=b(u,d,I.value,N),typeof W=="object"&&W&&W instanceof Z)return W;return new Z(!1)};p.stop=function(y){return new Z(!0,y)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(t,i,a){var l=t("../internals/object-get-prototype-of"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/well-known-symbol"),v=t("../internals/is-pure"),b=f("iterator"),Z=!1,p=function(){return this},y,X,m;[].keys&&(m=[].keys(),"next"in m?(X=l(l(m)),X!==Object.prototype&&(y=X)):Z=!0),y==null&&(y={}),!v&&!r(y,b)&&o(y,b,p),i.exports={IteratorPrototype:y,BUGGY_SAFARI_ITERATORS:Z}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(t,i,a){arguments[4][253][0].apply(a,arguments)},{dup:253}],269:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/object-get-own-property-descriptor").f,r=t("../internals/classof-raw"),f=t("../internals/task").set,v=t("../internals/engine-is-ios"),b=l.MutationObserver||l.WebKitMutationObserver,Z=l.process,p=l.Promise,y=r(Z)=="process",X=o(l,"queueMicrotask"),m=X&&X.value,N,G,d,u,s,h,c,W;m||(N=function(){var M,I;for(y&&(M=Z.domain)&&M.exit();G;){I=G.fn,G=G.next;try{I()}catch(w){throw G?u():d=void 0,w}}d=void 0,M&&M.enter()},y?u=function(){Z.nextTick(N)}:b&&!v?(s=!0,h=document.createTextNode(""),new b(N).observe(h,{characterData:!0}),u=function(){h.data=s=!s}):p&&p.resolve?(c=p.resolve(void 0),W=c.then,u=function(){W.call(c,N)}):u=function(){f.call(l,N)}),i.exports=m||function(M){var I={fn:M,next:void 0};d&&(d.next=I),G||(G=I,u()),d=I}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(t,i,a){var l=t("../internals/global");i.exports=l.Promise},{"../internals/global":251}],271:[function(t,i,a){var l=t("../internals/fails");i.exports=!!Object.getOwnPropertySymbols&&!l(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/inspect-source"),r=l.WeakMap;i.exports=typeof r=="function"&&/native code/.test(o(r))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(t,i,a){var l=t("../internals/a-function"),o=function(r){var f,v;this.promise=new r(function(b,Z){if(f!==void 0||v!==void 0)throw TypeError("Bad Promise constructor");f=b,v=Z}),this.resolve=l(f),this.reject=l(v)};i.exports.f=function(r){return new o(r)}},{"../internals/a-function":219}],274:[function(t,i,a){var l=t("../internals/is-regexp");i.exports=function(o){if(l(o))throw TypeError("The method doesn't accept regular expressions");return o}},{"../internals/is-regexp":265}],275:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/fails"),r=t("../internals/object-keys"),f=t("../internals/object-get-own-property-symbols"),v=t("../internals/object-property-is-enumerable"),b=t("../internals/to-object"),Z=t("../internals/indexed-object"),p=Object.assign,y=Object.defineProperty;i.exports=!p||o(function(){if(l&&p({b:1},p(y({},"a",{enumerable:!0,get:function(){y(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var X={},m={},N=Symbol(),G="abcdefghijklmnopqrst";return X[N]=7,G.split("").forEach(function(d){m[d]=d}),p({},X)[N]!=7||r(p({},m)).join("")!=G})?function(m,N){for(var G=b(m),d=arguments.length,u=1,s=f.f,h=v.f;d>u;)for(var c=Z(arguments[u++]),W=s?r(c).concat(s(c)):r(c),M=W.length,I=0,w;M>I;)w=W[I++],(!l||h.call(c,w))&&(G[w]=c[w]);return G}:p},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/object-define-properties"),r=t("../internals/enum-bug-keys"),f=t("../internals/hidden-keys"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/shared-key"),p=">",y="<",X="prototype",m="script",N=Z("IE_PROTO"),G=function(){},d=function(W){return y+m+p+W+y+"/"+m+p},u=function(W){W.write(d("")),W.close();var M=W.parentWindow.Object;return W=null,M},s=function(){var W=b("iframe"),M="java"+m+":",I;return W.style.display="none",v.appendChild(W),W.src=String(M),I=W.contentWindow.document,I.open(),I.write(d("document.F=Object")),I.close(),I.F},h,c=function(){try{h=document.domain&&new ActiveXObject("htmlfile")}catch{}c=h?u(h):s();for(var W=r.length;W--;)delete c[X][r[W]];return c()};f[N]=!0,i.exports=Object.create||function(M,I){var w;return M!==null?(G[X]=l(M),w=new G,G[X]=null,w[N]=M):w=c(),I===void 0?w:o(w,I)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-define-property"),r=t("../internals/an-object"),f=t("../internals/object-keys");i.exports=l?Object.defineProperties:function(b,Z){r(b);for(var p=f(Z),y=p.length,X=0,m;y>X;)o.f(b,m=p[X++],Z[m]);return b}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/ie8-dom-define"),r=t("../internals/an-object"),f=t("../internals/to-primitive"),v=Object.defineProperty;a.f=l?v:function(Z,p,y){if(r(Z),p=f(p,!0),r(y),o)try{return v(Z,p,y)}catch{}if("get"in y||"set"in y)throw TypeError("Accessors not supported");return"value"in y&&(Z[p]=y.value),Z}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-property-is-enumerable"),r=t("../internals/create-property-descriptor"),f=t("../internals/to-indexed-object"),v=t("../internals/to-primitive"),b=t("../internals/has"),Z=t("../internals/ie8-dom-define"),p=Object.getOwnPropertyDescriptor;a.f=l?p:function(X,m){if(X=f(X),m=v(m,!0),Z)try{return p(X,m)}catch{}if(b(X,m))return r(!o.f.call(X,m),X[m])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/object-get-own-property-names").f,r={}.toString,f=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],v=function(b){try{return o(b)}catch{return f.slice()}};i.exports.f=function(Z){return f&&r.call(Z)=="[object Window]"?v(Z):o(l(Z))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys"),r=o.concat("length","prototype");a.f=Object.getOwnPropertyNames||function(v){return l(v,r)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(t,i,a){a.f=Object.getOwnPropertySymbols},{}],283:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-object"),r=t("../internals/shared-key"),f=t("../internals/correct-prototype-getter"),v=r("IE_PROTO"),b=Object.prototype;i.exports=f?Object.getPrototypeOf:function(Z){return Z=o(Z),l(Z,v)?Z[v]:typeof Z.constructor=="function"&&Z instanceof Z.constructor?Z.constructor.prototype:Z instanceof Object?b:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(t,i,a){var l=t("../internals/has"),o=t("../internals/to-indexed-object"),r=t("../internals/array-includes").indexOf,f=t("../internals/hidden-keys");i.exports=function(v,b){var Z=o(v),p=0,y=[],X;for(X in Z)!l(f,X)&&l(Z,X)&&y.push(X);for(;b.length>p;)l(Z,X=b[p++])&&(~r(y,X)||y.push(X));return y}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(t,i,a){var l=t("../internals/object-keys-internal"),o=t("../internals/enum-bug-keys");i.exports=Object.keys||function(f){return l(f,o)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(t,i,a){var l={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!l.call({1:2},1);a.f=r?function(v){var b=o(this,v);return!!b&&b.enumerable}:l},{}],287:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-possible-prototype");i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var r=!1,f={},v;try{v=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,v.call(f,[]),r=f instanceof Array}catch{}return function(Z,p){return l(Z),o(p),r?v.call(Z,p):Z.__proto__=p,Z}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(t,i,a){var l=t("../internals/descriptors"),o=t("../internals/object-keys"),r=t("../internals/to-indexed-object"),f=t("../internals/object-property-is-enumerable").f,v=function(b){return function(Z){for(var p=r(Z),y=o(p),X=y.length,m=0,N=[],G;X>m;)G=y[m++],(!l||f.call(p,G))&&N.push(b?[G,p[G]]:p[G]);return N}};i.exports={entries:v(!0),values:v(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-get-own-property-names"),r=t("../internals/object-get-own-property-symbols"),f=t("../internals/an-object");i.exports=l("Reflect","ownKeys")||function(b){var Z=o.f(f(b)),p=r.f;return p?Z.concat(p(b)):Z}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(t,i,a){var l=t("../internals/global");i.exports=l},{"../internals/global":251}],291:[function(t,i,a){i.exports=function(l){try{return{error:!1,value:l()}}catch(o){return{error:!0,value:o}}}},{}],292:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/is-object"),r=t("../internals/new-promise-capability");i.exports=function(f,v){if(l(f),o(v)&&v.constructor===f)return v;var b=r.f(f),Z=b.resolve;return Z(v),b.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(t,i,a){var l=t("../internals/redefine");i.exports=function(o,r,f){for(var v in r)l(o,v,r[v],f);return o}},{"../internals/redefine":294}],294:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property"),r=t("../internals/has"),f=t("../internals/set-global"),v=t("../internals/inspect-source"),b=t("../internals/internal-state"),Z=b.get,p=b.enforce,y=String(String).split("String");(i.exports=function(X,m,N,G){var d=G?!!G.unsafe:!1,u=G?!!G.enumerable:!1,s=G?!!G.noTargetGet:!1;if(typeof N=="function"&&(typeof m=="string"&&!r(N,"name")&&o(N,"name",m),p(N).source=y.join(typeof m=="string"?m:"")),X===l){u?X[m]=N:f(m,N);return}else d?!s&&X[m]&&(u=!0):delete X[m];u?X[m]=N:o(X,m,N)})(Function.prototype,"toString",function(){return typeof this=="function"&&Z(this).source||v(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(t,i,a){i.exports=function(l){if(l==null)throw TypeError("Can't call method on "+l);return l}},{}],296:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/create-non-enumerable-property");i.exports=function(r,f){try{o(l,r,f)}catch{l[r]=f}return f}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(t,i,a){var l=t("../internals/get-built-in"),o=t("../internals/object-define-property"),r=t("../internals/well-known-symbol"),f=t("../internals/descriptors"),v=r("species");i.exports=function(b){var Z=l(b),p=o.f;f&&Z&&!Z[v]&&p(Z,v,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(t,i,a){var l=t("../internals/object-define-property").f,o=t("../internals/has"),r=t("../internals/well-known-symbol"),f=r("toStringTag");i.exports=function(v,b,Z){v&&!o(v=Z?v:v.prototype,f)&&l(v,f,{configurable:!0,value:b})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(t,i,a){var l=t("../internals/shared"),o=t("../internals/uid"),r=l("keys");i.exports=function(f){return r[f]||(r[f]=o(f))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/set-global"),r="__core-js_shared__",f=l[r]||o(r,{});i.exports=f},{"../internals/global":251,"../internals/set-global":296}],301:[function(t,i,a){var l=t("../internals/is-pure"),o=t("../internals/shared-store");(i.exports=function(r,f){return o[r]||(o[r]=f!==void 0?f:{})})("versions",[]).push({version:"3.6.5",mode:l?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(t,i,a){var l=t("../internals/an-object"),o=t("../internals/a-function"),r=t("../internals/well-known-symbol"),f=r("species");i.exports=function(v,b){var Z=l(v).constructor,p;return Z===void 0||(p=l(Z)[f])==null?b:o(p)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/fails"),r=t("../internals/classof-raw"),f=t("../internals/function-bind-context"),v=t("../internals/html"),b=t("../internals/document-create-element"),Z=t("../internals/engine-is-ios"),p=l.location,y=l.setImmediate,X=l.clearImmediate,m=l.process,N=l.MessageChannel,G=l.Dispatch,d=0,u={},s="onreadystatechange",h,c,W,M=function(x){if(u.hasOwnProperty(x)){var R=u[x];delete u[x],R()}},I=function(x){return function(){M(x)}},w=function(x){M(x.data)},C=function(x){l.postMessage(x+"",p.protocol+"//"+p.host)};(!y||!X)&&(y=function(R){for(var g=[],S=1;arguments.length>S;)g.push(arguments[S++]);return u[++d]=function(){(typeof R=="function"?R:Function(R)).apply(void 0,g)},h(d),d},X=function(R){delete u[R]},r(m)=="process"?h=function(x){m.nextTick(I(x))}:G&&G.now?h=function(x){G.now(I(x))}:N&&!Z?(c=new N,W=c.port2,c.port1.onmessage=w,h=f(W.postMessage,W,1)):l.addEventListener&&typeof postMessage=="function"&&!l.importScripts&&!o(C)&&p.protocol!=="file:"?(h=C,l.addEventListener("message",w,!1)):s in b("script")?h=function(x){v.appendChild(b("script"))[s]=function(){v.removeChild(this),M(x)}}:h=function(x){setTimeout(I(x),0)}),i.exports={set:y,clear:X}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.max,r=Math.min;i.exports=function(f,v){var b=l(f);return b<0?o(b+v,0):r(b,v)}},{"../internals/to-integer":306}],305:[function(t,i,a){var l=t("../internals/indexed-object"),o=t("../internals/require-object-coercible");i.exports=function(r){return l(o(r))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(t,i,a){var l=Math.ceil,o=Math.floor;i.exports=function(r){return isNaN(r=+r)?0:(r>0?o:l)(r)}},{}],307:[function(t,i,a){var l=t("../internals/to-integer"),o=Math.min;i.exports=function(r){return r>0?o(l(r),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(t,i,a){var l=t("../internals/require-object-coercible");i.exports=function(o){return Object(l(o))}},{"../internals/require-object-coercible":295}],309:[function(t,i,a){var l=t("../internals/is-object");i.exports=function(o,r){if(!l(o))return o;var f,v;if(r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o))||typeof(f=o.valueOf)=="function"&&!l(v=f.call(o))||!r&&typeof(f=o.toString)=="function"&&!l(v=f.call(o)))return v;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(t,i,a){var l=t("../internals/well-known-symbol"),o=l("toStringTag"),r={};r[o]="z",i.exports=String(r)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(t,i,a){var l=0,o=Math.random();i.exports=function(r){return"Symbol("+String(r===void 0?"":r)+")_"+(++l+o).toString(36)}},{}],312:[function(t,i,a){var l=t("../internals/native-symbol");i.exports=l&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(t,i,a){var l=t("../internals/well-known-symbol");a.f=l},{"../internals/well-known-symbol":314}],314:[function(t,i,a){var l=t("../internals/global"),o=t("../internals/shared"),r=t("../internals/has"),f=t("../internals/uid"),v=t("../internals/native-symbol"),b=t("../internals/use-symbol-as-uid"),Z=o("wks"),p=l.Symbol,y=b?p:p&&p.withoutSetter||f;i.exports=function(X){return r(Z,X)||(v&&r(p,X)?Z[X]=p[X]:Z[X]=y("Symbol."+X)),Z[X]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").findIndex,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="findIndex",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{findIndex:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-iteration").find,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v="find",b=!0,Z=f(v);v in[]&&Array(1)[v](function(){b=!1}),l({target:"Array",proto:!0,forced:b||!Z},{find:function(y){return o(this,y,arguments.length>1?arguments[1]:void 0)}}),r(v)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/array-includes").includes,r=t("../internals/add-to-unscopables"),f=t("../internals/array-method-uses-to-length"),v=f("indexOf",{ACCESSORS:!0,1:0});l({target:"Array",proto:!0,forced:!v},{includes:function(Z){return o(this,Z,arguments.length>1?arguments[1]:void 0)}}),r("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(t,i,a){var l=t("../internals/to-indexed-object"),o=t("../internals/add-to-unscopables"),r=t("../internals/iterators"),f=t("../internals/internal-state"),v=t("../internals/define-iterator"),b="Array Iterator",Z=f.set,p=f.getterFor(b);i.exports=v(Array,"Array",function(y,X){Z(this,{type:b,target:l(y),index:0,kind:X})},function(){var y=p(this),X=y.target,m=y.kind,N=y.index++;return!X||N>=X.length?(y.target=void 0,{value:void 0,done:!0}):m=="keys"?{value:N,done:!1}:m=="values"?{value:X[N],done:!1}:{value:[N,X[N]],done:!1}},"values"),r.Arguments=r.Array,o("keys"),o("values"),o("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(t,i,a){var l=t("../internals/export");l({target:"Number",stat:!0},{isNaN:function(r){return r!=r}})},{"../internals/export":246}],320:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-assign");l({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-object"),r=t("../internals/object-keys"),f=t("../internals/fails"),v=f(function(){r(1)});l({target:"Object",stat:!0,forced:v},{keys:function(Z){return r(o(Z))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/object-to-array").values;l({target:"Object",stat:!0},{values:function(f){return o(f)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/is-pure"),r=t("../internals/global"),f=t("../internals/get-built-in"),v=t("../internals/native-promise-constructor"),b=t("../internals/redefine"),Z=t("../internals/redefine-all"),p=t("../internals/set-to-string-tag"),y=t("../internals/set-species"),X=t("../internals/is-object"),m=t("../internals/a-function"),N=t("../internals/an-instance"),G=t("../internals/classof-raw"),d=t("../internals/inspect-source"),u=t("../internals/iterate"),s=t("../internals/check-correctness-of-iteration"),h=t("../internals/species-constructor"),c=t("../internals/task").set,W=t("../internals/microtask"),M=t("../internals/promise-resolve"),I=t("../internals/host-report-errors"),w=t("../internals/new-promise-capability"),C=t("../internals/perform"),x=t("../internals/internal-state"),R=t("../internals/is-forced"),g=t("../internals/well-known-symbol"),S=t("../internals/engine-v8-version"),L=g("species"),V="Promise",Y=x.get,T=x.set,J=x.getterFor(V),U=v,K=r.TypeError,H=r.document,k=r.process,F=f("fetch"),O=w.f,Q=O,oe=G(k)=="process",se=!!(H&&H.createEvent&&r.dispatchEvent),he="unhandledrejection",pe="rejectionhandled",re=0,_=1,E=2,$=1,ae=2,le,ee,te,be,ne=R(V,function(){var Te=d(U)!==String(U);if(!Te&&(S===66||!oe&&typeof PromiseRejectionEvent!="function")||o&&!U.prototype.finally)return!0;if(S>=51&&/native code/.test(U))return!1;var we=U.resolve(1),Se=function(me){me(function(){},function(){})},De=we.constructor={};return De[L]=Se,!(we.then(function(){})instanceof Se)}),B=ne||!s(function(Te){U.all(Te).catch(function(){})}),q=function(Te){var we;return X(Te)&&typeof(we=Te.then)=="function"?we:!1},ue=function(Te,we,Se){if(!we.notified){we.notified=!0;var De=we.reactions;W(function(){for(var me=we.value,Ve=we.state==_,Me=0;De.length>Me;){var Ie=De[Me++],Ze=Ve?Ie.ok:Ie.fail,Ce=Ie.resolve,ye=Ie.reject,Ue=Ie.domain,qe,ie,Oe;try{Ze?(Ve||(we.rejection===ae&&xe(Te,we),we.rejection=$),Ze===!0?qe=me:(Ue&&Ue.enter(),qe=Ze(me),Ue&&(Ue.exit(),Oe=!0)),qe===Ie.promise?ye(K("Promise-chain cycle")):(ie=q(qe))?ie.call(qe,Ce,ye):Ce(qe)):ye(me)}catch(Ke){Ue&&!Oe&&Ue.exit(),ye(Ke)}}we.reactions=[],we.notified=!1,Se&&!we.rejection&&Ge(Te,we)})}},ve=function(Te,we,Se){var De,me;se?(De=H.createEvent("Event"),De.promise=we,De.reason=Se,De.initEvent(Te,!1,!0),r.dispatchEvent(De)):De={promise:we,reason:Se},(me=r["on"+Te])?me(De):Te===he&&I("Unhandled promise rejection",Se)},Ge=function(Te,we){c.call(r,function(){var Se=we.value,De=Je(we),me;if(De&&(me=C(function(){oe?k.emit("unhandledRejection",Se,Te):ve(he,Te,Se)}),we.rejection=oe||Je(we)?ae:$,me.error))throw me.value})},Je=function(Te){return Te.rejection!==$&&!Te.parent},xe=function(Te,we){c.call(r,function(){oe?k.emit("rejectionHandled",Te):ve(pe,Te,we.value)})},ke=function(Te,we,Se,De){return function(me){Te(we,Se,me,De)}},Pe=function(Te,we,Se,De){we.done||(we.done=!0,De&&(we=De),we.value=Se,we.state=E,ue(Te,we,!0))},Be=function(Te,we,Se,De){if(!we.done){we.done=!0,De&&(we=De);try{if(Te===Se)throw K("Promise can't be resolved itself");var me=q(Se);me?W(function(){var Ve={done:!1};try{me.call(Se,ke(Be,Te,Ve,we),ke(Pe,Te,Ve,we))}catch(Me){Pe(Te,Ve,Me,we)}}):(we.value=Se,we.state=_,ue(Te,we,!1))}catch(Ve){Pe(Te,{done:!1},Ve,we)}}};ne&&(U=function(we){N(this,U,V),m(we),le.call(this);var Se=Y(this);try{we(ke(Be,this,Se),ke(Pe,this,Se))}catch(De){Pe(this,Se,De)}},le=function(we){T(this,{type:V,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:re,value:void 0})},le.prototype=Z(U.prototype,{then:function(we,Se){var De=J(this),me=O(h(this,U));return me.ok=typeof we=="function"?we:!0,me.fail=typeof Se=="function"&&Se,me.domain=oe?k.domain:void 0,De.parent=!0,De.reactions.push(me),De.state!=re&&ue(this,De,!1),me.promise},catch:function(Te){return this.then(void 0,Te)}}),ee=function(){var Te=new le,we=Y(Te);this.promise=Te,this.resolve=ke(Be,Te,we),this.reject=ke(Pe,Te,we)},w.f=O=function(Te){return Te===U||Te===te?new ee(Te):Q(Te)},!o&&typeof v=="function"&&(be=v.prototype.then,b(v.prototype,"then",function(we,Se){var De=this;return new U(function(me,Ve){be.call(De,me,Ve)}).then(we,Se)},{unsafe:!0}),typeof F=="function"&&l({global:!0,enumerable:!0,forced:!0},{fetch:function(we){return M(U,F.apply(r,arguments))}}))),l({global:!0,wrap:!0,forced:ne},{Promise:U}),p(U,V,!1,!0),y(V),te=f(V),l({target:V,stat:!0,forced:ne},{reject:function(we){var Se=O(this);return Se.reject.call(void 0,we),Se.promise}}),l({target:V,stat:!0,forced:o||ne},{resolve:function(we){return M(o&&this===te?U:this,we)}}),l({target:V,stat:!0,forced:B},{all:function(we){var Se=this,De=O(Se),me=De.resolve,Ve=De.reject,Me=C(function(){var Ie=m(Se.resolve),Ze=[],Ce=0,ye=1;u(we,function(Ue){var qe=Ce++,ie=!1;Ze.push(void 0),ye++,Ie.call(Se,Ue).then(function(Oe){ie||(ie=!0,Ze[qe]=Oe,--ye||me(Ze))},Ve)}),--ye||me(Ze)});return Me.error&&Ve(Me.value),De.promise},race:function(we){var Se=this,De=O(Se),me=De.reject,Ve=C(function(){var Me=m(Se.resolve);u(we,function(Ie){Me.call(Se,Ie).then(De.resolve,me)})});return Ve.error&&me(Ve.value),De.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/to-absolute-index"),r=String.fromCharCode,f=String.fromCodePoint,v=!!f&&f.length!=1;l({target:"String",stat:!0,forced:v},{fromCodePoint:function(Z){for(var p=[],y=arguments.length,X=0,m;y>X;){if(m=+arguments[X++],o(m,1114111)!==m)throw RangeError(m+" is not a valid code point");p.push(m<65536?r(m):r(((m-=65536)>>10)+55296,m%1024+56320))}return p.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/not-a-regexp"),r=t("../internals/require-object-coercible"),f=t("../internals/correct-is-regexp-logic");l({target:"String",proto:!0,forced:!f("includes")},{includes:function(b){return!!~String(r(this)).indexOf(o(b),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(t,i,a){var l=t("../internals/define-well-known-symbol");l("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(t,i,a){var l=t("../internals/export"),o=t("../internals/global"),r=t("../internals/get-built-in"),f=t("../internals/is-pure"),v=t("../internals/descriptors"),b=t("../internals/native-symbol"),Z=t("../internals/use-symbol-as-uid"),p=t("../internals/fails"),y=t("../internals/has"),X=t("../internals/is-array"),m=t("../internals/is-object"),N=t("../internals/an-object"),G=t("../internals/to-object"),d=t("../internals/to-indexed-object"),u=t("../internals/to-primitive"),s=t("../internals/create-property-descriptor"),h=t("../internals/object-create"),c=t("../internals/object-keys"),W=t("../internals/object-get-own-property-names"),M=t("../internals/object-get-own-property-names-external"),I=t("../internals/object-get-own-property-symbols"),w=t("../internals/object-get-own-property-descriptor"),C=t("../internals/object-define-property"),x=t("../internals/object-property-is-enumerable"),R=t("../internals/create-non-enumerable-property"),g=t("../internals/redefine"),S=t("../internals/shared"),L=t("../internals/shared-key"),V=t("../internals/hidden-keys"),Y=t("../internals/uid"),T=t("../internals/well-known-symbol"),J=t("../internals/well-known-symbol-wrapped"),U=t("../internals/define-well-known-symbol"),K=t("../internals/set-to-string-tag"),H=t("../internals/internal-state"),k=t("../internals/array-iteration").forEach,F=L("hidden"),O="Symbol",Q="prototype",oe=T("toPrimitive"),se=H.set,he=H.getterFor(O),pe=Object[Q],re=o.Symbol,_=r("JSON","stringify"),E=w.f,$=C.f,ae=M.f,le=x.f,ee=S("symbols"),te=S("op-symbols"),be=S("string-to-symbol-registry"),ne=S("symbol-to-string-registry"),B=S("wks"),q=o.QObject,ue=!q||!q[Q]||!q[Q].findChild,ve=v&&p(function(){return h($({},"a",{get:function(){return $(this,"a",{value:7}).a}})).a!=7})?function(me,Ve,Me){var Ie=E(pe,Ve);Ie&&delete pe[Ve],$(me,Ve,Me),Ie&&me!==pe&&$(pe,Ve,Ie)}:$,Ge=function(me,Ve){var Me=ee[me]=h(re[Q]);return se(Me,{type:O,tag:me,description:Ve}),v||(Me.description=Ve),Me},Je=Z?function(me){return typeof me=="symbol"}:function(me){return Object(me)instanceof re},xe=function(Ve,Me,Ie){Ve===pe&&xe(te,Me,Ie),N(Ve);var Ze=u(Me,!0);return N(Ie),y(ee,Ze)?(Ie.enumerable?(y(Ve,F)&&Ve[F][Ze]&&(Ve[F][Ze]=!1),Ie=h(Ie,{enumerable:s(0,!1)})):(y(Ve,F)||$(Ve,F,s(1,{})),Ve[F][Ze]=!0),ve(Ve,Ze,Ie)):$(Ve,Ze,Ie)},ke=function(Ve,Me){N(Ve);var Ie=d(Me),Ze=c(Ie).concat(Se(Ie));return k(Ze,function(Ce){(!v||Be.call(Ie,Ce))&&xe(Ve,Ce,Ie[Ce])}),Ve},Pe=function(Ve,Me){return Me===void 0?h(Ve):ke(h(Ve),Me)},Be=function(Ve){var Me=u(Ve,!0),Ie=le.call(this,Me);return this===pe&&y(ee,Me)&&!y(te,Me)?!1:Ie||!y(this,Me)||!y(ee,Me)||y(this,F)&&this[F][Me]?Ie:!0},Te=function(Ve,Me){var Ie=d(Ve),Ze=u(Me,!0);if(!(Ie===pe&&y(ee,Ze)&&!y(te,Ze))){var Ce=E(Ie,Ze);return Ce&&y(ee,Ze)&&!(y(Ie,F)&&Ie[F][Ze])&&(Ce.enumerable=!0),Ce}},we=function(Ve){var Me=ae(d(Ve)),Ie=[];return k(Me,function(Ze){!y(ee,Ze)&&!y(V,Ze)&&Ie.push(Ze)}),Ie},Se=function(Ve){var Me=Ve===pe,Ie=ae(Me?te:d(Ve)),Ze=[];return k(Ie,function(Ce){y(ee,Ce)&&(!Me||y(pe,Ce))&&Ze.push(ee[Ce])}),Ze};if(b||(re=function(){if(this instanceof re)throw TypeError("Symbol is not a constructor");var Ve=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),Me=Y(Ve),Ie=function(Ze){this===pe&&Ie.call(te,Ze),y(this,F)&&y(this[F],Me)&&(this[F][Me]=!1),ve(this,Me,s(1,Ze))};return v&&ue&&ve(pe,Me,{configurable:!0,set:Ie}),Ge(Me,Ve)},g(re[Q],"toString",function(){return he(this).tag}),g(re,"withoutSetter",function(me){return Ge(Y(me),me)}),x.f=Be,C.f=xe,w.f=Te,W.f=M.f=we,I.f=Se,J.f=function(me){return Ge(T(me),me)},v&&($(re[Q],"description",{configurable:!0,get:function(){return he(this).description}}),f||g(pe,"propertyIsEnumerable",Be,{unsafe:!0}))),l({global:!0,wrap:!0,forced:!b,sham:!b},{Symbol:re}),k(c(B),function(me){U(me)}),l({target:O,stat:!0,forced:!b},{for:function(me){var Ve=String(me);if(y(be,Ve))return be[Ve];var Me=re(Ve);return be[Ve]=Me,ne[Me]=Ve,Me},keyFor:function(Ve){if(!Je(Ve))throw TypeError(Ve+" is not a symbol");if(y(ne,Ve))return ne[Ve]},useSetter:function(){ue=!0},useSimple:function(){ue=!1}}),l({target:"Object",stat:!0,forced:!b,sham:!v},{create:Pe,defineProperty:xe,defineProperties:ke,getOwnPropertyDescriptor:Te}),l({target:"Object",stat:!0,forced:!b},{getOwnPropertyNames:we,getOwnPropertySymbols:Se}),l({target:"Object",stat:!0,forced:p(function(){I.f(1)})},{getOwnPropertySymbols:function(Ve){return I.f(G(Ve))}}),_){var De=!b||p(function(){var me=re();return _([me])!="[null]"||_({a:me})!="{}"||_(Object(me))!="{}"});l({target:"JSON",stat:!0,forced:De},{stringify:function(Ve,Me,Ie){for(var Ze=[Ve],Ce=1,ye;arguments.length>Ce;)Ze.push(arguments[Ce++]);if(ye=Me,!(!m(Me)&&Ve===void 0||Je(Ve)))return X(Me)||(Me=function(Ue,qe){if(typeof ye=="function"&&(qe=ye.call(this,Ue,qe)),!Je(qe))return qe}),Ze[1]=Me,_.apply(null,Ze)}})}re[Q][oe]||R(re[Q],oe,re[Q].valueOf),K(re,O),V[F]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(t,i,a){(function(l){function o(c){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(M){return typeof M}:o=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},o(c)}function r(c){return Array.isArray?Array.isArray(c):h(c)==="[object Array]"}a.isArray=r;function f(c){return typeof c=="boolean"}a.isBoolean=f;function v(c){return c===null}a.isNull=v;function b(c){return c==null}a.isNullOrUndefined=b;function Z(c){return typeof c=="number"}a.isNumber=Z;function p(c){return typeof c=="string"}a.isString=p;function y(c){return o(c)==="symbol"}a.isSymbol=y;function X(c){return c===void 0}a.isUndefined=X;function m(c){return h(c)==="[object RegExp]"}a.isRegExp=m;function N(c){return o(c)==="object"&&c!==null}a.isObject=N;function G(c){return h(c)==="[object Date]"}a.isDate=G;function d(c){return h(c)==="[object Error]"||c instanceof Error}a.isError=d;function u(c){return typeof c=="function"}a.isFunction=u;function s(c){return c===null||typeof c=="boolean"||typeof c=="number"||typeof c=="string"||o(c)==="symbol"||typeof c>"u"}a.isPrimitive=s,a.isBuffer=l.isBuffer;function h(c){return Object.prototype.toString.call(c)}}).call(this,{isBuffer:t("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(t,i,a){(function(l){var o=t("elliptic"),r=t("bn.js");i.exports=function(p){return new v(p)};var f={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};f.p224=f.secp224r1,f.p256=f.secp256r1=f.prime256v1,f.p192=f.secp192r1=f.prime192v1,f.p384=f.secp384r1,f.p521=f.secp521r1;function v(Z){this.curveType=f[Z],this.curveType||(this.curveType={name:Z}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}v.prototype.generateKeys=function(Z,p){return this.keys=this.curve.genKeyPair(),this.getPublicKey(Z,p)},v.prototype.computeSecret=function(Z,p,y){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var X=this.curve.keyFromPublic(Z).getPublic(),m=X.mul(this.keys.getPrivate()).getX();return b(m,y,this.curveType.byteLength)},v.prototype.getPublicKey=function(Z,p){var y=this.keys.getPublic(p==="compressed",!0);return p==="hybrid"&&(y[y.length-1]%2?y[0]=7:y[0]=6),b(y,Z)},v.prototype.getPrivateKey=function(Z){return b(this.keys.getPrivate(),Z)},v.prototype.setPublicKey=function(Z,p){return p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p)),this.keys._importPublic(Z),this},v.prototype.setPrivateKey=function(Z,p){p=p||"utf8",l.isBuffer(Z)||(Z=new l(Z,p));var y=new r(Z);return y=y.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(y),this};function b(Z,p,y){Array.isArray(Z)||(Z=Z.toArray());var X=new l(Z);if(y&&X.lengthN){var G=X==="rmd160"?new b:Z(X);m=G.update(m).digest()}else m.lengthv?p=Z(p):p.length"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs=r()})(void 0,function(){var o="millisecond",r="second",f="minute",v="hour",b="day",Z="week",p="month",y="quarter",X="year",m="date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,G=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(g,S,L){var V=String(g);return!V||V.length>=S?g:""+Array(S+1-V.length).join(L)+g},u={s:d,z:function(g){var S=-g.utcOffset(),L=Math.abs(S),V=Math.floor(L/60),Y=L%60;return(S<=0?"+":"-")+d(V,2,"0")+":"+d(Y,2,"0")},m:function R(g,S){if(g.date()"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_customParseFormat=r()})(void 0,function(){var o,r=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,f=/\d\d/,v=/\d\d?/,b=/\d*[^\s\d-:/()]+/,Z=function(G){return function(d){this[G]=+d}},p=[/[+-]\d\d:?\d\d/,function(N){var G,d;(this.zone||(this.zone={})).offset=(G=N.match(/([+-]|\d\d)/g),(d=60*G[1]+ +G[2])===0?0:G[0]==="+"?-d:d)}],y=function(G){var d=o[G];return d&&(d.indexOf?d:d.s.concat(d.f))},X={A:[/[AP]M/,function(N){this.afternoon=N==="PM"}],a:[/[ap]m/,function(N){this.afternoon=N==="pm"}],S:[/\d/,function(N){this.milliseconds=100*+N}],SS:[f,function(N){this.milliseconds=10*+N}],SSS:[/\d{3}/,function(N){this.milliseconds=+N}],s:[v,Z("seconds")],ss:[v,Z("seconds")],m:[v,Z("minutes")],mm:[v,Z("minutes")],H:[v,Z("hours")],h:[v,Z("hours")],HH:[v,Z("hours")],hh:[v,Z("hours")],D:[v,Z("day")],DD:[f,Z("day")],Do:[b,function(N){var G=o.ordinal,d=N.match(/\d+/);if(this.day=d[0],G)for(var u=1;u<=31;u+=1)G(u).replace(/\[|\]/g,"")===N&&(this.day=u)}],M:[v,Z("month")],MM:[f,Z("month")],MMM:[b,function(N){var G=y("months"),d=(y("monthsShort")||G.map(function(u){return u.substr(0,3)})).indexOf(N)+1;if(d<1)throw new Error;this.month=d%12||d}],MMMM:[b,function(N){var G=y("months").indexOf(N)+1;if(G<1)throw new Error;this.month=G%12||G}],Y:[/[+-]?\d+/,Z("year")],YY:[f,function(N){N=+N,this.year=N+(N>68?1900:2e3)}],YYYY:[/\d{4}/,Z("year")],Z:p,ZZ:p},m=function(G,d,u){try{var s=function(U){for(var K=U.match(r),H=K.length,k=0;k0?c-1:R.getMonth());var V=M||0,Y=I||0,T=w||0,J=C||0;return x?new Date(Date.UTC(S,L,g,V,Y,T,J+60*x.offset*1e3)):u?new Date(Date.UTC(S,L,g,V,Y,T,J)):new Date(S,L,g,V,Y,T,J)}catch{return new Date("")}};return function(N,G,d){var u=G.prototype,s=u.parse;u.parse=function(h){var c=h.date,W=h.utc,M=h.args;this.$u=W;var I=M[1];if(typeof I=="string"){var w=M[2]===!0,C=M[3]===!0,x=w||C,R=M[2];C&&(R=M[2]),w||(o=R?d.Ls[R]:this.$locale()),this.$d=m(c,I,W),this.init(),R&&R!==!0&&(this.$L=this.locale(R).$L),x&&c!==this.format(I)&&(this.$d=new Date(""))}else if(I instanceof Array)for(var g=I.length,S=1;S<=g;S+=1){M[1]=I[S-1];var L=d.apply(this,M);if(L.isValid()){this.$d=L.$d,this.$L=L.$L,this.init();break}S===g&&(this.$d=new Date(""))}else s.call(this,h)}}})},{}],338:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}(function(o,r){(typeof a>"u"?"undefined":l(a))=="object"&&typeof i<"u"?i.exports=r():o.dayjs_plugin_utc=r()})(void 0,function(){return function(o,r,f){var v=new Date().getTimezoneOffset(),b=r.prototype;f.utc=function(G){return new r({date:G,utc:!0,args:arguments})},b.utc=function(){return f(this.toDate(),{locale:this.$L,utc:!0})},b.local=function(){return f(this.toDate(),{locale:this.$L,utc:!1})};var Z=b.parse;b.parse=function(G){G.utc&&(this.$u=!0),this.$utils().u(G.$offset)||(this.$offset=G.$offset),Z.call(this,G)};var p=b.init;b.init=function(){if(this.$u){var G=this.$d;this.$y=G.getUTCFullYear(),this.$M=G.getUTCMonth(),this.$D=G.getUTCDate(),this.$W=G.getUTCDay(),this.$H=G.getUTCHours(),this.$m=G.getUTCMinutes(),this.$s=G.getUTCSeconds(),this.$ms=G.getUTCMilliseconds()}else p.call(this)};var y=b.utcOffset;b.utcOffset=function(G,d){var u=this.$utils().u;if(u(G))return this.$u?0:u(this.$offset)?y.call(this):this.$offset;var s=Math.abs(G)<=16?60*G:G,h=this;return d?(h.$offset=s,h.$u=G===0,h):(G!==0?(h=this.local().add(s+v,"minute")).$offset=s:h=this.utc(),h)};var X=b.format;b.format=function(G){var d=G||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return X.call(this,d)},b.valueOf=function(){var G=this.$utils().u(this.$offset)?0:this.$offset+v;return this.$d.valueOf()-6e4*G},b.isUTC=function(){return!!this.$u},b.toISOString=function(){return this.toDate().toISOString()},b.toString=function(){return this.toDate().toUTCString()};var m=b.toDate;b.toDate=function(G){return G==="s"&&this.$offset?f(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():m.call(this)};var N=b.diff;b.diff=function(G,d,u){var s=this.local(),h=f(G).local();return N.call(s,h,d,u)}}})},{}],339:[function(t,i,a){a.utils=t("./des/utils"),a.Cipher=t("./des/cipher"),a.DES=t("./des/des"),a.CBC=t("./des/cbc"),a.EDE=t("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits"),r={};function f(b){l.equal(b.length,8,"Invalid IV length"),this.iv=new Array(8);for(var Z=0;Z0;Z--)v+=this._buffer(f,v),b+=this._flushBuffer(p,b);return v+=this._buffer(f,v),p},o.prototype.final=function(f){var v;f&&(v=this.update(f));var b;return this.type==="encrypt"?b=this._finalEncrypt():b=this._finalDecrypt(),v?v.concat(b):b},o.prototype._pad=function(f,v){if(v===0)return!1;for(;v>>1];m=r.r28shl(m,d),N=r.r28shl(N,d),r.pc2(m,N,y.keys,G)}},b.prototype._update=function(y,X,m,N){var G=this._desState,d=r.readUInt32BE(y,X),u=r.readUInt32BE(y,X+4);r.ip(d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],this.type==="encrypt"?this._encrypt(G,d,u,G.tmp,0):this._decrypt(G,d,u,G.tmp,0),d=G.tmp[0],u=G.tmp[1],r.writeUInt32BE(m,d,N),r.writeUInt32BE(m,u,N+4)},b.prototype._pad=function(y,X){for(var m=y.length-X,N=X;N>>0,d=I}r.rip(u,d,N,G)},b.prototype._decrypt=function(y,X,m,N,G){for(var d=m,u=X,s=y.keys.length-2;s>=0;s-=2){var h=y.keys[s],c=y.keys[s+1];r.expand(d,y.tmp,0),h^=y.tmp[0],c^=y.tmp[1];var W=r.substitute(h,c),M=r.permute(W),I=d;d=(u^M)>>>0,u=I}r.rip(d,u,N,G)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits"),r=t("./cipher"),f=t("./des");function v(Z,p){l.equal(p.length,24,"Invalid key length");var y=p.slice(0,8),X=p.slice(8,16),m=p.slice(16,24);Z==="encrypt"?this.ciphers=[f.create({type:"encrypt",key:y}),f.create({type:"decrypt",key:X}),f.create({type:"encrypt",key:m})]:this.ciphers=[f.create({type:"decrypt",key:m}),f.create({type:"encrypt",key:X}),f.create({type:"decrypt",key:y})]}function b(Z){r.call(this,Z);var p=new v(this.type,this.options.key);this._edeState=p}o(b,r),i.exports=b,b.create=function(p){return new b(p)},b.prototype._update=function(p,y,X,m){var N=this._edeState;N.ciphers[0]._update(p,y,X,m),N.ciphers[1]._update(X,m,X,m),N.ciphers[2]._update(X,m,X,m)},b.prototype._pad=f.prototype._pad,b.prototype._unpad=f.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(t,i,a){a.readUInt32BE=function(v,b){var Z=v[0+b]<<24|v[1+b]<<16|v[2+b]<<8|v[3+b];return Z>>>0},a.writeUInt32BE=function(v,b,Z){v[0+Z]=b>>>24,v[1+Z]=b>>>16&255,v[2+Z]=b>>>8&255,v[3+Z]=b&255},a.ip=function(v,b,Z,p){for(var y=0,X=0,m=6;m>=0;m-=2){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>>N+m&1}for(var m=6;m>=0;m-=2){for(var N=1;N<=25;N+=8)X<<=1,X|=b>>>N+m&1;for(var N=1;N<=25;N+=8)X<<=1,X|=v>>>N+m&1}Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.rip=function(v,b,Z,p){for(var y=0,X=0,m=0;m<4;m++)for(var N=24;N>=0;N-=8)y<<=1,y|=b>>>N+m&1,y<<=1,y|=v>>>N+m&1;for(var m=4;m<8;m++)for(var N=24;N>=0;N-=8)X<<=1,X|=b>>>N+m&1,X<<=1,X|=v>>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.pc1=function(v,b,Z,p){for(var y=0,X=0,m=7;m>=5;m--){for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var N=0;N<=24;N+=8)y<<=1,y|=v>>N+m&1}for(var N=0;N<=24;N+=8)y<<=1,y|=b>>N+m&1;for(var m=1;m<=3;m++){for(var N=0;N<=24;N+=8)X<<=1,X|=b>>N+m&1;for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1}for(var N=0;N<=24;N+=8)X<<=1,X|=v>>N+m&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.r28shl=function(v,b){return v<>>28-b};var l=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];a.pc2=function(v,b,Z,p){for(var y=0,X=0,m=l.length>>>1,N=0;N>>l[N]&1;for(var N=m;N>>l[N]&1;Z[p+0]=y>>>0,Z[p+1]=X>>>0},a.expand=function(v,b,Z){var p=0,y=0;p=(v&1)<<5|v>>>27;for(var X=23;X>=15;X-=4)p<<=6,p|=v>>>X&63;for(var X=11;X>=3;X-=4)y|=v>>>X&63,y<<=6;y|=(v&31)<<1|v>>>31,b[Z+0]=p>>>0,b[Z+1]=y>>>0};var o=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];a.substitute=function(v,b){for(var Z=0,p=0;p<4;p++){var y=v>>>18-p*6&63,X=o[p*64+y];Z<<=4,Z|=X}for(var p=0;p<4;p++){var y=b>>>18-p*6&63,X=o[4*64+p*64+y];Z<<=4,Z|=X}return Z>>>0};var r=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];a.permute=function(v){for(var b=0,Z=0;Z>>r[Z]&1;return b>>>0},a.padSplit=function(v,b,Z){for(var p=v.toString(2);p.lengthc;)M.ishrn(1);if(M.isEven()&&M.iadd(b),M.testn(1)||M.iadd(Z),W.cmp(Z)){if(!W.cmp(p))for(;M.mod(y).cmp(X);)M.iadd(N)}else for(;M.mod(r).cmp(m);)M.iadd(N);if(I=M.shrn(1),u(I)&&u(M)&&s(I)&&s(M)&&v.test(I)&&v.test(M))return M}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(t,i,a){i.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],350:[function(t,i,a){var l=a;l.version=t("../package.json").version,l.utils=t("./elliptic/utils"),l.rand=t("brorand"),l.curve=t("./elliptic/curve"),l.curves=t("./elliptic/curves"),l.ec=t("./elliptic/ec"),l.eddsa=t("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.getNAF,f=o.getJSF,v=o.assert;function b(p,y){this.type=p,this.p=new l(y.p,16),this.red=y.prime?l.red(y.prime):l.mont(this.p),this.zero=new l(0).toRed(this.red),this.one=new l(1).toRed(this.red),this.two=new l(2).toRed(this.red),this.n=y.n&&new l(y.n,16),this.g=y.g&&this.pointFromJSON(y.g,y.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var X=this.n&&this.p.div(this.n);!X||X.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}i.exports=b,b.prototype.point=function(){throw new Error("Not implemented")},b.prototype.validate=function(){throw new Error("Not implemented")},b.prototype._fixedNafMul=function(y,X){v(y.precomputed);var m=y._getDoubles(),N=r(X,1,this._bitLength),G=(1<=u;X--)s=(s<<1)+N[X];d.push(s)}for(var h=this.jpoint(null,null,null),c=this.jpoint(null,null,null),W=G;W>0;W--){for(var u=0;u=0;s--){for(var X=0;s>=0&&d[s]===0;s--)X++;if(s>=0&&X++,u=u.dblp(X),s<0)break;var h=d[s];v(h!==0),y.type==="affine"?h>0?u=u.mixedAdd(G[h-1>>1]):u=u.mixedAdd(G[-h-1>>1].neg()):h>0?u=u.add(G[h-1>>1]):u=u.add(G[-h-1>>1].neg())}return y.type==="affine"?u.toP():u},b.prototype._wnafMulAdd=function(y,X,m,N,G){for(var d=this._wnafT1,u=this._wnafT2,s=this._wnafT3,h=0,c=0;c=1;c-=2){var I=c-1,w=c;if(d[I]!==1||d[w]!==1){s[I]=r(m[I],d[I],this._bitLength),s[w]=r(m[w],d[w],this._bitLength),h=Math.max(s[I].length,h),h=Math.max(s[w].length,h);continue}var C=[X[I],null,null,X[w]];X[I].y.cmp(X[w].y)===0?(C[1]=X[I].add(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg())):X[I].y.cmp(X[w].y.redNeg())===0?(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].add(X[w].neg())):(C[1]=X[I].toJ().mixedAdd(X[w]),C[2]=X[I].toJ().mixedAdd(X[w].neg()));var x=[-3,-1,-5,-7,0,7,5,1,3],R=f(m[I],m[w]);h=Math.max(R[0].length,h),s[I]=new Array(h),s[w]=new Array(h);for(var g=0;g=0;c--){for(var T=0;c>=0;){for(var J=!0,g=0;g=0&&T++,V=V.dblp(T),c<0)break;for(var g=0;g0?W=u[g][U-1>>1]:U<0&&(W=u[g][-U-1>>1].neg()),W.type==="affine"?V=V.mixedAdd(W):V=V.add(W))}}for(var c=0;c=Math.ceil((y.bitLength()+1)/X.step):!1},Z.prototype._getDoubles=function(y,X){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var m=[this],N=this,G=0;G":""},Z.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},Z.prototype._extDbl=function(){var y=this.x.redSqr(),X=this.y.redSqr(),m=this.z.redSqr();m=m.redIAdd(m);var N=this.curve._mulA(y),G=this.x.redAdd(this.y).redSqr().redISub(y).redISub(X),d=N.redAdd(X),u=d.redSub(m),s=N.redSub(X),h=G.redMul(u),c=d.redMul(s),W=G.redMul(s),M=u.redMul(d);return this.curve.point(h,c,M,W)},Z.prototype._projDbl=function(){var y=this.x.redAdd(this.y).redSqr(),X=this.x.redSqr(),m=this.y.redSqr(),N,G,d;if(this.curve.twisted){var u=this.curve._mulA(X),s=u.redAdd(m);if(this.zOne)N=y.redSub(X).redSub(m).redMul(s.redSub(this.curve.two)),G=s.redMul(u.redSub(m)),d=s.redSqr().redSub(s).redSub(s);else{var h=this.z.redSqr(),c=s.redSub(h).redISub(h);N=y.redSub(X).redISub(m).redMul(c),G=s.redMul(u.redSub(m)),d=s.redMul(c)}}else{var u=X.redAdd(m),h=this.curve._mulC(this.z).redSqr(),c=u.redSub(h).redSub(h);N=this.curve._mulC(y.redISub(u)).redMul(c),G=this.curve._mulC(u).redMul(X.redISub(m)),d=u.redMul(c)}return this.curve.point(N,G,d)},Z.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},Z.prototype._extAdd=function(y){var X=this.y.redSub(this.x).redMul(y.y.redSub(y.x)),m=this.y.redAdd(this.x).redMul(y.y.redAdd(y.x)),N=this.t.redMul(this.curve.dd).redMul(y.t),G=this.z.redMul(y.z.redAdd(y.z)),d=m.redSub(X),u=G.redSub(N),s=G.redAdd(N),h=m.redAdd(X),c=d.redMul(u),W=s.redMul(h),M=d.redMul(h),I=u.redMul(s);return this.curve.point(c,W,I,M)},Z.prototype._projAdd=function(y){var X=this.z.redMul(y.z),m=X.redSqr(),N=this.x.redMul(y.x),G=this.y.redMul(y.y),d=this.curve.d.redMul(N).redMul(G),u=m.redSub(d),s=m.redAdd(d),h=this.x.redAdd(this.y).redMul(y.x.redAdd(y.y)).redISub(N).redISub(G),c=X.redMul(u).redMul(h),W,M;return this.curve.twisted?(W=X.redMul(s).redMul(G.redSub(this.curve._mulA(N))),M=u.redMul(s)):(W=X.redMul(s).redMul(G.redSub(N)),M=this.curve._mulC(u).redMul(s)),this.curve.point(c,W,M)},Z.prototype.add=function(y){return this.isInfinity()?y:y.isInfinity()?this:this.curve.extended?this._extAdd(y):this._projAdd(y)},Z.prototype.mul=function(y){return this._hasDoubles(y)?this.curve._fixedNafMul(this,y):this.curve._wnafMul(this,y)},Z.prototype.mulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!1)},Z.prototype.jmulAdd=function(y,X,m){return this.curve._wnafMulAdd(1,[this,X],[y,m],2,!0)},Z.prototype.normalize=function(){if(this.zOne)return this;var y=this.z.redInvm();return this.x=this.x.redMul(y),this.y=this.y.redMul(y),this.t&&(this.t=this.t.redMul(y)),this.z=this.curve.one,this.zOne=!0,this},Z.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},Z.prototype.getX=function(){return this.normalize(),this.x.fromRed()},Z.prototype.getY=function(){return this.normalize(),this.y.fromRed()},Z.prototype.eq=function(y){return this===y||this.getX().cmp(y.getX())===0&&this.getY().cmp(y.getY())===0},Z.prototype.eqXToP=function(y){var X=y.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(X)===0)return!0;for(var m=y.clone(),N=this.curve.redN.redMul(this.z);;){if(m.iadd(this.curve.n),m.cmp(this.curve.p)>=0)return!1;if(X.redIAdd(N),this.x.cmp(X)===0)return!0}},Z.prototype.toP=Z.prototype.normalize,Z.prototype.mixedAdd=Z.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(t,i,a){var l=a;l.base=t("./base"),l.short=t("./short"),l.mont=t("./mont"),l.edwards=t("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(t,i,a){var l=t("bn.js"),o=t("inherits"),r=t("./base"),f=t("../utils");function v(Z){r.call(this,"mont",Z),this.a=new l(Z.a,16).toRed(this.red),this.b=new l(Z.b,16).toRed(this.red),this.i4=new l(4).toRed(this.red).redInvm(),this.two=new l(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}o(v,r),i.exports=v,v.prototype.validate=function(p){var y=p.normalize().x,X=y.redSqr(),m=X.redMul(y).redAdd(X.redMul(this.a)).redAdd(y),N=m.redSqrt();return N.redSqr().cmp(m)===0};function b(Z,p,y){r.BasePoint.call(this,Z,"projective"),p===null&&y===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new l(p,16),this.z=new l(y,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}o(b,r.BasePoint),v.prototype.decodePoint=function(p,y){return this.point(f.toArray(p,y),1)},v.prototype.point=function(p,y){return new b(this,p,y)},v.prototype.pointFromJSON=function(p){return b.fromJSON(this,p)},b.prototype.precompute=function(){},b.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},b.fromJSON=function(p,y){return new b(p,y[0],y[1]||p.one)},b.prototype.inspect=function(){return this.isInfinity()?"":""},b.prototype.isInfinity=function(){return this.z.cmpn(0)===0},b.prototype.dbl=function(){var p=this.x.redAdd(this.z),y=p.redSqr(),X=this.x.redSub(this.z),m=X.redSqr(),N=y.redSub(m),G=y.redMul(m),d=N.redMul(m.redAdd(this.curve.a24.redMul(N)));return this.curve.point(G,d)},b.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.diffAdd=function(p,y){var X=this.x.redAdd(this.z),m=this.x.redSub(this.z),N=p.x.redAdd(p.z),G=p.x.redSub(p.z),d=G.redMul(X),u=N.redMul(m),s=y.z.redMul(d.redAdd(u).redSqr()),h=y.x.redMul(d.redISub(u).redSqr());return this.curve.point(s,h)},b.prototype.mul=function(p){for(var y=p.clone(),X=this,m=this.curve.point(null,null),N=this,G=[];y.cmpn(0)!==0;y.iushrn(1))G.push(y.andln(1));for(var d=G.length-1;d>=0;d--)G[d]===0?(X=X.diffAdd(m,N),m=m.dbl()):(m=X.diffAdd(m,N),X=X.dbl());return m},b.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},b.prototype.eq=function(p){return this.getX().cmp(p.getX())===0},b.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},b.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(t,i,a){var l=t("../utils"),o=t("bn.js"),r=t("inherits"),f=t("./base"),v=l.assert;function b(y){f.call(this,"short",y),this.a=new o(y.a,16).toRed(this.red),this.b=new o(y.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(y),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}r(b,f),i.exports=b,b.prototype._getEndomorphism=function(X){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var m,N;if(X.beta)m=new o(X.beta,16).toRed(this.red);else{var G=this._getEndoRoots(this.p);m=G[0].cmp(G[1])<0?G[0]:G[1],m=m.toRed(this.red)}if(X.lambda)N=new o(X.lambda,16);else{var d=this._getEndoRoots(this.n);this.g.mul(d[0]).x.cmp(this.g.x.redMul(m))===0?N=d[0]:(N=d[1],v(this.g.mul(N).x.cmp(this.g.x.redMul(m))===0))}var u;return X.basis?u=X.basis.map(function(s){return{a:new o(s.a,16),b:new o(s.b,16)}}):u=this._getEndoBasis(N),{beta:m,lambda:N,basis:u}}},b.prototype._getEndoRoots=function(X){var m=X===this.p?this.red:o.mont(X),N=new o(2).toRed(m).redInvm(),G=N.redNeg(),d=new o(3).toRed(m).redNeg().redSqrt().redMul(N),u=G.redAdd(d).fromRed(),s=G.redSub(d).fromRed();return[u,s]},b.prototype._getEndoBasis=function(X){for(var m=this.n.ushrn(Math.floor(this.n.bitLength()/2)),N=X,G=this.n.clone(),d=new o(1),u=new o(0),s=new o(0),h=new o(1),c,W,M,I,w,C,x,R=0,g,S;N.cmpn(0)!==0;){var L=G.div(N);g=G.sub(L.mul(N)),S=s.sub(L.mul(d));var V=h.sub(L.mul(u));if(!M&&g.cmp(m)<0)c=x.neg(),W=d,M=g.neg(),I=S;else if(M&&++R===2)break;x=g,G=N,N=g,s=d,d=S,h=u,u=V}w=g.neg(),C=S;var Y=M.sqr().add(I.sqr()),T=w.sqr().add(C.sqr());return T.cmp(Y)>=0&&(w=c,C=W),M.negative&&(M=M.neg(),I=I.neg()),w.negative&&(w=w.neg(),C=C.neg()),[{a:M,b:I},{a:w,b:C}]},b.prototype._endoSplit=function(X){var m=this.endo.basis,N=m[0],G=m[1],d=G.b.mul(X).divRound(this.n),u=N.b.neg().mul(X).divRound(this.n),s=d.mul(N.a),h=u.mul(G.a),c=d.mul(N.b),W=u.mul(G.b),M=X.sub(s).sub(h),I=c.add(W).neg();return{k1:M,k2:I}},b.prototype.pointFromX=function(X,m){X=new o(X,16),X.red||(X=X.toRed(this.red));var N=X.redSqr().redMul(X).redIAdd(X.redMul(this.a)).redIAdd(this.b),G=N.redSqrt();if(G.redSqr().redSub(N).cmp(this.zero)!==0)throw new Error("invalid point");var d=G.fromRed().isOdd();return(m&&!d||!m&&d)&&(G=G.redNeg()),this.point(X,G)},b.prototype.validate=function(X){if(X.inf)return!0;var m=X.x,N=X.y,G=this.a.redMul(m),d=m.redSqr().redMul(m).redIAdd(G).redIAdd(this.b);return N.redSqr().redISub(d).cmpn(0)===0},b.prototype._endoWnafMulAdd=function(X,m,N){for(var G=this._endoWnafT1,d=this._endoWnafT2,u=0;u":""},Z.prototype.isInfinity=function(){return this.inf},Z.prototype.add=function(X){if(this.inf)return X;if(X.inf)return this;if(this.eq(X))return this.dbl();if(this.neg().eq(X))return this.curve.point(null,null);if(this.x.cmp(X.x)===0)return this.curve.point(null,null);var m=this.y.redSub(X.y);m.cmpn(0)!==0&&(m=m.redMul(this.x.redSub(X.x).redInvm()));var N=m.redSqr().redISub(this.x).redISub(X.x),G=m.redMul(this.x.redSub(N)).redISub(this.y);return this.curve.point(N,G)},Z.prototype.dbl=function(){if(this.inf)return this;var X=this.y.redAdd(this.y);if(X.cmpn(0)===0)return this.curve.point(null,null);var m=this.curve.a,N=this.x.redSqr(),G=X.redInvm(),d=N.redAdd(N).redIAdd(N).redIAdd(m).redMul(G),u=d.redSqr().redISub(this.x.redAdd(this.x)),s=d.redMul(this.x.redSub(u)).redISub(this.y);return this.curve.point(u,s)},Z.prototype.getX=function(){return this.x.fromRed()},Z.prototype.getY=function(){return this.y.fromRed()},Z.prototype.mul=function(X){return X=new o(X,16),this.isInfinity()?this:this._hasDoubles(X)?this.curve._fixedNafMul(this,X):this.curve.endo?this.curve._endoWnafMulAdd([this],[X]):this.curve._wnafMul(this,X)},Z.prototype.mulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d):this.curve._wnafMulAdd(1,G,d,2)},Z.prototype.jmulAdd=function(X,m,N){var G=[this,m],d=[X,N];return this.curve.endo?this.curve._endoWnafMulAdd(G,d,!0):this.curve._wnafMulAdd(1,G,d,2,!0)},Z.prototype.eq=function(X){return this===X||this.inf===X.inf&&(this.inf||this.x.cmp(X.x)===0&&this.y.cmp(X.y)===0)},Z.prototype.neg=function(X){if(this.inf)return this;var m=this.curve.point(this.x,this.y.redNeg());if(X&&this.precomputed){var N=this.precomputed,G=function(u){return u.neg()};m.precomputed={naf:N.naf&&{wnd:N.naf.wnd,points:N.naf.points.map(G)},doubles:N.doubles&&{step:N.doubles.step,points:N.doubles.points.map(G)}}}return m},Z.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var X=this.curve.jpoint(this.x,this.y,this.curve.one);return X};function p(y,X,m,N){f.BasePoint.call(this,y,"jacobian"),X===null&&m===null&&N===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new o(0)):(this.x=new o(X,16),this.y=new o(m,16),this.z=new o(N,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}r(p,f.BasePoint),b.prototype.jpoint=function(X,m,N){return new p(this,X,m,N)},p.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var X=this.z.redInvm(),m=X.redSqr(),N=this.x.redMul(m),G=this.y.redMul(m).redMul(X);return this.curve.point(N,G)},p.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},p.prototype.add=function(X){if(this.isInfinity())return X;if(X.isInfinity())return this;var m=X.z.redSqr(),N=this.z.redSqr(),G=this.x.redMul(m),d=X.x.redMul(N),u=this.y.redMul(m.redMul(X.z)),s=X.y.redMul(N.redMul(this.z)),h=G.redSub(d),c=u.redSub(s);if(h.cmpn(0)===0)return c.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var W=h.redSqr(),M=W.redMul(h),I=G.redMul(W),w=c.redSqr().redIAdd(M).redISub(I).redISub(I),C=c.redMul(I.redISub(w)).redISub(u.redMul(M)),x=this.z.redMul(X.z).redMul(h);return this.curve.jpoint(w,C,x)},p.prototype.mixedAdd=function(X){if(this.isInfinity())return X.toJ();if(X.isInfinity())return this;var m=this.z.redSqr(),N=this.x,G=X.x.redMul(m),d=this.y,u=X.y.redMul(m).redMul(this.z),s=N.redSub(G),h=d.redSub(u);if(s.cmpn(0)===0)return h.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),W=c.redMul(s),M=N.redMul(c),I=h.redSqr().redIAdd(W).redISub(M).redISub(M),w=h.redMul(M.redISub(I)).redISub(d.redMul(W)),C=this.z.redMul(s);return this.curve.jpoint(I,w,C)},p.prototype.dblp=function(X){if(X===0)return this;if(this.isInfinity())return this;if(!X)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var m=this,N=0;N=0)return!1;if(N.redIAdd(d),this.x.cmp(N)===0)return!0}},p.prototype.inspect=function(){return this.isInfinity()?"":""},p.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(t,i,a){var l=a,o=t("hash.js"),r=t("./curve"),f=t("./utils"),v=f.assert;function b(y){y.type==="short"?this.curve=new r.short(y):y.type==="edwards"?this.curve=new r.edwards(y):this.curve=new r.mont(y),this.g=this.curve.g,this.n=this.curve.n,this.hash=y.hash,v(this.g.validate(),"Invalid curve"),v(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}l.PresetCurve=b;function Z(y,X){Object.defineProperty(l,y,{configurable:!0,enumerable:!0,get:function(){var N=new b(X);return Object.defineProperty(l,y,{configurable:!0,enumerable:!0,value:N}),N}})}Z("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),Z("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),Z("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),Z("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),Z("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),Z("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),Z("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var p;try{p=t("./precomputed/secp256k1")}catch{p=void 0}Z("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",p]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(t,i,a){function l(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(G){return typeof G}:l=function(G){return G&&typeof Symbol=="function"&&G.constructor===Symbol&&G!==Symbol.prototype?"symbol":typeof G},l(m)}var o=t("bn.js"),r=t("hmac-drbg"),f=t("../utils"),v=t("../curves"),b=t("brorand"),Z=f.assert,p=t("./key"),y=t("./signature");function X(m){if(!(this instanceof X))return new X(m);typeof m=="string"&&(Z(v.hasOwnProperty(m),"Unknown curve "+m),m=v[m]),m instanceof v.PresetCurve&&(m={curve:m}),this.curve=m.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=m.curve.g,this.g.precompute(m.curve.n.bitLength()+1),this.hash=m.hash||m.curve.hash}i.exports=X,X.prototype.keyPair=function(N){return new p(this,N)},X.prototype.keyFromPrivate=function(N,G){return p.fromPrivate(this,N,G)},X.prototype.keyFromPublic=function(N,G){return p.fromPublic(this,N,G)},X.prototype.genKeyPair=function(N){N||(N={});var G=new r({hash:this.hash,pers:N.pers,persEnc:N.persEnc||"utf8",entropy:N.entropy||b(this.hash.hmacStrength),entropyEnc:N.entropy&&N.entropyEnc||"utf8",nonce:this.n.toArray()}),d=this.n.byteLength(),u=this.n.sub(new o(2));do{var s=new o(G.generate(d));if(!(s.cmp(u)>0))return s.iaddn(1),this.keyFromPrivate(s)}while(!0)},X.prototype._truncateToN=function(N,G){var d=N.byteLength()*8-this.n.bitLength();return d>0&&(N=N.ushrn(d)),!G&&N.cmp(this.n)>=0?N.sub(this.n):N},X.prototype.sign=function(N,G,d,u){l(d)==="object"&&(u=d,d=null),u||(u={}),G=this.keyFromPrivate(G,d),N=this._truncateToN(new o(N,16));for(var s=this.n.byteLength(),h=G.getPrivate().toArray("be",s),c=N.toArray("be",s),W=new r({hash:this.hash,entropy:h,nonce:c,pers:u.pers,persEnc:u.persEnc||"utf8"}),M=this.n.sub(new o(1)),I=0;;I++){var w=u.k?u.k(I):new o(W.generate(this.n.byteLength()));if(w=this._truncateToN(w,!0),!(w.cmpn(1)<=0||w.cmp(M)>=0)){var C=this.g.mul(w);if(!C.isInfinity()){var x=C.getX(),R=x.umod(this.n);if(R.cmpn(0)!==0){var g=w.invm(this.n).mul(R.mul(G.getPrivate()).iadd(N));if(g=g.umod(this.n),g.cmpn(0)!==0){var S=(C.getY().isOdd()?1:0)|(x.cmp(R)!==0?2:0);return u.canonical&&g.cmp(this.nh)>0&&(g=this.n.sub(g),S^=1),new y({r:R,s:g,recoveryParam:S})}}}}}},X.prototype.verify=function(N,G,d,u){N=this._truncateToN(new o(N,16)),d=this.keyFromPublic(d,u),G=new y(G,"hex");var s=G.r,h=G.s;if(s.cmpn(1)<0||s.cmp(this.n)>=0||h.cmpn(1)<0||h.cmp(this.n)>=0)return!1;var c=h.invm(this.n),W=c.mul(N).umod(this.n),M=c.mul(s).umod(this.n);if(!this.curve._maxwellTrick){var I=this.g.mulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.getX().umod(this.n).cmp(s)===0}var I=this.g.jmulAdd(W,d.getPublic(),M);return I.isInfinity()?!1:I.eqXToP(s)},X.prototype.recoverPubKey=function(m,N,G,d){Z((3&G)===G,"The recovery param is more than two bits"),N=new y(N,d);var u=this.n,s=new o(m),h=N.r,c=N.s,W=G&1,M=G>>1;if(h.cmp(this.curve.p.umod(this.curve.n))>=0&&M)throw new Error("Unable to find sencond key candinate");M?h=this.curve.pointFromX(h.add(this.curve.n),W):h=this.curve.pointFromX(h,W);var I=N.r.invm(u),w=u.sub(s).mul(I).umod(u),C=c.mul(I).umod(u);return this.g.mulAdd(w,h,C)},X.prototype.getKeyRecoveryParam=function(m,N,G,d){if(N=new y(N,d),N.recoveryParam!==null)return N.recoveryParam;for(var u=0;u<4;u++){var s;try{s=this.recoverPubKey(m,N,u)}catch{continue}if(s.eq(G))return u}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.assert;function f(v,b){this.ec=v,this.priv=null,this.pub=null,b.priv&&this._importPrivate(b.priv,b.privEnc),b.pub&&this._importPublic(b.pub,b.pubEnc)}i.exports=f,f.fromPublic=function(b,Z,p){return Z instanceof f?Z:new f(b,{pub:Z,pubEnc:p})},f.fromPrivate=function(b,Z,p){return Z instanceof f?Z:new f(b,{priv:Z,privEnc:p})},f.prototype.validate=function(){var b=this.getPublic();return b.isInfinity()?{result:!1,reason:"Invalid public key"}:b.validate()?b.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},f.prototype.getPublic=function(b,Z){return typeof b=="string"&&(Z=b,b=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),Z?this.pub.encode(Z,b):this.pub},f.prototype.getPrivate=function(b){return b==="hex"?this.priv.toString(16,2):this.priv},f.prototype._importPrivate=function(b,Z){this.priv=new l(b,Z||16),this.priv=this.priv.umod(this.ec.curve.n)},f.prototype._importPublic=function(b,Z){if(b.x||b.y){this.ec.curve.type==="mont"?r(b.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&r(b.x&&b.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(b.x,b.y);return}this.pub=this.ec.curve.decodePoint(b,Z)},f.prototype.derive=function(b){return b.mul(this.priv).getX()},f.prototype.sign=function(b,Z,p){return this.ec.sign(b,this,Z,p)},f.prototype.verify=function(b,Z){return this.ec.verify(b,Z,this)},f.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(t,i,a){var l=t("bn.js"),o=t("../utils"),r=o.assert;function f(y,X){if(y instanceof f)return y;this._importDER(y,X)||(r(y.r&&y.s,"Signature without r or s"),this.r=new l(y.r,16),this.s=new l(y.s,16),y.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=y.recoveryParam)}i.exports=f;function v(){this.place=0}function b(y,X){var m=y[X.place++];if(!(m&128))return m;var N=m&15;if(N===0||N>4)return!1;for(var G=0,d=0,u=X.place;d>>=0;return G<=127?!1:(X.place=u,G)}function Z(y){for(var X=0,m=y.length-1;!y[X]&&!(y[X+1]&128)&&X>>3);for(y.push(m|128);--m;)y.push(X>>>(m<<3)&255);y.push(X)}f.prototype.toDER=function(X){var m=this.r.toArray(),N=this.s.toArray();for(m[0]&128&&(m=[0].concat(m)),N[0]&128&&(N=[0].concat(N)),m=Z(m),N=Z(N);!N[0]&&!(N[1]&128);)N=N.slice(1);var G=[2];p(G,m.length),G=G.concat(m),G.push(2),p(G,N.length);var d=G.concat(N),u=[48];return p(u,d.length),u=u.concat(d),o.encode(u,X)}},{"../utils":364,"bn.js":365}],360:[function(t,i,a){var l=t("hash.js"),o=t("../curves"),r=t("../utils"),f=r.assert,v=r.parseBytes,b=t("./key"),Z=t("./signature");function p(X){if(f(X==="ed25519","only tested with ed25519 so far"),!(this instanceof p))return new p(X);var X=o[X].curve;this.curve=X,this.g=X.g,this.g.precompute(X.n.bitLength()+1),this.pointClass=X.point().constructor,this.encodingLength=Math.ceil(X.n.bitLength()/8),this.hash=l.sha512}i.exports=p,p.prototype.sign=function(X,m){X=v(X);var N=this.keyFromSecret(m),G=this.hashInt(N.messagePrefix(),X),d=this.g.mul(G),u=this.encodePoint(d),s=this.hashInt(u,N.pubBytes(),X).mul(N.priv()),h=G.add(s).umod(this.curve.n);return this.makeSignature({R:d,S:h,Rencoded:u})},p.prototype.verify=function(X,m,N){X=v(X),m=this.makeSignature(m);var G=this.keyFromPublic(N),d=this.hashInt(m.Rencoded(),G.pubBytes(),X),u=this.g.mul(m.S()),s=m.R().add(G.pub().mul(d));return s.eq(u)},p.prototype.hashInt=function(){for(var X=this.hash(),m=0;m(d>>1)-1?h=(d>>1)-c:h=c,u.isubn(h)):h=0,G[s]=h,u.iushrn(1)}return G}l.getNAF=v;function b(X,m){var N=[[],[]];X=X.clone(),m=m.clone();for(var G=0,d=0;X.cmpn(-G)>0||m.cmpn(-d)>0;){var u=X.andln(3)+G&3,s=m.andln(3)+d&3;u===3&&(u=-1),s===3&&(s=-1);var h;if(!(u&1))h=0;else{var c=X.andln(7)+G&7;(c===3||c===5)&&s===2?h=-u:h=u}N[0].push(h);var W;if(!(s&1))W=0;else{var c=m.andln(7)+d&7;(c===3||c===5)&&u===2?W=-s:W=s}N[1].push(W),2*G===h+1&&(G=1-G),2*d===W+1&&(d=1-d),X.iushrn(1),m.iushrn(1)}return N}l.getJSF=b;function Z(X,m,N){var G="_"+m;X.prototype[m]=function(){return this[G]!==void 0?this[G]:this[G]=N.call(this)}}l.cachedProperty=Z;function p(X){return typeof X=="string"?l.toArray(X,"hex"):X}l.parseBytes=p;function y(X){return new o(X,"hex","le")}l.intFromLE=y},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(t,i,a){arguments[4][181][0].apply(a,arguments)},{buffer:185,dup:181}],366:[function(t,i,a){i.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(t,i,a){function l(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(L){return typeof L}:l=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},l(g)}var o=Object.create||C,r=Object.keys||x,f=Function.prototype.bind||R;function v(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=o(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}i.exports=v,v.EventEmitter=v,v.prototype._events=void 0,v.prototype._maxListeners=void 0;var b=10,Z;try{var p={};Object.defineProperty&&Object.defineProperty(p,"x",{value:0}),Z=p.x===0}catch{Z=!1}Z?Object.defineProperty(v,"defaultMaxListeners",{enumerable:!0,get:function(){return b},set:function(S){if(typeof S!="number"||S<0||S!==S)throw new TypeError('"defaultMaxListeners" must be a positive number');b=S}}):v.defaultMaxListeners=b,v.prototype.setMaxListeners=function(S){if(typeof S!="number"||S<0||isNaN(S))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=S,this};function y(g){return g._maxListeners===void 0?v.defaultMaxListeners:g._maxListeners}v.prototype.getMaxListeners=function(){return y(this)};function X(g,S,L){if(S)g.call(L);else for(var V=g.length,Y=I(g,V),T=0;T1&&(L=arguments[1]),L instanceof Error)throw L;var H=new Error('Unhandled "error" event. ('+L+")");throw H.context=L,H}if(V=U[S],!V)return!1;var k=typeof V=="function";switch(Y=arguments.length,Y){case 1:X(V,k,this);break;case 2:m(V,k,this,arguments[1]);break;case 3:N(V,k,this,arguments[1],arguments[2]);break;case 4:G(V,k,this,arguments[1],arguments[2],arguments[3]);break;default:for(T=new Array(Y-1),J=1;J0&&J.length>Y)){J.warned=!0;var U=new Error("Possible EventEmitter memory leak detected. "+J.length+' "'+String(S)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');U.name="MaxListenersExceededWarning",U.emitter=g,U.type=S,U.count=J.length,(typeof console>"u"?"undefined":l(console))==="object"&&console.warn&&console.warn("%s: %s",U.name,U.message)}return g}v.prototype.addListener=function(S,L){return u(this,S,L,!1)},v.prototype.on=v.prototype.addListener,v.prototype.prependListener=function(S,L){return u(this,S,L,!0)};function s(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var g=new Array(arguments.length),S=0;S=0;J--)if(V[J]===L||V[J].listener===L){U=V[J].listener,T=J;break}if(T<0)return this;T===0?V.shift():M(V,T),V.length===1&&(Y[S]=V[0]),Y.removeListener&&this.emit("removeListener",S,U||L)}return this},v.prototype.removeAllListeners=function(S){var L,V,Y;if(V=this._events,!V)return this;if(!V.removeListener)return arguments.length===0?(this._events=o(null),this._eventsCount=0):V[S]&&(--this._eventsCount===0?this._events=o(null):delete V[S]),this;if(arguments.length===0){var T=r(V),J;for(Y=0;Y=0;Y--)this.removeListener(S,L[Y]);return this};function c(g,S,L){var V=g._events;if(!V)return[];var Y=V[S];return Y?typeof Y=="function"?L?[Y.listener||Y]:[Y]:L?w(Y):I(Y,Y.length):[]}v.prototype.listeners=function(S){return c(this,S,!0)},v.prototype.rawListeners=function(S){return c(this,S,!1)},v.listenerCount=function(g,S){return typeof g.listenerCount=="function"?g.listenerCount(S):W.call(g,S)},v.prototype.listenerCount=W;function W(g){var S=this._events;if(S){var L=S[g];if(typeof L=="function")return 1;if(L)return L.length}return 0}v.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function M(g,S){for(var L=S,V=L+1,Y=g.length;V0||Z>0;){var N=new o;N.update(m),N.update(f),v&&N.update(v),m=N.digest();var G=0;if(p>0){var d=y.length-p;G=Math.min(p,m.length),m.copy(y,d,0,G),p-=G}if(G0){var u=X.length-Z,s=Math.min(Z,m.length-G);m.copy(X,u,G,G+s),Z-=s}}return m.fill(0),{key:y,iv:X}}i.exports=r},{"md5.js":434,"safe-buffer":494}],369:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0});var l=t("@fast-csv/format");Object.defineProperty(a,"format",{enumerable:!0,get:function(){return l.format}}),Object.defineProperty(a,"write",{enumerable:!0,get:function(){return l.write}}),Object.defineProperty(a,"writeToStream",{enumerable:!0,get:function(){return l.writeToStream}}),Object.defineProperty(a,"writeToBuffer",{enumerable:!0,get:function(){return l.writeToBuffer}}),Object.defineProperty(a,"writeToString",{enumerable:!0,get:function(){return l.writeToString}}),Object.defineProperty(a,"writeToPath",{enumerable:!0,get:function(){return l.writeToPath}}),Object.defineProperty(a,"CsvFormatterStream",{enumerable:!0,get:function(){return l.CsvFormatterStream}}),Object.defineProperty(a,"FormatterOptions",{enumerable:!0,get:function(){return l.FormatterOptions}});var o=t("@fast-csv/parse");Object.defineProperty(a,"parse",{enumerable:!0,get:function(){return o.parse}}),Object.defineProperty(a,"parseString",{enumerable:!0,get:function(){return o.parseString}}),Object.defineProperty(a,"parseStream",{enumerable:!0,get:function(){return o.parseStream}}),Object.defineProperty(a,"parseFile",{enumerable:!0,get:function(){return o.parseFile}}),Object.defineProperty(a,"ParserOptions",{enumerable:!0,get:function(){return o.ParserOptions}}),Object.defineProperty(a,"CsvParserStream",{enumerable:!0,get:function(){return o.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(t,i,a){var l=t("safe-buffer").Buffer,o=t("readable-stream").Transform,r=t("inherits");function f(b,Z){if(!l.isBuffer(b)&&typeof b!="string")throw new TypeError(Z+" must be a string or a buffer")}function v(b){o.call(this),this._block=l.allocUnsafe(b),this._blockSize=b,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(v,o),v.prototype._transform=function(b,Z,p){var y=null;try{this.update(b,Z)}catch(X){y=X}p(y)},v.prototype._flush=function(b){var Z=null;try{this.push(this.digest())}catch(p){Z=p}b(Z)},v.prototype.update=function(b,Z){if(f(b,"Data"),this._finalized)throw new Error("Digest already called");l.isBuffer(b)||(b=l.from(b,Z));for(var p=this._block,y=0;this._blockOffset+b.length-y>=this._blockSize;){for(var X=this._blockOffset;X0;++m)this._length[m]+=N,N=this._length[m]/4294967296|0,N>0&&(this._length[m]-=4294967296*N);return this},v.prototype._update=function(){throw new Error("_update is not implemented")},v.prototype.digest=function(b){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var Z=this._digest();b!==void 0&&(Z=Z.toString(b)),this._block.fill(0),this._blockOffset=0;for(var p=0;p<4;++p)this._length[p]=0;return Z},v.prototype._digest=function(){throw new Error("_digest is not implemented")},i.exports=v},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(t,i,a){arguments[4][214][0].apply(a,arguments)},{buffer:216,dup:214}],372:[function(t,i,a){var l=a;l.utils=t("./hash/utils"),l.common=t("./hash/common"),l.sha=t("./hash/sha"),l.ripemd=t("./hash/ripemd"),l.hmac=t("./hash/hmac"),l.sha1=l.sha.sha1,l.sha256=l.sha.sha256,l.sha224=l.sha.sha224,l.sha384=l.sha.sha384,l.sha512=l.sha.sha512,l.ripemd160=l.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(t,i,a){var l=t("./utils"),o=t("minimalistic-assert");function r(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}a.BlockHash=r,r.prototype.update=function(v,b){if(v=l.toArray(v,b),this.pending?this.pending=this.pending.concat(v):this.pending=v,this.pendingTotal+=v.length,this.pending.length>=this._delta8){v=this.pending;var Z=v.length%this._delta8;this.pending=v.slice(v.length-Z,v.length),this.pending.length===0&&(this.pending=null),v=l.join32(v,0,v.length-Z,this.endian);for(var p=0;p>>24&255,p[y++]=v>>>16&255,p[y++]=v>>>8&255,p[y++]=v&255}else for(p[y++]=v&255,p[y++]=v>>>8&255,p[y++]=v>>>16&255,p[y++]=v>>>24&255,p[y++]=0,p[y++]=0,p[y++]=0,p[y++]=0,X=8;Xthis.blockSize&&(v=new this.Hash().update(v).digest()),o(v.length<=this.blockSize);for(var b=v.length;b>>3}a.g0_256=y;function X(m){return o(m,17)^o(m,19)^m>>>10}a.g1_256=X},{"../utils":383}],383:[function(t,i,a){var l=t("minimalistic-assert"),o=t("inherits");a.inherits=o;function r(V,Y){return(V.charCodeAt(Y)&64512)!==55296||Y<0||Y+1>=V.length?!1:(V.charCodeAt(Y+1)&64512)===56320}function f(V,Y){if(Array.isArray(V))return V.slice();if(!V)return[];var T=[];if(typeof V=="string")if(Y){if(Y==="hex")for(V=V.replace(/[^a-z0-9]+/ig,""),V.length%2!==0&&(V="0"+V),U=0;U>6|192,T[J++]=K&63|128):r(V,U)?(K=65536+((K&1023)<<10)+(V.charCodeAt(++U)&1023),T[J++]=K>>18|240,T[J++]=K>>12&63|128,T[J++]=K>>6&63|128,T[J++]=K&63|128):(T[J++]=K>>12|224,T[J++]=K>>6&63|128,T[J++]=K&63|128)}else for(U=0;U>>24|V>>>8&65280|V<<8&16711680|(V&255)<<24;return Y>>>0}a.htonl=b;function Z(V,Y){for(var T="",J=0;J>>0}return K}a.join32=X;function m(V,Y){for(var T=new Array(V.length*4),J=0,U=0;J>>24,T[U+1]=K>>>16&255,T[U+2]=K>>>8&255,T[U+3]=K&255):(T[U+3]=K>>>24,T[U+2]=K>>>16&255,T[U+1]=K>>>8&255,T[U]=K&255)}return T}a.split32=m;function N(V,Y){return V>>>Y|V<<32-Y}a.rotr32=N;function G(V,Y){return V<>>32-Y}a.rotl32=G;function d(V,Y){return V+Y>>>0}a.sum32=d;function u(V,Y,T){return V+Y+T>>>0}a.sum32_3=u;function s(V,Y,T,J){return V+Y+T+J>>>0}a.sum32_4=s;function h(V,Y,T,J,U){return V+Y+T+J+U>>>0}a.sum32_5=h;function c(V,Y,T,J){var U=V[Y],K=V[Y+1],H=J+K>>>0,k=(H>>0,V[Y+1]=H}a.sum64=c;function W(V,Y,T,J){var U=Y+J>>>0,K=(U>>0}a.sum64_hi=W;function M(V,Y,T,J){var U=Y+J;return U>>>0}a.sum64_lo=M;function I(V,Y,T,J,U,K,H,k){var F=0,O=Y;O=O+J>>>0,F+=O>>0,F+=O>>0,F+=O>>0}a.sum64_4_hi=I;function w(V,Y,T,J,U,K,H,k){var F=Y+J+K+k;return F>>>0}a.sum64_4_lo=w;function C(V,Y,T,J,U,K,H,k,F,O){var Q=0,oe=Y;oe=oe+J>>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0,Q+=oe>>0}a.sum64_5_hi=C;function x(V,Y,T,J,U,K,H,k,F,O){var Q=Y+J+K+k+O;return Q>>>0}a.sum64_5_lo=x;function R(V,Y,T){var J=Y<<32-T|V>>>T;return J>>>0}a.rotr64_hi=R;function g(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}a.rotr64_lo=g;function S(V,Y,T){return V>>>T}a.shr64_hi=S;function L(V,Y,T){var J=V<<32-T|Y>>>T;return J>>>0}a.shr64_lo=L},{inherits:387,"minimalistic-assert":437}],384:[function(t,i,a){var l=t("hash.js"),o=t("minimalistic-crypto-utils"),r=t("minimalistic-assert");function f(v){if(!(this instanceof f))return new f(v);this.hash=v.hash,this.predResist=!!v.predResist,this.outLen=this.hash.outSize,this.minEntropy=v.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var b=o.toArray(v.entropy,v.entropyEnc||"hex"),Z=o.toArray(v.nonce,v.nonceEnc||"hex"),p=o.toArray(v.pers,v.persEnc||"hex");r(b.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(b,Z,p)}i.exports=f,f.prototype._init=function(b,Z,p){var y=b.concat(Z).concat(p);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var X=0;X=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(b.concat(p||[])),this._reseed=1},f.prototype.generate=function(b,Z,p,y){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof Z!="string"&&(y=p,p=Z,Z=null),p&&(p=o.toArray(p,y||"hex"),this._update(p));for(var X=[];X.length>1,m=-7,N=r?v-1:0,G=r?-1:1,d=l[o+N];for(N+=G,b=d&(1<<-m)-1,d>>=-m,m+=p;m>0;b=b*256+l[o+N],N+=G,m-=8);for(Z=b&(1<<-m)-1,b>>=-m,m+=f;m>0;Z=Z*256+l[o+N],N+=G,m-=8);if(b===0)b=1-X;else{if(b===y)return Z?NaN:(d?-1:1)*(1/0);Z=Z+Math.pow(2,f),b=b-X}return(d?-1:1)*Z*Math.pow(2,b-f)},a.write=function(l,o,r,f,v,b){var Z,p,y,X=b*8-v-1,m=(1<>1,G=v===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=f?0:b-1,u=f?1:-1,s=o<0||o===0&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(p=isNaN(o)?1:0,Z=m):(Z=Math.floor(Math.log(o)/Math.LN2),o*(y=Math.pow(2,-Z))<1&&(Z--,y*=2),Z+N>=1?o+=G/y:o+=G*Math.pow(2,1-N),o*y>=2&&(Z++,y/=2),Z+N>=m?(p=0,Z=m):Z+N>=1?(p=(o*y-1)*Math.pow(2,v),Z=Z+N):(p=o*Math.pow(2,N-1)*Math.pow(2,v),Z=0));v>=8;l[r+d]=p&255,d+=u,p/=256,v-=8);for(Z=Z<0;l[r+d]=Z&255,d+=u,Z/=256,X-=8);l[r+d-u]|=s*128}},{}],386:[function(t,i,a){(function(l){var o=l.MutationObserver||l.WebKitMutationObserver,r;if(o){var f=0,v=new o(X),b=l.document.createTextNode("");v.observe(b,{characterData:!0}),r=function(){b.data=f=++f%2}}else if(!l.setImmediate&&typeof l.MessageChannel<"u"){var Z=new l.MessageChannel;Z.port1.onmessage=X,r=function(){Z.port2.postMessage(0)}}else"document"in l&&"onreadystatechange"in l.document.createElement("script")?r=function(){var G=l.document.createElement("script");G.onreadystatechange=function(){X(),G.onreadystatechange=null,G.parentNode.removeChild(G),G=null},l.document.documentElement.appendChild(G)}:r=function(){setTimeout(X,0)};var p,y=[];function X(){p=!0;for(var N,G,d=y.length;d;){for(G=y,y=[],N=-1;++N * @license MIT - */i.exports=function(r){return r!=null&&(a(r)||o(r)||!!r._isBuffer)};function a(r){return!!r.constructor&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function o(r){return typeof r.readFloatLE=="function"&&typeof r.slice=="function"&&a(r.slice(0,0))}},{}],389:[function(t,i,l){var a={}.toString;i.exports=Array.isArray||function(o){return a.call(o)=="[object Array]"}},{}],390:[function(t,i,l){var a=t("./utils"),o=t("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";l.encode=function(f){for(var v=[],b,Z,p,y,X,m,N,G=0,d=f.length,u=d,s=a.getTypeOf(f)!=="string";G>2,X=(b&3)<<4|Z>>4,m=u>1?(Z&15)<<2|p>>6:64,N=u>2?p&63:64,v.push(r.charAt(y)+r.charAt(X)+r.charAt(m)+r.charAt(N));return v.join("")},l.decode=function(f){var v,b,Z,p,y,X,m,N=0,G=0,d="data:";if(f.substr(0,d.length)===d)throw new Error("Invalid base64 input, it looks like a data url.");f=f.replace(/[^A-Za-z0-9\+\/\=]/g,"");var u=f.length*3/4;if(f.charAt(f.length-1)===r.charAt(64)&&u--,f.charAt(f.length-2)===r.charAt(64)&&u--,u%1!==0)throw new Error("Invalid base64 input, bad content length.");var s;for(o.uint8array?s=new Uint8Array(u|0):s=new Array(u|0);N>4,b=(y&15)<<4|X>>2,Z=(X&3)<<6|m,s[G++]=v,X!==64&&(s[G++]=b),m!==64&&(s[G++]=Z);return s}},{"./support":419,"./utils":421}],391:[function(t,i,l){var a=t("./external"),o=t("./stream/DataWorker"),f=t("./stream/DataLengthProbe"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var Z=new o(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),p=this;return Z.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),Z},getCompressedWorker:function(){return new o(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(t,i,l){var a=t("./stream/GenericWorker");l.STORE={magic:"\0\0",compressWorker:function(r){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},l.DEFLATE=t("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(t,i,l){var a=t("./utils");function o(){for(var b,Z=[],p=0;p<256;p++){b=p;for(var y=0;y<8;y++)b=b&1?3988292384^b>>>1:b>>>1;Z[p]=b}return Z}var r=o();function f(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z[N])&255];return b^-1}function v(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z.charCodeAt(N))&255];return b^-1}i.exports=function(Z,p){if(typeof Z>"u"||!Z.length)return 0;var y=a.getTypeOf(Z)!=="string";return y?f(p|0,Z,Z.length,0):v(p|0,Z,Z.length,0)}},{"./utils":421}],394:[function(t,i,l){l.base64=!1,l.binary=!1,l.dir=!1,l.createFolders=!0,l.date=null,l.compression=null,l.compressionOptions=null,l.comment=null,l.unixPermissions=null,l.dosPermissions=null},{}],395:[function(t,i,l){var a=null;typeof Promise<"u"?a=Promise:a=t("lie"),i.exports={Promise:a}},{lie:425}],396:[function(t,i,l){var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=a?"uint8array":"array";l.magic="\b\0";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},l.compressWorker=function(Z){return new b("Deflate",Z)},l.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(t,i,l){var a=t("../utils"),o=t("../stream/GenericWorker"),r=t("../utf8"),f=t("../crc32"),v=t("../signature"),b=function(d,u){var s="",h;for(h=0;h>>8;return s},Z=function(d,u){var s=d;return d||(s=u?16893:33204),(s&65535)<<16},p=function(d,u){return(d||0)&63},y=function(d,u,s,h,c,W){var M=d.file,I=d.compression,w=W!==r.utf8encode,C=a.transformTo("string",W(M.name)),x=a.transformTo("string",r.utf8encode(M.name)),R=M.comment,g=a.transformTo("string",W(R)),S=a.transformTo("string",r.utf8encode(R)),L=x.length!==M.name.length,V=S.length!==R.length,Y,T,J="",U="",K="",H=M.dir,k=M.date,F={crc32:0,compressedSize:0,uncompressedSize:0};(!u||s)&&(F.crc32=d.crc32,F.compressedSize=d.compressedSize,F.uncompressedSize=d.uncompressedSize);var O=0;u&&(O|=8),!w&&(L||V)&&(O|=2048);var Q=0,oe=0;H&&(Q|=16),c==="UNIX"?(oe=798,Q|=Z(M.unixPermissions,H)):(oe=20,Q|=p(M.dosPermissions)),Y=k.getUTCHours(),Y=Y<<6,Y=Y|k.getUTCMinutes(),Y=Y<<5,Y=Y|k.getUTCSeconds()/2,T=k.getUTCFullYear()-1980,T=T<<4,T=T|k.getUTCMonth()+1,T=T<<5,T=T|k.getUTCDate(),L&&(U=b(1,1)+b(f(C),4)+x,J+="up"+b(U.length,2)+U),V&&(K=b(1,1)+b(f(g),4)+S,J+="uc"+b(K.length,2)+K);var se="";se+=` -\0`,se+=b(O,2),se+=I.magic,se+=b(Y,2),se+=b(T,2),se+=b(F.crc32,4),se+=b(F.compressedSize,4),se+=b(F.uncompressedSize,4),se+=b(C.length,2),se+=b(J.length,2);var he=v.LOCAL_FILE_HEADER+se+C+J,pe=v.CENTRAL_FILE_HEADER+b(oe,2)+se+b(g.length,2)+"\0\0\0\0"+b(Q,4)+b(h,4)+C+J+g;return{fileRecord:he,dirRecord:pe}},X=function(d,u,s,h,c){var W="",M=a.transformTo("string",c(h));return W=v.CENTRAL_DIRECTORY_END+"\0\0\0\0"+b(d,2)+b(d,2)+b(u,4)+b(s,4)+b(M.length,2)+M,W},m=function(d){var u="";return u=v.DATA_DESCRIPTOR+b(d.crc32,4)+b(d.compressedSize,4)+b(d.uncompressedSize,4),u};function N(G,d,u,s){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=d,this.zipPlatform=u,this.encodeFileName=s,this.streamFiles=G,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}a.inherits(N,o),N.prototype.push=function(G){var d=G.meta.percent||0,u=this.entriesCount,s=this._sources.length;this.accumulate?this.contentBuffer.push(G):(this.bytesWritten+=G.data.length,o.prototype.push.call(this,{data:G.data,meta:{currentFile:this.currentFile,percent:u?(d+100*(u-s-1))/u:100}}))},N.prototype.openedSource=function(G){this.currentSourceOffset=this.bytesWritten,this.currentFile=G.file.name;var d=this.streamFiles&&!G.file.dir;if(d){var u=y(G,d,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:u.fileRecord,meta:{percent:0}})}else this.accumulate=!0},N.prototype.closedSource=function(G){this.accumulate=!1;var d=this.streamFiles&&!G.file.dir,u=y(G,d,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(u.dirRecord),d)this.push({data:m(G),meta:{percent:100}});else for(this.push({data:u.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},N.prototype.flush=function(){for(var G=this.bytesWritten,d=0;d"u")&&(C.binary=!x);var R=W instanceof b&&W.uncompressedSize===0;(R||C.dir||!W||W.length===0)&&(C.base64=!1,C.binary=!0,W="",C.compression="STORE",I="string");var g=null;W instanceof b||W instanceof r?g=W:y.isNode&&y.isStream(W)?g=new X(c,W):g=o.prepareContent(c,W,C.binary,C.optimizedBinaryString,C.base64);var S=new Z(c,g,C);this.files[c]=S},N=function(c){c.slice(-1)==="/"&&(c=c.substring(0,c.length-1));var W=c.lastIndexOf("/");return W>0?c.substring(0,W):""},G=function(c){return c.slice(-1)!=="/"&&(c+="/"),c},d=function(c,W){return W=typeof W<"u"?W:v.createFolders,c=G(c),this.files[c]||m.call(this,c,null,{dir:!0,createFolders:W}),this.files[c]};function u(h){return Object.prototype.toString.call(h)==="[object RegExp]"}var s={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(c){var W,M,I;for(W in this.files)this.files.hasOwnProperty(W)&&(I=this.files[W],M=W.slice(this.root.length,W.length),M&&W.slice(0,this.root.length)===this.root&&c(M,I))},filter:function(c){var W=[];return this.forEach(function(M,I){c(M,I)&&W.push(I)}),W},file:function(c,W,M){if(arguments.length===1)if(u(c)){var I=c;return this.filter(function(C,x){return!x.dir&&I.test(C)})}else{var w=this.files[this.root+c];return w&&!w.dir?w:null}else c=this.root+c,m.call(this,c,W,M);return this},folder:function(c){if(!c)return this;if(u(c))return this.filter(function(w,C){return C.dir&&c.test(w)});var W=this.root+c,M=d.call(this,W),I=this.clone();return I.root=M.name,I},remove:function(c){c=this.root+c;var W=this.files[c];if(W||(c.slice(-1)!=="/"&&(c+="/"),W=this.files[c]),W&&!W.dir)delete this.files[c];else for(var M=this.filter(function(w,C){return C.name.slice(0,c.length)===c}),I=0;I=0;--y)if(this.data[y]===v&&this.data[y+1]===b&&this.data[y+2]===Z&&this.data[y+3]===p)return y-this.zero;return-1},r.prototype.readAndCheckSignature=function(f){var v=f.charCodeAt(0),b=f.charCodeAt(1),Z=f.charCodeAt(2),p=f.charCodeAt(3),y=this.readData(4);return v===y[0]&&b===y[1]&&Z===y[2]&&p===y[3]},r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return[];var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],407:[function(t,i,l){var a=t("../utils");function o(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(f){this.checkIndex(this.index+f)},checkIndex:function(f){if(this.length=this.index;b--)v=(v<<8)+this.byteAt(b);return this.index+=f,v},readString:function(f){return a.transformTo("string",this.readData(f))},readData:function(f){},lastIndexOfSignature:function(f){},readAndCheckSignature:function(f){},readDate:function(){var f=this.readInt(4);return new Date(Date.UTC((f>>25&127)+1980,(f>>21&15)-1,f>>16&31,f>>11&31,f>>5&63,(f&31)<<1))}},i.exports=o},{"../utils":421}],408:[function(t,i,l){var a=t("./Uint8ArrayReader"),o=t("../utils");function r(f){a.call(this,f)}o.inherits(r,a),r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(t,i,l){var a=t("./DataReader"),o=t("../utils");function r(f){a.call(this,f)}o.inherits(r,a),r.prototype.byteAt=function(f){return this.data.charCodeAt(this.zero+f)},r.prototype.lastIndexOfSignature=function(f){return this.data.lastIndexOf(f)-this.zero},r.prototype.readAndCheckSignature=function(f){var v=this.readData(4);return f===v},r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],410:[function(t,i,l){var a=t("./ArrayReader"),o=t("../utils");function r(f){a.call(this,f)}o.inherits(r,a),r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return new Uint8Array(0);var v=this.data.subarray(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./ArrayReader":406}],411:[function(t,i,l){var a=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=a.getTypeOf(Z);return a.checkSupport(p),p==="string"&&!o.uint8array?new f(Z):p==="nodebuffer"?new v(Z):o.uint8array?new b(a.transformTo("uint8array",Z)):new r(a.transformTo("array",Z))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(t,i,l){l.LOCAL_FILE_HEADER="PK",l.CENTRAL_FILE_HEADER="PK",l.CENTRAL_DIRECTORY_END="PK",l.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",l.ZIP64_CENTRAL_DIRECTORY_END="PK",l.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(t,i,l){var a=t("./GenericWorker"),o=t("../utils");function r(f){a.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,a),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":421,"./GenericWorker":417}],414:[function(t,i,l){var a=t("./GenericWorker"),o=t("../crc32"),r=t("../utils");function f(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}r.inherits(f,a),f.prototype.processChunk=function(v){this.streamInfo.crc32=o(v.data,this.streamInfo.crc32||0),this.push(v)},i.exports=f},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(t,i,l){var a=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}a.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":421,"./GenericWorker":417}],416:[function(t,i,l){var a=t("../utils"),o=t("./GenericWorker"),r=16*1024;function f(v){o.call(this,"DataWorker");var b=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,v.then(function(Z){b.dataIsReady=!0,b.data=Z,b.max=Z&&Z.length||0,b.type=a.getTypeOf(Z),b.isPaused||b._tickAndRepeat()},function(Z){b.error(Z)})}a.inherits(f,o),f.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},f.prototype.resume=function(){return o.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0):!1},f.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},f.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var v=r,b=null,Z=Math.min(this.max,this.index+v);if(this.index>=this.max)return this.end();switch(this.type){case"string":b=this.data.substring(this.index,Z);break;case"uint8array":b=this.data.subarray(this.index,Z);break;case"array":case"nodebuffer":b=this.data.slice(this.index,Z);break}return this.index=Z,this.push({data:b,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=f},{"../utils":421,"./GenericWorker":417}],417:[function(t,i,l){function a(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return this.isFinished?!1:(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,f){return this._listeners[r].push(f),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,f){if(this._listeners[r])for(var v=0;v "+r:r}},i.exports=a},{}],418:[function(t,i,l){(function(a){var o=t("../utils"),r=t("./ConvertWorker"),f=t("./GenericWorker"),v=t("../base64"),b=t("../support"),Z=t("../external"),p=null;if(b.nodestream)try{p=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function y(G,d,u){switch(G){case"blob":return o.newBlob(o.transformTo("arraybuffer",d),u);case"base64":return v.encode(d);default:return o.transformTo(G,d)}}function X(G,d){var u,s=0,h=null,c=0;for(u=0;u"u")l.blob=!1;else{var o=new ArrayBuffer(0);try{l.blob=new Blob([o],{type:"application/zip"}).size===0}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,f=new r;f.append(o),l.blob=f.getBlob("application/zip").size===0}catch{l.blob=!1}}}try{l.nodestream=!!t("readable-stream").Readable}catch{l.nodestream=!1}}).call(this,t("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(t,i,l){for(var a=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=b>=252?6:b>=248?5:b>=240?4:b>=224?3:b>=192?2:1;v[254]=v[254]=1;var Z=function(G){var d,u,s,h,c,W=G.length,M=0;for(h=0;h>>6,d[c++]=128|u&63):u<65536?(d[c++]=224|u>>>12,d[c++]=128|u>>>6&63,d[c++]=128|u&63):(d[c++]=240|u>>>18,d[c++]=128|u>>>12&63,d[c++]=128|u>>>6&63,d[c++]=128|u&63);return d},p=function(G,d){var u;for(d=d||G.length,d>G.length&&(d=G.length),u=d-1;u>=0&&(G[u]&192)===128;)u--;return u<0||u===0?d:u+v[G[u]]>d?u:d},y=function(G){var d,u,s,h,c=G.length,W=new Array(c*2);for(u=0,d=0;d4){W[u++]=65533,d+=h-1;continue}for(s&=h===2?31:h===3?15:7;h>1&&d1){W[u++]=65533;continue}s<65536?W[u++]=s:(s-=65536,W[u++]=55296|s>>10&1023,W[u++]=56320|s&1023)}return W.length!==u&&(W.subarray?W=W.subarray(0,u):W.length=u),a.applyFromCharCode(W)};l.utf8encode=function(G){return o.nodebuffer?r.newBufferFrom(G,"utf-8"):Z(G)},l.utf8decode=function(G){return o.nodebuffer?a.transformTo("nodebuffer",G).toString("utf-8"):(G=a.transformTo(o.uint8array?"uint8array":"array",G),y(G))};function X(){f.call(this,"utf-8 decode"),this.leftOver=null}a.inherits(X,f),X.prototype.processChunk=function(N){var G=a.transformTo(o.uint8array?"uint8array":"array",N.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var d=G;G=new Uint8Array(d.length+this.leftOver.length),G.set(this.leftOver,0),G.set(d,this.leftOver.length)}else G=this.leftOver.concat(G);this.leftOver=null}var u=p(G),s=G;u!==G.length&&(o.uint8array?(s=G.subarray(0,u),this.leftOver=G.subarray(u,G.length)):(s=G.slice(0,u),this.leftOver=G.slice(u,G.length))),this.push({data:l.utf8decode(s),meta:N.meta})},X.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:l.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},l.Utf8DecodeWorker=X;function m(){f.call(this,"utf-8 encode")}a.inherits(m,f),m.prototype.processChunk=function(N){this.push({data:l.utf8encode(N.data),meta:N.meta})},l.Utf8EncodeWorker=m},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(t,i,l){var a=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("set-immediate-shim"),v=t("./external");function b(G){var d=null;return a.uint8array?d=new Uint8Array(G.length):d=new Array(G.length),p(G,d)}l.newBlob=function(G,d){l.checkSupport("blob");try{return new Blob([G],{type:d})}catch{try{var u=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,s=new u;return s.append(G),s.getBlob(d)}catch{throw new Error("Bug : can't construct the Blob.")}}};function Z(G){return G}function p(G,d){for(var u=0;u1;)try{return y.stringifyByChunk(G,u,d)}catch{d=Math.floor(d/2)}return y.stringifyByChar(G)}l.applyFromCharCode=X;function m(G,d){for(var u=0;u"u"&&(G[u]=arguments[d][u]);return G},l.prepareContent=function(G,d,u,s,h){var c=v.Promise.resolve(d).then(function(W){var M=a.blob&&(W instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(W))!==-1);return M&&typeof FileReader<"u"?new v.Promise(function(I,w){var C=new FileReader;C.onload=function(x){I(x.target.result)},C.onerror=function(x){w(x.target.error)},C.readAsArrayBuffer(W)}):W});return c.then(function(W){var M=l.getTypeOf(W);return M?(M==="arraybuffer"?W=l.transformTo("uint8array",W):M==="string"&&(h?W=o.decode(W):u&&s!==!0&&(W=b(W))),W):v.Promise.reject(new Error("Can't read the data of '"+G+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(t,i,l){var a=t("./reader/readerFor"),o=t("./utils"),r=t("./signature"),f=t("./zipEntry");t("./utf8");var v=t("./support");function b(Z){this.files=[],this.loadOptions=Z}b.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var y=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+o.pretty(y)+", expected "+o.pretty(p)+")")}},isSignature:function(p,y){var X=this.reader.index;this.reader.setIndex(p);var m=this.reader.readString(4),N=m===y;return this.reader.setIndex(X),N},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),y=v.uint8array?"uint8array":"array",X=o.transformTo(y,p);this.zipComment=this.loadOptions.decodeFileName(X)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p=this.zip64EndOfCentralSize-44,y=0,X,m,N;y1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,y;for(p=0;p0)this.isSignature(X,r.CENTRAL_FILE_HEADER)||(this.reader.zero=N);else if(N<0)throw new Error("Corrupted zip: missing "+Math.abs(N)+" bytes.")},prepareReader:function(p){this.reader=a(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},i.exports=b},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(t,i,l){var a=t("./reader/readerFor"),o=t("./utils"),r=t("./compressedObject"),f=t("./crc32"),v=t("./utf8"),b=t("./compressions"),Z=t("./support"),p=0,y=3,X=function(G){for(var d in b)if(b.hasOwnProperty(d)&&b[d].magic===G)return b[d];return null};function m(N,G){this.options=N,this.loadOptions=G}m.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(G){var d,u;if(G.skip(22),this.fileNameLength=G.readInt(2),u=G.readInt(2),this.fileName=G.readData(this.fileNameLength),G.skip(u),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(d=X(this.compressionMethod),d===null)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,d,G.readData(this.compressedSize))},readCentralPart:function(G){this.versionMadeBy=G.readInt(2),G.skip(2),this.bitFlag=G.readInt(2),this.compressionMethod=G.readString(2),this.date=G.readDate(),this.crc32=G.readInt(4),this.compressedSize=G.readInt(4),this.uncompressedSize=G.readInt(4);var d=G.readInt(2);if(this.extraFieldsLength=G.readInt(2),this.fileCommentLength=G.readInt(2),this.diskNumberStart=G.readInt(2),this.internalFileAttributes=G.readInt(2),this.externalFileAttributes=G.readInt(4),this.localHeaderOffset=G.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");G.skip(d),this.readExtraFields(G),this.parseZIP64ExtraField(G),this.fileComment=G.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var G=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),G===p&&(this.dosPermissions=this.externalFileAttributes&63),G===y&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(G){if(this.extraFields[1]){var d=a(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=d.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=d.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=d.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=d.readInt(4))}},readExtraFields:function(G){var d=G.index+this.extraFieldsLength,u,s,h;for(this.extraFields||(this.extraFields={});G.index+4"u"?"undefined":o(a))=="object"&&a&&a.Object===Object&&a,p=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,y=Z||p||Function("return this")(),X=Object.prototype,m=X.toString,N=y.Symbol,G=N?N.prototype:void 0,d=G?G.toString:void 0;function u(M){if(typeof M=="string")return M;if(h(M))return d?d.call(M):"";var I=M+"";return I=="0"&&1/M==-r?"-0":I}function s(M){return!!M&&o(M)=="object"}function h(M){return o(M)=="symbol"||s(M)&&m.call(M)==f}function c(M){return M==null?"":u(M)}function W(M){return M=c(M),M&&b.test(M)?M.replace(v,"\\$&"):M}i.exports=W}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(t,i,l){(function(a){function o(ge){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(st){return typeof st}:o=function(st){return st&&typeof Symbol=="function"&&st.constructor===Symbol&&st!==Symbol.prototype?"symbol":typeof st},o(ge)}var r=200,f="Expected a function",v="__lodash_hash_undefined__",b=1,Z=2,p=1/0,y=9007199254740991,X="[object Arguments]",m="[object Array]",N="[object Boolean]",G="[object Date]",d="[object Error]",u="[object Function]",s="[object GeneratorFunction]",h="[object Map]",c="[object Number]",W="[object Object]",M="[object Promise]",I="[object RegExp]",w="[object Set]",C="[object String]",x="[object Symbol]",R="[object WeakMap]",g="[object ArrayBuffer]",S="[object DataView]",L="[object Float32Array]",V="[object Float64Array]",Y="[object Int8Array]",T="[object Int16Array]",J="[object Int32Array]",U="[object Uint8Array]",K="[object Uint8ClampedArray]",H="[object Uint16Array]",k="[object Uint32Array]",F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O=/^\w*$/,Q=/^\./,oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/[\\^$.*+?()[\]{}|]/g,he=/\\(\\)?/g,pe=/^\[object .+?Constructor\]$/,re=/^(?:0|[1-9]\d*)$/,_={};_[L]=_[V]=_[Y]=_[T]=_[J]=_[U]=_[K]=_[H]=_[k]=!0,_[X]=_[m]=_[g]=_[N]=_[S]=_[G]=_[d]=_[u]=_[h]=_[c]=_[W]=_[I]=_[w]=_[C]=_[R]=!1;var E=(typeof a>"u"?"undefined":o(a))=="object"&&a&&a.Object===Object&&a,$=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,ae=E||$||Function("return this")(),le=(typeof l>"u"?"undefined":o(l))=="object"&&l&&!l.nodeType&&l,ee=le&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,te=ee&&ee.exports===le,be=te&&E.process,ne=function(){try{return be&&be.binding("util")}catch{}}(),B=ne&&ne.isTypedArray;function q(ge,Ee,st,It){for(var an=-1,Et=ge?ge.length:0;++an-1}function Gl(ge,Ee){var st=this.__data__,It=il(st,ge);return It<0?st.push([ge,Ee]):st[It][1]=Ee,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(ge){var Ee=-1,st=ge?ge.length:0;for(this.clear();++Eeli))return!1;var Ji=Et.get(ge);if(Ji&&Et.get(Ee))return Ji==Ee;var Qi=-1,Di=!0,Bi=an&b?new ht:void 0;for(Et.set(ge,Ee),Et.set(Ee,ge);++Qi-1&&ge%1==0&&ge-1&&ge%1==0&&ge<=y}function Qn(ge){var Ee=o(ge);return!!ge&&(Ee=="object"||Ee=="function")}function qn(ge){return!!ge&&o(ge)=="object"}function Ti(ge){return o(ge)=="symbol"||qn(ge)&&Ze.call(ge)==x}var yi=B?Je(B):Xl;function Hl(ge){return ge==null?"":Tl(ge)}function Zi(ge,Ee,st){var It=ge==null?void 0:_t(ge,Ee);return It===void 0?st:It}function no(ge,Ee){return ge!=null&&to(ge,Ee,zt)}function Pl(ge){return Dn(ge)?Ll(ge):ll(ge)}function al(ge){return ge}function Tr(ge){return Un(ge)?ve(et(ge)):dl(ge)}i.exports=Lt}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(t,i,l){function a(Z){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(y){return typeof y}:a=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},a(Z)}var o="[object Boolean]",r=Object.prototype,f=r.toString;function v(Z){return Z===!0||Z===!1||b(Z)&&f.call(Z)==o}function b(Z){return!!Z&&a(Z)=="object"}i.exports=v},{}],429:[function(t,i,l){(function(a){function o(je){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(mt){return typeof mt}:o=function(mt){return mt&&typeof Symbol=="function"&&mt.constructor===Symbol&&mt!==Symbol.prototype?"symbol":typeof mt},o(je)}var r=200,f="__lodash_hash_undefined__",v=1,b=2,Z=9007199254740991,p="[object Arguments]",y="[object Array]",X="[object AsyncFunction]",m="[object Boolean]",N="[object Date]",G="[object Error]",d="[object Function]",u="[object GeneratorFunction]",s="[object Map]",h="[object Number]",c="[object Null]",W="[object Object]",M="[object Promise]",I="[object Proxy]",w="[object RegExp]",C="[object Set]",x="[object String]",R="[object Symbol]",g="[object Undefined]",S="[object WeakMap]",L="[object ArrayBuffer]",V="[object DataView]",Y="[object Float32Array]",T="[object Float64Array]",J="[object Int8Array]",U="[object Int16Array]",K="[object Int32Array]",H="[object Uint8Array]",k="[object Uint8ClampedArray]",F="[object Uint16Array]",O="[object Uint32Array]",Q=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,se=/^(?:0|[1-9]\d*)$/,he={};he[Y]=he[T]=he[J]=he[U]=he[K]=he[H]=he[k]=he[F]=he[O]=!0,he[p]=he[y]=he[L]=he[m]=he[V]=he[N]=he[G]=he[d]=he[s]=he[h]=he[W]=he[w]=he[C]=he[x]=he[S]=!1;var pe=(typeof a>"u"?"undefined":o(a))=="object"&&a&&a.Object===Object&&a,re=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,_=pe||re||Function("return this")(),E=(typeof l>"u"?"undefined":o(l))=="object"&&l&&!l.nodeType&&l,$=E&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,ae=$&&$.exports===E,le=ae&&pe.process,ee=function(){try{return le&&le.binding&&le.binding("util")}catch{}}(),te=ee&&ee.isTypedArray;function be(je,et){for(var mt=-1,Lt=je==null?0:je.length,Jn=0,sn=[];++mt-1}function Gl(je,et){var mt=this.__data__,Lt=il(mt,je);return Lt<0?(++this.size,mt.push([je,et])):mt[Lt][1]=et,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(je){var et=-1,mt=je==null?0:je.length;for(this.clear();++et_n))return!1;var ni=sn.get(je);if(ni&&sn.get(et))return ni==et;var Fi=-1,fi=!0,Qn=mt&b?new ht:void 0;for(sn.set(je,et),sn.set(et,je);++Fi<_n;){var qn=je[Fi],Ti=et[Fi];if(Lt)var yi=ii?Lt(Ti,qn,Fi,et,je,sn):Lt(qn,Ti,Fi,je,et,sn);if(yi!==void 0){if(yi)continue;fi=!1;break}if(Qn){if(!B(et,function(Hl,Zi){if(!ve(Qn,Zi)&&(qn===Hl||Jn(qn,Hl,mt,Lt,sn)))return Qn.push(Zi)})){fi=!1;break}}else if(!(qn===Ti||Jn(qn,Ti,mt,Lt,sn))){fi=!1;break}}return sn.delete(je),sn.delete(et),fi}function si(je,et,mt,Lt,Jn,sn,ii){switch(mt){case V:if(je.byteLength!=et.byteLength||je.byteOffset!=et.byteOffset)return!1;je=je.buffer,et=et.buffer;case L:return!(je.byteLength!=et.byteLength||!sn(new Ce(je),new Ce(et)));case m:case N:case h:return xl(+je,+et);case G:return je.name==et.name&&je.message==et.message;case w:case x:return je==et+"";case s:var _n=Je;case C:var Dn=Lt&v;if(_n||(_n=ke),je.size!=et.size&&!Dn)return!1;var ni=ii.get(je);if(ni)return ni==et;Lt|=b,ii.set(je,et);var Fi=$t(_n(je),_n(et),Lt,Jn,sn,ii);return ii.delete(je),Fi;case R:if(Ct)return Ct.call(je)==Ct.call(et)}return!1}function Ul(je,et,mt,Lt,Jn,sn){var ii=mt&v,_n=Xl(je),Dn=_n.length,ni=Xl(et),Fi=ni.length;if(Dn!=Fi&&!ii)return!1;for(var fi=Dn;fi--;){var Qn=_n[fi];if(!(ii?Qn in et:De.call(et,Qn)))return!1}var qn=sn.get(je);if(qn&&sn.get(et))return qn==et;var Ti=!0;sn.set(je,et),sn.set(et,je);for(var yi=ii;++fi-1&&je%1==0&&je-1&&je%1==0&&je<=Z}function Un(je){var et=o(je);return je!=null&&(et=="object"||et=="function")}function sr(je){return je!=null&&o(je)=="object"}var Fo=te?ue(te):zt;function Jo(je){return Vs(je)?Ll(je):Ht(je)}function Do(){return[]}function ja(){return!1}i.exports=oa}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(t,i,l){(function(a){function o(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(x){return typeof x}:o=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},o(w)}var r="[object AsyncFunction]",f="[object Function]",v="[object GeneratorFunction]",b="[object Null]",Z="[object Proxy]",p="[object Undefined]",y=(typeof a>"u"?"undefined":o(a))=="object"&&a&&a.Object===Object&&a,X=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,m=y||X||Function("return this")(),N=Object.prototype,G=N.hasOwnProperty,d=N.toString,u=m.Symbol,s=u?u.toStringTag:void 0;function h(w){return w==null?w===void 0?p:b:s&&s in Object(w)?c(w):W(w)}function c(w){var C=G.call(w,s),x=w[s];try{w[s]=void 0;var R=!0}catch{}var g=d.call(w);return R&&(C?w[s]=x:delete w[s]),g}function W(w){return d.call(w)}function M(w){if(!I(w))return!1;var C=h(w);return C==f||C==v||C==r||C==Z}function I(w){var C=o(w);return w!=null&&(C=="object"||C=="function")}i.exports=M}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(t,i,l){function a(o){return o==null}i.exports=a},{}],432:[function(t,i,l){function a(o){return o===void 0}i.exports=a},{}],433:[function(t,i,l){(function(a){function o(Me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Ze){return typeof Ze}:o=function(Ze){return Ze&&typeof Symbol=="function"&&Ze.constructor===Symbol&&Ze!==Symbol.prototype?"symbol":typeof Ze},o(Me)}var r=200,f="__lodash_hash_undefined__",v=1/0,b="[object Function]",Z="[object GeneratorFunction]",p=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,X=(typeof a>"u"?"undefined":o(a))=="object"&&a&&a.Object===Object&&a,m=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,N=X||m||Function("return this")();function G(Me,Ie){var Ze=Me?Me.length:0;return!!Ze&&s(Me,Ie,0)>-1}function d(Me,Ie,Ze){for(var Ce=-1,ye=Me?Me.length:0;++Ce-1}function E(Me,Ie){var Ze=this.__data__,Ce=ue(Ze,Me);return Ce<0?Ze.push([Me,Ie]):Ze[Ce][1]=Ie,this}se.prototype.clear=he,se.prototype.delete=pe,se.prototype.get=re,se.prototype.has=_,se.prototype.set=E;function $(Me){var Ie=-1,Ze=Me?Me.length:0;for(this.clear();++Ie=r){var Ke=Ie?null:Je(Me);if(Ke)return I(Ke);qe=!1,ye=c,Oe=new ne}else Oe=Ie?[]:ie;e:for(;++Ce56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var m=r.allocUnsafe(16);return m.writeInt32LE(this._a,0),m.writeInt32LE(this._b,4),m.writeInt32LE(this._c,8),m.writeInt32LE(this._d,12),m};function b(m,N){return m<>>32-N}function Z(m,N,G,d,u,s,h){return b(m+(N&G|~N&d)+u+s|0,h)+N|0}function p(m,N,G,d,u,s,h){return b(m+(N&d|G&~d)+u+s|0,h)+N|0}function y(m,N,G,d,u,s,h){return b(m+(N^G^d)+u+s|0,h)+N|0}function X(m,N,G,d,u,s,h){return b(m+(G^(N|~d))+u+s|0,h)+N|0}i.exports=v},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(t,i,l){var a=t("bn.js"),o=t("brorand");function r(f){this.rand=f||new o.Rand}i.exports=r,r.create=function(v){return new r(v)},r.prototype._randbelow=function(v){var b=v.bitLength(),Z=Math.ceil(b/8);do var p=new a(this.rand.generate(Z));while(p.cmp(v)>=0);return p},r.prototype._randrange=function(v,b){var Z=b.sub(v);return v.add(this._randbelow(Z))},r.prototype.test=function(v,b,Z){var p=v.bitLength(),y=a.mont(v),X=new a(1).toRed(y);b||(b=Math.max(1,p/48|0));for(var m=v.subn(1),N=0;!m.testn(N);N++);for(var G=v.shrn(N),d=m.toRed(y),u=!0;b>0;b--){var s=this._randrange(new a(2),m);Z&&Z(s);var h=s.toRed(y).redPow(G);if(!(h.cmp(X)===0||h.cmp(d)===0)){for(var c=1;c0;b--){var d=this._randrange(new a(2),X),u=v.gcd(d);if(u.cmpn(1)!==0)return u;var s=d.toRed(p).redPow(N);if(!(s.cmp(y)===0||s.cmp(G)===0)){for(var h=1;h>8,m=y&255;X?Z.push(X,m):Z.push(m)}return Z}a.toArray=o;function r(v){return v.length===1?"0"+v:v}a.zero2=r;function f(v){for(var b="",Z=0;Z0?M.windowBits=-M.windowBits:M.gzip&&M.windowBits>0&&M.windowBits<16&&(M.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new v,this.strm.avail_out=0;var I=a.deflateInit2(this.strm,M.level,M.method,M.windowBits,M.memLevel,M.strategy);if(I!==y)throw new Error(f[I]);if(M.header&&a.deflateSetHeader(this.strm,M.header),M.dictionary){var w;if(typeof M.dictionary=="string"?w=r.string2buf(M.dictionary):b.call(M.dictionary)==="[object ArrayBuffer]"?w=new Uint8Array(M.dictionary):w=M.dictionary,I=a.deflateSetDictionary(this.strm,w),I!==y)throw new Error(f[I]);this._dict_set=!0}}u.prototype.push=function(W,M){var I=this.strm,w=this.options.chunkSize,C,x;if(this.ended)return!1;x=M===~~M?M:M===!0?p:Z,typeof W=="string"?I.input=r.string2buf(W):b.call(W)==="[object ArrayBuffer]"?I.input=new Uint8Array(W):I.input=W,I.next_in=0,I.avail_in=I.input.length;do{if(I.avail_out===0&&(I.output=new o.Buf8(w),I.next_out=0,I.avail_out=w),C=a.deflate(I,x),C!==X&&C!==y)return this.onEnd(C),this.ended=!0,!1;(I.avail_out===0||I.avail_in===0&&(x===p||x===m))&&(this.options.to==="string"?this.onData(r.buf2binstring(o.shrinkBuf(I.output,I.next_out))):this.onData(o.shrinkBuf(I.output,I.next_out)))}while((I.avail_in>0||I.avail_out===0)&&C!==X);return x===p?(C=a.deflateEnd(this.strm),this.onEnd(C),this.ended=!0,C===y):(x===m&&(this.onEnd(y),I.avail_out=0),!0)},u.prototype.onData=function(W){this.chunks.push(W)},u.prototype.onEnd=function(W){W===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=W,this.msg=this.strm.msg};function s(W,M){var I=new u(M);if(I.push(W,!0),I.err)throw I.msg||f[I.err];return I.result}function h(W,M){return M=M||{},M.raw=!0,s(W,M)}function c(W,M){return M=M||{},M.gzip=!0,s(W,M)}l.Deflate=u,l.deflate=s,l.deflateRaw=h,l.gzip=c},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(t,i,l){var a=t("./zlib/inflate"),o=t("./utils/common"),r=t("./utils/strings"),f=t("./zlib/constants"),v=t("./zlib/messages"),b=t("./zlib/zstream"),Z=t("./zlib/gzheader"),p=Object.prototype.toString;function y(N){if(!(this instanceof y))return new y(N);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},N||{});var G=this.options;G.raw&&G.windowBits>=0&&G.windowBits<16&&(G.windowBits=-G.windowBits,G.windowBits===0&&(G.windowBits=-15)),G.windowBits>=0&&G.windowBits<16&&!(N&&N.windowBits)&&(G.windowBits+=32),G.windowBits>15&&G.windowBits<48&&(G.windowBits&15||(G.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new b,this.strm.avail_out=0;var d=a.inflateInit2(this.strm,G.windowBits);if(d!==f.Z_OK)throw new Error(v[d]);if(this.header=new Z,a.inflateGetHeader(this.strm,this.header),G.dictionary&&(typeof G.dictionary=="string"?G.dictionary=r.string2buf(G.dictionary):p.call(G.dictionary)==="[object ArrayBuffer]"&&(G.dictionary=new Uint8Array(G.dictionary)),G.raw&&(d=a.inflateSetDictionary(this.strm,G.dictionary),d!==f.Z_OK)))throw new Error(v[d])}y.prototype.push=function(N,G){var d=this.strm,u=this.options.chunkSize,s=this.options.dictionary,h,c,W,M,I,w=!1;if(this.ended)return!1;c=G===~~G?G:G===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof N=="string"?d.input=r.binstring2buf(N):p.call(N)==="[object ArrayBuffer]"?d.input=new Uint8Array(N):d.input=N,d.next_in=0,d.avail_in=d.input.length;do{if(d.avail_out===0&&(d.output=new o.Buf8(u),d.next_out=0,d.avail_out=u),h=a.inflate(d,f.Z_NO_FLUSH),h===f.Z_NEED_DICT&&s&&(h=a.inflateSetDictionary(this.strm,s)),h===f.Z_BUF_ERROR&&w===!0&&(h=f.Z_OK,w=!1),h!==f.Z_STREAM_END&&h!==f.Z_OK)return this.onEnd(h),this.ended=!0,!1;d.next_out&&(d.avail_out===0||h===f.Z_STREAM_END||d.avail_in===0&&(c===f.Z_FINISH||c===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=r.utf8border(d.output,d.next_out),M=d.next_out-W,I=r.buf2string(d.output,W),d.next_out=M,d.avail_out=u-M,M&&o.arraySet(d.output,d.output,W,M,0),this.onData(I)):this.onData(o.shrinkBuf(d.output,d.next_out))),d.avail_in===0&&d.avail_out===0&&(w=!0)}while((d.avail_in>0||d.avail_out===0)&&h!==f.Z_STREAM_END);return h===f.Z_STREAM_END&&(c=f.Z_FINISH),c===f.Z_FINISH?(h=a.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===f.Z_OK):(c===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),d.avail_out=0),!0)},y.prototype.onData=function(N){this.chunks.push(N)},y.prototype.onEnd=function(N){N===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=N,this.msg=this.strm.msg};function X(N,G){var d=new y(G);if(d.push(N,!0),d.err)throw d.msg||v[d.err];return d.result}function m(N,G){return G=G||{},G.raw=!0,X(N,G)}l.Inflate=y,l.inflate=X,l.inflateRaw=m,l.ungzip=X},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(t,i,l){function a(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(p){return typeof p}:a=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},a(b)}var o=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function r(b,Z){return Object.prototype.hasOwnProperty.call(b,Z)}l.assign=function(b){for(var Z=Array.prototype.slice.call(arguments,1);Z.length;){var p=Z.shift();if(p){if(a(p)!=="object")throw new TypeError(p+"must be non-object");for(var y in p)r(p,y)&&(b[y]=p[y])}}return b},l.shrinkBuf=function(b,Z){return b.length===Z?b:b.subarray?b.subarray(0,Z):(b.length=Z,b)};var f={arraySet:function(Z,p,y,X,m){if(p.subarray&&Z.subarray){Z.set(p.subarray(y,y+X),m);return}for(var N=0;N=252?6:v>=248?5:v>=240?4:v>=224?3:v>=192?2:1;f[254]=f[254]=1,l.string2buf=function(Z){var p,y,X,m,N,G=Z.length,d=0;for(m=0;m>>6,p[N++]=128|y&63):y<65536?(p[N++]=224|y>>>12,p[N++]=128|y>>>6&63,p[N++]=128|y&63):(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63,p[N++]=128|y>>>6&63,p[N++]=128|y&63);return p};function b(Z,p){if(p<65534&&(Z.subarray&&r||!Z.subarray&&o))return String.fromCharCode.apply(null,a.shrinkBuf(Z,p));for(var y="",X=0;X4){d[X++]=65533,y+=N-1;continue}for(m&=N===2?31:N===3?15:7;N>1&&y1){d[X++]=65533;continue}m<65536?d[X++]=m:(m-=65536,d[X++]=55296|m>>10&1023,d[X++]=56320|m&1023)}return b(d,X)},l.utf8border=function(Z,p){var y;for(p=p||Z.length,p>Z.length&&(p=Z.length),y=p-1;y>=0&&(Z[y]&192)===128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":442}],444:[function(t,i,l){function a(o,r,f,v){for(var b=o&65535|0,Z=o>>>16&65535|0,p=0;f!==0;){p=f>2e3?2e3:f,f-=p;do b=b+r[v++]|0,Z=Z+b|0;while(--p);b%=65521,Z%=65521}return b|Z<<16|0}i.exports=a},{}],445:[function(t,i,l){i.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(t,i,l){function a(){for(var f,v=[],b=0;b<256;b++){f=b;for(var Z=0;Z<8;Z++)f=f&1?3988292384^f>>>1:f>>>1;v[b]=f}return v}var o=a();function r(f,v,b,Z){var p=o,y=Z+b;f^=-1;for(var X=Z;X>>8^p[(f^v[X])&255];return f^-1}i.exports=r},{}],447:[function(t,i,l){var a=t("../utils/common"),o=t("./trees"),r=t("./adler32"),f=t("./crc32"),v=t("./messages"),b=0,Z=1,p=3,y=4,X=5,m=0,N=1,G=-2,d=-3,u=-5,s=-1,h=1,c=2,W=3,M=4,I=0,w=2,C=8,x=9,R=15,g=8,S=29,L=256,V=L+1+S,Y=30,T=19,J=2*V+1,U=15,K=3,H=258,k=H+K+1,F=32,O=42,Q=69,oe=73,se=91,he=103,pe=113,re=666,_=1,E=2,$=3,ae=4,le=3;function ee(ie,Oe){return ie.msg=v[Oe],Oe}function te(ie){return(ie<<1)-(ie>4?9:0)}function be(ie){for(var Oe=ie.length;--Oe>=0;)ie[Oe]=0}function ne(ie){var Oe=ie.state,Ke=Oe.pending;Ke>ie.avail_out&&(Ke=ie.avail_out),Ke!==0&&(a.arraySet(ie.output,Oe.pending_buf,Oe.pending_out,Ke,ie.next_out),ie.next_out+=Ke,Oe.pending_out+=Ke,ie.total_out+=Ke,ie.avail_out-=Ke,Oe.pending-=Ke,Oe.pending===0&&(Oe.pending_out=0))}function B(ie,Oe){o._tr_flush_block(ie,ie.block_start>=0?ie.block_start:-1,ie.strstart-ie.block_start,Oe),ie.block_start=ie.strstart,ne(ie.strm)}function q(ie,Oe){ie.pending_buf[ie.pending++]=Oe}function ue(ie,Oe){ie.pending_buf[ie.pending++]=Oe>>>8&255,ie.pending_buf[ie.pending++]=Oe&255}function ve(ie,Oe,Ke,Xe){var Re=ie.avail_in;return Re>Xe&&(Re=Xe),Re===0?0:(ie.avail_in-=Re,a.arraySet(Oe,ie.input,ie.next_in,Re,Ke),ie.state.wrap===1?ie.adler=r(ie.adler,Oe,Re,Ke):ie.state.wrap===2&&(ie.adler=f(ie.adler,Oe,Re,Ke)),ie.next_in+=Re,ie.total_in+=Re,Re)}function Ge(ie,Oe){var Ke=ie.max_chain_length,Xe=ie.strstart,Re,Ae,ct=ie.prev_length,lt=ie.nice_match,ot=ie.strstart>ie.w_size-k?ie.strstart-(ie.w_size-k):0,wt=ie.window,Mt=ie.w_mask,xt=ie.prev,Gt=ie.strstart+H,Zt=wt[Xe+ct-1],Tt=wt[Xe+ct];ie.prev_length>=ie.good_match&&(Ke>>=2),lt>ie.lookahead&&(lt=ie.lookahead);do if(Re=Oe,!(wt[Re+ct]!==Tt||wt[Re+ct-1]!==Zt||wt[Re]!==wt[Xe]||wt[++Re]!==wt[Xe+1])){Xe+=2,Re++;do;while(wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&Xect){if(ie.match_start=Oe,ct=Ae,Ae>=lt)break;Zt=wt[Xe+ct-1],Tt=wt[Xe+ct]}}while((Oe=xt[Oe&Mt])>ot&&--Ke!==0);return ct<=ie.lookahead?ct:ie.lookahead}function Je(ie){var Oe=ie.w_size,Ke,Xe,Re,Ae,ct;do{if(Ae=ie.window_size-ie.lookahead-ie.strstart,ie.strstart>=Oe+(Oe-k)){a.arraySet(ie.window,ie.window,Oe,Oe,0),ie.match_start-=Oe,ie.strstart-=Oe,ie.block_start-=Oe,Xe=ie.hash_size,Ke=Xe;do Re=ie.head[--Ke],ie.head[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Xe=Oe,Ke=Xe;do Re=ie.prev[--Ke],ie.prev[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Ae+=Oe}if(ie.strm.avail_in===0)break;if(Xe=ve(ie.strm,ie.window,ie.strstart+ie.lookahead,Ae),ie.lookahead+=Xe,ie.lookahead+ie.insert>=K)for(ct=ie.strstart-ie.insert,ie.ins_h=ie.window[ct],ie.ins_h=(ie.ins_h<ie.pending_buf_size-5&&(Ke=ie.pending_buf_size-5);;){if(ie.lookahead<=1){if(Je(ie),ie.lookahead===0&&Oe===b)return _;if(ie.lookahead===0)break}ie.strstart+=ie.lookahead,ie.lookahead=0;var Xe=ie.block_start+Ke;if((ie.strstart===0||ie.strstart>=Xe)&&(ie.lookahead=ie.strstart-Xe,ie.strstart=Xe,B(ie,!1),ie.strm.avail_out===0)||ie.strstart-ie.block_start>=ie.w_size-k&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):(ie.strstart>ie.block_start&&(B(ie,!1),ie.strm.avail_out===0),_)}function ke(ie,Oe){for(var Ke,Xe;;){if(ie.lookahead=K&&(ie.ins_h=(ie.ins_h<=K)if(Xe=o._tr_tally(ie,ie.strstart-ie.match_start,ie.match_length-K),ie.lookahead-=ie.match_length,ie.match_length<=ie.max_lazy_match&&ie.lookahead>=K){ie.match_length--;do ie.strstart++,ie.ins_h=(ie.ins_h<=K&&(ie.ins_h=(ie.ins_h<4096)&&(ie.match_length=K-1)),ie.prev_length>=K&&ie.match_length<=ie.prev_length){Re=ie.strstart+ie.lookahead-K,Xe=o._tr_tally(ie,ie.strstart-1-ie.prev_match,ie.prev_length-K),ie.lookahead-=ie.prev_length-1,ie.prev_length-=2;do++ie.strstart<=Re&&(ie.ins_h=(ie.ins_h<=K&&ie.strstart>0&&(Re=ie.strstart-1,Xe=ct[Re],Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re])){Ae=ie.strstart+H;do;while(Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Reie.lookahead&&(ie.match_length=ie.lookahead)}if(ie.match_length>=K?(Ke=o._tr_tally(ie,1,ie.match_length-K),ie.lookahead-=ie.match_length,ie.strstart+=ie.match_length,ie.match_length=0):(Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++),Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function Te(ie,Oe){for(var Ke;;){if(ie.lookahead===0&&(Je(ie),ie.lookahead===0)){if(Oe===b)return _;break}if(ie.match_length=0,Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++,Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function we(ie,Oe,Ke,Xe,Re){this.good_length=ie,this.max_lazy=Oe,this.nice_length=Ke,this.max_chain=Xe,this.func=Re}var Se;Se=[new we(0,0,0,0,xe),new we(4,4,8,4,ke),new we(4,5,16,8,ke),new we(4,6,32,32,ke),new we(4,4,16,16,Pe),new we(8,16,32,32,Pe),new we(8,16,128,128,Pe),new we(8,32,128,256,Pe),new we(32,128,258,1024,Pe),new we(32,258,258,4096,Pe)];function De(ie){ie.window_size=2*ie.w_size,be(ie.head),ie.max_lazy_match=Se[ie.level].max_lazy,ie.good_match=Se[ie.level].good_length,ie.nice_match=Se[ie.level].nice_length,ie.max_chain_length=Se[ie.level].max_chain,ie.strstart=0,ie.block_start=0,ie.lookahead=0,ie.insert=0,ie.match_length=ie.prev_length=K-1,ie.match_available=0,ie.ins_h=0}function me(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=C,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new a.Buf16(J*2),this.dyn_dtree=new a.Buf16((2*Y+1)*2),this.bl_tree=new a.Buf16((2*T+1)*2),be(this.dyn_ltree),be(this.dyn_dtree),be(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new a.Buf16(U+1),this.heap=new a.Buf16(2*V+1),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new a.Buf16(2*V+1),be(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ve(ie){var Oe;return!ie||!ie.state?ee(ie,G):(ie.total_in=ie.total_out=0,ie.data_type=w,Oe=ie.state,Oe.pending=0,Oe.pending_out=0,Oe.wrap<0&&(Oe.wrap=-Oe.wrap),Oe.status=Oe.wrap?O:pe,ie.adler=Oe.wrap===2?0:1,Oe.last_flush=b,o._tr_init(Oe),m)}function Me(ie){var Oe=Ve(ie);return Oe===m&&De(ie.state),Oe}function Ie(ie,Oe){return!ie||!ie.state||ie.state.wrap!==2?G:(ie.state.gzhead=Oe,m)}function Ze(ie,Oe,Ke,Xe,Re,Ae){if(!ie)return G;var ct=1;if(Oe===s&&(Oe=6),Xe<0?(ct=0,Xe=-Xe):Xe>15&&(ct=2,Xe-=16),Re<1||Re>x||Ke!==C||Xe<8||Xe>15||Oe<0||Oe>9||Ae<0||Ae>M)return ee(ie,G);Xe===8&&(Xe=9);var lt=new me;return ie.state=lt,lt.strm=ie,lt.wrap=ct,lt.gzhead=null,lt.w_bits=Xe,lt.w_size=1<X||Oe<0)return ie?ee(ie,G):G;if(Xe=ie.state,!ie.output||!ie.input&&ie.avail_in!==0||Xe.status===re&&Oe!==y)return ee(ie,ie.avail_out===0?u:G);if(Xe.strm=ie,Ke=Xe.last_flush,Xe.last_flush=Oe,Xe.status===O)if(Xe.wrap===2)ie.adler=0,q(Xe,31),q(Xe,139),q(Xe,8),Xe.gzhead?(q(Xe,(Xe.gzhead.text?1:0)+(Xe.gzhead.hcrc?2:0)+(Xe.gzhead.extra?4:0)+(Xe.gzhead.name?8:0)+(Xe.gzhead.comment?16:0)),q(Xe,Xe.gzhead.time&255),q(Xe,Xe.gzhead.time>>8&255),q(Xe,Xe.gzhead.time>>16&255),q(Xe,Xe.gzhead.time>>24&255),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,Xe.gzhead.os&255),Xe.gzhead.extra&&Xe.gzhead.extra.length&&(q(Xe,Xe.gzhead.extra.length&255),q(Xe,Xe.gzhead.extra.length>>8&255)),Xe.gzhead.hcrc&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending,0)),Xe.gzindex=0,Xe.status=Q):(q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,le),Xe.status=pe);else{var ct=C+(Xe.w_bits-8<<4)<<8,lt=-1;Xe.strategy>=c||Xe.level<2?lt=0:Xe.level<6?lt=1:Xe.level===6?lt=2:lt=3,ct|=lt<<6,Xe.strstart!==0&&(ct|=F),ct+=31-ct%31,Xe.status=pe,ue(Xe,ct),Xe.strstart!==0&&(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ie.adler=1}if(Xe.status===Q)if(Xe.gzhead.extra){for(Re=Xe.pending;Xe.gzindex<(Xe.gzhead.extra.length&65535)&&!(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size));)q(Xe,Xe.gzhead.extra[Xe.gzindex]&255),Xe.gzindex++;Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Xe.gzindex===Xe.gzhead.extra.length&&(Xe.gzindex=0,Xe.status=oe)}else Xe.status=oe;if(Xe.status===oe)if(Xe.gzhead.name){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.gzindex=0,Xe.status=se)}else Xe.status=se;if(Xe.status===se)if(Xe.gzhead.comment){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.status=he)}else Xe.status=he;if(Xe.status===he&&(Xe.gzhead.hcrc?(Xe.pending+2>Xe.pending_buf_size&&ne(ie),Xe.pending+2<=Xe.pending_buf_size&&(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),ie.adler=0,Xe.status=pe)):Xe.status=pe),Xe.pending!==0){if(ne(ie),ie.avail_out===0)return Xe.last_flush=-1,m}else if(ie.avail_in===0&&te(Oe)<=te(Ke)&&Oe!==y)return ee(ie,u);if(Xe.status===re&&ie.avail_in!==0)return ee(ie,u);if(ie.avail_in!==0||Xe.lookahead!==0||Oe!==b&&Xe.status!==re){var ot=Xe.strategy===c?Te(Xe,Oe):Xe.strategy===W?Be(Xe,Oe):Se[Xe.level].func(Xe,Oe);if((ot===$||ot===ae)&&(Xe.status=re),ot===_||ot===$)return ie.avail_out===0&&(Xe.last_flush=-1),m;if(ot===E&&(Oe===Z?o._tr_align(Xe):Oe!==X&&(o._tr_stored_block(Xe,0,0,!1),Oe===p&&(be(Xe.head),Xe.lookahead===0&&(Xe.strstart=0,Xe.block_start=0,Xe.insert=0))),ne(ie),ie.avail_out===0))return Xe.last_flush=-1,m}return Oe!==y?m:Xe.wrap<=0?N:(Xe.wrap===2?(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),q(Xe,ie.adler>>16&255),q(Xe,ie.adler>>24&255),q(Xe,ie.total_in&255),q(Xe,ie.total_in>>8&255),q(Xe,ie.total_in>>16&255),q(Xe,ie.total_in>>24&255)):(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ne(ie),Xe.wrap>0&&(Xe.wrap=-Xe.wrap),Xe.pending!==0?m:N)}function Ue(ie){var Oe;return!ie||!ie.state?G:(Oe=ie.state.status,Oe!==O&&Oe!==Q&&Oe!==oe&&Oe!==se&&Oe!==he&&Oe!==pe&&Oe!==re?ee(ie,G):(ie.state=null,Oe===pe?ee(ie,d):m))}function qe(ie,Oe){var Ke=Oe.length,Xe,Re,Ae,ct,lt,ot,wt,Mt;if(!ie||!ie.state||(Xe=ie.state,ct=Xe.wrap,ct===2||ct===1&&Xe.status!==O||Xe.lookahead))return G;for(ct===1&&(ie.adler=r(ie.adler,Oe,Ke,0)),Xe.wrap=0,Ke>=Xe.w_size&&(ct===0&&(be(Xe.head),Xe.strstart=0,Xe.block_start=0,Xe.insert=0),Mt=new a.Buf8(Xe.w_size),a.arraySet(Mt,Oe,Ke-Xe.w_size,Xe.w_size,0),Oe=Mt,Ke=Xe.w_size),lt=ie.avail_in,ot=ie.next_in,wt=ie.input,ie.avail_in=Ke,ie.next_in=0,ie.input=Oe,Je(Xe);Xe.lookahead>=K;){Re=Xe.strstart,Ae=Xe.lookahead-(K-1);do Xe.ins_h=(Xe.ins_h<>>24,h>>>=x,c-=x,x=C>>>16&255,x===0)Y[y++]=C&65535;else if(x&16){R=C&65535,x&=15,x&&(c>>=x,c-=x),c<15&&(h+=V[Z++]<>>24,h>>>=x,c-=x,x=C>>>16&255,x&16){if(g=C&65535,x&=15,cN){f.msg="invalid distance too far back",b.mode=a;break e}if(h>>>=x,c-=x,x=y-X,g>x){if(x=g-x,x>d&&b.sane){f.msg="invalid distance too far back",b.mode=a;break e}if(S=0,L=s,u===0){if(S+=G-x,x2;)Y[y++]=L[S++],Y[y++]=L[S++],Y[y++]=L[S++],R-=3;R&&(Y[y++]=L[S++],R>1&&(Y[y++]=L[S++]))}else{S=y-g;do Y[y++]=Y[S++],Y[y++]=Y[S++],Y[y++]=Y[S++],R-=3;while(R>2);R&&(Y[y++]=Y[S++],R>1&&(Y[y++]=Y[S++]))}}else if(x&64){f.msg="invalid distance code",b.mode=a;break e}else{C=M[(C&65535)+(h&(1<>3,Z-=R,c-=R<<3,h&=(1<>>24&255)+(Ze>>>8&65280)+((Ze&65280)<<8)+((Ze&255)<<24)}function ve(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ge(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ze.total_in=Ze.total_out=Ce.total=0,Ze.msg="",Ce.wrap&&(Ze.adler=Ce.wrap&1),Ce.mode=M,Ce.last=0,Ce.havedict=0,Ce.dmax=32768,Ce.head=null,Ce.hold=0,Ce.bits=0,Ce.lencode=Ce.lendyn=new a.Buf32(be),Ce.distcode=Ce.distdyn=new a.Buf32(ne),Ce.sane=1,Ce.back=-1,N)}function Je(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ce.wsize=0,Ce.whave=0,Ce.wnext=0,Ge(Ze))}function xe(Ze,Ce){var ye,Ue;return!Ze||!Ze.state||(Ue=Ze.state,Ce<0?(ye=0,Ce=-Ce):(ye=(Ce>>4)+1,Ce<48&&(Ce&=15)),Ce&&(Ce<8||Ce>15))?u:(Ue.window!==null&&Ue.wbits!==Ce&&(Ue.window=null),Ue.wrap=ye,Ue.wbits=Ce,Je(Ze))}function ke(Ze,Ce){var ye,Ue;return Ze?(Ue=new ve,Ze.state=Ue,Ue.window=null,ye=xe(Ze,Ce),ye!==N&&(Ze.state=null),ye):u}function Pe(Ze){return ke(Ze,q)}var Be=!0,Te,we;function Se(Ze){if(Be){var Ce;for(Te=new a.Buf32(512),we=new a.Buf32(32),Ce=0;Ce<144;)Ze.lens[Ce++]=8;for(;Ce<256;)Ze.lens[Ce++]=9;for(;Ce<280;)Ze.lens[Ce++]=7;for(;Ce<288;)Ze.lens[Ce++]=8;for(v(Z,Ze.lens,0,288,Te,0,Ze.work,{bits:9}),Ce=0;Ce<32;)Ze.lens[Ce++]=5;v(p,Ze.lens,0,32,we,0,Ze.work,{bits:5}),Be=!1}Ze.lencode=Te,Ze.lenbits=9,Ze.distcode=we,Ze.distbits=5}function De(Ze,Ce,ye,Ue){var qe,ie=Ze.state;return ie.window===null&&(ie.wsize=1<=ie.wsize?(a.arraySet(ie.window,Ce,ye-ie.wsize,ie.wsize,0),ie.wnext=0,ie.whave=ie.wsize):(qe=ie.wsize-ie.wnext,qe>Ue&&(qe=Ue),a.arraySet(ie.window,Ce,ye-Ue,qe,ie.wnext),Ue-=qe,Ue?(a.arraySet(ie.window,Ce,ye-Ue,Ue,0),ie.wnext=Ue,ie.whave=ie.wsize):(ie.wnext+=qe,ie.wnext===ie.wsize&&(ie.wnext=0),ie.whave>>8&255,ye.check=r(ye.check,en,2,0),Re=0,Ae=0,ye.mode=I;break}if(ye.flags=0,ye.head&&(ye.head.done=!1),!(ye.wrap&1)||(((Re&255)<<8)+(Re>>8))%31){Ze.msg="incorrect header check",ye.mode=le;break}if((Re&15)!==W){Ze.msg="unknown compression method",ye.mode=le;break}if(Re>>>=4,Ae-=4,Ut=(Re&15)+8,ye.wbits===0)ye.wbits=Ut;else if(Ut>ye.wbits){Ze.msg="invalid window size",ye.mode=le;break}ye.dmax=1<>8&1),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=w;case w:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,en[2]=Re>>>16&255,en[3]=Re>>>24&255,ye.check=r(ye.check,en,4,0)),Re=0,Ae=0,ye.mode=C;case C:for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>8),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=x;case x:if(ye.flags&1024){for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0}else ye.head&&(ye.head.extra=null);ye.mode=R;case R:if(ye.flags&1024&&(ot=ye.length,ot>Ke&&(ot=Ke),ot&&(ye.head&&(Ut=ye.head.extra_len-ye.length,ye.head.extra||(ye.head.extra=new Array(ye.head.extra_len)),a.arraySet(ye.head.extra,Ue,ie,ot,Ut)),ye.flags&512&&(ye.check=r(ye.check,Ue,ot,ie)),Ke-=ot,ie+=ot,ye.length-=ot),ye.length))break e;ye.length=0,ye.mode=g;case g:if(ye.flags&2048){if(Ke===0)break e;ot=0;do Ut=Ue[ie+ot++],ye.head&&Ut&&ye.length<65536&&(ye.head.name+=String.fromCharCode(Ut));while(Ut&&ot>9&1,ye.head.done=!0),Ze.adler=ye.check=0,ye.mode=T;break;case V:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ae&7,Ae-=Ae&7,ye.mode=E;break}for(;Ae<3;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=1,Ae-=1,Re&3){case 0:ye.mode=U;break;case 1:if(Se(ye),ye.mode=Q,Ce===m){Re>>>=2,Ae-=2;break e}break;case 2:ye.mode=k;break;case 3:Ze.msg="invalid block type",ye.mode=le}Re>>>=2,Ae-=2;break;case U:for(Re>>>=Ae&7,Ae-=Ae&7;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>16^65535)){Ze.msg="invalid stored block lengths",ye.mode=le;break}if(ye.length=Re&65535,Re=0,Ae=0,ye.mode=K,Ce===m)break e;case K:ye.mode=H;case H:if(ot=ye.length,ot){if(ot>Ke&&(ot=Ke),ot>Xe&&(ot=Xe),ot===0)break e;a.arraySet(qe,Ue,ie,ot,Oe),Ke-=ot,ie+=ot,Xe-=ot,Oe+=ot,ye.length-=ot;break}ye.mode=T;break;case k:for(;Ae<14;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=5,Ae-=5,ye.ndist=(Re&31)+1,Re>>>=5,Ae-=5,ye.ncode=(Re&15)+4,Re>>>=4,Ae-=4,ye.nlen>286||ye.ndist>30){Ze.msg="too many length or distance symbols",ye.mode=le;break}ye.have=0,ye.mode=F;case F:for(;ye.have>>=3,Ae-=3}for(;ye.have<19;)ye.lens[Ln[ye.have++]]=0;if(ye.lencode=ye.lendyn,ye.lenbits=7,nn={bits:ye.lenbits},kt=v(b,ye.lens,0,19,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid code lengths set",ye.mode=le;break}ye.have=0,ye.mode=O;case O:for(;ye.have>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Gt,Ae-=Gt,ye.lens[ye.have++]=Tt;else{if(Tt===16){for(Ft=Gt+2;Ae>>=Gt,Ae-=Gt,ye.have===0){Ze.msg="invalid bit length repeat",ye.mode=le;break}Ut=ye.lens[ye.have-1],ot=3+(Re&3),Re>>>=2,Ae-=2}else if(Tt===17){for(Ft=Gt+3;Ae>>=Gt,Ae-=Gt,Ut=0,ot=3+(Re&7),Re>>>=3,Ae-=3}else{for(Ft=Gt+7;Ae>>=Gt,Ae-=Gt,Ut=0,ot=11+(Re&127),Re>>>=7,Ae-=7}if(ye.have+ot>ye.nlen+ye.ndist){Ze.msg="invalid bit length repeat",ye.mode=le;break}for(;ot--;)ye.lens[ye.have++]=Ut}}if(ye.mode===le)break;if(ye.lens[256]===0){Ze.msg="invalid code -- missing end-of-block",ye.mode=le;break}if(ye.lenbits=9,nn={bits:ye.lenbits},kt=v(Z,ye.lens,0,ye.nlen,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid literal/lengths set",ye.mode=le;break}if(ye.distbits=6,ye.distcode=ye.distdyn,nn={bits:ye.distbits},kt=v(p,ye.lens,ye.nlen,ye.ndist,ye.distcode,0,ye.work,nn),ye.distbits=nn.bits,kt){Ze.msg="invalid distances set",ye.mode=le;break}if(ye.mode=Q,Ce===m)break e;case Q:ye.mode=oe;case oe:if(Ke>=6&&Xe>=258){Ze.next_out=Oe,Ze.avail_out=Xe,Ze.next_in=ie,Ze.avail_in=Ke,ye.hold=Re,ye.bits=Ae,f(Ze,lt),Oe=Ze.next_out,qe=Ze.output,Xe=Ze.avail_out,ie=Ze.next_in,Ue=Ze.input,Ke=Ze.avail_in,Re=ye.hold,Ae=ye.bits,ye.mode===T&&(ye.back=-1);break}for(ye.back=0;xt=ye.lencode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,ye.length=Tt,Zt===0){ye.mode=_;break}if(Zt&32){ye.back=-1,ye.mode=T;break}if(Zt&64){Ze.msg="invalid literal/length code",ye.mode=le;break}ye.extra=Zt&15,ye.mode=se;case se:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}ye.was=ye.length,ye.mode=he;case he:for(;xt=ye.distcode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,Zt&64){Ze.msg="invalid distance code",ye.mode=le;break}ye.offset=Tt,ye.extra=Zt&15,ye.mode=pe;case pe:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}if(ye.offset>ye.dmax){Ze.msg="invalid distance too far back",ye.mode=le;break}ye.mode=re;case re:if(Xe===0)break e;if(ot=lt-Xe,ye.offset>ot){if(ot=ye.offset-ot,ot>ye.whave&&ye.sane){Ze.msg="invalid distance too far back",ye.mode=le;break}ot>ye.wnext?(ot-=ye.wnext,wt=ye.wsize-ot):wt=ye.wnext-ot,ot>ye.length&&(ot=ye.length),Mt=ye.window}else Mt=qe,wt=Oe-ye.offset,ot=ye.length;ot>Xe&&(ot=Xe),Xe-=ot,ye.length-=ot;do qe[Oe++]=Mt[wt++];while(--ot);ye.length===0&&(ye.mode=oe);break;case _:if(Xe===0)break e;qe[Oe++]=ye.length,Xe--,ye.mode=oe;break;case E:if(ye.wrap){for(;Ae<32;){if(Ke===0)break e;Ke--,Re|=Ue[ie++]<=1&&oe[R]===0;R--);if(g>R&&(g=R),R===0)return h[c++]=1<<24|64<<16|0,h[c++]=1<<24|64<<16|0,M.bits=1,0;for(x=1;x0&&(G===v||R!==1))return-1;for(se[1]=0,w=1;wr||G===Z&&Y>f)return 1;for(;;){re=w-L,W[C]Q?(_=he[pe+W[C]],E=F[O+W[C]]):(_=32+64,E=0),J=1<>L)+U]=re<<24|_<<16|E|0;while(U!==0);for(J=1<>=1;if(J!==0?(T&=J-1,T+=J):T=0,C++,--oe[w]===0){if(w===R)break;w=d[u+W[C]]}if(w>g&&(T&H)!==K){for(L===0&&(L=g),k+=x,S=w-L,V=1<r||G===Z&&Y>f)return 1;K=T&H,h[K]=g<<24|S<<16|k-c|0}}return T!==0&&(h[k+T]=w-L<<24|64<<16|0),M.bits=g,0}},{"../utils/common":442}],452:[function(t,i,l){i.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(t,i,l){var a=t("../utils/common"),o=4,r=0,f=1,v=2;function b(me){for(var Ve=me.length;--Ve>=0;)me[Ve]=0}var Z=0,p=1,y=2,X=3,m=258,N=29,G=256,d=G+1+N,u=30,s=19,h=2*d+1,c=15,W=16,M=7,I=256,w=16,C=17,x=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],V=512,Y=new Array((d+2)*2);b(Y);var T=new Array(u*2);b(T);var J=new Array(V);b(J);var U=new Array(m-X+1);b(U);var K=new Array(N);b(K);var H=new Array(u);b(H);function k(me,Ve,Me,Ie,Ze){this.static_tree=me,this.extra_bits=Ve,this.extra_base=Me,this.elems=Ie,this.max_length=Ze,this.has_stree=me&&me.length}var F,O,Q;function oe(me,Ve){this.dyn_tree=me,this.max_code=0,this.stat_desc=Ve}function se(me){return me<256?J[me]:J[256+(me>>>7)]}function he(me,Ve){me.pending_buf[me.pending++]=Ve&255,me.pending_buf[me.pending++]=Ve>>>8&255}function pe(me,Ve,Me){me.bi_valid>W-Me?(me.bi_buf|=Ve<>W-me.bi_valid,me.bi_valid+=Me-W):(me.bi_buf|=Ve<>>=1,Me<<=1;while(--Ve>0);return Me>>>1}function E(me){me.bi_valid===16?(he(me,me.bi_buf),me.bi_buf=0,me.bi_valid=0):me.bi_valid>=8&&(me.pending_buf[me.pending++]=me.bi_buf&255,me.bi_buf>>=8,me.bi_valid-=8)}function $(me,Ve){var Me=Ve.dyn_tree,Ie=Ve.max_code,Ze=Ve.stat_desc.static_tree,Ce=Ve.stat_desc.has_stree,ye=Ve.stat_desc.extra_bits,Ue=Ve.stat_desc.extra_base,qe=Ve.stat_desc.max_length,ie,Oe,Ke,Xe,Re,Ae,ct=0;for(Xe=0;Xe<=c;Xe++)me.bl_count[Xe]=0;for(Me[me.heap[me.heap_max]*2+1]=0,ie=me.heap_max+1;ieqe&&(Xe=qe,ct++),Me[Oe*2+1]=Xe,!(Oe>Ie)&&(me.bl_count[Xe]++,Re=0,Oe>=Ue&&(Re=ye[Oe-Ue]),Ae=Me[Oe*2],me.opt_len+=Ae*(Xe+Re),Ce&&(me.static_len+=Ae*(Ze[Oe*2+1]+Re)));if(ct!==0){do{for(Xe=qe-1;me.bl_count[Xe]===0;)Xe--;me.bl_count[Xe]--,me.bl_count[Xe+1]+=2,me.bl_count[qe]--,ct-=2}while(ct>0);for(Xe=qe;Xe!==0;Xe--)for(Oe=me.bl_count[Xe];Oe!==0;)Ke=me.heap[--ie],!(Ke>Ie)&&(Me[Ke*2+1]!==Xe&&(me.opt_len+=(Xe-Me[Ke*2+1])*Me[Ke*2],Me[Ke*2+1]=Xe),Oe--)}}function ae(me,Ve,Me){var Ie=new Array(c+1),Ze=0,Ce,ye;for(Ce=1;Ce<=c;Ce++)Ie[Ce]=Ze=Ze+Me[Ce-1]<<1;for(ye=0;ye<=Ve;ye++){var Ue=me[ye*2+1];Ue!==0&&(me[ye*2]=_(Ie[Ue]++,Ue))}}function le(){var me,Ve,Me,Ie,Ze,Ce=new Array(c+1);for(Me=0,Ie=0;Ie>=7;Ie8?he(me,me.bi_buf):me.bi_valid>0&&(me.pending_buf[me.pending++]=me.bi_buf),me.bi_buf=0,me.bi_valid=0}function be(me,Ve,Me,Ie){te(me),Ie&&(he(me,Me),he(me,~Me)),a.arraySet(me.pending_buf,me.window,Ve,Me,me.pending),me.pending+=Me}function ne(me,Ve,Me,Ie){var Ze=Ve*2,Ce=Me*2;return me[Ze]>1;ye>=1;ye--)B(me,Me,ye);ie=Ce;do ye=me.heap[1],me.heap[1]=me.heap[me.heap_len--],B(me,Me,1),Ue=me.heap[1],me.heap[--me.heap_max]=ye,me.heap[--me.heap_max]=Ue,Me[ie*2]=Me[ye*2]+Me[Ue*2],me.depth[ie]=(me.depth[ye]>=me.depth[Ue]?me.depth[ye]:me.depth[Ue])+1,Me[ye*2+1]=Me[Ue*2+1]=ie,me.heap[1]=ie++,B(me,Me,1);while(me.heap_len>=2);me.heap[--me.heap_max]=me.heap[1],$(me,Ve),ae(Me,qe,me.bl_count)}function ve(me,Ve,Me){var Ie,Ze=-1,Ce,ye=Ve[0*2+1],Ue=0,qe=7,ie=4;for(ye===0&&(qe=138,ie=3),Ve[(Me+1)*2+1]=65535,Ie=0;Ie<=Me;Ie++)Ce=ye,ye=Ve[(Ie+1)*2+1],!(++Ue=3&&me.bl_tree[L[Ve]*2+1]===0;Ve--);return me.opt_len+=3*(Ve+1)+5+5+4,Ve}function xe(me,Ve,Me,Ie){var Ze;for(pe(me,Ve-257,5),pe(me,Me-1,5),pe(me,Ie-4,4),Ze=0;Ze>>=1)if(Ve&1&&me.dyn_ltree[Me*2]!==0)return r;if(me.dyn_ltree[9*2]!==0||me.dyn_ltree[10*2]!==0||me.dyn_ltree[13*2]!==0)return f;for(Me=32;Me0?(me.strm.data_type===v&&(me.strm.data_type=ke(me)),ue(me,me.l_desc),ue(me,me.d_desc),ye=Je(me),Ze=me.opt_len+3+7>>>3,Ce=me.static_len+3+7>>>3,Ce<=Ze&&(Ze=Ce)):Ze=Ce=Me+5,Me+4<=Ze&&Ve!==-1?Te(me,Ve,Me,Ie):me.strategy===o||Ce===Ze?(pe(me,(p<<1)+(Ie?1:0),3),q(me,Y,T)):(pe(me,(y<<1)+(Ie?1:0),3),xe(me,me.l_desc.max_code+1,me.d_desc.max_code+1,ye+1),q(me,me.dyn_ltree,me.dyn_dtree)),ee(me),Ie&&te(me)}function De(me,Ve,Me){return me.pending_buf[me.d_buf+me.last_lit*2]=Ve>>>8&255,me.pending_buf[me.d_buf+me.last_lit*2+1]=Ve&255,me.pending_buf[me.l_buf+me.last_lit]=Me&255,me.last_lit++,Ve===0?me.dyn_ltree[Me*2]++:(me.matches++,Ve--,me.dyn_ltree[(U[Me]+G+1)*2]++,me.dyn_dtree[se(Ve)*2]++),me.last_lit===me.lit_bufsize-1}l._tr_init=Be,l._tr_stored_block=Te,l._tr_flush_block=Se,l._tr_tally=De,l._tr_align=we},{"../utils/common":442}],454:[function(t,i,l){function a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}i.exports=a},{}],455:[function(t,i,l){i.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(t,i,l){var a=t("asn1.js");l.certificate=t("./certificate");var o=a.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});l.RSAPrivateKey=o;var r=a.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});l.RSAPublicKey=r;var f=a.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(v),this.key("subjectPublicKey").bitstr())});l.PublicKey=f;var v=a.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),b=a.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(v),this.key("subjectPrivateKey").octstr())});l.PrivateKey=b;var Z=a.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});l.EncryptedPrivateKey=Z;var p=a.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});l.DSAPrivateKey=p,l.DSAparam=a.define("DSAparam",function(){this.int()});var y=a.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(X),this.key("publicKey").optional().explicit(1).bitstr())});l.ECPrivateKey=y;var X=a.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});l.signature=a.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(t,i,l){var a=t("asn1.js"),o=a.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),r=a.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),f=a.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),v=a.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())}),b=a.define("RelativeDistinguishedName",function(){this.setof(r)}),Z=a.define("RDNSequence",function(){this.seqof(b)}),p=a.define("Name",function(){this.choice({rdnSequence:this.use(Z)})}),y=a.define("Validity",function(){this.seq().obj(this.key("notBefore").use(o),this.key("notAfter").use(o))}),X=a.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),m=a.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(f),this.key("issuer").use(p),this.key("validity").use(y),this.key("subject").use(p),this.key("subjectPublicKeyInfo").use(v),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(X).optional())}),N=a.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(m),this.key("signatureAlgorithm").use(f),this.key("signatureValue").bitstr())});i.exports=N},{"asn1.js":167}],458:[function(t,i,l){var a=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,r=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,f=t("evp_bytestokey"),v=t("browserify-aes"),b=t("safe-buffer").Buffer;i.exports=function(Z,p){var y=Z.toString(),X=y.match(a),m;if(X){var G="aes"+X[1],d=b.from(X[2],"hex"),u=b.from(X[3].replace(/[\r\n]/g,""),"base64"),s=f(p,d.slice(0,8),parseInt(X[1],10)).key,h=[],c=v.createDecipheriv(G,s,d);h.push(c.update(u)),h.push(c.final()),m=b.concat(h)}else{var N=y.match(r);m=b.from(N[2].replace(/[\r\n]/g,""),"base64")}var W=y.match(o)[1];return{tag:W,data:m}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(t,i,l){function a(X){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(N){return typeof N}:a=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},a(X)}var o=t("./asn1"),r=t("./aesid.json"),f=t("./fixProc"),v=t("browserify-aes"),b=t("pbkdf2"),Z=t("safe-buffer").Buffer;i.exports=p;function p(X){var m;a(X)==="object"&&!Z.isBuffer(X)&&(m=X.passphrase,X=X.key),typeof X=="string"&&(X=Z.from(X));var N=f(X,m),G=N.tag,d=N.data,u,s;switch(G){case"CERTIFICATE":s=o.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(s||(s=o.PublicKey.decode(d,"der")),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(s.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return s.subjectPrivateKey=s.subjectPublicKey,{type:"ec",data:s};case"1.2.840.10040.4.1":return s.algorithm.params.pub_key=o.DSAparam.decode(s.subjectPublicKey.data,"der"),{type:"dsa",data:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"ENCRYPTED PRIVATE KEY":d=o.EncryptedPrivateKey.decode(d,"der"),d=y(d,m);case"PRIVATE KEY":switch(s=o.PrivateKey.decode(d,"der"),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(s.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:s.algorithm.curve,privateKey:o.ECPrivateKey.decode(s.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return s.algorithm.params.priv_key=o.DSAparam.decode(s.subjectPrivateKey,"der"),{type:"dsa",params:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return d=o.ECPrivateKey.decode(d,"der"),{curve:d.parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+G)}}p.signature=o.signature;function y(X,m){var N=X.algorithm.decrypt.kde.kdeparams.salt,G=parseInt(X.algorithm.decrypt.kde.kdeparams.iters.toString(),10),d=r[X.algorithm.decrypt.cipher.algo.join(".")],u=X.algorithm.decrypt.cipher.iv,s=X.subjectPrivateKey,h=parseInt(d.split("-")[1],10)/8,c=b.pbkdf2Sync(m,N,G,h,"sha1"),W=v.createDecipheriv(d,c,u),M=[];return M.push(W.update(s)),M.push(W.final()),Z.concat(M)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(t,i,l){l.pbkdf2=t("./lib/async"),l.pbkdf2Sync=t("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(t,i,l){(function(a,o){var r=t("safe-buffer").Buffer,f=t("./precondition"),v=t("./default-encoding"),b=t("./sync"),Z=t("./to-buffer"),p,y=o.crypto&&o.crypto.subtle,X={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},m=[];function N(u){if(o.process&&!o.process.browser||!y||!y.importKey||!y.deriveBits)return Promise.resolve(!1);if(m[u]!==void 0)return m[u];p=p||r.alloc(8);var s=G(p,p,10,128,u).then(function(){return!0}).catch(function(){return!1});return m[u]=s,s}function G(u,s,h,c,W){return y.importKey("raw",u,{name:"PBKDF2"},!1,["deriveBits"]).then(function(M){return y.deriveBits({name:"PBKDF2",salt:s,iterations:h,hash:{name:W}},M,c<<3)}).then(function(M){return r.from(M)})}function d(u,s){u.then(function(h){a.nextTick(function(){s(null,h)})},function(h){a.nextTick(function(){s(h)})})}i.exports=function(u,s,h,c,W,M){typeof W=="function"&&(M=W,W=void 0),W=W||"sha1";var I=X[W.toLowerCase()];if(!I||typeof o.Promise!="function")return a.nextTick(function(){var w;try{w=b(u,s,h,c,W)}catch(C){return M(C)}M(null,w)});if(f(h,c),u=Z(u,v,"Password"),s=Z(s,v,"Salt"),typeof M!="function")throw new Error("No callback provided to pbkdf2");d(N(I).then(function(w){return w?G(u,s,h,c,I):b(u,s,h,c,W)}),M)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(t,i,l){(function(a){var o;if(a.browser)o="utf-8";else if(a.version){var r=parseInt(a.version.split(".")[0].slice(1),10);o=r>=6?"utf-8":"binary"}else o="utf-8";i.exports=o}).call(this,t("_process"))},{_process:467}],463:[function(t,i,l){var a=Math.pow(2,30)-1;i.exports=function(o,r){if(typeof o!="number")throw new TypeError("Iterations not a number");if(o<0)throw new TypeError("Bad iterations");if(typeof r!="number")throw new TypeError("Key length not a number");if(r<0||r>a||r!==r)throw new TypeError("Bad key length")}},{}],464:[function(t,i,l){var a=t("create-hash/md5"),o=t("ripemd160"),r=t("sha.js"),f=t("safe-buffer").Buffer,v=t("./precondition"),b=t("./default-encoding"),Z=t("./to-buffer"),p=f.alloc(128),y={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function X(G,d,u){var s=m(G),h=G==="sha512"||G==="sha384"?128:64;d.length>h?d=s(d):d.length"u"||!a.version||a.version.indexOf("v0.")===0||a.version.indexOf("v1.")===0&&a.version.indexOf("v1.8.")!==0?i.exports={nextTick:o}:i.exports=a;function o(r,f,v,b){if(typeof r!="function")throw new TypeError('"callback" argument must be a function');var Z=arguments.length,p,y;switch(Z){case 0:case 1:return a.nextTick(r);case 2:return a.nextTick(function(){r.call(null,f)});case 3:return a.nextTick(function(){r.call(null,f,v)});case 4:return a.nextTick(function(){r.call(null,f,v,b)});default:for(p=new Array(Z-1),y=0;y1)for(var c=1;cc||new f(d).cmp(h.modulus)>=0)throw new Error("decryption error");var W;u?W=Z(new f(d),h):W=v(d,h);var M=p.alloc(c-W.length);if(W=p.concat([M,W],c),s===4)return y(h,W);if(s===1)return X(h,W,u);if(s===3)return W;throw new Error("unknown padding")};function y(N,G){var d=N.modulus.byteLength(),u=b("sha1").update(p.alloc(0)).digest(),s=u.length;if(G[0]!==0)throw new Error("decryption error");var h=G.slice(1,s+1),c=G.slice(s+1),W=r(h,o(c,s)),M=r(c,o(W,d-s-1));if(m(u,M.slice(0,s)))throw new Error("decryption error");for(var I=s;M[I]===0;)I++;if(M[I++]!==1)throw new Error("decryption error");return M.slice(I)}function X(N,G,d){for(var u=G.slice(0,2),s=2,h=0;G[s++]!==0;)if(s>=G.length){h++;break}var c=G.slice(2,s-1);if((u.toString("hex")!=="0002"&&!d||u.toString("hex")!=="0001"&&d)&&h++,c.length<8&&h++,h)throw new Error("decryption error");return G.slice(s)}function m(N,G){N=p.from(N),G=p.from(G);var d=0,u=N.length;N.length!==G.length&&(d++,u=Math.min(N.length,G.length));for(var s=-1;++s=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return s?p(W,c):Z(W,c)};function X(G,d){var u=G.modulus.byteLength(),s=d.length,h=r("sha1").update(y.alloc(0)).digest(),c=h.length,W=2*c;if(s>u-W-2)throw new Error("message too long");var M=y.alloc(u-s-W-2),I=u-c-1,w=o(c),C=v(y.concat([h,M,y.alloc(1,1),d],I),f(w,I)),x=v(w,f(C,c));return new b(y.concat([y.alloc(1),x,C],u))}function m(G,d,u){var s=d.length,h=G.modulus.byteLength();if(s>h-11)throw new Error("message too long");var c;return u?c=y.alloc(h-s-3,255):c=N(h-s-3),new b(y.concat([y.from([0,u?1:2]),c,y.alloc(1),d],h))}function N(G){for(var d=y.allocUnsafe(G),u=0,s=o(G*2),h=0,c;uf)throw new RangeError("requested too many random bytes");var m=b.allocUnsafe(y);if(y>0)if(y>r)for(var N=0;Ny||u<0)throw new TypeError("offset must be a uint32");if(u>Z||u>s)throw new RangeError("offset out of range")}function m(u,s,h){if(typeof u!="number"||u!==u)throw new TypeError("size must be a number");if(u>y||u<0)throw new TypeError("size must be a uint32");if(u+s>h||u>Z)throw new RangeError("buffer too small")}p&&p.getRandomValues||!a.browser?(l.randomFill=N,l.randomFillSync=d):(l.randomFill=r,l.randomFillSync=r);function N(u,s,h,c){if(!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof s=="function")c=s,s=0,h=u.length;else if(typeof h=="function")c=h,h=u.length-s;else if(typeof c!="function")throw new TypeError('"cb" argument must be a function');return X(s,u.length),m(h,s,u.length),G(u,s,h,c)}function G(u,s,h,c){if(a.browser){var W=u.buffer,M=new Uint8Array(W,s,h);if(p.getRandomValues(M),c){a.nextTick(function(){c(null,u)});return}return u}if(c){v(h,function(w,C){if(w)return c(w);C.copy(u,s),c(null,u)});return}var I=v(h);return I.copy(u,s),u}function d(u,s,h){if(typeof s>"u"&&(s=0),!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return X(s,u.length),h===void 0&&(h=u.length-s),m(h,s,u.length),G(u,s,h)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(t,i,l){function a(y){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(m){return typeof m}:a=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},a(y)}function o(y,X){y.prototype=Object.create(X.prototype),y.prototype.constructor=y,y.__proto__=X}var r={};function f(y,X,m){m||(m=Error);function N(d,u,s){return typeof X=="string"?X:X(d,u,s)}var G=function(d){o(u,d);function u(s,h,c){return d.call(this,N(s,h,c))||this}return u}(m);G.prototype.name=m.name,G.prototype.code=y,r[y]=G}function v(y,X){if(Array.isArray(y)){var m=y.length;return y=y.map(function(N){return String(N)}),m>2?"one of ".concat(X," ").concat(y.slice(0,m-1).join(", "),", or ")+y[m-1]:m===2?"one of ".concat(X," ").concat(y[0]," or ").concat(y[1]):"of ".concat(X," ").concat(y[0])}else return"of ".concat(X," ").concat(String(y))}function b(y,X,m){return y.substr(!m||m<0?0:+m,X.length)===X}function Z(y,X,m){return(m===void 0||m>y.length)&&(m=y.length),y.substring(m-X.length,m)===X}function p(y,X,m){return typeof m!="number"&&(m=0),m+X.length>y.length?!1:y.indexOf(X,m)!==-1}f("ERR_INVALID_OPT_VALUE",function(y,X){return'The value "'+X+'" is invalid for option "'+y+'"'},TypeError),f("ERR_INVALID_ARG_TYPE",function(y,X,m){var N;typeof X=="string"&&b(X,"not ")?(N="must not be",X=X.replace(/^not /,"")):N="must be";var G;if(Z(y," argument"))G="The ".concat(y," ").concat(N," ").concat(v(X,"type"));else{var d=p(y,".")?"property":"argument";G='The "'.concat(y,'" ').concat(d," ").concat(N," ").concat(v(X,"type"))}return G+=". Received type ".concat(a(m)),G},TypeError),f("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),f("ERR_METHOD_NOT_IMPLEMENTED",function(y){return"The "+y+" method is not implemented"}),f("ERR_STREAM_PREMATURE_CLOSE","Premature close"),f("ERR_STREAM_DESTROYED",function(y){return"Cannot call "+y+" after a stream was destroyed"}),f("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),f("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),f("ERR_STREAM_WRITE_AFTER_END","write after end"),f("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),f("ERR_UNKNOWN_ENCODING",function(y){return"Unknown encoding: "+y},TypeError),f("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),i.exports.codes=r},{}],478:[function(t,i,l){(function(a){var o=Object.keys||function(m){var N=[];for(var G in m)N.push(G);return N};i.exports=p;var r=t("./_stream_readable"),f=t("./_stream_writable");t("inherits")(p,r);for(var v=o(f.prototype),b=0;b0)if(typeof te!="string"&&!q.objectMode&&Object.getPrototypeOf(te)!==b.prototype&&(te=p(te)),ne)q.endEmitted?x(ee,new M):Y(ee,q,te,!0);else if(q.ended)x(ee,new c);else{if(q.destroyed)return!1;q.reading=!1,q.decoder&&!be?(te=q.decoder.write(te),q.objectMode||te.length!==0?Y(ee,q,te,!1):O(ee,q)):Y(ee,q,te,!1)}else ne||(q.reading=!1,O(ee,q))}return!q.ended&&(q.length=J?ee=J:(ee--,ee|=ee>>>1,ee|=ee>>>2,ee|=ee>>>4,ee|=ee>>>8,ee|=ee>>>16,ee++),ee}function K(ee,te){return ee<=0||te.length===0&&te.ended?0:te.objectMode?1:ee!==ee?te.flowing&&te.length?te.buffer.head.data.length:te.length:(ee>te.highWaterMark&&(te.highWaterMark=U(ee)),ee<=te.length?ee:te.ended?te.length:(te.needReadable=!0,0))}L.prototype.read=function(ee){m("read",ee),ee=parseInt(ee,10);var te=this._readableState,be=ee;if(ee!==0&&(te.emittedReadable=!1),ee===0&&te.needReadable&&((te.highWaterMark!==0?te.length>=te.highWaterMark:te.length>0)||te.ended))return m("read: emitReadable",te.length,te.ended),te.length===0&&te.ended?$(this):k(this),null;if(ee=K(ee,te),ee===0&&te.ended)return te.length===0&&$(this),null;var ne=te.needReadable;m("need readable",ne),(te.length===0||te.length-ee0?B=E(ee,te):B=null,B===null?(te.needReadable=te.length<=te.highWaterMark,ee=0):(te.length-=ee,te.awaitDrain=0),te.length===0&&(te.ended||(te.needReadable=!0),be!==ee&&te.ended&&$(this)),B!==null&&this.emit("data",B),B};function H(ee,te){if(m("onEofChunk"),!te.ended){if(te.decoder){var be=te.decoder.end();be&&be.length&&(te.buffer.push(be),te.length+=te.objectMode?1:be.length)}te.ended=!0,te.sync?k(ee):(te.needReadable=!1,te.emittedReadable||(te.emittedReadable=!0,F(ee)))}}function k(ee){var te=ee._readableState;m("emitReadable",te.needReadable,te.emittedReadable),te.needReadable=!1,te.emittedReadable||(m("emitReadable",te.flowing),te.emittedReadable=!0,a.nextTick(F,ee))}function F(ee){var te=ee._readableState;m("emitReadable_",te.destroyed,te.length,te.ended),!te.destroyed&&(te.length||te.ended)&&(ee.emit("readable"),te.emittedReadable=!1),te.needReadable=!te.flowing&&!te.ended&&te.length<=te.highWaterMark,_(ee)}function O(ee,te){te.readingMore||(te.readingMore=!0,a.nextTick(Q,ee,te))}function Q(ee,te){for(;!te.reading&&!te.ended&&(te.length1&&le(ne.pipes,ee)!==-1)&&!Je&&(m("false write response, pause",ne.awaitDrain),ne.awaitDrain++),be.pause())}function Pe(Se){m("onerror",Se),we(),ee.removeListener("error",Pe),f(ee,"error")===0&&x(ee,Se)}g(ee,"error",Pe);function Be(){ee.removeListener("finish",Te),we()}ee.once("close",Be);function Te(){m("onfinish"),ee.removeListener("close",Be),we()}ee.once("finish",Te);function we(){m("unpipe"),be.unpipe(ee)}return ee.emit("pipe",be),ne.flowing||(m("pipe resume"),be.resume()),ee};function oe(ee){return function(){var be=ee._readableState;m("pipeOnDrain",be.awaitDrain),be.awaitDrain&&be.awaitDrain--,be.awaitDrain===0&&f(ee,"data")&&(be.flowing=!0,_(ee))}}L.prototype.unpipe=function(ee){var te=this._readableState,be={hasUnpiped:!1};if(te.pipesCount===0)return this;if(te.pipesCount===1)return ee&&ee!==te.pipes?this:(ee||(ee=te.pipes),te.pipes=null,te.pipesCount=0,te.flowing=!1,ee&&ee.emit("unpipe",this,be),this);if(!ee){var ne=te.pipes,B=te.pipesCount;te.pipes=null,te.pipesCount=0,te.flowing=!1;for(var q=0;q0,ne.flowing!==!1&&this.resume()):ee==="readable"&&!ne.endEmitted&&!ne.readableListening&&(ne.readableListening=ne.needReadable=!0,ne.flowing=!1,ne.emittedReadable=!1,m("on readable",ne.length,ne.reading),ne.length?k(this):ne.reading||a.nextTick(he,this)),be},L.prototype.addListener=L.prototype.on,L.prototype.removeListener=function(ee,te){var be=v.prototype.removeListener.call(this,ee,te);return ee==="readable"&&a.nextTick(se,this),be},L.prototype.removeAllListeners=function(ee){var te=v.prototype.removeAllListeners.apply(this,arguments);return(ee==="readable"||ee===void 0)&&a.nextTick(se,this),te};function se(ee){var te=ee._readableState;te.readableListening=ee.listenerCount("readable")>0,te.resumeScheduled&&!te.paused?te.flowing=!0:ee.listenerCount("data")>0&&ee.resume()}function he(ee){m("readable nexttick read 0"),ee.read(0)}L.prototype.resume=function(){var ee=this._readableState;return ee.flowing||(m("resume"),ee.flowing=!ee.readableListening,pe(this,ee)),ee.paused=!1,this};function pe(ee,te){te.resumeScheduled||(te.resumeScheduled=!0,a.nextTick(re,ee,te))}function re(ee,te){m("resume",te.reading),te.reading||ee.read(0),te.resumeScheduled=!1,ee.emit("resume"),_(ee),te.flowing&&!te.reading&&ee.read(0)}L.prototype.pause=function(){return m("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(m("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function _(ee){var te=ee._readableState;for(m("flow",te.flowing);te.flowing&&ee.read()!==null;);}L.prototype.wrap=function(ee){var te=this,be=this._readableState,ne=!1;ee.on("end",function(){if(m("wrapped end"),be.decoder&&!be.ended){var ue=be.decoder.end();ue&&ue.length&&te.push(ue)}te.push(null)}),ee.on("data",function(ue){if(m("wrapped data"),be.decoder&&(ue=be.decoder.write(ue)),!(be.objectMode&&ue==null)&&!(!be.objectMode&&(!ue||!ue.length))){var ve=te.push(ue);ve||(ne=!0,ee.pause())}});for(var B in ee)this[B]===void 0&&typeof ee[B]=="function"&&(this[B]=function(ve){return function(){return ee[ve].apply(ee,arguments)}}(B));for(var q=0;q=te.length?(te.decoder?be=te.buffer.join(""):te.buffer.length===1?be=te.buffer.first():be=te.buffer.concat(te.length),te.buffer.clear()):be=te.buffer.consume(ee,te.decoder),be}function $(ee){var te=ee._readableState;m("endReadable",te.endEmitted),te.endEmitted||(te.ended=!0,a.nextTick(ae,te,ee))}function ae(ee,te){if(m("endReadableNT",ee.endEmitted,ee.length),!ee.endEmitted&&ee.length===0&&(ee.endEmitted=!0,te.readable=!1,te.emit("end"),ee.autoDestroy)){var be=te._writableState;(!be||be.autoDestroy&&be.finished)&&te.destroy()}}typeof Symbol=="function"&&(L.from=function(ee,te){return C===void 0&&(C=t("./internal/streams/from")),C(L,ee,te)});function le(ee,te){for(var be=0,ne=ee.length;be-1))throw new w(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Y(_,E,$){return!_.objectMode&&_.decodeStrings!==!1&&typeof E=="string"&&(E=Z.from(E,$)),E}Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function T(_,E,$,ae,le,ee){if(!$){var te=Y(E,ae,le);ae!==te&&($=!0,le="buffer",ae=te)}var be=E.objectMode?1:ae.length;E.length+=be;var ne=E.length0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(u){var s={data:u,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var u=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,u}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(u){if(this.length===0)return"";for(var s=this.head,h=""+s.data;s=s.next;)h+=u+s.data;return h}},{key:"concat",value:function(u){if(this.length===0)return p.alloc(0);for(var s=p.allocUnsafe(u>>>0),h=this.head,c=0;h;)N(h.data,s,c),c+=h.data.length,h=h.next;return s}},{key:"consume",value:function(u,s){var h;return uW.length?W.length:u;if(M===W.length?c+=W:c+=W.slice(0,u),u-=M,u===0){M===W.length?(++h,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=W.slice(M));break}++h}return this.length-=h,c}},{key:"_getBuffer",value:function(u){var s=p.allocUnsafe(u),h=this.head,c=1;for(h.data.copy(s),u-=h.data.length;h=h.next;){var W=h.data,M=u>W.length?W.length:u;if(W.copy(s,s.length-u,0,M),u-=M,u===0){M===W.length?(++c,h.next?this.head=h.next:this.head=this.tail=null):(this.head=h,h.data=W.slice(M));break}++c}return this.length-=c,s}},{key:m,value:function(u,s){return X(this,o({},s,{depth:0,customInspect:!1}))}}]),G}()},{buffer:216,util:185}],485:[function(t,i,l){(function(a){function o(p,y){var X=this,m=this._readableState&&this._readableState.destroyed,N=this._writableState&&this._writableState.destroyed;return m||N?(y?y(p):p&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,a.nextTick(b,this,p)):a.nextTick(b,this,p)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(p||null,function(G){!y&&G?X._writableState?X._writableState.errorEmitted?a.nextTick(f,X):(X._writableState.errorEmitted=!0,a.nextTick(r,X,G)):a.nextTick(r,X,G):y?(a.nextTick(f,X),y(G)):a.nextTick(f,X)}),this)}function r(p,y){b(p,y),f(p)}function f(p){p._writableState&&!p._writableState.emitClose||p._readableState&&!p._readableState.emitClose||p.emit("close")}function v(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function b(p,y){p.emit("error",y)}function Z(p,y){var X=p._readableState,m=p._writableState;X&&X.autoDestroy||m&&m.autoDestroy?p.destroy(y):p.emit("error",y)}i.exports={destroy:o,undestroy:v,errorOrDestroy:Z}}).call(this,t("_process"))},{_process:467}],486:[function(t,i,l){var a=t("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function o(b){var Z=!1;return function(){if(!Z){Z=!0;for(var p=arguments.length,y=new Array(p),X=0;X0;return p(W,I,w,function(C){h||(h=C),C&&c.forEach(y),!I&&(c.forEach(y),s(h))})});return d.reduce(X)}i.exports=N},{"../../../errors":477,"./end-of-stream":486}],489:[function(t,i,l){var a=t("../../../errors").codes.ERR_INVALID_OPT_VALUE;function o(f,v,b){return f.highWaterMark!=null?f.highWaterMark:v?f[b]:null}function r(f,v,b,Z){var p=o(v,Z,b);if(p!=null){if(!(isFinite(p)&&Math.floor(p)===p)||p<0){var y=Z?b:"highWaterMark";throw new a(y,p)}return Math.floor(p)}return f.objectMode?16:16*1024}i.exports={getHighWaterMark:r}},{"../../../errors":477}],490:[function(t,i,l){i.exports=t("events").EventEmitter},{events:367}],491:[function(t,i,l){l=i.exports=t("./lib/_stream_readable.js"),l.Stream=l,l.Readable=l,l.Writable=t("./lib/_stream_writable.js"),l.Duplex=t("./lib/_stream_duplex.js"),l.Transform=t("./lib/_stream_transform.js"),l.PassThrough=t("./lib/_stream_passthrough.js"),l.finished=t("./lib/internal/streams/end-of-stream.js"),l.pipeline=t("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(t,i,l){function a(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(v){return typeof v}:a=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},a(r)}var o=function(r){var f=Object.prototype,v=f.hasOwnProperty,b,Z=typeof Symbol=="function"?Symbol:{},p=Z.iterator||"@@iterator",y=Z.asyncIterator||"@@asyncIterator",X=Z.toStringTag||"@@toStringTag";function m(H,k,F){return Object.defineProperty(H,k,{value:F,enumerable:!0,configurable:!0,writable:!0}),H[k]}try{m({},"")}catch{m=function(F,O,Q){return F[O]=Q}}function N(H,k,F,O){var Q=k&&k.prototype instanceof W?k:W,oe=Object.create(Q.prototype),se=new J(O||[]);return oe._invoke=L(H,F,se),oe}r.wrap=N;function G(H,k,F){try{return{type:"normal",arg:H.call(k,F)}}catch(O){return{type:"throw",arg:O}}}var d="suspendedStart",u="suspendedYield",s="executing",h="completed",c={};function W(){}function M(){}function I(){}var w={};w[p]=function(){return this};var C=Object.getPrototypeOf,x=C&&C(C(U([])));x&&x!==f&&v.call(x,p)&&(w=x);var R=I.prototype=W.prototype=Object.create(w);M.prototype=R.constructor=I,I.constructor=M,M.displayName=m(I,X,"GeneratorFunction");function g(H){["next","throw","return"].forEach(function(k){m(H,k,function(F){return this._invoke(k,F)})})}r.isGeneratorFunction=function(H){var k=typeof H=="function"&&H.constructor;return k?k===M||(k.displayName||k.name)==="GeneratorFunction":!1},r.mark=function(H){return Object.setPrototypeOf?Object.setPrototypeOf(H,I):(H.__proto__=I,m(H,X,"GeneratorFunction")),H.prototype=Object.create(R),H},r.awrap=function(H){return{__await:H}};function S(H,k){function F(oe,se,he,pe){var re=G(H[oe],H,se);if(re.type==="throw")pe(re.arg);else{var _=re.arg,E=_.value;return E&&a(E)==="object"&&v.call(E,"__await")?k.resolve(E.__await).then(function($){F("next",$,he,pe)},function($){F("throw",$,he,pe)}):k.resolve(E).then(function($){_.value=$,he(_)},function($){return F("throw",$,he,pe)})}}var O;function Q(oe,se){function he(){return new k(function(pe,re){F(oe,se,pe,re)})}return O=O?O.then(he,he):he()}this._invoke=Q}g(S.prototype),S.prototype[y]=function(){return this},r.AsyncIterator=S,r.async=function(H,k,F,O,Q){Q===void 0&&(Q=Promise);var oe=new S(N(H,k,F,O),Q);return r.isGeneratorFunction(k)?oe:oe.next().then(function(se){return se.done?se.value:oe.next()})};function L(H,k,F){var O=d;return function(oe,se){if(O===s)throw new Error("Generator is already running");if(O===h){if(oe==="throw")throw se;return K()}for(F.method=oe,F.arg=se;;){var he=F.delegate;if(he){var pe=V(he,F);if(pe){if(pe===c)continue;return pe}}if(F.method==="next")F.sent=F._sent=F.arg;else if(F.method==="throw"){if(O===d)throw O=h,F.arg;F.dispatchException(F.arg)}else F.method==="return"&&F.abrupt("return",F.arg);O=s;var re=G(H,k,F);if(re.type==="normal"){if(O=F.done?h:u,re.arg===c)continue;return{value:re.arg,done:F.done}}else re.type==="throw"&&(O=h,F.method="throw",F.arg=re.arg)}}}function V(H,k){var F=H.iterator[k.method];if(F===b){if(k.delegate=null,k.method==="throw"){if(H.iterator.return&&(k.method="return",k.arg=b,V(H,k),k.method==="throw"))return c;k.method="throw",k.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var O=G(F,H.iterator,k.arg);if(O.type==="throw")return k.method="throw",k.arg=O.arg,k.delegate=null,c;var Q=O.arg;if(!Q)return k.method="throw",k.arg=new TypeError("iterator result is not an object"),k.delegate=null,c;if(Q.done)k[H.resultName]=Q.value,k.next=H.nextLoc,k.method!=="return"&&(k.method="next",k.arg=b);else return Q;return k.delegate=null,c}g(R),m(R,X,"Generator"),R[p]=function(){return this},R.toString=function(){return"[object Generator]"};function Y(H){var k={tryLoc:H[0]};1 in H&&(k.catchLoc=H[1]),2 in H&&(k.finallyLoc=H[2],k.afterLoc=H[3]),this.tryEntries.push(k)}function T(H){var k=H.completion||{};k.type="normal",delete k.arg,H.completion=k}function J(H){this.tryEntries=[{tryLoc:"root"}],H.forEach(Y,this),this.reset(!0)}r.keys=function(H){var k=[];for(var F in H)k.push(F);return k.reverse(),function O(){for(;k.length;){var Q=k.pop();if(Q in H)return O.value=Q,O.done=!1,O}return O.done=!0,O}};function U(H){if(H){var k=H[p];if(k)return k.call(H);if(typeof H.next=="function")return H;if(!isNaN(H.length)){var F=-1,O=function Q(){for(;++F=0;--Q){var oe=this.tryEntries[Q],se=oe.completion;if(oe.tryLoc==="root")return O("end");if(oe.tryLoc<=this.prev){var he=v.call(oe,"catchLoc"),pe=v.call(oe,"finallyLoc");if(he&&pe){if(this.prev=0;--O){var Q=this.tryEntries[O];if(Q.tryLoc<=this.prev&&v.call(Q,"finallyLoc")&&this.prev=0;--F){var O=this.tryEntries[F];if(O.finallyLoc===k)return this.complete(O.completion,O.afterLoc),T(O),c}},catch:function(k){for(var F=this.tryEntries.length-1;F>=0;--F){var O=this.tryEntries[F];if(O.tryLoc===k){var Q=O.completion;if(Q.type==="throw"){var oe=Q.arg;T(O)}return oe}}throw new Error("illegal catch attempt")},delegateYield:function(k,F,O){return this.delegate={iterator:U(k),resultName:F,nextLoc:O},this.method==="next"&&(this.arg=b),c}},r}((typeof i>"u"?"undefined":a(i))==="object"?i.exports:{});try{regeneratorRuntime=o}catch{Function("r","regeneratorRuntime = r")(o)}},{}],493:[function(t,i,l){var a=t("buffer").Buffer,o=t("inherits"),r=t("hash-base"),f=new Array(16),v=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],b=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],Z=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],y=[0,1518500249,1859775393,2400959708,2840853838],X=[1352829926,1548603684,1836072691,2053994217,0];function m(){r.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}o(m,r),m.prototype._update=function(){for(var c=f,W=0;W<16;++W)c[W]=this._block.readInt32LE(W*4);for(var M=this._a|0,I=this._b|0,w=this._c|0,C=this._d|0,x=this._e|0,R=this._a|0,g=this._b|0,S=this._c|0,L=this._d|0,V=this._e|0,Y=0;Y<80;Y+=1){var T,J;Y<16?(T=G(M,I,w,C,x,c[v[Y]],y[0],Z[Y]),J=h(R,g,S,L,V,c[b[Y]],X[0],p[Y])):Y<32?(T=d(M,I,w,C,x,c[v[Y]],y[1],Z[Y]),J=s(R,g,S,L,V,c[b[Y]],X[1],p[Y])):Y<48?(T=u(M,I,w,C,x,c[v[Y]],y[2],Z[Y]),J=u(R,g,S,L,V,c[b[Y]],X[2],p[Y])):Y<64?(T=s(M,I,w,C,x,c[v[Y]],y[3],Z[Y]),J=d(R,g,S,L,V,c[b[Y]],X[3],p[Y])):(T=h(M,I,w,C,x,c[v[Y]],y[4],Z[Y]),J=G(R,g,S,L,V,c[b[Y]],X[4],p[Y])),M=x,x=C,C=N(w,10),w=I,I=T,R=V,V=L,L=N(S,10),S=g,g=J}var U=this._b+w+L|0;this._b=this._c+C+V|0,this._c=this._d+x+R|0,this._d=this._e+M+g|0,this._e=this._a+I+S|0,this._a=U},m.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var c=a.alloc?a.alloc(20):new a(20);return c.writeInt32LE(this._a,0),c.writeInt32LE(this._b,4),c.writeInt32LE(this._c,8),c.writeInt32LE(this._d,12),c.writeInt32LE(this._e,16),c};function N(c,W){return c<>>32-W}function G(c,W,M,I,w,C,x,R){return N(c+(W^M^I)+C+x|0,R)+w|0}function d(c,W,M,I,w,C,x,R){return N(c+(W&M|~W&I)+C+x|0,R)+w|0}function u(c,W,M,I,w,C,x,R){return N(c+((W|~M)^I)+C+x|0,R)+w|0}function s(c,W,M,I,w,C,x,R){return N(c+(W&I|M&~I)+C+x|0,R)+w|0}function h(c,W,M,I,w,C,x,R){return N(c+(W^(M|~I))+C+x|0,R)+w|0}i.exports=m},{buffer:216,"hash-base":370,inherits:387}],494:[function(t,i,l){var a=t("buffer"),o=a.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=a:(r(a,l),l.Buffer=f);function f(v,b,Z){return o(v,b,Z)}r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return a.SlowBuffer(v)}},{buffer:216}],495:[function(t,i,l){(function(a){function o(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(X){return typeof X}:o=function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},o(p)}var r=t("buffer"),f=r.Buffer,v={},b;for(b in r)r.hasOwnProperty(b)&&(b==="SlowBuffer"||b==="Buffer"||(v[b]=r[b]));var Z=v.Buffer={};for(b in f)f.hasOwnProperty(b)&&(b==="allocUnsafe"||b==="allocUnsafeSlow"||(Z[b]=f[b]));if(v.Buffer.prototype=f.prototype,(!Z.from||Z.from===Uint8Array.from)&&(Z.from=function(p,y,X){if(typeof p=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+o(p));if(p&&typeof p.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(p));return f(p,y,X)}),Z.alloc||(Z.alloc=function(p,y,X){if(typeof p!="number")throw new TypeError('The "size" argument must be of type number. Received type '+o(p));if(p<0||p>=2*(1<<30))throw new RangeError('The value "'+p+'" is invalid for option "size"');var m=f(p);return!y||y.length===0?m.fill(0):typeof X=="string"?m.fill(y,X):m.fill(y),m}),!v.kStringMaxLength)try{v.kStringMaxLength=a.binding("buffer").kStringMaxLength}catch{}v.constants||(v.constants={MAX_LENGTH:v.kMaxLength},v.kStringMaxLength&&(v.constants.MAX_STRING_LENGTH=v.kStringMaxLength)),i.exports=v}).call(this,t("_process"))},{_process:467,buffer:216}],496:[function(t,i,l){function a(Dt,ht){var Fe;if(typeof Symbol>"u"||Dt[Symbol.iterator]==null){if(Array.isArray(Dt)||(Fe=p(Dt))||ht&&Dt&&typeof Dt.length=="number"){Fe&&(Dt=Fe);var tt=0,nt=function(){};return{s:nt,n:function(){return tt>=Dt.length?{done:!0}:{done:!1,value:Dt[tt++]}},e:function(gi){throw gi},f:nt}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. + */i.exports=function(r){return r!=null&&(l(r)||o(r)||!!r._isBuffer)};function l(r){return!!r.constructor&&typeof r.constructor.isBuffer=="function"&&r.constructor.isBuffer(r)}function o(r){return typeof r.readFloatLE=="function"&&typeof r.slice=="function"&&l(r.slice(0,0))}},{}],389:[function(t,i,a){var l={}.toString;i.exports=Array.isArray||function(o){return l.call(o)=="[object Array]"}},{}],390:[function(t,i,a){var l=t("./utils"),o=t("./support"),r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.encode=function(f){for(var v=[],b,Z,p,y,X,m,N,G=0,d=f.length,u=d,s=l.getTypeOf(f)!=="string";G>2,X=(b&3)<<4|Z>>4,m=u>1?(Z&15)<<2|p>>6:64,N=u>2?p&63:64,v.push(r.charAt(y)+r.charAt(X)+r.charAt(m)+r.charAt(N));return v.join("")},a.decode=function(f){var v,b,Z,p,y,X,m,N=0,G=0,d="data:";if(f.substr(0,d.length)===d)throw new Error("Invalid base64 input, it looks like a data url.");f=f.replace(/[^A-Za-z0-9\+\/\=]/g,"");var u=f.length*3/4;if(f.charAt(f.length-1)===r.charAt(64)&&u--,f.charAt(f.length-2)===r.charAt(64)&&u--,u%1!==0)throw new Error("Invalid base64 input, bad content length.");var s;for(o.uint8array?s=new Uint8Array(u|0):s=new Array(u|0);N>4,b=(y&15)<<4|X>>2,Z=(X&3)<<6|m,s[G++]=v,X!==64&&(s[G++]=b),m!==64&&(s[G++]=Z);return s}},{"./support":419,"./utils":421}],391:[function(t,i,a){var l=t("./external"),o=t("./stream/DataWorker"),f=t("./stream/DataLengthProbe"),r=t("./stream/Crc32Probe"),f=t("./stream/DataLengthProbe");function v(b,Z,p,y,X){this.compressedSize=b,this.uncompressedSize=Z,this.crc32=p,this.compression=y,this.compressedContent=X}v.prototype={getContentWorker:function(){var Z=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new f("data_length")),p=this;return Z.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),Z},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},v.createWorkerFrom=function(b,Z,p){return b.pipe(new r).pipe(new f("uncompressedSize")).pipe(Z.compressWorker(p)).pipe(new f("compressedSize")).withStreamInfo("compression",Z)},i.exports=v},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(t,i,a){var l=t("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(r){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},a.DEFLATE=t("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(t,i,a){var l=t("./utils");function o(){for(var b,Z=[],p=0;p<256;p++){b=p;for(var y=0;y<8;y++)b=b&1?3988292384^b>>>1:b>>>1;Z[p]=b}return Z}var r=o();function f(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z[N])&255];return b^-1}function v(b,Z,p,y){var X=r,m=y+p;b=b^-1;for(var N=y;N>>8^X[(b^Z.charCodeAt(N))&255];return b^-1}i.exports=function(Z,p){if(typeof Z>"u"||!Z.length)return 0;var y=l.getTypeOf(Z)!=="string";return y?f(p|0,Z,Z.length,0):v(p|0,Z,Z.length,0)}},{"./utils":421}],394:[function(t,i,a){a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],395:[function(t,i,a){var l=null;typeof Promise<"u"?l=Promise:l=t("lie"),i.exports={Promise:l}},{lie:425}],396:[function(t,i,a){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=t("pako"),r=t("./utils"),f=t("./stream/GenericWorker"),v=l?"uint8array":"array";a.magic="\b\0";function b(Z,p){f.call(this,"FlateWorker/"+Z),this._pako=null,this._pakoAction=Z,this._pakoOptions=p,this.meta={}}r.inherits(b,f),b.prototype.processChunk=function(Z){this.meta=Z.meta,this._pako===null&&this._createPako(),this._pako.push(r.transformTo(v,Z.data),!1)},b.prototype.flush=function(){f.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},b.prototype.cleanUp=function(){f.prototype.cleanUp.call(this),this._pako=null},b.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Z=this;this._pako.onData=function(p){Z.push({data:p,meta:Z.meta})}},a.compressWorker=function(Z){return new b("Deflate",Z)},a.uncompressWorker=function(){return new b("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(t,i,a){var l=t("../utils"),o=t("../stream/GenericWorker"),r=t("../utf8"),f=t("../crc32"),v=t("../signature"),b=function(d,u){var s="",h;for(h=0;h>>8;return s},Z=function(d,u){var s=d;return d||(s=u?16893:33204),(s&65535)<<16},p=function(d,u){return(d||0)&63},y=function(d,u,s,h,c,W){var M=d.file,I=d.compression,w=W!==r.utf8encode,C=l.transformTo("string",W(M.name)),x=l.transformTo("string",r.utf8encode(M.name)),R=M.comment,g=l.transformTo("string",W(R)),S=l.transformTo("string",r.utf8encode(R)),L=x.length!==M.name.length,V=S.length!==R.length,Y,T,J="",U="",K="",H=M.dir,k=M.date,F={crc32:0,compressedSize:0,uncompressedSize:0};(!u||s)&&(F.crc32=d.crc32,F.compressedSize=d.compressedSize,F.uncompressedSize=d.uncompressedSize);var O=0;u&&(O|=8),!w&&(L||V)&&(O|=2048);var Q=0,oe=0;H&&(Q|=16),c==="UNIX"?(oe=798,Q|=Z(M.unixPermissions,H)):(oe=20,Q|=p(M.dosPermissions)),Y=k.getUTCHours(),Y=Y<<6,Y=Y|k.getUTCMinutes(),Y=Y<<5,Y=Y|k.getUTCSeconds()/2,T=k.getUTCFullYear()-1980,T=T<<4,T=T|k.getUTCMonth()+1,T=T<<5,T=T|k.getUTCDate(),L&&(U=b(1,1)+b(f(C),4)+x,J+="up"+b(U.length,2)+U),V&&(K=b(1,1)+b(f(g),4)+S,J+="uc"+b(K.length,2)+K);var se="";se+=` +\0`,se+=b(O,2),se+=I.magic,se+=b(Y,2),se+=b(T,2),se+=b(F.crc32,4),se+=b(F.compressedSize,4),se+=b(F.uncompressedSize,4),se+=b(C.length,2),se+=b(J.length,2);var he=v.LOCAL_FILE_HEADER+se+C+J,pe=v.CENTRAL_FILE_HEADER+b(oe,2)+se+b(g.length,2)+"\0\0\0\0"+b(Q,4)+b(h,4)+C+J+g;return{fileRecord:he,dirRecord:pe}},X=function(d,u,s,h,c){var W="",M=l.transformTo("string",c(h));return W=v.CENTRAL_DIRECTORY_END+"\0\0\0\0"+b(d,2)+b(d,2)+b(u,4)+b(s,4)+b(M.length,2)+M,W},m=function(d){var u="";return u=v.DATA_DESCRIPTOR+b(d.crc32,4)+b(d.compressedSize,4)+b(d.uncompressedSize,4),u};function N(G,d,u,s){o.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=d,this.zipPlatform=u,this.encodeFileName=s,this.streamFiles=G,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}l.inherits(N,o),N.prototype.push=function(G){var d=G.meta.percent||0,u=this.entriesCount,s=this._sources.length;this.accumulate?this.contentBuffer.push(G):(this.bytesWritten+=G.data.length,o.prototype.push.call(this,{data:G.data,meta:{currentFile:this.currentFile,percent:u?(d+100*(u-s-1))/u:100}}))},N.prototype.openedSource=function(G){this.currentSourceOffset=this.bytesWritten,this.currentFile=G.file.name;var d=this.streamFiles&&!G.file.dir;if(d){var u=y(G,d,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:u.fileRecord,meta:{percent:0}})}else this.accumulate=!0},N.prototype.closedSource=function(G){this.accumulate=!1;var d=this.streamFiles&&!G.file.dir,u=y(G,d,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(u.dirRecord),d)this.push({data:m(G),meta:{percent:100}});else for(this.push({data:u.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},N.prototype.flush=function(){for(var G=this.bytesWritten,d=0;d"u")&&(C.binary=!x);var R=W instanceof b&&W.uncompressedSize===0;(R||C.dir||!W||W.length===0)&&(C.base64=!1,C.binary=!0,W="",C.compression="STORE",I="string");var g=null;W instanceof b||W instanceof r?g=W:y.isNode&&y.isStream(W)?g=new X(c,W):g=o.prepareContent(c,W,C.binary,C.optimizedBinaryString,C.base64);var S=new Z(c,g,C);this.files[c]=S},N=function(c){c.slice(-1)==="/"&&(c=c.substring(0,c.length-1));var W=c.lastIndexOf("/");return W>0?c.substring(0,W):""},G=function(c){return c.slice(-1)!=="/"&&(c+="/"),c},d=function(c,W){return W=typeof W<"u"?W:v.createFolders,c=G(c),this.files[c]||m.call(this,c,null,{dir:!0,createFolders:W}),this.files[c]};function u(h){return Object.prototype.toString.call(h)==="[object RegExp]"}var s={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(c){var W,M,I;for(W in this.files)this.files.hasOwnProperty(W)&&(I=this.files[W],M=W.slice(this.root.length,W.length),M&&W.slice(0,this.root.length)===this.root&&c(M,I))},filter:function(c){var W=[];return this.forEach(function(M,I){c(M,I)&&W.push(I)}),W},file:function(c,W,M){if(arguments.length===1)if(u(c)){var I=c;return this.filter(function(C,x){return!x.dir&&I.test(C)})}else{var w=this.files[this.root+c];return w&&!w.dir?w:null}else c=this.root+c,m.call(this,c,W,M);return this},folder:function(c){if(!c)return this;if(u(c))return this.filter(function(w,C){return C.dir&&c.test(w)});var W=this.root+c,M=d.call(this,W),I=this.clone();return I.root=M.name,I},remove:function(c){c=this.root+c;var W=this.files[c];if(W||(c.slice(-1)!=="/"&&(c+="/"),W=this.files[c]),W&&!W.dir)delete this.files[c];else for(var M=this.filter(function(w,C){return C.name.slice(0,c.length)===c}),I=0;I=0;--y)if(this.data[y]===v&&this.data[y+1]===b&&this.data[y+2]===Z&&this.data[y+3]===p)return y-this.zero;return-1},r.prototype.readAndCheckSignature=function(f){var v=f.charCodeAt(0),b=f.charCodeAt(1),Z=f.charCodeAt(2),p=f.charCodeAt(3),y=this.readData(4);return v===y[0]&&b===y[1]&&Z===y[2]&&p===y[3]},r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return[];var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],407:[function(t,i,a){var l=t("../utils");function o(r){this.data=r,this.length=r.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(f){this.checkIndex(this.index+f)},checkIndex:function(f){if(this.length=this.index;b--)v=(v<<8)+this.byteAt(b);return this.index+=f,v},readString:function(f){return l.transformTo("string",this.readData(f))},readData:function(f){},lastIndexOfSignature:function(f){},readAndCheckSignature:function(f){},readDate:function(){var f=this.readInt(4);return new Date(Date.UTC((f>>25&127)+1980,(f>>21&15)-1,f>>16&31,f>>11&31,f>>5&63,(f&31)<<1))}},i.exports=o},{"../utils":421}],408:[function(t,i,a){var l=t("./Uint8ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(t,i,a){var l=t("./DataReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.byteAt=function(f){return this.data.charCodeAt(this.zero+f)},r.prototype.lastIndexOfSignature=function(f){return this.data.lastIndexOf(f)-this.zero},r.prototype.readAndCheckSignature=function(f){var v=this.readData(4);return f===v},r.prototype.readData=function(f){this.checkOffset(f);var v=this.data.slice(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./DataReader":407}],410:[function(t,i,a){var l=t("./ArrayReader"),o=t("../utils");function r(f){l.call(this,f)}o.inherits(r,l),r.prototype.readData=function(f){if(this.checkOffset(f),f===0)return new Uint8Array(0);var v=this.data.subarray(this.zero+this.index,this.zero+this.index+f);return this.index+=f,v},i.exports=r},{"../utils":421,"./ArrayReader":406}],411:[function(t,i,a){var l=t("../utils"),o=t("../support"),r=t("./ArrayReader"),f=t("./StringReader"),v=t("./NodeBufferReader"),b=t("./Uint8ArrayReader");i.exports=function(Z){var p=l.getTypeOf(Z);return l.checkSupport(p),p==="string"&&!o.uint8array?new f(Z):p==="nodebuffer"?new v(Z):o.uint8array?new b(l.transformTo("uint8array",Z)):new r(l.transformTo("array",Z))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(t,i,a){a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(t,i,a){var l=t("./GenericWorker"),o=t("../utils");function r(f){l.call(this,"ConvertWorker to "+f),this.destType=f}o.inherits(r,l),r.prototype.processChunk=function(f){this.push({data:o.transformTo(this.destType,f.data),meta:f.meta})},i.exports=r},{"../utils":421,"./GenericWorker":417}],414:[function(t,i,a){var l=t("./GenericWorker"),o=t("../crc32"),r=t("../utils");function f(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}r.inherits(f,l),f.prototype.processChunk=function(v){this.streamInfo.crc32=o(v.data,this.streamInfo.crc32||0),this.push(v)},i.exports=f},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker");function r(f){o.call(this,"DataLengthProbe for "+f),this.propName=f,this.withStreamInfo(f,0)}l.inherits(r,o),r.prototype.processChunk=function(f){if(f){var v=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=v+f.data.length}o.prototype.processChunk.call(this,f)},i.exports=r},{"../utils":421,"./GenericWorker":417}],416:[function(t,i,a){var l=t("../utils"),o=t("./GenericWorker"),r=16*1024;function f(v){o.call(this,"DataWorker");var b=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,v.then(function(Z){b.dataIsReady=!0,b.data=Z,b.max=Z&&Z.length||0,b.type=l.getTypeOf(Z),b.isPaused||b._tickAndRepeat()},function(Z){b.error(Z)})}l.inherits(f,o),f.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},f.prototype.resume=function(){return o.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0):!1},f.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},f.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var v=r,b=null,Z=Math.min(this.max,this.index+v);if(this.index>=this.max)return this.end();switch(this.type){case"string":b=this.data.substring(this.index,Z);break;case"uint8array":b=this.data.subarray(this.index,Z);break;case"array":case"nodebuffer":b=this.data.slice(this.index,Z);break}return this.index=Z,this.push({data:b,meta:{percent:this.max?this.index/this.max*100:0}})},i.exports=f},{"../utils":421,"./GenericWorker":417}],417:[function(t,i,a){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return this.isFinished?!1:(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,f){return this._listeners[r].push(f),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,f){if(this._listeners[r])for(var v=0;v "+r:r}},i.exports=l},{}],418:[function(t,i,a){(function(l){var o=t("../utils"),r=t("./ConvertWorker"),f=t("./GenericWorker"),v=t("../base64"),b=t("../support"),Z=t("../external"),p=null;if(b.nodestream)try{p=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function y(G,d,u){switch(G){case"blob":return o.newBlob(o.transformTo("arraybuffer",d),u);case"base64":return v.encode(d);default:return o.transformTo(G,d)}}function X(G,d){var u,s=0,h=null,c=0;for(u=0;u"u")a.blob=!1;else{var o=new ArrayBuffer(0);try{a.blob=new Blob([o],{type:"application/zip"}).size===0}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,f=new r;f.append(o),a.blob=f.getBlob("application/zip").size===0}catch{a.blob=!1}}}try{a.nodestream=!!t("readable-stream").Readable}catch{a.nodestream=!1}}).call(this,t("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(t,i,a){for(var l=t("./utils"),o=t("./support"),r=t("./nodejsUtils"),f=t("./stream/GenericWorker"),v=new Array(256),b=0;b<256;b++)v[b]=b>=252?6:b>=248?5:b>=240?4:b>=224?3:b>=192?2:1;v[254]=v[254]=1;var Z=function(G){var d,u,s,h,c,W=G.length,M=0;for(h=0;h>>6,d[c++]=128|u&63):u<65536?(d[c++]=224|u>>>12,d[c++]=128|u>>>6&63,d[c++]=128|u&63):(d[c++]=240|u>>>18,d[c++]=128|u>>>12&63,d[c++]=128|u>>>6&63,d[c++]=128|u&63);return d},p=function(G,d){var u;for(d=d||G.length,d>G.length&&(d=G.length),u=d-1;u>=0&&(G[u]&192)===128;)u--;return u<0||u===0?d:u+v[G[u]]>d?u:d},y=function(G){var d,u,s,h,c=G.length,W=new Array(c*2);for(u=0,d=0;d4){W[u++]=65533,d+=h-1;continue}for(s&=h===2?31:h===3?15:7;h>1&&d1){W[u++]=65533;continue}s<65536?W[u++]=s:(s-=65536,W[u++]=55296|s>>10&1023,W[u++]=56320|s&1023)}return W.length!==u&&(W.subarray?W=W.subarray(0,u):W.length=u),l.applyFromCharCode(W)};a.utf8encode=function(G){return o.nodebuffer?r.newBufferFrom(G,"utf-8"):Z(G)},a.utf8decode=function(G){return o.nodebuffer?l.transformTo("nodebuffer",G).toString("utf-8"):(G=l.transformTo(o.uint8array?"uint8array":"array",G),y(G))};function X(){f.call(this,"utf-8 decode"),this.leftOver=null}l.inherits(X,f),X.prototype.processChunk=function(N){var G=l.transformTo(o.uint8array?"uint8array":"array",N.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var d=G;G=new Uint8Array(d.length+this.leftOver.length),G.set(this.leftOver,0),G.set(d,this.leftOver.length)}else G=this.leftOver.concat(G);this.leftOver=null}var u=p(G),s=G;u!==G.length&&(o.uint8array?(s=G.subarray(0,u),this.leftOver=G.subarray(u,G.length)):(s=G.slice(0,u),this.leftOver=G.slice(u,G.length))),this.push({data:a.utf8decode(s),meta:N.meta})},X.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=X;function m(){f.call(this,"utf-8 encode")}l.inherits(m,f),m.prototype.processChunk=function(N){this.push({data:a.utf8encode(N.data),meta:N.meta})},a.Utf8EncodeWorker=m},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(t,i,a){var l=t("./support"),o=t("./base64"),r=t("./nodejsUtils"),f=t("set-immediate-shim"),v=t("./external");function b(G){var d=null;return l.uint8array?d=new Uint8Array(G.length):d=new Array(G.length),p(G,d)}a.newBlob=function(G,d){a.checkSupport("blob");try{return new Blob([G],{type:d})}catch{try{var u=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,s=new u;return s.append(G),s.getBlob(d)}catch{throw new Error("Bug : can't construct the Blob.")}}};function Z(G){return G}function p(G,d){for(var u=0;u1;)try{return y.stringifyByChunk(G,u,d)}catch{d=Math.floor(d/2)}return y.stringifyByChar(G)}a.applyFromCharCode=X;function m(G,d){for(var u=0;u"u"&&(G[u]=arguments[d][u]);return G},a.prepareContent=function(G,d,u,s,h){var c=v.Promise.resolve(d).then(function(W){var M=l.blob&&(W instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(W))!==-1);return M&&typeof FileReader<"u"?new v.Promise(function(I,w){var C=new FileReader;C.onload=function(x){I(x.target.result)},C.onerror=function(x){w(x.target.error)},C.readAsArrayBuffer(W)}):W});return c.then(function(W){var M=a.getTypeOf(W);return M?(M==="arraybuffer"?W=a.transformTo("uint8array",W):M==="string"&&(h?W=o.decode(W):u&&s!==!0&&(W=b(W))),W):v.Promise.reject(new Error("Can't read the data of '"+G+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./signature"),f=t("./zipEntry");t("./utf8");var v=t("./support");function b(Z){this.files=[],this.loadOptions=Z}b.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var y=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+o.pretty(y)+", expected "+o.pretty(p)+")")}},isSignature:function(p,y){var X=this.reader.index;this.reader.setIndex(p);var m=this.reader.readString(4),N=m===y;return this.reader.setIndex(X),N},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),y=v.uint8array?"uint8array":"array",X=o.transformTo(y,p);this.zipComment=this.loadOptions.decodeFileName(X)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p=this.zip64EndOfCentralSize-44,y=0,X,m,N;y1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,y;for(p=0;p0)this.isSignature(X,r.CENTRAL_FILE_HEADER)||(this.reader.zero=N);else if(N<0)throw new Error("Corrupted zip: missing "+Math.abs(N)+" bytes.")},prepareReader:function(p){this.reader=l(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},i.exports=b},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(t,i,a){var l=t("./reader/readerFor"),o=t("./utils"),r=t("./compressedObject"),f=t("./crc32"),v=t("./utf8"),b=t("./compressions"),Z=t("./support"),p=0,y=3,X=function(G){for(var d in b)if(b.hasOwnProperty(d)&&b[d].magic===G)return b[d];return null};function m(N,G){this.options=N,this.loadOptions=G}m.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(G){var d,u;if(G.skip(22),this.fileNameLength=G.readInt(2),u=G.readInt(2),this.fileName=G.readData(this.fileNameLength),G.skip(u),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(d=X(this.compressionMethod),d===null)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new r(this.compressedSize,this.uncompressedSize,this.crc32,d,G.readData(this.compressedSize))},readCentralPart:function(G){this.versionMadeBy=G.readInt(2),G.skip(2),this.bitFlag=G.readInt(2),this.compressionMethod=G.readString(2),this.date=G.readDate(),this.crc32=G.readInt(4),this.compressedSize=G.readInt(4),this.uncompressedSize=G.readInt(4);var d=G.readInt(2);if(this.extraFieldsLength=G.readInt(2),this.fileCommentLength=G.readInt(2),this.diskNumberStart=G.readInt(2),this.internalFileAttributes=G.readInt(2),this.externalFileAttributes=G.readInt(4),this.localHeaderOffset=G.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");G.skip(d),this.readExtraFields(G),this.parseZIP64ExtraField(G),this.fileComment=G.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var G=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),G===p&&(this.dosPermissions=this.externalFileAttributes&63),G===y&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(G){if(this.extraFields[1]){var d=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=d.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=d.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=d.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=d.readInt(4))}},readExtraFields:function(G){var d=G.index+this.extraFieldsLength,u,s,h;for(this.extraFields||(this.extraFields={});G.index+4"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,p=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,y=Z||p||Function("return this")(),X=Object.prototype,m=X.toString,N=y.Symbol,G=N?N.prototype:void 0,d=G?G.toString:void 0;function u(M){if(typeof M=="string")return M;if(h(M))return d?d.call(M):"";var I=M+"";return I=="0"&&1/M==-r?"-0":I}function s(M){return!!M&&o(M)=="object"}function h(M){return o(M)=="symbol"||s(M)&&m.call(M)==f}function c(M){return M==null?"":u(M)}function W(M){return M=c(M),M&&b.test(M)?M.replace(v,"\\$&"):M}i.exports=W}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(t,i,a){(function(l){function o(ge){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(st){return typeof st}:o=function(st){return st&&typeof Symbol=="function"&&st.constructor===Symbol&&st!==Symbol.prototype?"symbol":typeof st},o(ge)}var r=200,f="Expected a function",v="__lodash_hash_undefined__",b=1,Z=2,p=1/0,y=9007199254740991,X="[object Arguments]",m="[object Array]",N="[object Boolean]",G="[object Date]",d="[object Error]",u="[object Function]",s="[object GeneratorFunction]",h="[object Map]",c="[object Number]",W="[object Object]",M="[object Promise]",I="[object RegExp]",w="[object Set]",C="[object String]",x="[object Symbol]",R="[object WeakMap]",g="[object ArrayBuffer]",S="[object DataView]",L="[object Float32Array]",V="[object Float64Array]",Y="[object Int8Array]",T="[object Int16Array]",J="[object Int32Array]",U="[object Uint8Array]",K="[object Uint8ClampedArray]",H="[object Uint16Array]",k="[object Uint32Array]",F=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,O=/^\w*$/,Q=/^\./,oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,se=/[\\^$.*+?()[\]{}|]/g,he=/\\(\\)?/g,pe=/^\[object .+?Constructor\]$/,re=/^(?:0|[1-9]\d*)$/,_={};_[L]=_[V]=_[Y]=_[T]=_[J]=_[U]=_[K]=_[H]=_[k]=!0,_[X]=_[m]=_[g]=_[N]=_[S]=_[G]=_[d]=_[u]=_[h]=_[c]=_[W]=_[I]=_[w]=_[C]=_[R]=!1;var E=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,$=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,ae=E||$||Function("return this")(),le=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,ee=le&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,te=ee&&ee.exports===le,be=te&&E.process,ne=function(){try{return be&&be.binding("util")}catch{}}(),B=ne&&ne.isTypedArray;function q(ge,Ee,st,It){for(var an=-1,Et=ge?ge.length:0;++an-1}function Gl(ge,Ee){var st=this.__data__,It=il(st,ge);return It<0?st.push([ge,Ee]):st[It][1]=Ee,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(ge){var Ee=-1,st=ge?ge.length:0;for(this.clear();++Eeli))return!1;var Ji=Et.get(ge);if(Ji&&Et.get(Ee))return Ji==Ee;var Qi=-1,Di=!0,Bi=an&b?new ht:void 0;for(Et.set(ge,Ee),Et.set(Ee,ge);++Qi-1&&ge%1==0&&ge-1&&ge%1==0&&ge<=y}function Qn(ge){var Ee=o(ge);return!!ge&&(Ee=="object"||Ee=="function")}function qn(ge){return!!ge&&o(ge)=="object"}function Ti(ge){return o(ge)=="symbol"||qn(ge)&&Ze.call(ge)==x}var yi=B?Je(B):Xl;function Hl(ge){return ge==null?"":Tl(ge)}function Zi(ge,Ee,st){var It=ge==null?void 0:_t(ge,Ee);return It===void 0?st:It}function no(ge,Ee){return ge!=null&&to(ge,Ee,zt)}function Pl(ge){return Dn(ge)?Ll(ge):ll(ge)}function al(ge){return ge}function Tr(ge){return Un(ge)?ve(et(ge)):dl(ge)}i.exports=Lt}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(t,i,a){function l(Z){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(y){return typeof y}:l=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},l(Z)}var o="[object Boolean]",r=Object.prototype,f=r.toString;function v(Z){return Z===!0||Z===!1||b(Z)&&f.call(Z)==o}function b(Z){return!!Z&&l(Z)=="object"}i.exports=v},{}],429:[function(t,i,a){(function(l){function o(je){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(mt){return typeof mt}:o=function(mt){return mt&&typeof Symbol=="function"&&mt.constructor===Symbol&&mt!==Symbol.prototype?"symbol":typeof mt},o(je)}var r=200,f="__lodash_hash_undefined__",v=1,b=2,Z=9007199254740991,p="[object Arguments]",y="[object Array]",X="[object AsyncFunction]",m="[object Boolean]",N="[object Date]",G="[object Error]",d="[object Function]",u="[object GeneratorFunction]",s="[object Map]",h="[object Number]",c="[object Null]",W="[object Object]",M="[object Promise]",I="[object Proxy]",w="[object RegExp]",C="[object Set]",x="[object String]",R="[object Symbol]",g="[object Undefined]",S="[object WeakMap]",L="[object ArrayBuffer]",V="[object DataView]",Y="[object Float32Array]",T="[object Float64Array]",J="[object Int8Array]",U="[object Int16Array]",K="[object Int32Array]",H="[object Uint8Array]",k="[object Uint8ClampedArray]",F="[object Uint16Array]",O="[object Uint32Array]",Q=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,se=/^(?:0|[1-9]\d*)$/,he={};he[Y]=he[T]=he[J]=he[U]=he[K]=he[H]=he[k]=he[F]=he[O]=!0,he[p]=he[y]=he[L]=he[m]=he[V]=he[N]=he[G]=he[d]=he[s]=he[h]=he[W]=he[w]=he[C]=he[x]=he[S]=!1;var pe=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,re=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,_=pe||re||Function("return this")(),E=(typeof a>"u"?"undefined":o(a))=="object"&&a&&!a.nodeType&&a,$=E&&(typeof i>"u"?"undefined":o(i))=="object"&&i&&!i.nodeType&&i,ae=$&&$.exports===E,le=ae&&pe.process,ee=function(){try{return le&&le.binding&&le.binding("util")}catch{}}(),te=ee&&ee.isTypedArray;function be(je,et){for(var mt=-1,Lt=je==null?0:je.length,Jn=0,sn=[];++mt-1}function Gl(je,et){var mt=this.__data__,Lt=il(mt,je);return Lt<0?(++this.size,mt.push([je,et])):mt[Lt][1]=et,this}Ft.prototype.clear=Ln,Ft.prototype.delete=An,Ft.prototype.get=Gi,Ft.prototype.has=Pi,Ft.prototype.set=Gl;function Fn(je){var et=-1,mt=je==null?0:je.length;for(this.clear();++et_n))return!1;var ni=sn.get(je);if(ni&&sn.get(et))return ni==et;var Fi=-1,fi=!0,Qn=mt&b?new ht:void 0;for(sn.set(je,et),sn.set(et,je);++Fi<_n;){var qn=je[Fi],Ti=et[Fi];if(Lt)var yi=ii?Lt(Ti,qn,Fi,et,je,sn):Lt(qn,Ti,Fi,je,et,sn);if(yi!==void 0){if(yi)continue;fi=!1;break}if(Qn){if(!B(et,function(Hl,Zi){if(!ve(Qn,Zi)&&(qn===Hl||Jn(qn,Hl,mt,Lt,sn)))return Qn.push(Zi)})){fi=!1;break}}else if(!(qn===Ti||Jn(qn,Ti,mt,Lt,sn))){fi=!1;break}}return sn.delete(je),sn.delete(et),fi}function si(je,et,mt,Lt,Jn,sn,ii){switch(mt){case V:if(je.byteLength!=et.byteLength||je.byteOffset!=et.byteOffset)return!1;je=je.buffer,et=et.buffer;case L:return!(je.byteLength!=et.byteLength||!sn(new Ce(je),new Ce(et)));case m:case N:case h:return xl(+je,+et);case G:return je.name==et.name&&je.message==et.message;case w:case x:return je==et+"";case s:var _n=Je;case C:var Dn=Lt&v;if(_n||(_n=ke),je.size!=et.size&&!Dn)return!1;var ni=ii.get(je);if(ni)return ni==et;Lt|=b,ii.set(je,et);var Fi=$t(_n(je),_n(et),Lt,Jn,sn,ii);return ii.delete(je),Fi;case R:if(Ct)return Ct.call(je)==Ct.call(et)}return!1}function Ul(je,et,mt,Lt,Jn,sn){var ii=mt&v,_n=Xl(je),Dn=_n.length,ni=Xl(et),Fi=ni.length;if(Dn!=Fi&&!ii)return!1;for(var fi=Dn;fi--;){var Qn=_n[fi];if(!(ii?Qn in et:De.call(et,Qn)))return!1}var qn=sn.get(je);if(qn&&sn.get(et))return qn==et;var Ti=!0;sn.set(je,et),sn.set(et,je);for(var yi=ii;++fi-1&&je%1==0&&je-1&&je%1==0&&je<=Z}function Un(je){var et=o(je);return je!=null&&(et=="object"||et=="function")}function sr(je){return je!=null&&o(je)=="object"}var Fo=te?ue(te):zt;function Jo(je){return Vs(je)?Ll(je):Ht(je)}function Do(){return[]}function ja(){return!1}i.exports=oa}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(t,i,a){(function(l){function o(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(x){return typeof x}:o=function(x){return x&&typeof Symbol=="function"&&x.constructor===Symbol&&x!==Symbol.prototype?"symbol":typeof x},o(w)}var r="[object AsyncFunction]",f="[object Function]",v="[object GeneratorFunction]",b="[object Null]",Z="[object Proxy]",p="[object Undefined]",y=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,X=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,m=y||X||Function("return this")(),N=Object.prototype,G=N.hasOwnProperty,d=N.toString,u=m.Symbol,s=u?u.toStringTag:void 0;function h(w){return w==null?w===void 0?p:b:s&&s in Object(w)?c(w):W(w)}function c(w){var C=G.call(w,s),x=w[s];try{w[s]=void 0;var R=!0}catch{}var g=d.call(w);return R&&(C?w[s]=x:delete w[s]),g}function W(w){return d.call(w)}function M(w){if(!I(w))return!1;var C=h(w);return C==f||C==v||C==r||C==Z}function I(w){var C=o(w);return w!=null&&(C=="object"||C=="function")}i.exports=M}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(t,i,a){function l(o){return o==null}i.exports=l},{}],432:[function(t,i,a){function l(o){return o===void 0}i.exports=l},{}],433:[function(t,i,a){(function(l){function o(Me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Ze){return typeof Ze}:o=function(Ze){return Ze&&typeof Symbol=="function"&&Ze.constructor===Symbol&&Ze!==Symbol.prototype?"symbol":typeof Ze},o(Me)}var r=200,f="__lodash_hash_undefined__",v=1/0,b="[object Function]",Z="[object GeneratorFunction]",p=/[\\^$.*+?()[\]{}|]/g,y=/^\[object .+?Constructor\]$/,X=(typeof l>"u"?"undefined":o(l))=="object"&&l&&l.Object===Object&&l,m=(typeof self>"u"?"undefined":o(self))=="object"&&self&&self.Object===Object&&self,N=X||m||Function("return this")();function G(Me,Ie){var Ze=Me?Me.length:0;return!!Ze&&s(Me,Ie,0)>-1}function d(Me,Ie,Ze){for(var Ce=-1,ye=Me?Me.length:0;++Ce-1}function E(Me,Ie){var Ze=this.__data__,Ce=ue(Ze,Me);return Ce<0?Ze.push([Me,Ie]):Ze[Ce][1]=Ie,this}se.prototype.clear=he,se.prototype.delete=pe,se.prototype.get=re,se.prototype.has=_,se.prototype.set=E;function $(Me){var Ie=-1,Ze=Me?Me.length:0;for(this.clear();++Ie=r){var Ke=Ie?null:Je(Me);if(Ke)return I(Ke);qe=!1,ye=c,Oe=new ne}else Oe=Ie?[]:ie;e:for(;++Ce56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var m=r.allocUnsafe(16);return m.writeInt32LE(this._a,0),m.writeInt32LE(this._b,4),m.writeInt32LE(this._c,8),m.writeInt32LE(this._d,12),m};function b(m,N){return m<>>32-N}function Z(m,N,G,d,u,s,h){return b(m+(N&G|~N&d)+u+s|0,h)+N|0}function p(m,N,G,d,u,s,h){return b(m+(N&d|G&~d)+u+s|0,h)+N|0}function y(m,N,G,d,u,s,h){return b(m+(N^G^d)+u+s|0,h)+N|0}function X(m,N,G,d,u,s,h){return b(m+(G^(N|~d))+u+s|0,h)+N|0}i.exports=v},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(t,i,a){var l=t("bn.js"),o=t("brorand");function r(f){this.rand=f||new o.Rand}i.exports=r,r.create=function(v){return new r(v)},r.prototype._randbelow=function(v){var b=v.bitLength(),Z=Math.ceil(b/8);do var p=new l(this.rand.generate(Z));while(p.cmp(v)>=0);return p},r.prototype._randrange=function(v,b){var Z=b.sub(v);return v.add(this._randbelow(Z))},r.prototype.test=function(v,b,Z){var p=v.bitLength(),y=l.mont(v),X=new l(1).toRed(y);b||(b=Math.max(1,p/48|0));for(var m=v.subn(1),N=0;!m.testn(N);N++);for(var G=v.shrn(N),d=m.toRed(y),u=!0;b>0;b--){var s=this._randrange(new l(2),m);Z&&Z(s);var h=s.toRed(y).redPow(G);if(!(h.cmp(X)===0||h.cmp(d)===0)){for(var c=1;c0;b--){var d=this._randrange(new l(2),X),u=v.gcd(d);if(u.cmpn(1)!==0)return u;var s=d.toRed(p).redPow(N);if(!(s.cmp(y)===0||s.cmp(G)===0)){for(var h=1;h>8,m=y&255;X?Z.push(X,m):Z.push(m)}return Z}l.toArray=o;function r(v){return v.length===1?"0"+v:v}l.zero2=r;function f(v){for(var b="",Z=0;Z0?M.windowBits=-M.windowBits:M.gzip&&M.windowBits>0&&M.windowBits<16&&(M.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new v,this.strm.avail_out=0;var I=l.deflateInit2(this.strm,M.level,M.method,M.windowBits,M.memLevel,M.strategy);if(I!==y)throw new Error(f[I]);if(M.header&&l.deflateSetHeader(this.strm,M.header),M.dictionary){var w;if(typeof M.dictionary=="string"?w=r.string2buf(M.dictionary):b.call(M.dictionary)==="[object ArrayBuffer]"?w=new Uint8Array(M.dictionary):w=M.dictionary,I=l.deflateSetDictionary(this.strm,w),I!==y)throw new Error(f[I]);this._dict_set=!0}}u.prototype.push=function(W,M){var I=this.strm,w=this.options.chunkSize,C,x;if(this.ended)return!1;x=M===~~M?M:M===!0?p:Z,typeof W=="string"?I.input=r.string2buf(W):b.call(W)==="[object ArrayBuffer]"?I.input=new Uint8Array(W):I.input=W,I.next_in=0,I.avail_in=I.input.length;do{if(I.avail_out===0&&(I.output=new o.Buf8(w),I.next_out=0,I.avail_out=w),C=l.deflate(I,x),C!==X&&C!==y)return this.onEnd(C),this.ended=!0,!1;(I.avail_out===0||I.avail_in===0&&(x===p||x===m))&&(this.options.to==="string"?this.onData(r.buf2binstring(o.shrinkBuf(I.output,I.next_out))):this.onData(o.shrinkBuf(I.output,I.next_out)))}while((I.avail_in>0||I.avail_out===0)&&C!==X);return x===p?(C=l.deflateEnd(this.strm),this.onEnd(C),this.ended=!0,C===y):(x===m&&(this.onEnd(y),I.avail_out=0),!0)},u.prototype.onData=function(W){this.chunks.push(W)},u.prototype.onEnd=function(W){W===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=W,this.msg=this.strm.msg};function s(W,M){var I=new u(M);if(I.push(W,!0),I.err)throw I.msg||f[I.err];return I.result}function h(W,M){return M=M||{},M.raw=!0,s(W,M)}function c(W,M){return M=M||{},M.gzip=!0,s(W,M)}a.Deflate=u,a.deflate=s,a.deflateRaw=h,a.gzip=c},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(t,i,a){var l=t("./zlib/inflate"),o=t("./utils/common"),r=t("./utils/strings"),f=t("./zlib/constants"),v=t("./zlib/messages"),b=t("./zlib/zstream"),Z=t("./zlib/gzheader"),p=Object.prototype.toString;function y(N){if(!(this instanceof y))return new y(N);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},N||{});var G=this.options;G.raw&&G.windowBits>=0&&G.windowBits<16&&(G.windowBits=-G.windowBits,G.windowBits===0&&(G.windowBits=-15)),G.windowBits>=0&&G.windowBits<16&&!(N&&N.windowBits)&&(G.windowBits+=32),G.windowBits>15&&G.windowBits<48&&(G.windowBits&15||(G.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new b,this.strm.avail_out=0;var d=l.inflateInit2(this.strm,G.windowBits);if(d!==f.Z_OK)throw new Error(v[d]);if(this.header=new Z,l.inflateGetHeader(this.strm,this.header),G.dictionary&&(typeof G.dictionary=="string"?G.dictionary=r.string2buf(G.dictionary):p.call(G.dictionary)==="[object ArrayBuffer]"&&(G.dictionary=new Uint8Array(G.dictionary)),G.raw&&(d=l.inflateSetDictionary(this.strm,G.dictionary),d!==f.Z_OK)))throw new Error(v[d])}y.prototype.push=function(N,G){var d=this.strm,u=this.options.chunkSize,s=this.options.dictionary,h,c,W,M,I,w=!1;if(this.ended)return!1;c=G===~~G?G:G===!0?f.Z_FINISH:f.Z_NO_FLUSH,typeof N=="string"?d.input=r.binstring2buf(N):p.call(N)==="[object ArrayBuffer]"?d.input=new Uint8Array(N):d.input=N,d.next_in=0,d.avail_in=d.input.length;do{if(d.avail_out===0&&(d.output=new o.Buf8(u),d.next_out=0,d.avail_out=u),h=l.inflate(d,f.Z_NO_FLUSH),h===f.Z_NEED_DICT&&s&&(h=l.inflateSetDictionary(this.strm,s)),h===f.Z_BUF_ERROR&&w===!0&&(h=f.Z_OK,w=!1),h!==f.Z_STREAM_END&&h!==f.Z_OK)return this.onEnd(h),this.ended=!0,!1;d.next_out&&(d.avail_out===0||h===f.Z_STREAM_END||d.avail_in===0&&(c===f.Z_FINISH||c===f.Z_SYNC_FLUSH))&&(this.options.to==="string"?(W=r.utf8border(d.output,d.next_out),M=d.next_out-W,I=r.buf2string(d.output,W),d.next_out=M,d.avail_out=u-M,M&&o.arraySet(d.output,d.output,W,M,0),this.onData(I)):this.onData(o.shrinkBuf(d.output,d.next_out))),d.avail_in===0&&d.avail_out===0&&(w=!0)}while((d.avail_in>0||d.avail_out===0)&&h!==f.Z_STREAM_END);return h===f.Z_STREAM_END&&(c=f.Z_FINISH),c===f.Z_FINISH?(h=l.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===f.Z_OK):(c===f.Z_SYNC_FLUSH&&(this.onEnd(f.Z_OK),d.avail_out=0),!0)},y.prototype.onData=function(N){this.chunks.push(N)},y.prototype.onEnd=function(N){N===f.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=N,this.msg=this.strm.msg};function X(N,G){var d=new y(G);if(d.push(N,!0),d.err)throw d.msg||v[d.err];return d.result}function m(N,G){return G=G||{},G.raw=!0,X(N,G)}a.Inflate=y,a.inflate=X,a.inflateRaw=m,a.ungzip=X},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(t,i,a){function l(b){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(p){return typeof p}:l=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},l(b)}var o=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function r(b,Z){return Object.prototype.hasOwnProperty.call(b,Z)}a.assign=function(b){for(var Z=Array.prototype.slice.call(arguments,1);Z.length;){var p=Z.shift();if(p){if(l(p)!=="object")throw new TypeError(p+"must be non-object");for(var y in p)r(p,y)&&(b[y]=p[y])}}return b},a.shrinkBuf=function(b,Z){return b.length===Z?b:b.subarray?b.subarray(0,Z):(b.length=Z,b)};var f={arraySet:function(Z,p,y,X,m){if(p.subarray&&Z.subarray){Z.set(p.subarray(y,y+X),m);return}for(var N=0;N=252?6:v>=248?5:v>=240?4:v>=224?3:v>=192?2:1;f[254]=f[254]=1,a.string2buf=function(Z){var p,y,X,m,N,G=Z.length,d=0;for(m=0;m>>6,p[N++]=128|y&63):y<65536?(p[N++]=224|y>>>12,p[N++]=128|y>>>6&63,p[N++]=128|y&63):(p[N++]=240|y>>>18,p[N++]=128|y>>>12&63,p[N++]=128|y>>>6&63,p[N++]=128|y&63);return p};function b(Z,p){if(p<65534&&(Z.subarray&&r||!Z.subarray&&o))return String.fromCharCode.apply(null,l.shrinkBuf(Z,p));for(var y="",X=0;X4){d[X++]=65533,y+=N-1;continue}for(m&=N===2?31:N===3?15:7;N>1&&y1){d[X++]=65533;continue}m<65536?d[X++]=m:(m-=65536,d[X++]=55296|m>>10&1023,d[X++]=56320|m&1023)}return b(d,X)},a.utf8border=function(Z,p){var y;for(p=p||Z.length,p>Z.length&&(p=Z.length),y=p-1;y>=0&&(Z[y]&192)===128;)y--;return y<0||y===0?p:y+f[Z[y]]>p?y:p}},{"./common":442}],444:[function(t,i,a){function l(o,r,f,v){for(var b=o&65535|0,Z=o>>>16&65535|0,p=0;f!==0;){p=f>2e3?2e3:f,f-=p;do b=b+r[v++]|0,Z=Z+b|0;while(--p);b%=65521,Z%=65521}return b|Z<<16|0}i.exports=l},{}],445:[function(t,i,a){i.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(t,i,a){function l(){for(var f,v=[],b=0;b<256;b++){f=b;for(var Z=0;Z<8;Z++)f=f&1?3988292384^f>>>1:f>>>1;v[b]=f}return v}var o=l();function r(f,v,b,Z){var p=o,y=Z+b;f^=-1;for(var X=Z;X>>8^p[(f^v[X])&255];return f^-1}i.exports=r},{}],447:[function(t,i,a){var l=t("../utils/common"),o=t("./trees"),r=t("./adler32"),f=t("./crc32"),v=t("./messages"),b=0,Z=1,p=3,y=4,X=5,m=0,N=1,G=-2,d=-3,u=-5,s=-1,h=1,c=2,W=3,M=4,I=0,w=2,C=8,x=9,R=15,g=8,S=29,L=256,V=L+1+S,Y=30,T=19,J=2*V+1,U=15,K=3,H=258,k=H+K+1,F=32,O=42,Q=69,oe=73,se=91,he=103,pe=113,re=666,_=1,E=2,$=3,ae=4,le=3;function ee(ie,Oe){return ie.msg=v[Oe],Oe}function te(ie){return(ie<<1)-(ie>4?9:0)}function be(ie){for(var Oe=ie.length;--Oe>=0;)ie[Oe]=0}function ne(ie){var Oe=ie.state,Ke=Oe.pending;Ke>ie.avail_out&&(Ke=ie.avail_out),Ke!==0&&(l.arraySet(ie.output,Oe.pending_buf,Oe.pending_out,Ke,ie.next_out),ie.next_out+=Ke,Oe.pending_out+=Ke,ie.total_out+=Ke,ie.avail_out-=Ke,Oe.pending-=Ke,Oe.pending===0&&(Oe.pending_out=0))}function B(ie,Oe){o._tr_flush_block(ie,ie.block_start>=0?ie.block_start:-1,ie.strstart-ie.block_start,Oe),ie.block_start=ie.strstart,ne(ie.strm)}function q(ie,Oe){ie.pending_buf[ie.pending++]=Oe}function ue(ie,Oe){ie.pending_buf[ie.pending++]=Oe>>>8&255,ie.pending_buf[ie.pending++]=Oe&255}function ve(ie,Oe,Ke,Xe){var Re=ie.avail_in;return Re>Xe&&(Re=Xe),Re===0?0:(ie.avail_in-=Re,l.arraySet(Oe,ie.input,ie.next_in,Re,Ke),ie.state.wrap===1?ie.adler=r(ie.adler,Oe,Re,Ke):ie.state.wrap===2&&(ie.adler=f(ie.adler,Oe,Re,Ke)),ie.next_in+=Re,ie.total_in+=Re,Re)}function Ge(ie,Oe){var Ke=ie.max_chain_length,Xe=ie.strstart,Re,Ae,ct=ie.prev_length,lt=ie.nice_match,ot=ie.strstart>ie.w_size-k?ie.strstart-(ie.w_size-k):0,wt=ie.window,Mt=ie.w_mask,xt=ie.prev,Gt=ie.strstart+H,Zt=wt[Xe+ct-1],Tt=wt[Xe+ct];ie.prev_length>=ie.good_match&&(Ke>>=2),lt>ie.lookahead&&(lt=ie.lookahead);do if(Re=Oe,!(wt[Re+ct]!==Tt||wt[Re+ct-1]!==Zt||wt[Re]!==wt[Xe]||wt[++Re]!==wt[Xe+1])){Xe+=2,Re++;do;while(wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&wt[++Xe]===wt[++Re]&&Xect){if(ie.match_start=Oe,ct=Ae,Ae>=lt)break;Zt=wt[Xe+ct-1],Tt=wt[Xe+ct]}}while((Oe=xt[Oe&Mt])>ot&&--Ke!==0);return ct<=ie.lookahead?ct:ie.lookahead}function Je(ie){var Oe=ie.w_size,Ke,Xe,Re,Ae,ct;do{if(Ae=ie.window_size-ie.lookahead-ie.strstart,ie.strstart>=Oe+(Oe-k)){l.arraySet(ie.window,ie.window,Oe,Oe,0),ie.match_start-=Oe,ie.strstart-=Oe,ie.block_start-=Oe,Xe=ie.hash_size,Ke=Xe;do Re=ie.head[--Ke],ie.head[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Xe=Oe,Ke=Xe;do Re=ie.prev[--Ke],ie.prev[Ke]=Re>=Oe?Re-Oe:0;while(--Xe);Ae+=Oe}if(ie.strm.avail_in===0)break;if(Xe=ve(ie.strm,ie.window,ie.strstart+ie.lookahead,Ae),ie.lookahead+=Xe,ie.lookahead+ie.insert>=K)for(ct=ie.strstart-ie.insert,ie.ins_h=ie.window[ct],ie.ins_h=(ie.ins_h<ie.pending_buf_size-5&&(Ke=ie.pending_buf_size-5);;){if(ie.lookahead<=1){if(Je(ie),ie.lookahead===0&&Oe===b)return _;if(ie.lookahead===0)break}ie.strstart+=ie.lookahead,ie.lookahead=0;var Xe=ie.block_start+Ke;if((ie.strstart===0||ie.strstart>=Xe)&&(ie.lookahead=ie.strstart-Xe,ie.strstart=Xe,B(ie,!1),ie.strm.avail_out===0)||ie.strstart-ie.block_start>=ie.w_size-k&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):(ie.strstart>ie.block_start&&(B(ie,!1),ie.strm.avail_out===0),_)}function ke(ie,Oe){for(var Ke,Xe;;){if(ie.lookahead=K&&(ie.ins_h=(ie.ins_h<=K)if(Xe=o._tr_tally(ie,ie.strstart-ie.match_start,ie.match_length-K),ie.lookahead-=ie.match_length,ie.match_length<=ie.max_lazy_match&&ie.lookahead>=K){ie.match_length--;do ie.strstart++,ie.ins_h=(ie.ins_h<=K&&(ie.ins_h=(ie.ins_h<4096)&&(ie.match_length=K-1)),ie.prev_length>=K&&ie.match_length<=ie.prev_length){Re=ie.strstart+ie.lookahead-K,Xe=o._tr_tally(ie,ie.strstart-1-ie.prev_match,ie.prev_length-K),ie.lookahead-=ie.prev_length-1,ie.prev_length-=2;do++ie.strstart<=Re&&(ie.ins_h=(ie.ins_h<=K&&ie.strstart>0&&(Re=ie.strstart-1,Xe=ct[Re],Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re])){Ae=ie.strstart+H;do;while(Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Xe===ct[++Re]&&Reie.lookahead&&(ie.match_length=ie.lookahead)}if(ie.match_length>=K?(Ke=o._tr_tally(ie,1,ie.match_length-K),ie.lookahead-=ie.match_length,ie.strstart+=ie.match_length,ie.match_length=0):(Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++),Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function Te(ie,Oe){for(var Ke;;){if(ie.lookahead===0&&(Je(ie),ie.lookahead===0)){if(Oe===b)return _;break}if(ie.match_length=0,Ke=o._tr_tally(ie,0,ie.window[ie.strstart]),ie.lookahead--,ie.strstart++,Ke&&(B(ie,!1),ie.strm.avail_out===0))return _}return ie.insert=0,Oe===y?(B(ie,!0),ie.strm.avail_out===0?$:ae):ie.last_lit&&(B(ie,!1),ie.strm.avail_out===0)?_:E}function we(ie,Oe,Ke,Xe,Re){this.good_length=ie,this.max_lazy=Oe,this.nice_length=Ke,this.max_chain=Xe,this.func=Re}var Se;Se=[new we(0,0,0,0,xe),new we(4,4,8,4,ke),new we(4,5,16,8,ke),new we(4,6,32,32,ke),new we(4,4,16,16,Pe),new we(8,16,32,32,Pe),new we(8,16,128,128,Pe),new we(8,32,128,256,Pe),new we(32,128,258,1024,Pe),new we(32,258,258,4096,Pe)];function De(ie){ie.window_size=2*ie.w_size,be(ie.head),ie.max_lazy_match=Se[ie.level].max_lazy,ie.good_match=Se[ie.level].good_length,ie.nice_match=Se[ie.level].nice_length,ie.max_chain_length=Se[ie.level].max_chain,ie.strstart=0,ie.block_start=0,ie.lookahead=0,ie.insert=0,ie.match_length=ie.prev_length=K-1,ie.match_available=0,ie.ins_h=0}function me(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=C,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new l.Buf16(J*2),this.dyn_dtree=new l.Buf16((2*Y+1)*2),this.bl_tree=new l.Buf16((2*T+1)*2),be(this.dyn_ltree),be(this.dyn_dtree),be(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(U+1),this.heap=new l.Buf16(2*V+1),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*V+1),be(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ve(ie){var Oe;return!ie||!ie.state?ee(ie,G):(ie.total_in=ie.total_out=0,ie.data_type=w,Oe=ie.state,Oe.pending=0,Oe.pending_out=0,Oe.wrap<0&&(Oe.wrap=-Oe.wrap),Oe.status=Oe.wrap?O:pe,ie.adler=Oe.wrap===2?0:1,Oe.last_flush=b,o._tr_init(Oe),m)}function Me(ie){var Oe=Ve(ie);return Oe===m&&De(ie.state),Oe}function Ie(ie,Oe){return!ie||!ie.state||ie.state.wrap!==2?G:(ie.state.gzhead=Oe,m)}function Ze(ie,Oe,Ke,Xe,Re,Ae){if(!ie)return G;var ct=1;if(Oe===s&&(Oe=6),Xe<0?(ct=0,Xe=-Xe):Xe>15&&(ct=2,Xe-=16),Re<1||Re>x||Ke!==C||Xe<8||Xe>15||Oe<0||Oe>9||Ae<0||Ae>M)return ee(ie,G);Xe===8&&(Xe=9);var lt=new me;return ie.state=lt,lt.strm=ie,lt.wrap=ct,lt.gzhead=null,lt.w_bits=Xe,lt.w_size=1<X||Oe<0)return ie?ee(ie,G):G;if(Xe=ie.state,!ie.output||!ie.input&&ie.avail_in!==0||Xe.status===re&&Oe!==y)return ee(ie,ie.avail_out===0?u:G);if(Xe.strm=ie,Ke=Xe.last_flush,Xe.last_flush=Oe,Xe.status===O)if(Xe.wrap===2)ie.adler=0,q(Xe,31),q(Xe,139),q(Xe,8),Xe.gzhead?(q(Xe,(Xe.gzhead.text?1:0)+(Xe.gzhead.hcrc?2:0)+(Xe.gzhead.extra?4:0)+(Xe.gzhead.name?8:0)+(Xe.gzhead.comment?16:0)),q(Xe,Xe.gzhead.time&255),q(Xe,Xe.gzhead.time>>8&255),q(Xe,Xe.gzhead.time>>16&255),q(Xe,Xe.gzhead.time>>24&255),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,Xe.gzhead.os&255),Xe.gzhead.extra&&Xe.gzhead.extra.length&&(q(Xe,Xe.gzhead.extra.length&255),q(Xe,Xe.gzhead.extra.length>>8&255)),Xe.gzhead.hcrc&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending,0)),Xe.gzindex=0,Xe.status=Q):(q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,0),q(Xe,Xe.level===9?2:Xe.strategy>=c||Xe.level<2?4:0),q(Xe,le),Xe.status=pe);else{var ct=C+(Xe.w_bits-8<<4)<<8,lt=-1;Xe.strategy>=c||Xe.level<2?lt=0:Xe.level<6?lt=1:Xe.level===6?lt=2:lt=3,ct|=lt<<6,Xe.strstart!==0&&(ct|=F),ct+=31-ct%31,Xe.status=pe,ue(Xe,ct),Xe.strstart!==0&&(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ie.adler=1}if(Xe.status===Q)if(Xe.gzhead.extra){for(Re=Xe.pending;Xe.gzindex<(Xe.gzhead.extra.length&65535)&&!(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size));)q(Xe,Xe.gzhead.extra[Xe.gzindex]&255),Xe.gzindex++;Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Xe.gzindex===Xe.gzhead.extra.length&&(Xe.gzindex=0,Xe.status=oe)}else Xe.status=oe;if(Xe.status===oe)if(Xe.gzhead.name){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.gzindex=0,Xe.status=se)}else Xe.status=se;if(Xe.status===se)if(Xe.gzhead.comment){Re=Xe.pending;do{if(Xe.pending===Xe.pending_buf_size&&(Xe.gzhead.hcrc&&Xe.pending>Re&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),ne(ie),Re=Xe.pending,Xe.pending===Xe.pending_buf_size)){Ae=1;break}Xe.gzindexRe&&(ie.adler=f(ie.adler,Xe.pending_buf,Xe.pending-Re,Re)),Ae===0&&(Xe.status=he)}else Xe.status=he;if(Xe.status===he&&(Xe.gzhead.hcrc?(Xe.pending+2>Xe.pending_buf_size&&ne(ie),Xe.pending+2<=Xe.pending_buf_size&&(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),ie.adler=0,Xe.status=pe)):Xe.status=pe),Xe.pending!==0){if(ne(ie),ie.avail_out===0)return Xe.last_flush=-1,m}else if(ie.avail_in===0&&te(Oe)<=te(Ke)&&Oe!==y)return ee(ie,u);if(Xe.status===re&&ie.avail_in!==0)return ee(ie,u);if(ie.avail_in!==0||Xe.lookahead!==0||Oe!==b&&Xe.status!==re){var ot=Xe.strategy===c?Te(Xe,Oe):Xe.strategy===W?Be(Xe,Oe):Se[Xe.level].func(Xe,Oe);if((ot===$||ot===ae)&&(Xe.status=re),ot===_||ot===$)return ie.avail_out===0&&(Xe.last_flush=-1),m;if(ot===E&&(Oe===Z?o._tr_align(Xe):Oe!==X&&(o._tr_stored_block(Xe,0,0,!1),Oe===p&&(be(Xe.head),Xe.lookahead===0&&(Xe.strstart=0,Xe.block_start=0,Xe.insert=0))),ne(ie),ie.avail_out===0))return Xe.last_flush=-1,m}return Oe!==y?m:Xe.wrap<=0?N:(Xe.wrap===2?(q(Xe,ie.adler&255),q(Xe,ie.adler>>8&255),q(Xe,ie.adler>>16&255),q(Xe,ie.adler>>24&255),q(Xe,ie.total_in&255),q(Xe,ie.total_in>>8&255),q(Xe,ie.total_in>>16&255),q(Xe,ie.total_in>>24&255)):(ue(Xe,ie.adler>>>16),ue(Xe,ie.adler&65535)),ne(ie),Xe.wrap>0&&(Xe.wrap=-Xe.wrap),Xe.pending!==0?m:N)}function Ue(ie){var Oe;return!ie||!ie.state?G:(Oe=ie.state.status,Oe!==O&&Oe!==Q&&Oe!==oe&&Oe!==se&&Oe!==he&&Oe!==pe&&Oe!==re?ee(ie,G):(ie.state=null,Oe===pe?ee(ie,d):m))}function qe(ie,Oe){var Ke=Oe.length,Xe,Re,Ae,ct,lt,ot,wt,Mt;if(!ie||!ie.state||(Xe=ie.state,ct=Xe.wrap,ct===2||ct===1&&Xe.status!==O||Xe.lookahead))return G;for(ct===1&&(ie.adler=r(ie.adler,Oe,Ke,0)),Xe.wrap=0,Ke>=Xe.w_size&&(ct===0&&(be(Xe.head),Xe.strstart=0,Xe.block_start=0,Xe.insert=0),Mt=new l.Buf8(Xe.w_size),l.arraySet(Mt,Oe,Ke-Xe.w_size,Xe.w_size,0),Oe=Mt,Ke=Xe.w_size),lt=ie.avail_in,ot=ie.next_in,wt=ie.input,ie.avail_in=Ke,ie.next_in=0,ie.input=Oe,Je(Xe);Xe.lookahead>=K;){Re=Xe.strstart,Ae=Xe.lookahead-(K-1);do Xe.ins_h=(Xe.ins_h<>>24,h>>>=x,c-=x,x=C>>>16&255,x===0)Y[y++]=C&65535;else if(x&16){R=C&65535,x&=15,x&&(c>>=x,c-=x),c<15&&(h+=V[Z++]<>>24,h>>>=x,c-=x,x=C>>>16&255,x&16){if(g=C&65535,x&=15,cN){f.msg="invalid distance too far back",b.mode=l;break e}if(h>>>=x,c-=x,x=y-X,g>x){if(x=g-x,x>d&&b.sane){f.msg="invalid distance too far back",b.mode=l;break e}if(S=0,L=s,u===0){if(S+=G-x,x2;)Y[y++]=L[S++],Y[y++]=L[S++],Y[y++]=L[S++],R-=3;R&&(Y[y++]=L[S++],R>1&&(Y[y++]=L[S++]))}else{S=y-g;do Y[y++]=Y[S++],Y[y++]=Y[S++],Y[y++]=Y[S++],R-=3;while(R>2);R&&(Y[y++]=Y[S++],R>1&&(Y[y++]=Y[S++]))}}else if(x&64){f.msg="invalid distance code",b.mode=l;break e}else{C=M[(C&65535)+(h&(1<>3,Z-=R,c-=R<<3,h&=(1<>>24&255)+(Ze>>>8&65280)+((Ze&65280)<<8)+((Ze&255)<<24)}function ve(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Ge(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ze.total_in=Ze.total_out=Ce.total=0,Ze.msg="",Ce.wrap&&(Ze.adler=Ce.wrap&1),Ce.mode=M,Ce.last=0,Ce.havedict=0,Ce.dmax=32768,Ce.head=null,Ce.hold=0,Ce.bits=0,Ce.lencode=Ce.lendyn=new l.Buf32(be),Ce.distcode=Ce.distdyn=new l.Buf32(ne),Ce.sane=1,Ce.back=-1,N)}function Je(Ze){var Ce;return!Ze||!Ze.state?u:(Ce=Ze.state,Ce.wsize=0,Ce.whave=0,Ce.wnext=0,Ge(Ze))}function xe(Ze,Ce){var ye,Ue;return!Ze||!Ze.state||(Ue=Ze.state,Ce<0?(ye=0,Ce=-Ce):(ye=(Ce>>4)+1,Ce<48&&(Ce&=15)),Ce&&(Ce<8||Ce>15))?u:(Ue.window!==null&&Ue.wbits!==Ce&&(Ue.window=null),Ue.wrap=ye,Ue.wbits=Ce,Je(Ze))}function ke(Ze,Ce){var ye,Ue;return Ze?(Ue=new ve,Ze.state=Ue,Ue.window=null,ye=xe(Ze,Ce),ye!==N&&(Ze.state=null),ye):u}function Pe(Ze){return ke(Ze,q)}var Be=!0,Te,we;function Se(Ze){if(Be){var Ce;for(Te=new l.Buf32(512),we=new l.Buf32(32),Ce=0;Ce<144;)Ze.lens[Ce++]=8;for(;Ce<256;)Ze.lens[Ce++]=9;for(;Ce<280;)Ze.lens[Ce++]=7;for(;Ce<288;)Ze.lens[Ce++]=8;for(v(Z,Ze.lens,0,288,Te,0,Ze.work,{bits:9}),Ce=0;Ce<32;)Ze.lens[Ce++]=5;v(p,Ze.lens,0,32,we,0,Ze.work,{bits:5}),Be=!1}Ze.lencode=Te,Ze.lenbits=9,Ze.distcode=we,Ze.distbits=5}function De(Ze,Ce,ye,Ue){var qe,ie=Ze.state;return ie.window===null&&(ie.wsize=1<=ie.wsize?(l.arraySet(ie.window,Ce,ye-ie.wsize,ie.wsize,0),ie.wnext=0,ie.whave=ie.wsize):(qe=ie.wsize-ie.wnext,qe>Ue&&(qe=Ue),l.arraySet(ie.window,Ce,ye-Ue,qe,ie.wnext),Ue-=qe,Ue?(l.arraySet(ie.window,Ce,ye-Ue,Ue,0),ie.wnext=Ue,ie.whave=ie.wsize):(ie.wnext+=qe,ie.wnext===ie.wsize&&(ie.wnext=0),ie.whave>>8&255,ye.check=r(ye.check,en,2,0),Re=0,Ae=0,ye.mode=I;break}if(ye.flags=0,ye.head&&(ye.head.done=!1),!(ye.wrap&1)||(((Re&255)<<8)+(Re>>8))%31){Ze.msg="incorrect header check",ye.mode=le;break}if((Re&15)!==W){Ze.msg="unknown compression method",ye.mode=le;break}if(Re>>>=4,Ae-=4,Ut=(Re&15)+8,ye.wbits===0)ye.wbits=Ut;else if(Ut>ye.wbits){Ze.msg="invalid window size",ye.mode=le;break}ye.dmax=1<>8&1),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=w;case w:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,en[2]=Re>>>16&255,en[3]=Re>>>24&255,ye.check=r(ye.check,en,4,0)),Re=0,Ae=0,ye.mode=C;case C:for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>8),ye.flags&512&&(en[0]=Re&255,en[1]=Re>>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0,ye.mode=x;case x:if(ye.flags&1024){for(;Ae<16;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>8&255,ye.check=r(ye.check,en,2,0)),Re=0,Ae=0}else ye.head&&(ye.head.extra=null);ye.mode=R;case R:if(ye.flags&1024&&(ot=ye.length,ot>Ke&&(ot=Ke),ot&&(ye.head&&(Ut=ye.head.extra_len-ye.length,ye.head.extra||(ye.head.extra=new Array(ye.head.extra_len)),l.arraySet(ye.head.extra,Ue,ie,ot,Ut)),ye.flags&512&&(ye.check=r(ye.check,Ue,ot,ie)),Ke-=ot,ie+=ot,ye.length-=ot),ye.length))break e;ye.length=0,ye.mode=g;case g:if(ye.flags&2048){if(Ke===0)break e;ot=0;do Ut=Ue[ie+ot++],ye.head&&Ut&&ye.length<65536&&(ye.head.name+=String.fromCharCode(Ut));while(Ut&&ot>9&1,ye.head.done=!0),Ze.adler=ye.check=0,ye.mode=T;break;case V:for(;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ae&7,Ae-=Ae&7,ye.mode=E;break}for(;Ae<3;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=1,Ae-=1,Re&3){case 0:ye.mode=U;break;case 1:if(Se(ye),ye.mode=Q,Ce===m){Re>>>=2,Ae-=2;break e}break;case 2:ye.mode=k;break;case 3:Ze.msg="invalid block type",ye.mode=le}Re>>>=2,Ae-=2;break;case U:for(Re>>>=Ae&7,Ae-=Ae&7;Ae<32;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>16^65535)){Ze.msg="invalid stored block lengths",ye.mode=le;break}if(ye.length=Re&65535,Re=0,Ae=0,ye.mode=K,Ce===m)break e;case K:ye.mode=H;case H:if(ot=ye.length,ot){if(ot>Ke&&(ot=Ke),ot>Xe&&(ot=Xe),ot===0)break e;l.arraySet(qe,Ue,ie,ot,Oe),Ke-=ot,ie+=ot,Xe-=ot,Oe+=ot,ye.length-=ot;break}ye.mode=T;break;case k:for(;Ae<14;){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=5,Ae-=5,ye.ndist=(Re&31)+1,Re>>>=5,Ae-=5,ye.ncode=(Re&15)+4,Re>>>=4,Ae-=4,ye.nlen>286||ye.ndist>30){Ze.msg="too many length or distance symbols",ye.mode=le;break}ye.have=0,ye.mode=F;case F:for(;ye.have>>=3,Ae-=3}for(;ye.have<19;)ye.lens[Ln[ye.have++]]=0;if(ye.lencode=ye.lendyn,ye.lenbits=7,nn={bits:ye.lenbits},kt=v(b,ye.lens,0,19,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid code lengths set",ye.mode=le;break}ye.have=0,ye.mode=O;case O:for(;ye.have>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Gt,Ae-=Gt,ye.lens[ye.have++]=Tt;else{if(Tt===16){for(Ft=Gt+2;Ae>>=Gt,Ae-=Gt,ye.have===0){Ze.msg="invalid bit length repeat",ye.mode=le;break}Ut=ye.lens[ye.have-1],ot=3+(Re&3),Re>>>=2,Ae-=2}else if(Tt===17){for(Ft=Gt+3;Ae>>=Gt,Ae-=Gt,Ut=0,ot=3+(Re&7),Re>>>=3,Ae-=3}else{for(Ft=Gt+7;Ae>>=Gt,Ae-=Gt,Ut=0,ot=11+(Re&127),Re>>>=7,Ae-=7}if(ye.have+ot>ye.nlen+ye.ndist){Ze.msg="invalid bit length repeat",ye.mode=le;break}for(;ot--;)ye.lens[ye.have++]=Ut}}if(ye.mode===le)break;if(ye.lens[256]===0){Ze.msg="invalid code -- missing end-of-block",ye.mode=le;break}if(ye.lenbits=9,nn={bits:ye.lenbits},kt=v(Z,ye.lens,0,ye.nlen,ye.lencode,0,ye.work,nn),ye.lenbits=nn.bits,kt){Ze.msg="invalid literal/lengths set",ye.mode=le;break}if(ye.distbits=6,ye.distcode=ye.distdyn,nn={bits:ye.distbits},kt=v(p,ye.lens,ye.nlen,ye.ndist,ye.distcode,0,ye.work,nn),ye.distbits=nn.bits,kt){Ze.msg="invalid distances set",ye.mode=le;break}if(ye.mode=Q,Ce===m)break e;case Q:ye.mode=oe;case oe:if(Ke>=6&&Xe>=258){Ze.next_out=Oe,Ze.avail_out=Xe,Ze.next_in=ie,Ze.avail_in=Ke,ye.hold=Re,ye.bits=Ae,f(Ze,lt),Oe=Ze.next_out,qe=Ze.output,Xe=Ze.avail_out,ie=Ze.next_in,Ue=Ze.input,Ke=Ze.avail_in,Re=ye.hold,Ae=ye.bits,ye.mode===T&&(ye.back=-1);break}for(ye.back=0;xt=ye.lencode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,ye.length=Tt,Zt===0){ye.mode=_;break}if(Zt&32){ye.back=-1,ye.mode=T;break}if(Zt&64){Ze.msg="invalid literal/length code",ye.mode=le;break}ye.extra=Zt&15,ye.mode=se;case se:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}ye.was=ye.length,ye.mode=he;case he:for(;xt=ye.distcode[Re&(1<>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>Ct)],Gt=xt>>>24,Zt=xt>>>16&255,Tt=xt&65535,!(Ct+Gt<=Ae);){if(Ke===0)break e;Ke--,Re+=Ue[ie++]<>>=Ct,Ae-=Ct,ye.back+=Ct}if(Re>>>=Gt,Ae-=Gt,ye.back+=Gt,Zt&64){Ze.msg="invalid distance code",ye.mode=le;break}ye.offset=Tt,ye.extra=Zt&15,ye.mode=pe;case pe:if(ye.extra){for(Ft=ye.extra;Ae>>=ye.extra,Ae-=ye.extra,ye.back+=ye.extra}if(ye.offset>ye.dmax){Ze.msg="invalid distance too far back",ye.mode=le;break}ye.mode=re;case re:if(Xe===0)break e;if(ot=lt-Xe,ye.offset>ot){if(ot=ye.offset-ot,ot>ye.whave&&ye.sane){Ze.msg="invalid distance too far back",ye.mode=le;break}ot>ye.wnext?(ot-=ye.wnext,wt=ye.wsize-ot):wt=ye.wnext-ot,ot>ye.length&&(ot=ye.length),Mt=ye.window}else Mt=qe,wt=Oe-ye.offset,ot=ye.length;ot>Xe&&(ot=Xe),Xe-=ot,ye.length-=ot;do qe[Oe++]=Mt[wt++];while(--ot);ye.length===0&&(ye.mode=oe);break;case _:if(Xe===0)break e;qe[Oe++]=ye.length,Xe--,ye.mode=oe;break;case E:if(ye.wrap){for(;Ae<32;){if(Ke===0)break e;Ke--,Re|=Ue[ie++]<=1&&oe[R]===0;R--);if(g>R&&(g=R),R===0)return h[c++]=1<<24|64<<16|0,h[c++]=1<<24|64<<16|0,M.bits=1,0;for(x=1;x0&&(G===v||R!==1))return-1;for(se[1]=0,w=1;wr||G===Z&&Y>f)return 1;for(;;){re=w-L,W[C]Q?(_=he[pe+W[C]],E=F[O+W[C]]):(_=32+64,E=0),J=1<>L)+U]=re<<24|_<<16|E|0;while(U!==0);for(J=1<>=1;if(J!==0?(T&=J-1,T+=J):T=0,C++,--oe[w]===0){if(w===R)break;w=d[u+W[C]]}if(w>g&&(T&H)!==K){for(L===0&&(L=g),k+=x,S=w-L,V=1<r||G===Z&&Y>f)return 1;K=T&H,h[K]=g<<24|S<<16|k-c|0}}return T!==0&&(h[k+T]=w-L<<24|64<<16|0),M.bits=g,0}},{"../utils/common":442}],452:[function(t,i,a){i.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(t,i,a){var l=t("../utils/common"),o=4,r=0,f=1,v=2;function b(me){for(var Ve=me.length;--Ve>=0;)me[Ve]=0}var Z=0,p=1,y=2,X=3,m=258,N=29,G=256,d=G+1+N,u=30,s=19,h=2*d+1,c=15,W=16,M=7,I=256,w=16,C=17,x=18,R=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],V=512,Y=new Array((d+2)*2);b(Y);var T=new Array(u*2);b(T);var J=new Array(V);b(J);var U=new Array(m-X+1);b(U);var K=new Array(N);b(K);var H=new Array(u);b(H);function k(me,Ve,Me,Ie,Ze){this.static_tree=me,this.extra_bits=Ve,this.extra_base=Me,this.elems=Ie,this.max_length=Ze,this.has_stree=me&&me.length}var F,O,Q;function oe(me,Ve){this.dyn_tree=me,this.max_code=0,this.stat_desc=Ve}function se(me){return me<256?J[me]:J[256+(me>>>7)]}function he(me,Ve){me.pending_buf[me.pending++]=Ve&255,me.pending_buf[me.pending++]=Ve>>>8&255}function pe(me,Ve,Me){me.bi_valid>W-Me?(me.bi_buf|=Ve<>W-me.bi_valid,me.bi_valid+=Me-W):(me.bi_buf|=Ve<>>=1,Me<<=1;while(--Ve>0);return Me>>>1}function E(me){me.bi_valid===16?(he(me,me.bi_buf),me.bi_buf=0,me.bi_valid=0):me.bi_valid>=8&&(me.pending_buf[me.pending++]=me.bi_buf&255,me.bi_buf>>=8,me.bi_valid-=8)}function $(me,Ve){var Me=Ve.dyn_tree,Ie=Ve.max_code,Ze=Ve.stat_desc.static_tree,Ce=Ve.stat_desc.has_stree,ye=Ve.stat_desc.extra_bits,Ue=Ve.stat_desc.extra_base,qe=Ve.stat_desc.max_length,ie,Oe,Ke,Xe,Re,Ae,ct=0;for(Xe=0;Xe<=c;Xe++)me.bl_count[Xe]=0;for(Me[me.heap[me.heap_max]*2+1]=0,ie=me.heap_max+1;ieqe&&(Xe=qe,ct++),Me[Oe*2+1]=Xe,!(Oe>Ie)&&(me.bl_count[Xe]++,Re=0,Oe>=Ue&&(Re=ye[Oe-Ue]),Ae=Me[Oe*2],me.opt_len+=Ae*(Xe+Re),Ce&&(me.static_len+=Ae*(Ze[Oe*2+1]+Re)));if(ct!==0){do{for(Xe=qe-1;me.bl_count[Xe]===0;)Xe--;me.bl_count[Xe]--,me.bl_count[Xe+1]+=2,me.bl_count[qe]--,ct-=2}while(ct>0);for(Xe=qe;Xe!==0;Xe--)for(Oe=me.bl_count[Xe];Oe!==0;)Ke=me.heap[--ie],!(Ke>Ie)&&(Me[Ke*2+1]!==Xe&&(me.opt_len+=(Xe-Me[Ke*2+1])*Me[Ke*2],Me[Ke*2+1]=Xe),Oe--)}}function ae(me,Ve,Me){var Ie=new Array(c+1),Ze=0,Ce,ye;for(Ce=1;Ce<=c;Ce++)Ie[Ce]=Ze=Ze+Me[Ce-1]<<1;for(ye=0;ye<=Ve;ye++){var Ue=me[ye*2+1];Ue!==0&&(me[ye*2]=_(Ie[Ue]++,Ue))}}function le(){var me,Ve,Me,Ie,Ze,Ce=new Array(c+1);for(Me=0,Ie=0;Ie>=7;Ie8?he(me,me.bi_buf):me.bi_valid>0&&(me.pending_buf[me.pending++]=me.bi_buf),me.bi_buf=0,me.bi_valid=0}function be(me,Ve,Me,Ie){te(me),Ie&&(he(me,Me),he(me,~Me)),l.arraySet(me.pending_buf,me.window,Ve,Me,me.pending),me.pending+=Me}function ne(me,Ve,Me,Ie){var Ze=Ve*2,Ce=Me*2;return me[Ze]>1;ye>=1;ye--)B(me,Me,ye);ie=Ce;do ye=me.heap[1],me.heap[1]=me.heap[me.heap_len--],B(me,Me,1),Ue=me.heap[1],me.heap[--me.heap_max]=ye,me.heap[--me.heap_max]=Ue,Me[ie*2]=Me[ye*2]+Me[Ue*2],me.depth[ie]=(me.depth[ye]>=me.depth[Ue]?me.depth[ye]:me.depth[Ue])+1,Me[ye*2+1]=Me[Ue*2+1]=ie,me.heap[1]=ie++,B(me,Me,1);while(me.heap_len>=2);me.heap[--me.heap_max]=me.heap[1],$(me,Ve),ae(Me,qe,me.bl_count)}function ve(me,Ve,Me){var Ie,Ze=-1,Ce,ye=Ve[0*2+1],Ue=0,qe=7,ie=4;for(ye===0&&(qe=138,ie=3),Ve[(Me+1)*2+1]=65535,Ie=0;Ie<=Me;Ie++)Ce=ye,ye=Ve[(Ie+1)*2+1],!(++Ue=3&&me.bl_tree[L[Ve]*2+1]===0;Ve--);return me.opt_len+=3*(Ve+1)+5+5+4,Ve}function xe(me,Ve,Me,Ie){var Ze;for(pe(me,Ve-257,5),pe(me,Me-1,5),pe(me,Ie-4,4),Ze=0;Ze>>=1)if(Ve&1&&me.dyn_ltree[Me*2]!==0)return r;if(me.dyn_ltree[9*2]!==0||me.dyn_ltree[10*2]!==0||me.dyn_ltree[13*2]!==0)return f;for(Me=32;Me0?(me.strm.data_type===v&&(me.strm.data_type=ke(me)),ue(me,me.l_desc),ue(me,me.d_desc),ye=Je(me),Ze=me.opt_len+3+7>>>3,Ce=me.static_len+3+7>>>3,Ce<=Ze&&(Ze=Ce)):Ze=Ce=Me+5,Me+4<=Ze&&Ve!==-1?Te(me,Ve,Me,Ie):me.strategy===o||Ce===Ze?(pe(me,(p<<1)+(Ie?1:0),3),q(me,Y,T)):(pe(me,(y<<1)+(Ie?1:0),3),xe(me,me.l_desc.max_code+1,me.d_desc.max_code+1,ye+1),q(me,me.dyn_ltree,me.dyn_dtree)),ee(me),Ie&&te(me)}function De(me,Ve,Me){return me.pending_buf[me.d_buf+me.last_lit*2]=Ve>>>8&255,me.pending_buf[me.d_buf+me.last_lit*2+1]=Ve&255,me.pending_buf[me.l_buf+me.last_lit]=Me&255,me.last_lit++,Ve===0?me.dyn_ltree[Me*2]++:(me.matches++,Ve--,me.dyn_ltree[(U[Me]+G+1)*2]++,me.dyn_dtree[se(Ve)*2]++),me.last_lit===me.lit_bufsize-1}a._tr_init=Be,a._tr_stored_block=Te,a._tr_flush_block=Se,a._tr_tally=De,a._tr_align=we},{"../utils/common":442}],454:[function(t,i,a){function l(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}i.exports=l},{}],455:[function(t,i,a){i.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(t,i,a){var l=t("asn1.js");a.certificate=t("./certificate");var o=l.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});a.RSAPrivateKey=o;var r=l.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});a.RSAPublicKey=r;var f=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(v),this.key("subjectPublicKey").bitstr())});a.PublicKey=f;var v=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),b=l.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(v),this.key("subjectPrivateKey").octstr())});a.PrivateKey=b;var Z=l.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});a.EncryptedPrivateKey=Z;var p=l.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});a.DSAPrivateKey=p,a.DSAparam=l.define("DSAparam",function(){this.int()});var y=l.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(X),this.key("publicKey").optional().explicit(1).bitstr())});a.ECPrivateKey=y;var X=l.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});a.signature=l.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(t,i,a){var l=t("asn1.js"),o=l.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),r=l.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),f=l.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),v=l.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())}),b=l.define("RelativeDistinguishedName",function(){this.setof(r)}),Z=l.define("RDNSequence",function(){this.seqof(b)}),p=l.define("Name",function(){this.choice({rdnSequence:this.use(Z)})}),y=l.define("Validity",function(){this.seq().obj(this.key("notBefore").use(o),this.key("notAfter").use(o))}),X=l.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),m=l.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(f),this.key("issuer").use(p),this.key("validity").use(y),this.key("subject").use(p),this.key("subjectPublicKeyInfo").use(v),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(X).optional())}),N=l.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(m),this.key("signatureAlgorithm").use(f),this.key("signatureValue").bitstr())});i.exports=N},{"asn1.js":167}],458:[function(t,i,a){var l=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,r=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,f=t("evp_bytestokey"),v=t("browserify-aes"),b=t("safe-buffer").Buffer;i.exports=function(Z,p){var y=Z.toString(),X=y.match(l),m;if(X){var G="aes"+X[1],d=b.from(X[2],"hex"),u=b.from(X[3].replace(/[\r\n]/g,""),"base64"),s=f(p,d.slice(0,8),parseInt(X[1],10)).key,h=[],c=v.createDecipheriv(G,s,d);h.push(c.update(u)),h.push(c.final()),m=b.concat(h)}else{var N=y.match(r);m=b.from(N[2].replace(/[\r\n]/g,""),"base64")}var W=y.match(o)[1];return{tag:W,data:m}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(t,i,a){function l(X){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(N){return typeof N}:l=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},l(X)}var o=t("./asn1"),r=t("./aesid.json"),f=t("./fixProc"),v=t("browserify-aes"),b=t("pbkdf2"),Z=t("safe-buffer").Buffer;i.exports=p;function p(X){var m;l(X)==="object"&&!Z.isBuffer(X)&&(m=X.passphrase,X=X.key),typeof X=="string"&&(X=Z.from(X));var N=f(X,m),G=N.tag,d=N.data,u,s;switch(G){case"CERTIFICATE":s=o.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(s||(s=o.PublicKey.decode(d,"der")),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(s.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return s.subjectPrivateKey=s.subjectPublicKey,{type:"ec",data:s};case"1.2.840.10040.4.1":return s.algorithm.params.pub_key=o.DSAparam.decode(s.subjectPublicKey.data,"der"),{type:"dsa",data:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"ENCRYPTED PRIVATE KEY":d=o.EncryptedPrivateKey.decode(d,"der"),d=y(d,m);case"PRIVATE KEY":switch(s=o.PrivateKey.decode(d,"der"),u=s.algorithm.algorithm.join("."),u){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(s.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:s.algorithm.curve,privateKey:o.ECPrivateKey.decode(s.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return s.algorithm.params.priv_key=o.DSAparam.decode(s.subjectPrivateKey,"der"),{type:"dsa",params:s.algorithm.params};default:throw new Error("unknown key id "+u)}case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return d=o.ECPrivateKey.decode(d,"der"),{curve:d.parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+G)}}p.signature=o.signature;function y(X,m){var N=X.algorithm.decrypt.kde.kdeparams.salt,G=parseInt(X.algorithm.decrypt.kde.kdeparams.iters.toString(),10),d=r[X.algorithm.decrypt.cipher.algo.join(".")],u=X.algorithm.decrypt.cipher.iv,s=X.subjectPrivateKey,h=parseInt(d.split("-")[1],10)/8,c=b.pbkdf2Sync(m,N,G,h,"sha1"),W=v.createDecipheriv(d,c,u),M=[];return M.push(W.update(s)),M.push(W.final()),Z.concat(M)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(t,i,a){a.pbkdf2=t("./lib/async"),a.pbkdf2Sync=t("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(t,i,a){(function(l,o){var r=t("safe-buffer").Buffer,f=t("./precondition"),v=t("./default-encoding"),b=t("./sync"),Z=t("./to-buffer"),p,y=o.crypto&&o.crypto.subtle,X={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},m=[];function N(u){if(o.process&&!o.process.browser||!y||!y.importKey||!y.deriveBits)return Promise.resolve(!1);if(m[u]!==void 0)return m[u];p=p||r.alloc(8);var s=G(p,p,10,128,u).then(function(){return!0}).catch(function(){return!1});return m[u]=s,s}function G(u,s,h,c,W){return y.importKey("raw",u,{name:"PBKDF2"},!1,["deriveBits"]).then(function(M){return y.deriveBits({name:"PBKDF2",salt:s,iterations:h,hash:{name:W}},M,c<<3)}).then(function(M){return r.from(M)})}function d(u,s){u.then(function(h){l.nextTick(function(){s(null,h)})},function(h){l.nextTick(function(){s(h)})})}i.exports=function(u,s,h,c,W,M){typeof W=="function"&&(M=W,W=void 0),W=W||"sha1";var I=X[W.toLowerCase()];if(!I||typeof o.Promise!="function")return l.nextTick(function(){var w;try{w=b(u,s,h,c,W)}catch(C){return M(C)}M(null,w)});if(f(h,c),u=Z(u,v,"Password"),s=Z(s,v,"Salt"),typeof M!="function")throw new Error("No callback provided to pbkdf2");d(N(I).then(function(w){return w?G(u,s,h,c,I):b(u,s,h,c,W)}),M)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(t,i,a){(function(l){var o;if(l.browser)o="utf-8";else if(l.version){var r=parseInt(l.version.split(".")[0].slice(1),10);o=r>=6?"utf-8":"binary"}else o="utf-8";i.exports=o}).call(this,t("_process"))},{_process:467}],463:[function(t,i,a){var l=Math.pow(2,30)-1;i.exports=function(o,r){if(typeof o!="number")throw new TypeError("Iterations not a number");if(o<0)throw new TypeError("Bad iterations");if(typeof r!="number")throw new TypeError("Key length not a number");if(r<0||r>l||r!==r)throw new TypeError("Bad key length")}},{}],464:[function(t,i,a){var l=t("create-hash/md5"),o=t("ripemd160"),r=t("sha.js"),f=t("safe-buffer").Buffer,v=t("./precondition"),b=t("./default-encoding"),Z=t("./to-buffer"),p=f.alloc(128),y={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function X(G,d,u){var s=m(G),h=G==="sha512"||G==="sha384"?128:64;d.length>h?d=s(d):d.length"u"||!l.version||l.version.indexOf("v0.")===0||l.version.indexOf("v1.")===0&&l.version.indexOf("v1.8.")!==0?i.exports={nextTick:o}:i.exports=l;function o(r,f,v,b){if(typeof r!="function")throw new TypeError('"callback" argument must be a function');var Z=arguments.length,p,y;switch(Z){case 0:case 1:return l.nextTick(r);case 2:return l.nextTick(function(){r.call(null,f)});case 3:return l.nextTick(function(){r.call(null,f,v)});case 4:return l.nextTick(function(){r.call(null,f,v,b)});default:for(p=new Array(Z-1),y=0;y1)for(var c=1;cc||new f(d).cmp(h.modulus)>=0)throw new Error("decryption error");var W;u?W=Z(new f(d),h):W=v(d,h);var M=p.alloc(c-W.length);if(W=p.concat([M,W],c),s===4)return y(h,W);if(s===1)return X(h,W,u);if(s===3)return W;throw new Error("unknown padding")};function y(N,G){var d=N.modulus.byteLength(),u=b("sha1").update(p.alloc(0)).digest(),s=u.length;if(G[0]!==0)throw new Error("decryption error");var h=G.slice(1,s+1),c=G.slice(s+1),W=r(h,o(c,s)),M=r(c,o(W,d-s-1));if(m(u,M.slice(0,s)))throw new Error("decryption error");for(var I=s;M[I]===0;)I++;if(M[I++]!==1)throw new Error("decryption error");return M.slice(I)}function X(N,G,d){for(var u=G.slice(0,2),s=2,h=0;G[s++]!==0;)if(s>=G.length){h++;break}var c=G.slice(2,s-1);if((u.toString("hex")!=="0002"&&!d||u.toString("hex")!=="0001"&&d)&&h++,c.length<8&&h++,h)throw new Error("decryption error");return G.slice(s)}function m(N,G){N=p.from(N),G=p.from(G);var d=0,u=N.length;N.length!==G.length&&(d++,u=Math.min(N.length,G.length));for(var s=-1;++s=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return s?p(W,c):Z(W,c)};function X(G,d){var u=G.modulus.byteLength(),s=d.length,h=r("sha1").update(y.alloc(0)).digest(),c=h.length,W=2*c;if(s>u-W-2)throw new Error("message too long");var M=y.alloc(u-s-W-2),I=u-c-1,w=o(c),C=v(y.concat([h,M,y.alloc(1,1),d],I),f(w,I)),x=v(w,f(C,c));return new b(y.concat([y.alloc(1),x,C],u))}function m(G,d,u){var s=d.length,h=G.modulus.byteLength();if(s>h-11)throw new Error("message too long");var c;return u?c=y.alloc(h-s-3,255):c=N(h-s-3),new b(y.concat([y.from([0,u?1:2]),c,y.alloc(1),d],h))}function N(G){for(var d=y.allocUnsafe(G),u=0,s=o(G*2),h=0,c;uf)throw new RangeError("requested too many random bytes");var m=b.allocUnsafe(y);if(y>0)if(y>r)for(var N=0;Ny||u<0)throw new TypeError("offset must be a uint32");if(u>Z||u>s)throw new RangeError("offset out of range")}function m(u,s,h){if(typeof u!="number"||u!==u)throw new TypeError("size must be a number");if(u>y||u<0)throw new TypeError("size must be a uint32");if(u+s>h||u>Z)throw new RangeError("buffer too small")}p&&p.getRandomValues||!l.browser?(a.randomFill=N,a.randomFillSync=d):(a.randomFill=r,a.randomFillSync=r);function N(u,s,h,c){if(!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof s=="function")c=s,s=0,h=u.length;else if(typeof h=="function")c=h,h=u.length-s;else if(typeof c!="function")throw new TypeError('"cb" argument must be a function');return X(s,u.length),m(h,s,u.length),G(u,s,h,c)}function G(u,s,h,c){if(l.browser){var W=u.buffer,M=new Uint8Array(W,s,h);if(p.getRandomValues(M),c){l.nextTick(function(){c(null,u)});return}return u}if(c){v(h,function(w,C){if(w)return c(w);C.copy(u,s),c(null,u)});return}var I=v(h);return I.copy(u,s),u}function d(u,s,h){if(typeof s>"u"&&(s=0),!b.isBuffer(u)&&!(u instanceof o.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return X(s,u.length),h===void 0&&(h=u.length-s),m(h,s,u.length),G(u,s,h)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(t,i,a){function l(y){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(m){return typeof m}:l=function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},l(y)}function o(y,X){y.prototype=Object.create(X.prototype),y.prototype.constructor=y,y.__proto__=X}var r={};function f(y,X,m){m||(m=Error);function N(d,u,s){return typeof X=="string"?X:X(d,u,s)}var G=function(d){o(u,d);function u(s,h,c){return d.call(this,N(s,h,c))||this}return u}(m);G.prototype.name=m.name,G.prototype.code=y,r[y]=G}function v(y,X){if(Array.isArray(y)){var m=y.length;return y=y.map(function(N){return String(N)}),m>2?"one of ".concat(X," ").concat(y.slice(0,m-1).join(", "),", or ")+y[m-1]:m===2?"one of ".concat(X," ").concat(y[0]," or ").concat(y[1]):"of ".concat(X," ").concat(y[0])}else return"of ".concat(X," ").concat(String(y))}function b(y,X,m){return y.substr(!m||m<0?0:+m,X.length)===X}function Z(y,X,m){return(m===void 0||m>y.length)&&(m=y.length),y.substring(m-X.length,m)===X}function p(y,X,m){return typeof m!="number"&&(m=0),m+X.length>y.length?!1:y.indexOf(X,m)!==-1}f("ERR_INVALID_OPT_VALUE",function(y,X){return'The value "'+X+'" is invalid for option "'+y+'"'},TypeError),f("ERR_INVALID_ARG_TYPE",function(y,X,m){var N;typeof X=="string"&&b(X,"not ")?(N="must not be",X=X.replace(/^not /,"")):N="must be";var G;if(Z(y," argument"))G="The ".concat(y," ").concat(N," ").concat(v(X,"type"));else{var d=p(y,".")?"property":"argument";G='The "'.concat(y,'" ').concat(d," ").concat(N," ").concat(v(X,"type"))}return G+=". Received type ".concat(l(m)),G},TypeError),f("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),f("ERR_METHOD_NOT_IMPLEMENTED",function(y){return"The "+y+" method is not implemented"}),f("ERR_STREAM_PREMATURE_CLOSE","Premature close"),f("ERR_STREAM_DESTROYED",function(y){return"Cannot call "+y+" after a stream was destroyed"}),f("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),f("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),f("ERR_STREAM_WRITE_AFTER_END","write after end"),f("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),f("ERR_UNKNOWN_ENCODING",function(y){return"Unknown encoding: "+y},TypeError),f("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),i.exports.codes=r},{}],478:[function(t,i,a){(function(l){var o=Object.keys||function(m){var N=[];for(var G in m)N.push(G);return N};i.exports=p;var r=t("./_stream_readable"),f=t("./_stream_writable");t("inherits")(p,r);for(var v=o(f.prototype),b=0;b0)if(typeof te!="string"&&!q.objectMode&&Object.getPrototypeOf(te)!==b.prototype&&(te=p(te)),ne)q.endEmitted?x(ee,new M):Y(ee,q,te,!0);else if(q.ended)x(ee,new c);else{if(q.destroyed)return!1;q.reading=!1,q.decoder&&!be?(te=q.decoder.write(te),q.objectMode||te.length!==0?Y(ee,q,te,!1):O(ee,q)):Y(ee,q,te,!1)}else ne||(q.reading=!1,O(ee,q))}return!q.ended&&(q.length=J?ee=J:(ee--,ee|=ee>>>1,ee|=ee>>>2,ee|=ee>>>4,ee|=ee>>>8,ee|=ee>>>16,ee++),ee}function K(ee,te){return ee<=0||te.length===0&&te.ended?0:te.objectMode?1:ee!==ee?te.flowing&&te.length?te.buffer.head.data.length:te.length:(ee>te.highWaterMark&&(te.highWaterMark=U(ee)),ee<=te.length?ee:te.ended?te.length:(te.needReadable=!0,0))}L.prototype.read=function(ee){m("read",ee),ee=parseInt(ee,10);var te=this._readableState,be=ee;if(ee!==0&&(te.emittedReadable=!1),ee===0&&te.needReadable&&((te.highWaterMark!==0?te.length>=te.highWaterMark:te.length>0)||te.ended))return m("read: emitReadable",te.length,te.ended),te.length===0&&te.ended?$(this):k(this),null;if(ee=K(ee,te),ee===0&&te.ended)return te.length===0&&$(this),null;var ne=te.needReadable;m("need readable",ne),(te.length===0||te.length-ee0?B=E(ee,te):B=null,B===null?(te.needReadable=te.length<=te.highWaterMark,ee=0):(te.length-=ee,te.awaitDrain=0),te.length===0&&(te.ended||(te.needReadable=!0),be!==ee&&te.ended&&$(this)),B!==null&&this.emit("data",B),B};function H(ee,te){if(m("onEofChunk"),!te.ended){if(te.decoder){var be=te.decoder.end();be&&be.length&&(te.buffer.push(be),te.length+=te.objectMode?1:be.length)}te.ended=!0,te.sync?k(ee):(te.needReadable=!1,te.emittedReadable||(te.emittedReadable=!0,F(ee)))}}function k(ee){var te=ee._readableState;m("emitReadable",te.needReadable,te.emittedReadable),te.needReadable=!1,te.emittedReadable||(m("emitReadable",te.flowing),te.emittedReadable=!0,l.nextTick(F,ee))}function F(ee){var te=ee._readableState;m("emitReadable_",te.destroyed,te.length,te.ended),!te.destroyed&&(te.length||te.ended)&&(ee.emit("readable"),te.emittedReadable=!1),te.needReadable=!te.flowing&&!te.ended&&te.length<=te.highWaterMark,_(ee)}function O(ee,te){te.readingMore||(te.readingMore=!0,l.nextTick(Q,ee,te))}function Q(ee,te){for(;!te.reading&&!te.ended&&(te.length1&&le(ne.pipes,ee)!==-1)&&!Je&&(m("false write response, pause",ne.awaitDrain),ne.awaitDrain++),be.pause())}function Pe(Se){m("onerror",Se),we(),ee.removeListener("error",Pe),f(ee,"error")===0&&x(ee,Se)}g(ee,"error",Pe);function Be(){ee.removeListener("finish",Te),we()}ee.once("close",Be);function Te(){m("onfinish"),ee.removeListener("close",Be),we()}ee.once("finish",Te);function we(){m("unpipe"),be.unpipe(ee)}return ee.emit("pipe",be),ne.flowing||(m("pipe resume"),be.resume()),ee};function oe(ee){return function(){var be=ee._readableState;m("pipeOnDrain",be.awaitDrain),be.awaitDrain&&be.awaitDrain--,be.awaitDrain===0&&f(ee,"data")&&(be.flowing=!0,_(ee))}}L.prototype.unpipe=function(ee){var te=this._readableState,be={hasUnpiped:!1};if(te.pipesCount===0)return this;if(te.pipesCount===1)return ee&&ee!==te.pipes?this:(ee||(ee=te.pipes),te.pipes=null,te.pipesCount=0,te.flowing=!1,ee&&ee.emit("unpipe",this,be),this);if(!ee){var ne=te.pipes,B=te.pipesCount;te.pipes=null,te.pipesCount=0,te.flowing=!1;for(var q=0;q0,ne.flowing!==!1&&this.resume()):ee==="readable"&&!ne.endEmitted&&!ne.readableListening&&(ne.readableListening=ne.needReadable=!0,ne.flowing=!1,ne.emittedReadable=!1,m("on readable",ne.length,ne.reading),ne.length?k(this):ne.reading||l.nextTick(he,this)),be},L.prototype.addListener=L.prototype.on,L.prototype.removeListener=function(ee,te){var be=v.prototype.removeListener.call(this,ee,te);return ee==="readable"&&l.nextTick(se,this),be},L.prototype.removeAllListeners=function(ee){var te=v.prototype.removeAllListeners.apply(this,arguments);return(ee==="readable"||ee===void 0)&&l.nextTick(se,this),te};function se(ee){var te=ee._readableState;te.readableListening=ee.listenerCount("readable")>0,te.resumeScheduled&&!te.paused?te.flowing=!0:ee.listenerCount("data")>0&&ee.resume()}function he(ee){m("readable nexttick read 0"),ee.read(0)}L.prototype.resume=function(){var ee=this._readableState;return ee.flowing||(m("resume"),ee.flowing=!ee.readableListening,pe(this,ee)),ee.paused=!1,this};function pe(ee,te){te.resumeScheduled||(te.resumeScheduled=!0,l.nextTick(re,ee,te))}function re(ee,te){m("resume",te.reading),te.reading||ee.read(0),te.resumeScheduled=!1,ee.emit("resume"),_(ee),te.flowing&&!te.reading&&ee.read(0)}L.prototype.pause=function(){return m("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(m("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function _(ee){var te=ee._readableState;for(m("flow",te.flowing);te.flowing&&ee.read()!==null;);}L.prototype.wrap=function(ee){var te=this,be=this._readableState,ne=!1;ee.on("end",function(){if(m("wrapped end"),be.decoder&&!be.ended){var ue=be.decoder.end();ue&&ue.length&&te.push(ue)}te.push(null)}),ee.on("data",function(ue){if(m("wrapped data"),be.decoder&&(ue=be.decoder.write(ue)),!(be.objectMode&&ue==null)&&!(!be.objectMode&&(!ue||!ue.length))){var ve=te.push(ue);ve||(ne=!0,ee.pause())}});for(var B in ee)this[B]===void 0&&typeof ee[B]=="function"&&(this[B]=function(ve){return function(){return ee[ve].apply(ee,arguments)}}(B));for(var q=0;q=te.length?(te.decoder?be=te.buffer.join(""):te.buffer.length===1?be=te.buffer.first():be=te.buffer.concat(te.length),te.buffer.clear()):be=te.buffer.consume(ee,te.decoder),be}function $(ee){var te=ee._readableState;m("endReadable",te.endEmitted),te.endEmitted||(te.ended=!0,l.nextTick(ae,te,ee))}function ae(ee,te){if(m("endReadableNT",ee.endEmitted,ee.length),!ee.endEmitted&&ee.length===0&&(ee.endEmitted=!0,te.readable=!1,te.emit("end"),ee.autoDestroy)){var be=te._writableState;(!be||be.autoDestroy&&be.finished)&&te.destroy()}}typeof Symbol=="function"&&(L.from=function(ee,te){return C===void 0&&(C=t("./internal/streams/from")),C(L,ee,te)});function le(ee,te){for(var be=0,ne=ee.length;be-1))throw new w(E);return this._writableState.defaultEncoding=E,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Y(_,E,$){return!_.objectMode&&_.decodeStrings!==!1&&typeof E=="string"&&(E=Z.from(E,$)),E}Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function T(_,E,$,ae,le,ee){if(!$){var te=Y(E,ae,le);ae!==te&&($=!0,le="buffer",ae=te)}var be=E.objectMode?1:ae.length;E.length+=be;var ne=E.length0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:"unshift",value:function(u){var s={data:u,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:"shift",value:function(){if(this.length!==0){var u=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,u}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(u){if(this.length===0)return"";for(var s=this.head,h=""+s.data;s=s.next;)h+=u+s.data;return h}},{key:"concat",value:function(u){if(this.length===0)return p.alloc(0);for(var s=p.allocUnsafe(u>>>0),h=this.head,c=0;h;)N(h.data,s,c),c+=h.data.length,h=h.next;return s}},{key:"consume",value:function(u,s){var h;return uW.length?W.length:u;if(M===W.length?c+=W:c+=W.slice(0,u),u-=M,u===0){M===W.length?(++h,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=W.slice(M));break}++h}return this.length-=h,c}},{key:"_getBuffer",value:function(u){var s=p.allocUnsafe(u),h=this.head,c=1;for(h.data.copy(s),u-=h.data.length;h=h.next;){var W=h.data,M=u>W.length?W.length:u;if(W.copy(s,s.length-u,0,M),u-=M,u===0){M===W.length?(++c,h.next?this.head=h.next:this.head=this.tail=null):(this.head=h,h.data=W.slice(M));break}++c}return this.length-=c,s}},{key:m,value:function(u,s){return X(this,o({},s,{depth:0,customInspect:!1}))}}]),G}()},{buffer:216,util:185}],485:[function(t,i,a){(function(l){function o(p,y){var X=this,m=this._readableState&&this._readableState.destroyed,N=this._writableState&&this._writableState.destroyed;return m||N?(y?y(p):p&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,l.nextTick(b,this,p)):l.nextTick(b,this,p)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(p||null,function(G){!y&&G?X._writableState?X._writableState.errorEmitted?l.nextTick(f,X):(X._writableState.errorEmitted=!0,l.nextTick(r,X,G)):l.nextTick(r,X,G):y?(l.nextTick(f,X),y(G)):l.nextTick(f,X)}),this)}function r(p,y){b(p,y),f(p)}function f(p){p._writableState&&!p._writableState.emitClose||p._readableState&&!p._readableState.emitClose||p.emit("close")}function v(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function b(p,y){p.emit("error",y)}function Z(p,y){var X=p._readableState,m=p._writableState;X&&X.autoDestroy||m&&m.autoDestroy?p.destroy(y):p.emit("error",y)}i.exports={destroy:o,undestroy:v,errorOrDestroy:Z}}).call(this,t("_process"))},{_process:467}],486:[function(t,i,a){var l=t("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function o(b){var Z=!1;return function(){if(!Z){Z=!0;for(var p=arguments.length,y=new Array(p),X=0;X0;return p(W,I,w,function(C){h||(h=C),C&&c.forEach(y),!I&&(c.forEach(y),s(h))})});return d.reduce(X)}i.exports=N},{"../../../errors":477,"./end-of-stream":486}],489:[function(t,i,a){var l=t("../../../errors").codes.ERR_INVALID_OPT_VALUE;function o(f,v,b){return f.highWaterMark!=null?f.highWaterMark:v?f[b]:null}function r(f,v,b,Z){var p=o(v,Z,b);if(p!=null){if(!(isFinite(p)&&Math.floor(p)===p)||p<0){var y=Z?b:"highWaterMark";throw new l(y,p)}return Math.floor(p)}return f.objectMode?16:16*1024}i.exports={getHighWaterMark:r}},{"../../../errors":477}],490:[function(t,i,a){i.exports=t("events").EventEmitter},{events:367}],491:[function(t,i,a){a=i.exports=t("./lib/_stream_readable.js"),a.Stream=a,a.Readable=a,a.Writable=t("./lib/_stream_writable.js"),a.Duplex=t("./lib/_stream_duplex.js"),a.Transform=t("./lib/_stream_transform.js"),a.PassThrough=t("./lib/_stream_passthrough.js"),a.finished=t("./lib/internal/streams/end-of-stream.js"),a.pipeline=t("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(t,i,a){function l(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(v){return typeof v}:l=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},l(r)}var o=function(r){var f=Object.prototype,v=f.hasOwnProperty,b,Z=typeof Symbol=="function"?Symbol:{},p=Z.iterator||"@@iterator",y=Z.asyncIterator||"@@asyncIterator",X=Z.toStringTag||"@@toStringTag";function m(H,k,F){return Object.defineProperty(H,k,{value:F,enumerable:!0,configurable:!0,writable:!0}),H[k]}try{m({},"")}catch{m=function(F,O,Q){return F[O]=Q}}function N(H,k,F,O){var Q=k&&k.prototype instanceof W?k:W,oe=Object.create(Q.prototype),se=new J(O||[]);return oe._invoke=L(H,F,se),oe}r.wrap=N;function G(H,k,F){try{return{type:"normal",arg:H.call(k,F)}}catch(O){return{type:"throw",arg:O}}}var d="suspendedStart",u="suspendedYield",s="executing",h="completed",c={};function W(){}function M(){}function I(){}var w={};w[p]=function(){return this};var C=Object.getPrototypeOf,x=C&&C(C(U([])));x&&x!==f&&v.call(x,p)&&(w=x);var R=I.prototype=W.prototype=Object.create(w);M.prototype=R.constructor=I,I.constructor=M,M.displayName=m(I,X,"GeneratorFunction");function g(H){["next","throw","return"].forEach(function(k){m(H,k,function(F){return this._invoke(k,F)})})}r.isGeneratorFunction=function(H){var k=typeof H=="function"&&H.constructor;return k?k===M||(k.displayName||k.name)==="GeneratorFunction":!1},r.mark=function(H){return Object.setPrototypeOf?Object.setPrototypeOf(H,I):(H.__proto__=I,m(H,X,"GeneratorFunction")),H.prototype=Object.create(R),H},r.awrap=function(H){return{__await:H}};function S(H,k){function F(oe,se,he,pe){var re=G(H[oe],H,se);if(re.type==="throw")pe(re.arg);else{var _=re.arg,E=_.value;return E&&l(E)==="object"&&v.call(E,"__await")?k.resolve(E.__await).then(function($){F("next",$,he,pe)},function($){F("throw",$,he,pe)}):k.resolve(E).then(function($){_.value=$,he(_)},function($){return F("throw",$,he,pe)})}}var O;function Q(oe,se){function he(){return new k(function(pe,re){F(oe,se,pe,re)})}return O=O?O.then(he,he):he()}this._invoke=Q}g(S.prototype),S.prototype[y]=function(){return this},r.AsyncIterator=S,r.async=function(H,k,F,O,Q){Q===void 0&&(Q=Promise);var oe=new S(N(H,k,F,O),Q);return r.isGeneratorFunction(k)?oe:oe.next().then(function(se){return se.done?se.value:oe.next()})};function L(H,k,F){var O=d;return function(oe,se){if(O===s)throw new Error("Generator is already running");if(O===h){if(oe==="throw")throw se;return K()}for(F.method=oe,F.arg=se;;){var he=F.delegate;if(he){var pe=V(he,F);if(pe){if(pe===c)continue;return pe}}if(F.method==="next")F.sent=F._sent=F.arg;else if(F.method==="throw"){if(O===d)throw O=h,F.arg;F.dispatchException(F.arg)}else F.method==="return"&&F.abrupt("return",F.arg);O=s;var re=G(H,k,F);if(re.type==="normal"){if(O=F.done?h:u,re.arg===c)continue;return{value:re.arg,done:F.done}}else re.type==="throw"&&(O=h,F.method="throw",F.arg=re.arg)}}}function V(H,k){var F=H.iterator[k.method];if(F===b){if(k.delegate=null,k.method==="throw"){if(H.iterator.return&&(k.method="return",k.arg=b,V(H,k),k.method==="throw"))return c;k.method="throw",k.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var O=G(F,H.iterator,k.arg);if(O.type==="throw")return k.method="throw",k.arg=O.arg,k.delegate=null,c;var Q=O.arg;if(!Q)return k.method="throw",k.arg=new TypeError("iterator result is not an object"),k.delegate=null,c;if(Q.done)k[H.resultName]=Q.value,k.next=H.nextLoc,k.method!=="return"&&(k.method="next",k.arg=b);else return Q;return k.delegate=null,c}g(R),m(R,X,"Generator"),R[p]=function(){return this},R.toString=function(){return"[object Generator]"};function Y(H){var k={tryLoc:H[0]};1 in H&&(k.catchLoc=H[1]),2 in H&&(k.finallyLoc=H[2],k.afterLoc=H[3]),this.tryEntries.push(k)}function T(H){var k=H.completion||{};k.type="normal",delete k.arg,H.completion=k}function J(H){this.tryEntries=[{tryLoc:"root"}],H.forEach(Y,this),this.reset(!0)}r.keys=function(H){var k=[];for(var F in H)k.push(F);return k.reverse(),function O(){for(;k.length;){var Q=k.pop();if(Q in H)return O.value=Q,O.done=!1,O}return O.done=!0,O}};function U(H){if(H){var k=H[p];if(k)return k.call(H);if(typeof H.next=="function")return H;if(!isNaN(H.length)){var F=-1,O=function Q(){for(;++F=0;--Q){var oe=this.tryEntries[Q],se=oe.completion;if(oe.tryLoc==="root")return O("end");if(oe.tryLoc<=this.prev){var he=v.call(oe,"catchLoc"),pe=v.call(oe,"finallyLoc");if(he&&pe){if(this.prev=0;--O){var Q=this.tryEntries[O];if(Q.tryLoc<=this.prev&&v.call(Q,"finallyLoc")&&this.prev=0;--F){var O=this.tryEntries[F];if(O.finallyLoc===k)return this.complete(O.completion,O.afterLoc),T(O),c}},catch:function(k){for(var F=this.tryEntries.length-1;F>=0;--F){var O=this.tryEntries[F];if(O.tryLoc===k){var Q=O.completion;if(Q.type==="throw"){var oe=Q.arg;T(O)}return oe}}throw new Error("illegal catch attempt")},delegateYield:function(k,F,O){return this.delegate={iterator:U(k),resultName:F,nextLoc:O},this.method==="next"&&(this.arg=b),c}},r}((typeof i>"u"?"undefined":l(i))==="object"?i.exports:{});try{regeneratorRuntime=o}catch{Function("r","regeneratorRuntime = r")(o)}},{}],493:[function(t,i,a){var l=t("buffer").Buffer,o=t("inherits"),r=t("hash-base"),f=new Array(16),v=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],b=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],Z=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],y=[0,1518500249,1859775393,2400959708,2840853838],X=[1352829926,1548603684,1836072691,2053994217,0];function m(){r.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}o(m,r),m.prototype._update=function(){for(var c=f,W=0;W<16;++W)c[W]=this._block.readInt32LE(W*4);for(var M=this._a|0,I=this._b|0,w=this._c|0,C=this._d|0,x=this._e|0,R=this._a|0,g=this._b|0,S=this._c|0,L=this._d|0,V=this._e|0,Y=0;Y<80;Y+=1){var T,J;Y<16?(T=G(M,I,w,C,x,c[v[Y]],y[0],Z[Y]),J=h(R,g,S,L,V,c[b[Y]],X[0],p[Y])):Y<32?(T=d(M,I,w,C,x,c[v[Y]],y[1],Z[Y]),J=s(R,g,S,L,V,c[b[Y]],X[1],p[Y])):Y<48?(T=u(M,I,w,C,x,c[v[Y]],y[2],Z[Y]),J=u(R,g,S,L,V,c[b[Y]],X[2],p[Y])):Y<64?(T=s(M,I,w,C,x,c[v[Y]],y[3],Z[Y]),J=d(R,g,S,L,V,c[b[Y]],X[3],p[Y])):(T=h(M,I,w,C,x,c[v[Y]],y[4],Z[Y]),J=G(R,g,S,L,V,c[b[Y]],X[4],p[Y])),M=x,x=C,C=N(w,10),w=I,I=T,R=V,V=L,L=N(S,10),S=g,g=J}var U=this._b+w+L|0;this._b=this._c+C+V|0,this._c=this._d+x+R|0,this._d=this._e+M+g|0,this._e=this._a+I+S|0,this._a=U},m.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var c=l.alloc?l.alloc(20):new l(20);return c.writeInt32LE(this._a,0),c.writeInt32LE(this._b,4),c.writeInt32LE(this._c,8),c.writeInt32LE(this._d,12),c.writeInt32LE(this._e,16),c};function N(c,W){return c<>>32-W}function G(c,W,M,I,w,C,x,R){return N(c+(W^M^I)+C+x|0,R)+w|0}function d(c,W,M,I,w,C,x,R){return N(c+(W&M|~W&I)+C+x|0,R)+w|0}function u(c,W,M,I,w,C,x,R){return N(c+((W|~M)^I)+C+x|0,R)+w|0}function s(c,W,M,I,w,C,x,R){return N(c+(W&I|M&~I)+C+x|0,R)+w|0}function h(c,W,M,I,w,C,x,R){return N(c+(W^(M|~I))+C+x|0,R)+w|0}i.exports=m},{buffer:216,"hash-base":370,inherits:387}],494:[function(t,i,a){var l=t("buffer"),o=l.Buffer;function r(v,b){for(var Z in v)b[Z]=v[Z]}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?i.exports=l:(r(l,a),a.Buffer=f);function f(v,b,Z){return o(v,b,Z)}r(o,f),f.from=function(v,b,Z){if(typeof v=="number")throw new TypeError("Argument must not be a number");return o(v,b,Z)},f.alloc=function(v,b,Z){if(typeof v!="number")throw new TypeError("Argument must be a number");var p=o(v);return b!==void 0?typeof Z=="string"?p.fill(b,Z):p.fill(b):p.fill(0),p},f.allocUnsafe=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return o(v)},f.allocUnsafeSlow=function(v){if(typeof v!="number")throw new TypeError("Argument must be a number");return l.SlowBuffer(v)}},{buffer:216}],495:[function(t,i,a){(function(l){function o(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(X){return typeof X}:o=function(X){return X&&typeof Symbol=="function"&&X.constructor===Symbol&&X!==Symbol.prototype?"symbol":typeof X},o(p)}var r=t("buffer"),f=r.Buffer,v={},b;for(b in r)r.hasOwnProperty(b)&&(b==="SlowBuffer"||b==="Buffer"||(v[b]=r[b]));var Z=v.Buffer={};for(b in f)f.hasOwnProperty(b)&&(b==="allocUnsafe"||b==="allocUnsafeSlow"||(Z[b]=f[b]));if(v.Buffer.prototype=f.prototype,(!Z.from||Z.from===Uint8Array.from)&&(Z.from=function(p,y,X){if(typeof p=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+o(p));if(p&&typeof p.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+o(p));return f(p,y,X)}),Z.alloc||(Z.alloc=function(p,y,X){if(typeof p!="number")throw new TypeError('The "size" argument must be of type number. Received type '+o(p));if(p<0||p>=2*(1<<30))throw new RangeError('The value "'+p+'" is invalid for option "size"');var m=f(p);return!y||y.length===0?m.fill(0):typeof X=="string"?m.fill(y,X):m.fill(y),m}),!v.kStringMaxLength)try{v.kStringMaxLength=l.binding("buffer").kStringMaxLength}catch{}v.constants||(v.constants={MAX_LENGTH:v.kMaxLength},v.kStringMaxLength&&(v.constants.MAX_STRING_LENGTH=v.kStringMaxLength)),i.exports=v}).call(this,t("_process"))},{_process:467,buffer:216}],496:[function(t,i,a){function l(Dt,ht){var Fe;if(typeof Symbol>"u"||Dt[Symbol.iterator]==null){if(Array.isArray(Dt)||(Fe=p(Dt))||ht&&Dt&&typeof Dt.length=="number"){Fe&&(Dt=Fe);var tt=0,nt=function(){};return{s:nt,n:function(){return tt>=Dt.length?{done:!0}:{done:!1,value:Dt[tt++]}},e:function(gi){throw gi},f:nt}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Vt=!0,Bt=!1,Nn;return{s:function(){Fe=Dt[Symbol.iterator]()},n:function(){var gi=Fe.next();return Vt=gi.done,gi},e:function(gi){Bt=!0,Nn=gi},f:function(){try{!Vt&&Fe.return!=null&&Fe.return()}finally{if(Bt)throw Nn}}}}function o(Dt){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?o=function(Fe){return typeof Fe}:o=function(Fe){return Fe&&typeof Symbol=="function"&&Fe.constructor===Symbol&&Fe!==Symbol.prototype?"symbol":typeof Fe},o(Dt)}function r(Dt,ht){if(!(Dt instanceof ht))throw new TypeError("Cannot call a class as a function")}function f(Dt,ht){for(var Fe=0;FeDt.length)&&(ht=Dt.length);for(var Fe=0,tt=new Array(ht);Fe",lt:"<",quot:'"',apos:"'"},V=-1,Y=-2,T=0,J=1,U=2,K=3,H=4,k=5,F=6,O=7,Q=8,oe=9,se=10,he=11,pe=12,re=13,_=14,E=15,$=16,ae=17,le=18,ee=19,te=20,be=21,ne=22,B=23,q=24,ue=25,ve=26,Ge=27,Je=28,xe=29,ke=30,Pe=31,Be=32,Te=33,we=34,Se=35,De=36,me=37,Ve=38,Me=39,Ie=40,Ze=41,Ce=42,ye=43,Ue=44,qe=9,ie=10,Oe=13,Ke=32,Xe=33,Re=34,Ae=38,ct=39,lt=45,ot=47,wt=59,Mt=60,xt=61,Gt=62,Zt=63,Tt=91,Ct=93,St=133,Pt=8232,Ut=function(ht){return ht===Re||ht===ct},kt=[Re,ct],en=[].concat(kt,[Tt,Gt]),nn=[].concat(kt,[Mt,Ct]),Ft=[xt,Zt].concat(b(W)),Ln=[].concat(b(W),[Gt,Ae,Mt]);function An(Dt,ht,Fe){switch(ht){case"xml":Fe!==R&&Dt.fail("xml prefix must be bound to ".concat(R,"."));break;case"xmlns":Fe!==g&&Dt.fail("xmlns prefix must be bound to ".concat(g,"."));break}switch(Fe){case g:Dt.fail(ht===""?"the default namespace may not be set to ".concat(Fe,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(g,"."));break;case R:switch(ht){case"xml":break;case"":Dt.fail("the default namespace may not be set to ".concat(Fe,"."));break;default:Dt.fail("may not assign the xml namespace to another prefix.")}break}}function Gi(Dt,ht){for(var Fe=0,tt=Object.keys(ht);Fe0&&(nt+=":"),nt+="".concat(this.line,":").concat(this.column)),nt.length>0&&(nt+=": "),new Error(nt+Fe)}},{key:"fail",value:function(Fe){var tt=this.makeError(Fe),nt=this.errorHandler;if(nt===void 0)throw tt;return nt(tt),this}},{key:"write",value:function(Fe){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var tt=!1;Fe===null?(tt=!0,Fe=""):o(Fe)==="object"&&(Fe=Fe.toString()),this.carriedFromPrevious!==void 0&&(Fe="".concat(this.carriedFromPrevious).concat(Fe),this.carriedFromPrevious=void 0);var nt=Fe.length,Vt=Fe.charCodeAt(nt-1);!tt&&(Vt===Oe||Vt>=55296&&Vt<=56319)&&(this.carriedFromPrevious=Fe[nt-1],nt--,Fe=Fe.slice(0,nt));var Bt=this.stateTable;for(this.chunk=Fe,this.i=0;this.i=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>=Ke||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:return Fe.charCodeAt(tt+1)===ie&&(this.i=tt+2),this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Vt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Vt>1114111&&this.fail("disallowed character."),Vt}},{key:"getCode11",value:function(){var Fe=this.chunk,tt=this.i;if(this.prevI=tt,this.i=tt+1,tt>=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>31&&nt<127||nt>159&&nt!==Pt||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:{var Vt=Fe.charCodeAt(tt+1);(Vt===ie||Vt===St)&&(this.i=tt+2)}case St:case Pt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Bt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Bt>1114111&&this.fail("disallowed character."),Bt}},{key:"getCodeNorm",value:function(){var Fe=this.getCode();return Fe===Y?ie:Fe}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode(),Bt=Vt===Y,Nn=Bt?ie:Vt;if(Nn===V||Fe.includes(Nn))return this.text+=nt.slice(tt,this.prevI),Nn;Bt&&(this.text+="".concat(nt.slice(tt,this.prevI),` +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function p(Dt,ht){if(Dt){if(typeof Dt=="string")return m(Dt,ht);var Fe=Object.prototype.toString.call(Dt).slice(8,-1);if(Fe==="Object"&&Dt.constructor&&(Fe=Dt.constructor.name),Fe==="Map"||Fe==="Set")return Array.from(Dt);if(Fe==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Fe))return m(Dt,ht)}}function y(Dt){if(typeof Symbol<"u"&&Symbol.iterator in Object(Dt))return Array.from(Dt)}function X(Dt){if(Array.isArray(Dt))return m(Dt)}function m(Dt,ht){(ht==null||ht>Dt.length)&&(ht=Dt.length);for(var Fe=0,tt=new Array(ht);Fe",lt:"<",quot:'"',apos:"'"},V=-1,Y=-2,T=0,J=1,U=2,K=3,H=4,k=5,F=6,O=7,Q=8,oe=9,se=10,he=11,pe=12,re=13,_=14,E=15,$=16,ae=17,le=18,ee=19,te=20,be=21,ne=22,B=23,q=24,ue=25,ve=26,Ge=27,Je=28,xe=29,ke=30,Pe=31,Be=32,Te=33,we=34,Se=35,De=36,me=37,Ve=38,Me=39,Ie=40,Ze=41,Ce=42,ye=43,Ue=44,qe=9,ie=10,Oe=13,Ke=32,Xe=33,Re=34,Ae=38,ct=39,lt=45,ot=47,wt=59,Mt=60,xt=61,Gt=62,Zt=63,Tt=91,Ct=93,St=133,Pt=8232,Ut=function(ht){return ht===Re||ht===ct},kt=[Re,ct],en=[].concat(kt,[Tt,Gt]),nn=[].concat(kt,[Mt,Ct]),Ft=[xt,Zt].concat(b(W)),Ln=[].concat(b(W),[Gt,Ae,Mt]);function An(Dt,ht,Fe){switch(ht){case"xml":Fe!==R&&Dt.fail("xml prefix must be bound to ".concat(R,"."));break;case"xmlns":Fe!==g&&Dt.fail("xmlns prefix must be bound to ".concat(g,"."));break}switch(Fe){case g:Dt.fail(ht===""?"the default namespace may not be set to ".concat(Fe,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(g,"."));break;case R:switch(ht){case"xml":break;case"":Dt.fail("the default namespace may not be set to ".concat(Fe,"."));break;default:Dt.fail("may not assign the xml namespace to another prefix.")}break}}function Gi(Dt,ht){for(var Fe=0,tt=Object.keys(ht);Fe0&&(nt+=":"),nt+="".concat(this.line,":").concat(this.column)),nt.length>0&&(nt+=": "),new Error(nt+Fe)}},{key:"fail",value:function(Fe){var tt=this.makeError(Fe),nt=this.errorHandler;if(nt===void 0)throw tt;return nt(tt),this}},{key:"write",value:function(Fe){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var tt=!1;Fe===null?(tt=!0,Fe=""):o(Fe)==="object"&&(Fe=Fe.toString()),this.carriedFromPrevious!==void 0&&(Fe="".concat(this.carriedFromPrevious).concat(Fe),this.carriedFromPrevious=void 0);var nt=Fe.length,Vt=Fe.charCodeAt(nt-1);!tt&&(Vt===Oe||Vt>=55296&&Vt<=56319)&&(this.carriedFromPrevious=Fe[nt-1],nt--,Fe=Fe.slice(0,nt));var Bt=this.stateTable;for(this.chunk=Fe,this.i=0;this.i=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>=Ke||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:return Fe.charCodeAt(tt+1)===ie&&(this.i=tt+2),this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Vt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Vt>1114111&&this.fail("disallowed character."),Vt}},{key:"getCode11",value:function(){var Fe=this.chunk,tt=this.i;if(this.prevI=tt,this.i=tt+1,tt>=Fe.length)return V;var nt=Fe.charCodeAt(tt);if(this.column++,nt<55296){if(nt>31&&nt<127||nt>159&&nt!==Pt||nt===qe)return nt;switch(nt){case ie:return this.line++,this.column=0,this.positionAtNewLine=this.position,ie;case Oe:{var Vt=Fe.charCodeAt(tt+1);(Vt===ie||Vt===St)&&(this.i=tt+2)}case St:case Pt:return this.line++,this.column=0,this.positionAtNewLine=this.position,Y;default:return this.fail("disallowed character."),nt}}if(nt>56319)return nt>=57344&&nt<=65533||this.fail("disallowed character."),nt;var Bt=65536+(nt-55296)*1024+(Fe.charCodeAt(tt+1)-56320);return this.i=tt+2,Bt>1114111&&this.fail("disallowed character."),Bt}},{key:"getCodeNorm",value:function(){var Fe=this.getCode();return Fe===Y?ie:Fe}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode(),Bt=Vt===Y,Nn=Bt?ie:Vt;if(Nn===V||Fe.includes(Nn))return this.text+=nt.slice(tt,this.prevI),Nn;Bt&&(this.text+="".concat(nt.slice(tt,this.prevI),` `),tt=this.i)}}},{key:"captureToChar",value:function(Fe){for(var tt=this.i,nt=this.chunk;;){var Vt=this.getCode();switch(Vt){case Y:this.text+="".concat(nt.slice(tt,this.prevI),` `),tt=this.i,Vt=ie;break;case V:return this.text+=nt.slice(tt),!1}if(Vt===Fe)return this.text+=nt.slice(tt,this.prevI),!0}}},{key:"captureNameChars",value:function(){for(var Fe=this.chunk,tt=this.i;;){var nt=this.getCode();if(nt===V)return this.name+=Fe.slice(tt),V;if(!c(nt))return this.name+=Fe.slice(tt,this.prevI),nt===Y?ie:nt}}},{key:"skipSpaces",value:function(){for(;;){var Fe=this.getCodeNorm();if(Fe===V||!u(Fe))return Fe}}},{key:"setXMLVersion",value:function(Fe){this.currentXMLVersion=Fe,Fe==="1.0"?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=I,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=J}},{key:"sBeginWhitespace",value:function(){var Fe=this.i,tt=this.skipSpaces();switch(this.prevI!==Fe&&(this.xmlDeclPossible=!1),tt){case Mt:if(this.state=E,this.text.length!==0)throw new Error("no-empty text at start");break;case V:break;default:this.unget(),this.state=re,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var Fe,tt=this.captureTo(en);switch(tt){case Gt:{(Fe=this.doctypeHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text="",this.state=re,this.doctype=!0;break}case V:break;default:this.text+=String.fromCodePoint(tt),tt===Tt?this.state=H:Ut(tt)&&(this.state=K,this.q=tt)}}},{key:"sDoctypeQuote",value:function(){var Fe=this.q;this.captureToChar(Fe)&&(this.text+=String.fromCodePoint(Fe),this.q=null,this.state=U)}},{key:"sDTD",value:function(){var Fe=this.captureTo(nn);Fe!==V&&(this.text+=String.fromCodePoint(Fe),Fe===Ct?this.state=U:Fe===Mt?this.state=F:Ut(Fe)&&(this.state=k,this.q=Fe))}},{key:"sDTDQuoted",value:function(){var Fe=this.q;this.captureToChar(Fe)&&(this.text+=String.fromCodePoint(Fe),this.state=H,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var Fe=this.getCodeNorm();switch(this.text+=String.fromCodePoint(Fe),Fe){case Xe:this.state=O,this.openWakaBang="";break;case Zt:this.state=he;break;default:this.state=H}}},{key:"sDTDOpenWakaBang",value:function(){var Fe=String.fromCodePoint(this.getCodeNorm()),tt=this.openWakaBang+=Fe;this.text+=Fe,tt!=="-"&&(this.state=tt==="--"?Q:H,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(lt)&&(this.text+="-",this.state=oe)}},{key:"sDTDCommentEnding",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),this.state=Fe===lt?se:Q}},{key:"sDTDCommentEnded",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),Fe===Gt?this.state=H:(this.fail("malformed comment."),this.state=Q)}},{key:"sDTDPI",value:function(){this.captureToChar(Zt)&&(this.text+="?",this.state=pe)}},{key:"sDTDPIEnding",value:function(){var Fe=this.getCodeNorm();this.text+=String.fromCodePoint(Fe),Fe===Gt&&(this.state=H)}},{key:"sText",value:function(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var Fe=this.i,tt=this.chunk;e:for(;;)switch(this.getCode()){case Y:this.entity+="".concat(tt.slice(Fe,this.prevI),` `),Fe=this.i;break;case wt:{var nt=this.entityReturnState,Vt=this.entity+tt.slice(Fe,this.prevI);this.state=nt;var Bt=void 0;Vt===""?(this.fail("empty entity name."),Bt="&;"):(Bt=this.parseEntity(Vt),this.entity=""),(nt!==re||this.textHandler!==void 0)&&(this.text+=Bt);break e}case V:this.entity+=tt.slice(Fe);break e}}},{key:"sOpenWaka",value:function(){var Fe=this.getCode();if(h(Fe))this.state=we,this.unget(),this.xmlDeclPossible=!1;else switch(Fe){case ot:this.state=ye,this.xmlDeclPossible=!1;break;case Xe:this.state=$,this.openWakaBang="",this.xmlDeclPossible=!1;break;case Zt:this.state=B;break;default:this.fail("disallowed character in tag name"),this.state=re,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=te,this.openWakaBang="";break;case"--":this.state=ae,this.openWakaBang="";break;case"DOCTYPE":this.state=U,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(lt)&&(this.state=le)}},{key:"sCommentEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===lt?(this.state=ee,(Fe=this.commentHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(tt)),this.state=ae)}},{key:"sCommentEnded",value:function(){var Fe=this.getCodeNorm();Fe!==Gt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(Fe)),this.state=ae):this.state=re}},{key:"sCData",value:function(){this.captureToChar(Ct)&&(this.state=be)}},{key:"sCDataEnding",value:function(){var Fe=this.getCodeNorm();Fe===Ct?this.state=ne:(this.text+="]".concat(String.fromCodePoint(Fe)),this.state=te)}},{key:"sCDataEnding2",value:function(){var Fe,tt=this.getCodeNorm();switch(tt){case Gt:{(Fe=this.cdataHandler)===null||Fe===void 0||Fe.call(this,this.text),this.text="",this.state=re;break}case Ct:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(tt)),this.state=te}}},{key:"sPIFirstChar",value:function(){var Fe=this.getCodeNorm();this.nameStartCheck(Fe)?(this.piTarget+=String.fromCodePoint(Fe),this.state=q):Fe===Zt||u(Fe)?(this.fail("processing instruction without a target."),this.state=Fe===Zt?ve:ue):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Fe),this.state=q)}},{key:"sPIRest",value:function(){for(var Fe=this.chunk,tt=this.i;;){var nt=this.getCodeNorm();if(nt===V){this.piTarget+=Fe.slice(tt);return}if(!this.nameCheck(nt)){this.piTarget+=Fe.slice(tt,this.prevI);var Vt=nt===Zt;Vt||u(nt)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=Vt?Te:Ge):this.state=Vt?ve:ue:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(nt));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var Fe=this.getCodeNorm();Fe===Zt?this.state=ve:u(Fe)||(this.text=String.fromCodePoint(Fe))}else this.captureToChar(Zt)&&(this.state=ve)}},{key:"sPIEnding",value:function(){var Fe,tt=this.getCodeNorm();if(tt===Gt){var nt=this.piTarget;nt.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(Fe=this.piHandler)===null||Fe===void 0||Fe.call(this,{target:nt,body:this.text}),this.piTarget=this.text="",this.state=re}else tt===Zt?this.text+="?":(this.text+="?".concat(String.fromCodePoint(tt)),this.state=ue);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var Fe=this.skipSpaces();if(Fe===Zt){this.state=Te;return}Fe!==V&&(this.state=Je,this.name=String.fromCodePoint(Fe))}},{key:"sXMLDeclName",value:function(){var Fe=this.captureTo(Ft);if(Fe===Zt){this.state=Te,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(u(Fe)||Fe===xt){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=Fe===xt?ke:xe}}},{key:"sXMLDeclEq",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Fe!==xt&&this.fail("value required."),this.state=ke)}},{key:"sXMLDeclValueStart",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te,this.fail("XML declaration is incomplete.");return}u(Fe)||(Ut(Fe)?this.q=Fe:(this.fail("value must be quoted."),this.q=Ke),this.state=Pe)}},{key:"sXMLDeclValue",value:function(){var Fe=this.captureTo([this.q,Zt]);if(Fe===Zt){this.state=Te,this.text="",this.fail("XML declaration is incomplete.");return}if(Fe!==V){var tt=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var nt=tt;this.xmlDecl.version=nt,/^1\.[0-9]+$/.test(nt)?this.opt.forceXMLVersion||this.setXMLVersion(nt):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(tt)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=tt;break;case"standalone":tt!=="yes"&&tt!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=tt;break}this.name="",this.state=Be}}},{key:"sXMLDeclSeparator",value:function(){var Fe=this.getCodeNorm();if(Fe===Zt){this.state=Te;return}u(Fe)||(this.fail("whitespace required."),this.unget()),this.state=Ge}},{key:"sXMLDeclEnding",value:function(){var Fe,tt=this.getCodeNorm();tt===Gt?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(Fe=this.xmldeclHandler)===null||Fe===void 0||Fe.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=re):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var Fe,tt=this.captureNameChars();if(tt!==V){var nt=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=nt.ns=Object.create(null)),(Fe=this.openTagStartHandler)===null||Fe===void 0||Fe.call(this,nt),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),tt){case Gt:this.openTag();break;case ot:this.state=Se;break;default:u(tt)||this.fail("disallowed character in tag name."),this.state=De}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===Gt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=De)}},{key:"sAttrib",value:function(){var Fe=this.skipSpaces();Fe!==V&&(h(Fe)?(this.unget(),this.state=me):Fe===Gt?this.openTag():Fe===ot?this.state=Se:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var Fe=this.captureNameChars();Fe===xt?this.state=Me:u(Fe)?this.state=Ve:Fe===Gt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):Fe!==V&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var Fe=this.skipSpaces();switch(Fe){case V:return;case xt:this.state=Me;break;default:this.fail("attribute without value."),this.text="",this.name="",Fe===Gt?this.openTag():h(Fe)?(this.unget(),this.state=me):(this.fail("disallowed character in attribute name."),this.state=De)}}},{key:"sAttribValue",value:function(){var Fe=this.getCodeNorm();Ut(Fe)?(this.q=Fe,this.state=Ie):u(Fe)||(this.fail("unquoted attribute value."),this.state=Ce,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var Fe=this.q,tt=this.chunk,nt=this.i;;)switch(this.getCode()){case Fe:this.pushAttrib(this.name,this.text+tt.slice(nt,this.prevI)),this.name=this.text="",this.q=null,this.state=Ze;return;case Ae:this.text+=tt.slice(nt,this.prevI),this.state=_,this.entityReturnState=Ie;return;case ie:case Y:case qe:this.text+="".concat(tt.slice(nt,this.prevI)," "),nt=this.i;break;case Mt:this.text+=tt.slice(nt,this.prevI),this.fail("disallowed character.");return;case V:this.text+=tt.slice(nt);return}}},{key:"sAttribValueClosed",value:function(){var Fe=this.getCodeNorm();u(Fe)?this.state=De:Fe===Gt?this.openTag():Fe===ot?this.state=Se:h(Fe)?(this.fail("no whitespace between attributes."),this.unget(),this.state=me):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var Fe=this.captureTo(Ln);switch(Fe){case Ae:this.state=_,this.entityReturnState=Ce;break;case Mt:this.fail("disallowed character.");break;case V:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",Fe===Gt?this.openTag():this.state=De}}},{key:"sCloseTag",value:function(){var Fe=this.captureNameChars();Fe===Gt?this.closeTag():u(Fe)?this.state=Ue:Fe!==V&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case Gt:this.closeTag();break;case V:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var Fe=this.i,tt=this.forbiddenState,nt=this.chunk,Vt=this.textHandler;e:for(;;)switch(this.getCode()){case Mt:{if(this.state=E,Vt!==void 0){var Bt=this.text,Nn=nt.slice(Fe,this.prevI);Bt.length!==0?(Vt(Bt+Nn),this.text=""):Nn.length!==0&&Vt(Nn)}tt=Fn;break e}case Ae:this.state=_,this.entityReturnState=re,Vt!==void 0&&(this.text+=nt.slice(Fe,this.prevI)),tt=Fn;break e;case Ct:switch(tt){case Fn:tt=cl;break;case cl:tt=ki;break;case ki:break;default:throw new Error("impossible state")}break;case Gt:tt===ki&&this.fail('the string "]]>" is disallowed in char data.'),tt=Fn;break;case Y:Vt!==void 0&&(this.text+="".concat(nt.slice(Fe,this.prevI),` `)),Fe=this.i,tt=Fn;break;case V:Vt!==void 0&&(this.text+=nt.slice(Fe));break e;default:tt=Fn}this.forbiddenState=tt}},{key:"handleTextOutsideRoot",value:function(){var Fe=this.i,tt=this.chunk,nt=this.textHandler,Vt=!1;e:for(;;){var Bt=this.getCode();switch(Bt){case Mt:{if(this.state=E,nt!==void 0){var Nn=this.text,oi=tt.slice(Fe,this.prevI);Nn.length!==0?(nt(Nn+oi),this.text=""):oi.length!==0&&nt(oi)}break e}case Ae:this.state=_,this.entityReturnState=re,nt!==void 0&&(this.text+=tt.slice(Fe,this.prevI)),Vt=!0;break e;case Y:nt!==void 0&&(this.text+="".concat(tt.slice(Fe,this.prevI),` -`)),Fe=this.i;break;case V:nt!==void 0&&(this.text+=tt.slice(Fe));break e;default:u(Bt)||(Vt=!0)}}Vt&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}},{key:"pushAttribNS",value:function(Fe,tt){var nt,Vt=this.qname(Fe),Bt=Vt.prefix,Nn=Vt.local,oi={name:Fe,prefix:Bt,local:Nn,value:tt};if(this.attribList.push(oi),(nt=this.attributeHandler)===null||nt===void 0||nt.call(this,oi),Bt==="xmlns"){var gi=tt.trim();this.currentXMLVersion==="1.0"&&gi===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[Nn]=gi,An(this,Nn,gi)}else if(Fe==="xmlns"){var Ll=tt.trim();this.topNS[""]=Ll,An(this,"",Ll)}}},{key:"pushAttribPlain",value:function(Fe,tt){var nt,Vt={name:Fe,value:tt};this.attribList.push(Vt),(nt=this.attributeHandler)===null||nt===void 0||nt.call(this,Vt)}},{key:"end",value:function(){var Fe,tt;this.sawRoot||this.fail("document must contain a root element.");for(var nt=this.tags;nt.length>0;){var Vt=nt.pop();this.fail("unclosed tag: ".concat(Vt.name))}this.state!==T&&this.state!==re&&this.fail("unexpected end.");var Bt=this.text;return Bt.length!==0&&((Fe=this.textHandler)===null||Fe===void 0||Fe.call(this,Bt),this.text=""),this._closed=!0,(tt=this.endHandler)===null||tt===void 0||tt.call(this),this._init(),this}},{key:"resolve",value:function(Fe){var tt,nt,Vt=this.topNS[Fe];if(Vt!==void 0)return Vt;for(var Bt=this.tags,Nn=Bt.length-1;Nn>=0;Nn--)if(Vt=Bt[Nn].ns[Fe],Vt!==void 0)return Vt;return Vt=this.ns[Fe],Vt!==void 0?Vt:(nt=(tt=this.opt).resolvePrefix)===null||nt===void 0?void 0:nt.call(tt,Fe)}},{key:"qname",value:function(Fe){var tt=Fe.indexOf(":");if(tt===-1)return{prefix:"",local:Fe};var nt=Fe.slice(tt+1),Vt=Fe.slice(0,tt);return(Vt===""||nt===""||nt.includes(":"))&&this.fail("malformed name: ".concat(Fe,".")),{prefix:Vt,local:nt}}},{key:"processAttribsNS",value:function(){var Fe,tt=this.attribList,nt=this.tag;{var Vt=this.qname(nt.name),Bt=Vt.prefix,Nn=Vt.local;nt.prefix=Bt,nt.local=Nn;var oi=nt.uri=(Fe=this.resolve(Bt))!==null&&Fe!==void 0?Fe:"";Bt!==""&&(Bt==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),oi===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Bt),".")),nt.uri=Bt))}if(tt.length!==0){var gi=nt.attributes,Ll=new Set,il=a(tt),Lr;try{for(il.s();!(Lr=il.n()).done;){var ul=Lr.value,Ol=ul.name,jl=ul.prefix,_t=ul.local,Rt=void 0,zt=void 0;jl===""?(Rt=Ol==="xmlns"?g:"",zt=Ol):(Rt=this.resolve(jl),Rt===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(jl),".")),Rt=jl),zt="{".concat(Rt,"}").concat(_t)),Ll.has(zt)&&this.fail("duplicate attribute: ".concat(zt,".")),Ll.add(zt),ul.uri=Rt,gi[Ol]=ul}}catch(Ht){il.e(Ht)}finally{il.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var Fe=this.attribList,tt=this.tag.attributes,nt=a(Fe),Vt;try{for(nt.s();!(Vt=nt.n()).done;){var Bt=Vt.value,Nn=Bt.name,oi=Bt.value;tt[Nn]!==void 0&&this.fail("duplicate attribute: ".concat(Nn,".")),tt[Nn]=oi}}catch(gi){nt.e(gi)}finally{nt.f()}this.attribList=[]}},{key:"openTag",value:function(){var Fe;this.processAttribs();var tt=this.tags,nt=this.tag;nt.isSelfClosing=!1,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,nt),tt.push(nt),this.state=re,this.name=""}},{key:"openSelfClosingTag",value:function(){var Fe,tt,nt;this.processAttribs();var Vt=this.tags,Bt=this.tag;Bt.isSelfClosing=!0,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,Bt),(tt=this.closeTagHandler)===null||tt===void 0||tt.call(this,Bt);var Nn=this.tag=(nt=Vt[Vt.length-1])!==null&&nt!==void 0?nt:null;Nn===null&&(this.closedRoot=!0),this.state=re,this.name=""}},{key:"closeTag",value:function(){var Fe=this.tags,tt=this.name;if(this.state=re,this.name="",tt===""){this.fail("weird empty close tag."),this.text+="";return}for(var nt=this.closeTagHandler,Vt=Fe.length;Vt-- >0;){var Bt=this.tag=Fe.pop();if(this.topNS=Bt.ns,nt==null||nt(Bt),Bt.name===tt)break;this.fail("unexpected close tag.")}Vt===0?this.closedRoot=!0:Vt<0&&(this.fail("unmatched closing tag: ".concat(tt,".")),this.text+=""))}},{key:"parseEntity",value:function(Fe){if(Fe[0]!=="#"){var tt=this.ENTITIES[Fe];return tt!==void 0?tt:(this.fail(this.isName(Fe)?"undefined entity.":"disallowed character in entity name."),"&".concat(Fe,";"))}var nt=NaN;return Fe[1]==="x"&&/^#x[0-9a-f]+$/i.test(Fe)?nt=parseInt(Fe.slice(2),16):/^#[0-9]+$/.test(Fe)&&(nt=parseInt(Fe.slice(1),10)),this.isChar(nt)?String.fromCodePoint(nt):(this.fail("malformed character entity."),"&".concat(Fe,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),Dt}();l.SaxesParser=nl},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(t,i,l){(function(a){i.exports=typeof a=="function"?a:function(){var r=[].slice.apply(arguments);r.splice(1,0,0),setTimeout.apply(null,r)}}).call(this,t("timers").setImmediate)},{timers:521}],498:[function(t,i,l){var a=t("safe-buffer").Buffer;function o(r,f){this._block=a.alloc(r),this._finalSize=f,this._blockSize=r,this._len=0}o.prototype.update=function(r,f){typeof r=="string"&&(f=f||"utf8",r=a.from(r,f));for(var v=this._block,b=this._blockSize,Z=r.length,p=this._len,y=0;y=this._finalSize&&(this._update(this._block),this._block.fill(0));var v=this._len*8;if(v<=4294967295)this._block.writeUInt32BE(v,this._blockSize-4);else{var b=(v&4294967295)>>>0,Z=(v-b)/4294967296;this._block.writeUInt32BE(Z,this._blockSize-8),this._block.writeUInt32BE(b,this._blockSize-4)}this._update(this._block);var p=this._hash();return r?p.toString(r):p},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},i.exports=o},{"safe-buffer":494}],499:[function(t,i,l){var a=i.exports=function(r){r=r.toLowerCase();var f=a[r];if(!f)throw new Error(r+" is not supported (we accept pull requests)");return new f};a.sha=t("./sha"),a.sha1=t("./sha1"),a.sha224=t("./sha224"),a.sha256=t("./sha256"),a.sha384=t("./sha384"),a.sha512=t("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(t,i,l){var a=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}a(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(X){return X<<5|X>>>27}function p(X){return X<<30|X>>>2}function y(X,m,N,G){return X===0?m&N|~m&G:X===2?m&N|m&G|N&G:m^N^G}b.prototype._update=function(X){for(var m=this._w,N=this._a|0,G=this._b|0,d=this._c|0,u=this._d|0,s=this._e|0,h=0;h<16;++h)m[h]=X.readInt32BE(h*4);for(;h<80;++h)m[h]=m[h-3]^m[h-8]^m[h-14]^m[h-16];for(var c=0;c<80;++c){var W=~~(c/20),M=Z(N)+y(W,G,d,u)+s+m[c]+f[W]|0;s=u,u=d,d=p(G),G=N,N=M}this._a=N+this._a|0,this._b=G+this._b|0,this._c=d+this._c|0,this._d=u+this._d|0,this._e=s+this._e|0},b.prototype._hash=function(){var X=r.allocUnsafe(20);return X.writeInt32BE(this._a|0,0),X.writeInt32BE(this._b|0,4),X.writeInt32BE(this._c|0,8),X.writeInt32BE(this._d|0,12),X.writeInt32BE(this._e|0,16),X},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(t,i,l){var a=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}a(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(m){return m<<1|m>>>31}function p(m){return m<<5|m>>>27}function y(m){return m<<30|m>>>2}function X(m,N,G,d){return m===0?N&G|~N&d:m===2?N&G|N&d|G&d:N^G^d}b.prototype._update=function(m){for(var N=this._w,G=this._a|0,d=this._b|0,u=this._c|0,s=this._d|0,h=this._e|0,c=0;c<16;++c)N[c]=m.readInt32BE(c*4);for(;c<80;++c)N[c]=Z(N[c-3]^N[c-8]^N[c-14]^N[c-16]);for(var W=0;W<80;++W){var M=~~(W/20),I=p(G)+X(M,d,u,s)+h+N[W]+f[M]|0;h=s,s=u,u=y(d),d=G,G=I}this._a=G+this._a|0,this._b=d+this._b|0,this._c=u+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},b.prototype._hash=function(){var m=r.allocUnsafe(20);return m.writeInt32BE(this._a|0,0),m.writeInt32BE(this._b|0,4),m.writeInt32BE(this._c|0,8),m.writeInt32BE(this._d|0,12),m.writeInt32BE(this._e|0,16),m},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(t,i,l){var a=t("inherits"),o=t("./sha256"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(64);function b(){this.init(),this._w=v,r.call(this,64,56)}a(b,o),b.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(28);return Z.writeInt32BE(this._a,0),Z.writeInt32BE(this._b,4),Z.writeInt32BE(this._c,8),Z.writeInt32BE(this._d,12),Z.writeInt32BE(this._e,16),Z.writeInt32BE(this._f,20),Z.writeInt32BE(this._g,24),Z},i.exports=b},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(t,i,l){var a=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],v=new Array(64);function b(){this.init(),this._w=v,o.call(this,64,56)}a(b,o),b.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function Z(G,d,u){return u^G&(d^u)}function p(G,d,u){return G&d|u&(G|d)}function y(G){return(G>>>2|G<<30)^(G>>>13|G<<19)^(G>>>22|G<<10)}function X(G){return(G>>>6|G<<26)^(G>>>11|G<<21)^(G>>>25|G<<7)}function m(G){return(G>>>7|G<<25)^(G>>>18|G<<14)^G>>>3}function N(G){return(G>>>17|G<<15)^(G>>>19|G<<13)^G>>>10}b.prototype._update=function(G){for(var d=this._w,u=this._a|0,s=this._b|0,h=this._c|0,c=this._d|0,W=this._e|0,M=this._f|0,I=this._g|0,w=this._h|0,C=0;C<16;++C)d[C]=G.readInt32BE(C*4);for(;C<64;++C)d[C]=N(d[C-2])+d[C-7]+m(d[C-15])+d[C-16]|0;for(var x=0;x<64;++x){var R=w+X(W)+Z(W,M,I)+f[x]+d[x]|0,g=y(u)+p(u,s,h)|0;w=I,I=M,M=W,W=c+R|0,c=h,h=s,s=u,u=R+g|0}this._a=u+this._a|0,this._b=s+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=W+this._e|0,this._f=M+this._f|0,this._g=I+this._g|0,this._h=w+this._h|0},b.prototype._hash=function(){var G=r.allocUnsafe(32);return G.writeInt32BE(this._a,0),G.writeInt32BE(this._b,4),G.writeInt32BE(this._c,8),G.writeInt32BE(this._d,12),G.writeInt32BE(this._e,16),G.writeInt32BE(this._f,20),G.writeInt32BE(this._g,24),G.writeInt32BE(this._h,28),G},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(t,i,l){var a=t("inherits"),o=t("./sha512"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(160);function b(){this.init(),this._w=v,r.call(this,128,112)}a(b,o),b.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(48);function p(y,X,m){Z.writeInt32BE(y,m),Z.writeInt32BE(X,m+4)}return p(this._ah,this._al,0),p(this._bh,this._bl,8),p(this._ch,this._cl,16),p(this._dh,this._dl,24),p(this._eh,this._el,32),p(this._fh,this._fl,40),Z},i.exports=b},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(t,i,l){var a=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);function b(){this.init(),this._w=v,o.call(this,128,112)}a(b,o),b.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Z(s,h,c){return c^s&(h^c)}function p(s,h,c){return s&h|c&(s|h)}function y(s,h){return(s>>>28|h<<4)^(h>>>2|s<<30)^(h>>>7|s<<25)}function X(s,h){return(s>>>14|h<<18)^(s>>>18|h<<14)^(h>>>9|s<<23)}function m(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^s>>>7}function N(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^(s>>>7|h<<25)}function G(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^s>>>6}function d(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^(s>>>6|h<<26)}function u(s,h){return s>>>0>>0?1:0}b.prototype._update=function(s){for(var h=this._w,c=this._ah|0,W=this._bh|0,M=this._ch|0,I=this._dh|0,w=this._eh|0,C=this._fh|0,x=this._gh|0,R=this._hh|0,g=this._al|0,S=this._bl|0,L=this._cl|0,V=this._dl|0,Y=this._el|0,T=this._fl|0,J=this._gl|0,U=this._hl|0,K=0;K<32;K+=2)h[K]=s.readInt32BE(K*4),h[K+1]=s.readInt32BE(K*4+4);for(;K<160;K+=2){var H=h[K-30],k=h[K-15*2+1],F=m(H,k),O=N(k,H);H=h[K-2*2],k=h[K-2*2+1];var Q=G(H,k),oe=d(k,H),se=h[K-7*2],he=h[K-7*2+1],pe=h[K-16*2],re=h[K-16*2+1],_=O+he|0,E=F+se+u(_,O)|0;_=_+oe|0,E=E+Q+u(_,oe)|0,_=_+re|0,E=E+pe+u(_,re)|0,h[K]=E,h[K+1]=_}for(var $=0;$<160;$+=2){E=h[$],_=h[$+1];var ae=p(c,W,M),le=p(g,S,L),ee=y(c,g),te=y(g,c),be=X(w,Y),ne=X(Y,w),B=f[$],q=f[$+1],ue=Z(w,C,x),ve=Z(Y,T,J),Ge=U+ne|0,Je=R+be+u(Ge,U)|0;Ge=Ge+ve|0,Je=Je+ue+u(Ge,ve)|0,Ge=Ge+q|0,Je=Je+B+u(Ge,q)|0,Ge=Ge+_|0,Je=Je+E+u(Ge,_)|0;var xe=te+le|0,ke=ee+ae+u(xe,te)|0;R=x,U=J,x=C,J=T,C=w,T=Y,Y=V+Ge|0,w=I+Je+u(Y,V)|0,I=M,V=L,M=W,L=S,W=c,S=g,g=Ge+xe|0,c=Je+ke+u(g,Ge)|0}this._al=this._al+g|0,this._bl=this._bl+S|0,this._cl=this._cl+L|0,this._dl=this._dl+V|0,this._el=this._el+Y|0,this._fl=this._fl+T|0,this._gl=this._gl+J|0,this._hl=this._hl+U|0,this._ah=this._ah+c+u(this._al,g)|0,this._bh=this._bh+W+u(this._bl,S)|0,this._ch=this._ch+M+u(this._cl,L)|0,this._dh=this._dh+I+u(this._dl,V)|0,this._eh=this._eh+w+u(this._el,Y)|0,this._fh=this._fh+C+u(this._fl,T)|0,this._gh=this._gh+x+u(this._gl,J)|0,this._hh=this._hh+R+u(this._hl,U)|0},b.prototype._hash=function(){var s=r.allocUnsafe(64);function h(c,W,M){s.writeInt32BE(c,M),s.writeInt32BE(W,M+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),h(this._gh,this._gl,48),h(this._hh,this._hl,56),s},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(t,i,l){i.exports=r;var a=t("events").EventEmitter,o=t("inherits");o(r,a),r.Readable=t("readable-stream/readable.js"),r.Writable=t("readable-stream/writable.js"),r.Duplex=t("readable-stream/duplex.js"),r.Transform=t("readable-stream/transform.js"),r.PassThrough=t("readable-stream/passthrough.js"),r.Stream=r;function r(){a.call(this)}r.prototype.pipe=function(f,v){var b=this;function Z(d){f.writable&&f.write(d)===!1&&b.pause&&b.pause()}b.on("data",Z);function p(){b.readable&&b.resume&&b.resume()}f.on("drain",p),!f._isStdio&&(!v||v.end!==!1)&&(b.on("end",X),b.on("close",m));var y=!1;function X(){y||(y=!0,f.end())}function m(){y||(y=!0,typeof f.destroy=="function"&&f.destroy())}function N(d){if(G(),a.listenerCount(this,"error")===0)throw d}b.on("error",N),f.on("error",N);function G(){b.removeListener("data",Z),f.removeListener("drain",p),b.removeListener("end",X),b.removeListener("close",m),b.removeListener("error",N),f.removeListener("error",N),b.removeListener("end",G),b.removeListener("close",G),f.removeListener("close",G)}return b.on("end",G),b.on("close",G),f.on("close",G),f.emit("pipe",b),f}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(t,i,l){i.exports=t("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(t,i,l){var a=t("process-nextick-args"),o=Object.keys||function(N){var G=[];for(var d in N)G.push(d);return G};i.exports=y;var r=Object.create(t("core-util-is"));r.inherits=t("inherits");var f=t("./_stream_readable"),v=t("./_stream_writable");r.inherits(y,f);for(var b=o(v.prototype),Z=0;Z0?(typeof $!="string"&&!te.objectMode&&Object.getPrototypeOf($)!==p.prototype&&($=X($)),le?te.endEmitted?E.emit("error",new Error("stream.unshift() after end event")):C(E,te,$,!0):te.ended?E.emit("error",new Error("stream.push() after EOF")):(te.reading=!1,te.decoder&&!ae?($=te.decoder.write($),te.objectMode||$.length!==0?C(E,te,$,!1):J(E,te)):C(E,te,$,!1))):le||(te.reading=!1)}return R(te)}function C(E,$,ae,le){$.flowing&&$.length===0&&!$.sync?(E.emit("data",ae),E.read(0)):($.length+=$.objectMode?1:ae.length,le?$.buffer.unshift(ae):$.buffer.push(ae),$.needReadable&&Y(E)),J(E,$)}function x(E,$){var ae;return!m($)&&typeof $!="string"&&$!==void 0&&!E.objectMode&&(ae=new TypeError("Invalid non-string/buffer chunk")),ae}function R(E){return!E.ended&&(E.needReadable||E.length=g?E=g:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function L(E,$){return E<=0||$.length===0&&$.ended?0:$.objectMode?1:E!==E?$.flowing&&$.length?$.buffer.head.data.length:$.length:(E>$.highWaterMark&&($.highWaterMark=S(E)),E<=$.length?E:$.ended?$.length:($.needReadable=!0,0))}I.prototype.read=function(E){d("read",E),E=parseInt(E,10);var $=this._readableState,ae=E;if(E!==0&&($.emittedReadable=!1),E===0&&$.needReadable&&($.length>=$.highWaterMark||$.ended))return d("read: emitReadable",$.length,$.ended),$.length===0&&$.ended?pe(this):Y(this),null;if(E=L(E,$),E===0&&$.ended)return $.length===0&&pe(this),null;var le=$.needReadable;d("need readable",le),($.length===0||$.length-E<$.highWaterMark)&&(le=!0,d("length less than watermark",le)),$.ended||$.reading?(le=!1,d("reading or ended",le)):le&&(d("do read"),$.reading=!0,$.sync=!0,$.length===0&&($.needReadable=!0),this._read($.highWaterMark),$.sync=!1,$.reading||(E=L(ae,$)));var ee;return E>0?ee=Q(E,$):ee=null,ee===null?($.needReadable=!0,E=0):$.length-=E,$.length===0&&($.ended||($.needReadable=!0),ae!==E&&$.ended&&pe(this)),ee!==null&&this.emit("data",ee),ee};function V(E,$){if(!$.ended){if($.decoder){var ae=$.decoder.end();ae&&ae.length&&($.buffer.push(ae),$.length+=$.objectMode?1:ae.length)}$.ended=!0,Y(E)}}function Y(E){var $=E._readableState;$.needReadable=!1,$.emittedReadable||(d("emitReadable",$.flowing),$.emittedReadable=!0,$.sync?r.nextTick(T,E):T(E))}function T(E){d("emit readable"),E.emit("readable"),O(E)}function J(E,$){$.readingMore||($.readingMore=!0,r.nextTick(U,E,$))}function U(E,$){for(var ae=$.length;!$.reading&&!$.flowing&&!$.ended&&$.length<$.highWaterMark&&(d("maybeReadMore read 0"),E.read(0),ae!==$.length);)ae=$.length;$.readingMore=!1}I.prototype._read=function(E){this.emit("error",new Error("_read() is not implemented"))},I.prototype.pipe=function(E,$){var ae=this,le=this._readableState;switch(le.pipesCount){case 0:le.pipes=E;break;case 1:le.pipes=[le.pipes,E];break;default:le.pipes.push(E);break}le.pipesCount+=1,d("pipe count=%d opts=%j",le.pipesCount,$);var ee=(!$||$.end!==!1)&&E!==a.stdout&&E!==a.stderr,te=ee?ne:Pe;le.endEmitted?r.nextTick(te):ae.once("end",te),E.on("unpipe",be);function be(Be,Te){d("onunpipe"),Be===ae&&Te&&Te.hasUnpiped===!1&&(Te.hasUnpiped=!0,ue())}function ne(){d("onend"),E.end()}var B=K(ae);E.on("drain",B);var q=!1;function ue(){d("cleanup"),E.removeListener("close",xe),E.removeListener("finish",ke),E.removeListener("drain",B),E.removeListener("error",Je),E.removeListener("unpipe",be),ae.removeListener("end",ne),ae.removeListener("end",Pe),ae.removeListener("data",Ge),q=!0,le.awaitDrain&&(!E._writableState||E._writableState.needDrain)&&B()}var ve=!1;ae.on("data",Ge);function Ge(Be){d("ondata"),ve=!1;var Te=E.write(Be);Te===!1&&!ve&&((le.pipesCount===1&&le.pipes===E||le.pipesCount>1&&_(le.pipes,E)!==-1)&&!q&&(d("false write response, pause",ae._readableState.awaitDrain),ae._readableState.awaitDrain++,ve=!0),ae.pause())}function Je(Be){d("onerror",Be),Pe(),E.removeListener("error",Je),b(E,"error")===0&&E.emit("error",Be)}W(E,"error",Je);function xe(){E.removeListener("finish",ke),Pe()}E.once("close",xe);function ke(){d("onfinish"),E.removeListener("close",xe),Pe()}E.once("finish",ke);function Pe(){d("unpipe"),ae.unpipe(E)}return E.emit("pipe",ae),le.flowing||(d("pipe resume"),ae.resume()),E};function K(E){return function(){var $=E._readableState;d("pipeOnDrain",$.awaitDrain),$.awaitDrain&&$.awaitDrain--,$.awaitDrain===0&&b(E,"data")&&($.flowing=!0,O(E))}}I.prototype.unpipe=function(E){var $=this._readableState,ae={hasUnpiped:!1};if($.pipesCount===0)return this;if($.pipesCount===1)return E&&E!==$.pipes?this:(E||(E=$.pipes),$.pipes=null,$.pipesCount=0,$.flowing=!1,E&&E.emit("unpipe",this,ae),this);if(!E){var le=$.pipes,ee=$.pipesCount;$.pipes=null,$.pipesCount=0,$.flowing=!1;for(var te=0;te=$.length?($.decoder?ae=$.buffer.join(""):$.buffer.length===1?ae=$.buffer.head.data:ae=$.buffer.concat($.length),$.buffer.clear()):ae=oe(E,$.buffer,$.decoder),ae}function oe(E,$,ae){var le;return E<$.head.data.length?(le=$.head.data.slice(0,E),$.head.data=$.head.data.slice(E)):E===$.head.data.length?le=$.shift():le=ae?se(E,$):he(E,$),le}function se(E,$){var ae=$.head,le=1,ee=ae.data;for(E-=ee.length;ae=ae.next;){var te=ae.data,be=E>te.length?te.length:E;if(be===te.length?ee+=te:ee+=te.slice(0,E),E-=be,E===0){be===te.length?(++le,ae.next?$.head=ae.next:$.head=$.tail=null):($.head=ae,ae.data=te.slice(be));break}++le}return $.length-=le,ee}function he(E,$){var ae=p.allocUnsafe(E),le=$.head,ee=1;for(le.data.copy(ae),E-=le.data.length;le=le.next;){var te=le.data,be=E>te.length?te.length:E;if(te.copy(ae,ae.length-E,0,be),E-=be,E===0){be===te.length?(++ee,le.next?$.head=le.next:$.head=$.tail=null):($.head=le,le.data=te.slice(be));break}++ee}return $.length-=ee,ae}function pe(E){var $=E._readableState;if($.length>0)throw new Error('"endReadable()" called on non-empty stream');$.endEmitted||($.ended=!0,r.nextTick(re,$,E))}function re(E,$){!E.endEmitted&&E.length===0&&(E.endEmitted=!0,$.readable=!1,$.emit("end"))}function _(E,$){for(var ae=0,le=E.length;ae-1?r:f.nextTick,Z;W.WritableState=h;var p=Object.create(t("core-util-is"));p.inherits=t("inherits");var y={deprecate:t("util-deprecate")},X=t("./internal/streams/stream"),m=t("safe-buffer").Buffer,N=o.Uint8Array||function(){};function G(F){return m.from(F)}function d(F){return m.isBuffer(F)||F instanceof N}var u=t("./internal/streams/destroy");p.inherits(W,X);function s(){}function h(F,O){Z=Z||t("./_stream_duplex"),F=F||{};var Q=O instanceof Z;this.objectMode=!!F.objectMode,Q&&(this.objectMode=this.objectMode||!!F.writableObjectMode);var oe=F.highWaterMark,se=F.writableHighWaterMark,he=this.objectMode?16:16*1024;oe||oe===0?this.highWaterMark=oe:Q&&(se||se===0)?this.highWaterMark=se:this.highWaterMark=he,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var pe=F.decodeStrings===!1;this.decodeStrings=!pe,this.defaultEncoding=F.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(re){S(O,re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new v(this)}h.prototype.getBuffer=function(){for(var O=this.bufferedRequest,Q=[];O;)Q.push(O),O=O.next;return Q},function(){try{Object.defineProperty(h.prototype,"buffer",{get:y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var c;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(W,Symbol.hasInstance,{value:function(O){return c.call(this,O)?!0:this!==W?!1:O&&O._writableState instanceof h}})):c=function(O){return O instanceof this};function W(F){if(Z=Z||t("./_stream_duplex"),!c.call(W,this)&&!(this instanceof Z))return new W(F);this._writableState=new h(F,this),this.writable=!0,F&&(typeof F.write=="function"&&(this._write=F.write),typeof F.writev=="function"&&(this._writev=F.writev),typeof F.destroy=="function"&&(this._destroy=F.destroy),typeof F.final=="function"&&(this._final=F.final)),X.call(this)}W.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function M(F,O){var Q=new Error("write after end");F.emit("error",Q),f.nextTick(O,Q)}function I(F,O,Q,oe){var se=!0,he=!1;return Q===null?he=new TypeError("May not write null values to stream"):typeof Q!="string"&&Q!==void 0&&!O.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he&&(F.emit("error",he),f.nextTick(oe,he),se=!1),se}W.prototype.write=function(F,O,Q){var oe=this._writableState,se=!1,he=!oe.objectMode&&d(F);return he&&!m.isBuffer(F)&&(F=G(F)),typeof O=="function"&&(Q=O,O=null),he?O="buffer":O||(O=oe.defaultEncoding),typeof Q!="function"&&(Q=s),oe.ended?M(this,Q):(he||I(this,oe,F,Q))&&(oe.pendingcb++,se=C(this,oe,he,F,O,Q)),se},W.prototype.cork=function(){var F=this._writableState;F.corked++},W.prototype.uncork=function(){var F=this._writableState;F.corked&&(F.corked--,!F.writing&&!F.corked&&!F.finished&&!F.bufferProcessing&&F.bufferedRequest&&Y(this,F))},W.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=O.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((O+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+O);return this._writableState.defaultEncoding=O,this};function w(F,O,Q){return!F.objectMode&&F.decodeStrings!==!1&&typeof O=="string"&&(O=m.from(O,Q)),O}Object.defineProperty(W.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function C(F,O,Q,oe,se,he){if(!Q){var pe=w(O,oe,se);oe!==pe&&(Q=!0,se="buffer",oe=pe)}var re=O.objectMode?1:oe.length;O.length+=re;var _=O.length0?this.tail.next=p:this.head=p,this.tail=p,++this.length},v.prototype.unshift=function(Z){var p={data:Z,next:this.head};this.length===0&&(this.tail=p),this.head=p,++this.length},v.prototype.shift=function(){if(this.length!==0){var Z=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,Z}},v.prototype.clear=function(){this.head=this.tail=null,this.length=0},v.prototype.join=function(Z){if(this.length===0)return"";for(var p=this.head,y=""+p.data;p=p.next;)y+=Z+p.data;return y},v.prototype.concat=function(Z){if(this.length===0)return o.alloc(0);if(this.length===1)return this.head.data;for(var p=o.allocUnsafe(Z>>>0),y=this.head,X=0;y;)f(y.data,p,X),X+=y.data.length,y=y.next;return p},v}(),r&&r.inspect&&r.inspect.custom&&(i.exports.prototype[r.inspect.custom]=function(){var v=r.inspect({length:this.length});return this.constructor.name+" "+v})},{"safe-buffer":494,util:185}],514:[function(t,i,l){var a=t("process-nextick-args");function o(v,b){var Z=this,p=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return p||y?(b?b(v):v&&(!this._writableState||!this._writableState.errorEmitted)&&a.nextTick(f,this,v),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(v||null,function(X){!b&&X?(a.nextTick(f,Z,X),Z._writableState&&(Z._writableState.errorEmitted=!0)):b&&b(X)}),this)}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(v,b){v.emit("error",b)}i.exports={destroy:o,undestroy:r}},{"process-nextick-args":466}],515:[function(t,i,l){arguments[4][490][0].apply(l,arguments)},{dup:490,events:367}],516:[function(t,i,l){i.exports=t("./readable").PassThrough},{"./readable":517}],517:[function(t,i,l){l=i.exports=t("./lib/_stream_readable.js"),l.Stream=l,l.Readable=l,l.Writable=t("./lib/_stream_writable.js"),l.Duplex=t("./lib/_stream_duplex.js"),l.Transform=t("./lib/_stream_transform.js"),l.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(t,i,l){i.exports=t("./readable").Transform},{"./readable":517}],519:[function(t,i,l){i.exports=t("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(t,i,l){var a=t("safe-buffer").Buffer,o=a.isEncoding||function(c){switch(c=""+c,c&&c.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(c){if(!c)return"utf8";for(var W;;)switch(c){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return c;default:if(W)return;c=(""+c).toLowerCase(),W=!0}}function f(c){var W=r(c);if(typeof W!="string"&&(a.isEncoding===o||!o(c)))throw new Error("Unknown encoding: "+c);return W||c}l.StringDecoder=v;function v(c){this.encoding=f(c);var W;switch(this.encoding){case"utf16le":this.text=N,this.end=G,W=4;break;case"utf8":this.fillLast=y,W=4;break;case"base64":this.text=d,this.end=u,W=3;break;default:this.write=s,this.end=h;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(W)}v.prototype.write=function(c){if(c.length===0)return"";var W,M;if(this.lastNeed){if(W=this.fillLast(c),W===void 0)return"";M=this.lastNeed,this.lastNeed=0}else M=0;return M>5===6?2:c>>4===14?3:c>>3===30?4:c>>6===2?-1:-2}function Z(c,W,M){var I=W.length-1;if(I=0?(w>0&&(c.lastNeed=w-1),w):--I=0?(w>0&&(c.lastNeed=w-2),w):--I=0?(w>0&&(w===2?w=0:c.lastNeed=w-3),w):0))}function p(c,W,M){if((W[0]&192)!==128)return c.lastNeed=0,"�";if(c.lastNeed>1&&W.length>1){if((W[1]&192)!==128)return c.lastNeed=1,"�";if(c.lastNeed>2&&W.length>2&&(W[2]&192)!==128)return c.lastNeed=2,"�"}}function y(c){var W=this.lastTotal-this.lastNeed,M=p(this,c);if(M!==void 0)return M;if(this.lastNeed<=c.length)return c.copy(this.lastChar,W,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);c.copy(this.lastChar,W,0,c.length),this.lastNeed-=c.length}function X(c,W){var M=Z(this,c,W);if(!this.lastNeed)return c.toString("utf8",W);this.lastTotal=M;var I=c.length-(M-this.lastNeed);return c.copy(this.lastChar,0,I),c.toString("utf8",W,I)}function m(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+"�":W}function N(c,W){if((c.length-W)%2===0){var M=c.toString("utf16le",W);if(M){var I=M.charCodeAt(M.length-1);if(I>=55296&&I<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=c[c.length-1],c.toString("utf16le",W,c.length-1)}function G(c){var W=c&&c.length?this.write(c):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return W+this.lastChar.toString("utf16le",0,M)}return W}function d(c,W){var M=(c.length-W)%3;return M===0?c.toString("base64",W):(this.lastNeed=3-M,this.lastTotal=3,M===1?this.lastChar[0]=c[c.length-1]:(this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1]),c.toString("base64",W,c.length-M))}function u(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+this.lastChar.toString("base64",0,3-this.lastNeed):W}function s(c){return c.toString(this.encoding)}function h(c){return c&&c.length?this.write(c):""}},{"safe-buffer":494}],521:[function(t,i,l){(function(a,o){var r=t("process/browser.js").nextTick,f=Function.prototype.apply,v=Array.prototype.slice,b={},Z=0;l.setTimeout=function(){return new p(f.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new p(f.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(y){y.close()};function p(y,X){this._id=y,this._clearFn=X}p.prototype.unref=p.prototype.ref=function(){},p.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(y,X){clearTimeout(y._idleTimeoutId),y._idleTimeout=X},l.unenroll=function(y){clearTimeout(y._idleTimeoutId),y._idleTimeout=-1},l._unrefActive=l.active=function(y){clearTimeout(y._idleTimeoutId);var X=y._idleTimeout;X>=0&&(y._idleTimeoutId=setTimeout(function(){y._onTimeout&&y._onTimeout()},X))},l.setImmediate=typeof a=="function"?a:function(y){var X=Z++,m=arguments.length<2?!1:v.call(arguments,1);return b[X]=!0,r(function(){b[X]&&(m?y.apply(null,m):y.call(null),l.clearImmediate(X))}),X},l.clearImmediate=typeof o=="function"?o:function(y){delete b[y]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(t,i,l){(function(a){i.exports=o;function o(f,v){if(r("noDeprecation"))return f;var b=!1;function Z(){if(!b){if(r("throwDeprecation"))throw new Error(v);r("traceDeprecation")?console.trace(v):console.warn(v),b=!0}return f.apply(this,arguments)}return Z}function r(f){try{if(!a.localStorage)return!1}catch{return!1}var v=a.localStorage[f];return v==null?!1:String(v).toLowerCase()==="true"}}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(t,i,l){typeof Object.create=="function"?i.exports=function(o,r){o.super_=r,o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}})}:i.exports=function(o,r){o.super_=r;var f=function(){};f.prototype=r.prototype,o.prototype=new f,o.prototype.constructor=o}},{}],524:[function(t,i,l){function a(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?a=function(f){return typeof f}:a=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},a(o)}i.exports=function(r){return r&&a(r)==="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}},{}],525:[function(t,i,l){(function(a,o){function r(k){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?r=function(O){return typeof O}:r=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},r(k)}var f=/%[sdj%]/g;l.format=function(k){if(!w(k)){for(var F=[],O=0;O=oe)return pe;switch(pe){case"%s":return String(Q[O++]);case"%d":return Number(Q[O++]);case"%j":try{return JSON.stringify(Q[O++])}catch{return"[Circular]"}default:return pe}}),he=Q[O];O=3&&(O.depth=arguments[2]),arguments.length>=4&&(O.colors=arguments[3]),c(F)?O.showHidden=F:F&&l._extend(O,F),x(O.showHidden)&&(O.showHidden=!1),x(O.depth)&&(O.depth=2),x(O.colors)&&(O.colors=!1),x(O.customInspect)&&(O.customInspect=!0),O.colors&&(O.stylize=p),m(O,k,O.depth)}l.inspect=Z,Z.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Z.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function p(k,F){var O=Z.styles[F];return O?"\x1B["+Z.colors[O][0]+"m"+k+"\x1B["+Z.colors[O][1]+"m":k}function y(k,F){return k}function X(k){var F={};return k.forEach(function(O,Q){F[O]=!0}),F}function m(k,F,O){if(k.customInspect&&F&&V(F.inspect)&&F.inspect!==l.inspect&&!(F.constructor&&F.constructor.prototype===F)){var Q=F.inspect(O,k);return w(Q)||(Q=m(k,Q,O)),Q}var oe=N(k,F);if(oe)return oe;var se=Object.keys(F),he=X(se);if(k.showHidden&&(se=Object.getOwnPropertyNames(F)),L(F)&&(se.indexOf("message")>=0||se.indexOf("description")>=0))return G(F);if(se.length===0){if(V(F)){var pe=F.name?": "+F.name:"";return k.stylize("[Function"+pe+"]","special")}if(R(F))return k.stylize(RegExp.prototype.toString.call(F),"regexp");if(S(F))return k.stylize(Date.prototype.toString.call(F),"date");if(L(F))return G(F)}var re="",_=!1,E=["{","}"];if(h(F)&&(_=!0,E=["[","]"]),V(F)){var $=F.name?": "+F.name:"";re=" [Function"+$+"]"}if(R(F)&&(re=" "+RegExp.prototype.toString.call(F)),S(F)&&(re=" "+Date.prototype.toUTCString.call(F)),L(F)&&(re=" "+G(F)),se.length===0&&(!_||F.length==0))return E[0]+re+E[1];if(O<0)return R(F)?k.stylize(RegExp.prototype.toString.call(F),"regexp"):k.stylize("[Object]","special");k.seen.push(F);var ae;return _?ae=d(k,F,O,he,se):ae=se.map(function(le){return u(k,F,O,he,le,_)}),k.seen.pop(),s(ae,re,E)}function N(k,F){if(x(F))return k.stylize("undefined","undefined");if(w(F)){var O="'"+JSON.stringify(F).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return k.stylize(O,"string")}if(I(F))return k.stylize(""+F,"number");if(c(F))return k.stylize(""+F,"boolean");if(W(F))return k.stylize("null","null")}function G(k){return"["+Error.prototype.toString.call(k)+"]"}function d(k,F,O,Q,oe){for(var se=[],he=0,pe=F.length;he0;){var Vt=nt.pop();this.fail("unclosed tag: ".concat(Vt.name))}this.state!==T&&this.state!==re&&this.fail("unexpected end.");var Bt=this.text;return Bt.length!==0&&((Fe=this.textHandler)===null||Fe===void 0||Fe.call(this,Bt),this.text=""),this._closed=!0,(tt=this.endHandler)===null||tt===void 0||tt.call(this),this._init(),this}},{key:"resolve",value:function(Fe){var tt,nt,Vt=this.topNS[Fe];if(Vt!==void 0)return Vt;for(var Bt=this.tags,Nn=Bt.length-1;Nn>=0;Nn--)if(Vt=Bt[Nn].ns[Fe],Vt!==void 0)return Vt;return Vt=this.ns[Fe],Vt!==void 0?Vt:(nt=(tt=this.opt).resolvePrefix)===null||nt===void 0?void 0:nt.call(tt,Fe)}},{key:"qname",value:function(Fe){var tt=Fe.indexOf(":");if(tt===-1)return{prefix:"",local:Fe};var nt=Fe.slice(tt+1),Vt=Fe.slice(0,tt);return(Vt===""||nt===""||nt.includes(":"))&&this.fail("malformed name: ".concat(Fe,".")),{prefix:Vt,local:nt}}},{key:"processAttribsNS",value:function(){var Fe,tt=this.attribList,nt=this.tag;{var Vt=this.qname(nt.name),Bt=Vt.prefix,Nn=Vt.local;nt.prefix=Bt,nt.local=Nn;var oi=nt.uri=(Fe=this.resolve(Bt))!==null&&Fe!==void 0?Fe:"";Bt!==""&&(Bt==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),oi===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(Bt),".")),nt.uri=Bt))}if(tt.length!==0){var gi=nt.attributes,Ll=new Set,il=l(tt),Lr;try{for(il.s();!(Lr=il.n()).done;){var ul=Lr.value,Ol=ul.name,jl=ul.prefix,_t=ul.local,Rt=void 0,zt=void 0;jl===""?(Rt=Ol==="xmlns"?g:"",zt=Ol):(Rt=this.resolve(jl),Rt===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(jl),".")),Rt=jl),zt="{".concat(Rt,"}").concat(_t)),Ll.has(zt)&&this.fail("duplicate attribute: ".concat(zt,".")),Ll.add(zt),ul.uri=Rt,gi[Ol]=ul}}catch(Ht){il.e(Ht)}finally{il.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var Fe=this.attribList,tt=this.tag.attributes,nt=l(Fe),Vt;try{for(nt.s();!(Vt=nt.n()).done;){var Bt=Vt.value,Nn=Bt.name,oi=Bt.value;tt[Nn]!==void 0&&this.fail("duplicate attribute: ".concat(Nn,".")),tt[Nn]=oi}}catch(gi){nt.e(gi)}finally{nt.f()}this.attribList=[]}},{key:"openTag",value:function(){var Fe;this.processAttribs();var tt=this.tags,nt=this.tag;nt.isSelfClosing=!1,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,nt),tt.push(nt),this.state=re,this.name=""}},{key:"openSelfClosingTag",value:function(){var Fe,tt,nt;this.processAttribs();var Vt=this.tags,Bt=this.tag;Bt.isSelfClosing=!0,(Fe=this.openTagHandler)===null||Fe===void 0||Fe.call(this,Bt),(tt=this.closeTagHandler)===null||tt===void 0||tt.call(this,Bt);var Nn=this.tag=(nt=Vt[Vt.length-1])!==null&&nt!==void 0?nt:null;Nn===null&&(this.closedRoot=!0),this.state=re,this.name=""}},{key:"closeTag",value:function(){var Fe=this.tags,tt=this.name;if(this.state=re,this.name="",tt===""){this.fail("weird empty close tag."),this.text+="";return}for(var nt=this.closeTagHandler,Vt=Fe.length;Vt-- >0;){var Bt=this.tag=Fe.pop();if(this.topNS=Bt.ns,nt==null||nt(Bt),Bt.name===tt)break;this.fail("unexpected close tag.")}Vt===0?this.closedRoot=!0:Vt<0&&(this.fail("unmatched closing tag: ".concat(tt,".")),this.text+=""))}},{key:"parseEntity",value:function(Fe){if(Fe[0]!=="#"){var tt=this.ENTITIES[Fe];return tt!==void 0?tt:(this.fail(this.isName(Fe)?"undefined entity.":"disallowed character in entity name."),"&".concat(Fe,";"))}var nt=NaN;return Fe[1]==="x"&&/^#x[0-9a-f]+$/i.test(Fe)?nt=parseInt(Fe.slice(2),16):/^#[0-9]+$/.test(Fe)&&(nt=parseInt(Fe.slice(1),10)),this.isChar(nt)?String.fromCodePoint(nt):(this.fail("malformed character entity."),"&".concat(Fe,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),Dt}();a.SaxesParser=nl},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(t,i,a){(function(l){i.exports=typeof l=="function"?l:function(){var r=[].slice.apply(arguments);r.splice(1,0,0),setTimeout.apply(null,r)}}).call(this,t("timers").setImmediate)},{timers:521}],498:[function(t,i,a){var l=t("safe-buffer").Buffer;function o(r,f){this._block=l.alloc(r),this._finalSize=f,this._blockSize=r,this._len=0}o.prototype.update=function(r,f){typeof r=="string"&&(f=f||"utf8",r=l.from(r,f));for(var v=this._block,b=this._blockSize,Z=r.length,p=this._len,y=0;y=this._finalSize&&(this._update(this._block),this._block.fill(0));var v=this._len*8;if(v<=4294967295)this._block.writeUInt32BE(v,this._blockSize-4);else{var b=(v&4294967295)>>>0,Z=(v-b)/4294967296;this._block.writeUInt32BE(Z,this._blockSize-8),this._block.writeUInt32BE(b,this._blockSize-4)}this._update(this._block);var p=this._hash();return r?p.toString(r):p},o.prototype._update=function(){throw new Error("_update must be implemented by subclass")},i.exports=o},{"safe-buffer":494}],499:[function(t,i,a){var l=i.exports=function(r){r=r.toLowerCase();var f=l[r];if(!f)throw new Error(r+" is not supported (we accept pull requests)");return new f};l.sha=t("./sha"),l.sha1=t("./sha1"),l.sha224=t("./sha224"),l.sha256=t("./sha256"),l.sha384=t("./sha384"),l.sha512=t("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(X){return X<<5|X>>>27}function p(X){return X<<30|X>>>2}function y(X,m,N,G){return X===0?m&N|~m&G:X===2?m&N|m&G|N&G:m^N^G}b.prototype._update=function(X){for(var m=this._w,N=this._a|0,G=this._b|0,d=this._c|0,u=this._d|0,s=this._e|0,h=0;h<16;++h)m[h]=X.readInt32BE(h*4);for(;h<80;++h)m[h]=m[h-3]^m[h-8]^m[h-14]^m[h-16];for(var c=0;c<80;++c){var W=~~(c/20),M=Z(N)+y(W,G,d,u)+s+m[c]+f[W]|0;s=u,u=d,d=p(G),G=N,N=M}this._a=N+this._a|0,this._b=G+this._b|0,this._c=d+this._c|0,this._d=u+this._d|0,this._e=s+this._e|0},b.prototype._hash=function(){var X=r.allocUnsafe(20);return X.writeInt32BE(this._a|0,0),X.writeInt32BE(this._b|0,4),X.writeInt32BE(this._c|0,8),X.writeInt32BE(this._d|0,12),X.writeInt32BE(this._e|0,16),X},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],v=new Array(80);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function Z(m){return m<<1|m>>>31}function p(m){return m<<5|m>>>27}function y(m){return m<<30|m>>>2}function X(m,N,G,d){return m===0?N&G|~N&d:m===2?N&G|N&d|G&d:N^G^d}b.prototype._update=function(m){for(var N=this._w,G=this._a|0,d=this._b|0,u=this._c|0,s=this._d|0,h=this._e|0,c=0;c<16;++c)N[c]=m.readInt32BE(c*4);for(;c<80;++c)N[c]=Z(N[c-3]^N[c-8]^N[c-14]^N[c-16]);for(var W=0;W<80;++W){var M=~~(W/20),I=p(G)+X(M,d,u,s)+h+N[W]+f[M]|0;h=s,s=u,u=y(d),d=G,G=I}this._a=G+this._a|0,this._b=d+this._b|0,this._c=u+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},b.prototype._hash=function(){var m=r.allocUnsafe(20);return m.writeInt32BE(this._a|0,0),m.writeInt32BE(this._b|0,4),m.writeInt32BE(this._c|0,8),m.writeInt32BE(this._d|0,12),m.writeInt32BE(this._e|0,16),m},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(t,i,a){var l=t("inherits"),o=t("./sha256"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(64);function b(){this.init(),this._w=v,r.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(28);return Z.writeInt32BE(this._a,0),Z.writeInt32BE(this._b,4),Z.writeInt32BE(this._c,8),Z.writeInt32BE(this._d,12),Z.writeInt32BE(this._e,16),Z.writeInt32BE(this._f,20),Z.writeInt32BE(this._g,24),Z},i.exports=b},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],v=new Array(64);function b(){this.init(),this._w=v,o.call(this,64,56)}l(b,o),b.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function Z(G,d,u){return u^G&(d^u)}function p(G,d,u){return G&d|u&(G|d)}function y(G){return(G>>>2|G<<30)^(G>>>13|G<<19)^(G>>>22|G<<10)}function X(G){return(G>>>6|G<<26)^(G>>>11|G<<21)^(G>>>25|G<<7)}function m(G){return(G>>>7|G<<25)^(G>>>18|G<<14)^G>>>3}function N(G){return(G>>>17|G<<15)^(G>>>19|G<<13)^G>>>10}b.prototype._update=function(G){for(var d=this._w,u=this._a|0,s=this._b|0,h=this._c|0,c=this._d|0,W=this._e|0,M=this._f|0,I=this._g|0,w=this._h|0,C=0;C<16;++C)d[C]=G.readInt32BE(C*4);for(;C<64;++C)d[C]=N(d[C-2])+d[C-7]+m(d[C-15])+d[C-16]|0;for(var x=0;x<64;++x){var R=w+X(W)+Z(W,M,I)+f[x]+d[x]|0,g=y(u)+p(u,s,h)|0;w=I,I=M,M=W,W=c+R|0,c=h,h=s,s=u,u=R+g|0}this._a=u+this._a|0,this._b=s+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=W+this._e|0,this._f=M+this._f|0,this._g=I+this._g|0,this._h=w+this._h|0},b.prototype._hash=function(){var G=r.allocUnsafe(32);return G.writeInt32BE(this._a,0),G.writeInt32BE(this._b,4),G.writeInt32BE(this._c,8),G.writeInt32BE(this._d,12),G.writeInt32BE(this._e,16),G.writeInt32BE(this._f,20),G.writeInt32BE(this._g,24),G.writeInt32BE(this._h,28),G},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(t,i,a){var l=t("inherits"),o=t("./sha512"),r=t("./hash"),f=t("safe-buffer").Buffer,v=new Array(160);function b(){this.init(),this._w=v,r.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},b.prototype._hash=function(){var Z=f.allocUnsafe(48);function p(y,X,m){Z.writeInt32BE(y,m),Z.writeInt32BE(X,m+4)}return p(this._ah,this._al,0),p(this._bh,this._bl,8),p(this._ch,this._cl,16),p(this._dh,this._dl,24),p(this._eh,this._el,32),p(this._fh,this._fl,40),Z},i.exports=b},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(t,i,a){var l=t("inherits"),o=t("./hash"),r=t("safe-buffer").Buffer,f=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);function b(){this.init(),this._w=v,o.call(this,128,112)}l(b,o),b.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function Z(s,h,c){return c^s&(h^c)}function p(s,h,c){return s&h|c&(s|h)}function y(s,h){return(s>>>28|h<<4)^(h>>>2|s<<30)^(h>>>7|s<<25)}function X(s,h){return(s>>>14|h<<18)^(s>>>18|h<<14)^(h>>>9|s<<23)}function m(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^s>>>7}function N(s,h){return(s>>>1|h<<31)^(s>>>8|h<<24)^(s>>>7|h<<25)}function G(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^s>>>6}function d(s,h){return(s>>>19|h<<13)^(h>>>29|s<<3)^(s>>>6|h<<26)}function u(s,h){return s>>>0>>0?1:0}b.prototype._update=function(s){for(var h=this._w,c=this._ah|0,W=this._bh|0,M=this._ch|0,I=this._dh|0,w=this._eh|0,C=this._fh|0,x=this._gh|0,R=this._hh|0,g=this._al|0,S=this._bl|0,L=this._cl|0,V=this._dl|0,Y=this._el|0,T=this._fl|0,J=this._gl|0,U=this._hl|0,K=0;K<32;K+=2)h[K]=s.readInt32BE(K*4),h[K+1]=s.readInt32BE(K*4+4);for(;K<160;K+=2){var H=h[K-30],k=h[K-15*2+1],F=m(H,k),O=N(k,H);H=h[K-2*2],k=h[K-2*2+1];var Q=G(H,k),oe=d(k,H),se=h[K-7*2],he=h[K-7*2+1],pe=h[K-16*2],re=h[K-16*2+1],_=O+he|0,E=F+se+u(_,O)|0;_=_+oe|0,E=E+Q+u(_,oe)|0,_=_+re|0,E=E+pe+u(_,re)|0,h[K]=E,h[K+1]=_}for(var $=0;$<160;$+=2){E=h[$],_=h[$+1];var ae=p(c,W,M),le=p(g,S,L),ee=y(c,g),te=y(g,c),be=X(w,Y),ne=X(Y,w),B=f[$],q=f[$+1],ue=Z(w,C,x),ve=Z(Y,T,J),Ge=U+ne|0,Je=R+be+u(Ge,U)|0;Ge=Ge+ve|0,Je=Je+ue+u(Ge,ve)|0,Ge=Ge+q|0,Je=Je+B+u(Ge,q)|0,Ge=Ge+_|0,Je=Je+E+u(Ge,_)|0;var xe=te+le|0,ke=ee+ae+u(xe,te)|0;R=x,U=J,x=C,J=T,C=w,T=Y,Y=V+Ge|0,w=I+Je+u(Y,V)|0,I=M,V=L,M=W,L=S,W=c,S=g,g=Ge+xe|0,c=Je+ke+u(g,Ge)|0}this._al=this._al+g|0,this._bl=this._bl+S|0,this._cl=this._cl+L|0,this._dl=this._dl+V|0,this._el=this._el+Y|0,this._fl=this._fl+T|0,this._gl=this._gl+J|0,this._hl=this._hl+U|0,this._ah=this._ah+c+u(this._al,g)|0,this._bh=this._bh+W+u(this._bl,S)|0,this._ch=this._ch+M+u(this._cl,L)|0,this._dh=this._dh+I+u(this._dl,V)|0,this._eh=this._eh+w+u(this._el,Y)|0,this._fh=this._fh+C+u(this._fl,T)|0,this._gh=this._gh+x+u(this._gl,J)|0,this._hh=this._hh+R+u(this._hl,U)|0},b.prototype._hash=function(){var s=r.allocUnsafe(64);function h(c,W,M){s.writeInt32BE(c,M),s.writeInt32BE(W,M+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),h(this._gh,this._gl,48),h(this._hh,this._hl,56),s},i.exports=b},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(t,i,a){i.exports=r;var l=t("events").EventEmitter,o=t("inherits");o(r,l),r.Readable=t("readable-stream/readable.js"),r.Writable=t("readable-stream/writable.js"),r.Duplex=t("readable-stream/duplex.js"),r.Transform=t("readable-stream/transform.js"),r.PassThrough=t("readable-stream/passthrough.js"),r.Stream=r;function r(){l.call(this)}r.prototype.pipe=function(f,v){var b=this;function Z(d){f.writable&&f.write(d)===!1&&b.pause&&b.pause()}b.on("data",Z);function p(){b.readable&&b.resume&&b.resume()}f.on("drain",p),!f._isStdio&&(!v||v.end!==!1)&&(b.on("end",X),b.on("close",m));var y=!1;function X(){y||(y=!0,f.end())}function m(){y||(y=!0,typeof f.destroy=="function"&&f.destroy())}function N(d){if(G(),l.listenerCount(this,"error")===0)throw d}b.on("error",N),f.on("error",N);function G(){b.removeListener("data",Z),f.removeListener("drain",p),b.removeListener("end",X),b.removeListener("close",m),b.removeListener("error",N),f.removeListener("error",N),b.removeListener("end",G),b.removeListener("close",G),f.removeListener("close",G)}return b.on("end",G),b.on("close",G),f.on("close",G),f.emit("pipe",b),f}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(t,i,a){i.exports=t("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(t,i,a){var l=t("process-nextick-args"),o=Object.keys||function(N){var G=[];for(var d in N)G.push(d);return G};i.exports=y;var r=Object.create(t("core-util-is"));r.inherits=t("inherits");var f=t("./_stream_readable"),v=t("./_stream_writable");r.inherits(y,f);for(var b=o(v.prototype),Z=0;Z0?(typeof $!="string"&&!te.objectMode&&Object.getPrototypeOf($)!==p.prototype&&($=X($)),le?te.endEmitted?E.emit("error",new Error("stream.unshift() after end event")):C(E,te,$,!0):te.ended?E.emit("error",new Error("stream.push() after EOF")):(te.reading=!1,te.decoder&&!ae?($=te.decoder.write($),te.objectMode||$.length!==0?C(E,te,$,!1):J(E,te)):C(E,te,$,!1))):le||(te.reading=!1)}return R(te)}function C(E,$,ae,le){$.flowing&&$.length===0&&!$.sync?(E.emit("data",ae),E.read(0)):($.length+=$.objectMode?1:ae.length,le?$.buffer.unshift(ae):$.buffer.push(ae),$.needReadable&&Y(E)),J(E,$)}function x(E,$){var ae;return!m($)&&typeof $!="string"&&$!==void 0&&!E.objectMode&&(ae=new TypeError("Invalid non-string/buffer chunk")),ae}function R(E){return!E.ended&&(E.needReadable||E.length=g?E=g:(E--,E|=E>>>1,E|=E>>>2,E|=E>>>4,E|=E>>>8,E|=E>>>16,E++),E}function L(E,$){return E<=0||$.length===0&&$.ended?0:$.objectMode?1:E!==E?$.flowing&&$.length?$.buffer.head.data.length:$.length:(E>$.highWaterMark&&($.highWaterMark=S(E)),E<=$.length?E:$.ended?$.length:($.needReadable=!0,0))}I.prototype.read=function(E){d("read",E),E=parseInt(E,10);var $=this._readableState,ae=E;if(E!==0&&($.emittedReadable=!1),E===0&&$.needReadable&&($.length>=$.highWaterMark||$.ended))return d("read: emitReadable",$.length,$.ended),$.length===0&&$.ended?pe(this):Y(this),null;if(E=L(E,$),E===0&&$.ended)return $.length===0&&pe(this),null;var le=$.needReadable;d("need readable",le),($.length===0||$.length-E<$.highWaterMark)&&(le=!0,d("length less than watermark",le)),$.ended||$.reading?(le=!1,d("reading or ended",le)):le&&(d("do read"),$.reading=!0,$.sync=!0,$.length===0&&($.needReadable=!0),this._read($.highWaterMark),$.sync=!1,$.reading||(E=L(ae,$)));var ee;return E>0?ee=Q(E,$):ee=null,ee===null?($.needReadable=!0,E=0):$.length-=E,$.length===0&&($.ended||($.needReadable=!0),ae!==E&&$.ended&&pe(this)),ee!==null&&this.emit("data",ee),ee};function V(E,$){if(!$.ended){if($.decoder){var ae=$.decoder.end();ae&&ae.length&&($.buffer.push(ae),$.length+=$.objectMode?1:ae.length)}$.ended=!0,Y(E)}}function Y(E){var $=E._readableState;$.needReadable=!1,$.emittedReadable||(d("emitReadable",$.flowing),$.emittedReadable=!0,$.sync?r.nextTick(T,E):T(E))}function T(E){d("emit readable"),E.emit("readable"),O(E)}function J(E,$){$.readingMore||($.readingMore=!0,r.nextTick(U,E,$))}function U(E,$){for(var ae=$.length;!$.reading&&!$.flowing&&!$.ended&&$.length<$.highWaterMark&&(d("maybeReadMore read 0"),E.read(0),ae!==$.length);)ae=$.length;$.readingMore=!1}I.prototype._read=function(E){this.emit("error",new Error("_read() is not implemented"))},I.prototype.pipe=function(E,$){var ae=this,le=this._readableState;switch(le.pipesCount){case 0:le.pipes=E;break;case 1:le.pipes=[le.pipes,E];break;default:le.pipes.push(E);break}le.pipesCount+=1,d("pipe count=%d opts=%j",le.pipesCount,$);var ee=(!$||$.end!==!1)&&E!==l.stdout&&E!==l.stderr,te=ee?ne:Pe;le.endEmitted?r.nextTick(te):ae.once("end",te),E.on("unpipe",be);function be(Be,Te){d("onunpipe"),Be===ae&&Te&&Te.hasUnpiped===!1&&(Te.hasUnpiped=!0,ue())}function ne(){d("onend"),E.end()}var B=K(ae);E.on("drain",B);var q=!1;function ue(){d("cleanup"),E.removeListener("close",xe),E.removeListener("finish",ke),E.removeListener("drain",B),E.removeListener("error",Je),E.removeListener("unpipe",be),ae.removeListener("end",ne),ae.removeListener("end",Pe),ae.removeListener("data",Ge),q=!0,le.awaitDrain&&(!E._writableState||E._writableState.needDrain)&&B()}var ve=!1;ae.on("data",Ge);function Ge(Be){d("ondata"),ve=!1;var Te=E.write(Be);Te===!1&&!ve&&((le.pipesCount===1&&le.pipes===E||le.pipesCount>1&&_(le.pipes,E)!==-1)&&!q&&(d("false write response, pause",ae._readableState.awaitDrain),ae._readableState.awaitDrain++,ve=!0),ae.pause())}function Je(Be){d("onerror",Be),Pe(),E.removeListener("error",Je),b(E,"error")===0&&E.emit("error",Be)}W(E,"error",Je);function xe(){E.removeListener("finish",ke),Pe()}E.once("close",xe);function ke(){d("onfinish"),E.removeListener("close",xe),Pe()}E.once("finish",ke);function Pe(){d("unpipe"),ae.unpipe(E)}return E.emit("pipe",ae),le.flowing||(d("pipe resume"),ae.resume()),E};function K(E){return function(){var $=E._readableState;d("pipeOnDrain",$.awaitDrain),$.awaitDrain&&$.awaitDrain--,$.awaitDrain===0&&b(E,"data")&&($.flowing=!0,O(E))}}I.prototype.unpipe=function(E){var $=this._readableState,ae={hasUnpiped:!1};if($.pipesCount===0)return this;if($.pipesCount===1)return E&&E!==$.pipes?this:(E||(E=$.pipes),$.pipes=null,$.pipesCount=0,$.flowing=!1,E&&E.emit("unpipe",this,ae),this);if(!E){var le=$.pipes,ee=$.pipesCount;$.pipes=null,$.pipesCount=0,$.flowing=!1;for(var te=0;te=$.length?($.decoder?ae=$.buffer.join(""):$.buffer.length===1?ae=$.buffer.head.data:ae=$.buffer.concat($.length),$.buffer.clear()):ae=oe(E,$.buffer,$.decoder),ae}function oe(E,$,ae){var le;return E<$.head.data.length?(le=$.head.data.slice(0,E),$.head.data=$.head.data.slice(E)):E===$.head.data.length?le=$.shift():le=ae?se(E,$):he(E,$),le}function se(E,$){var ae=$.head,le=1,ee=ae.data;for(E-=ee.length;ae=ae.next;){var te=ae.data,be=E>te.length?te.length:E;if(be===te.length?ee+=te:ee+=te.slice(0,E),E-=be,E===0){be===te.length?(++le,ae.next?$.head=ae.next:$.head=$.tail=null):($.head=ae,ae.data=te.slice(be));break}++le}return $.length-=le,ee}function he(E,$){var ae=p.allocUnsafe(E),le=$.head,ee=1;for(le.data.copy(ae),E-=le.data.length;le=le.next;){var te=le.data,be=E>te.length?te.length:E;if(te.copy(ae,ae.length-E,0,be),E-=be,E===0){be===te.length?(++ee,le.next?$.head=le.next:$.head=$.tail=null):($.head=le,le.data=te.slice(be));break}++ee}return $.length-=ee,ae}function pe(E){var $=E._readableState;if($.length>0)throw new Error('"endReadable()" called on non-empty stream');$.endEmitted||($.ended=!0,r.nextTick(re,$,E))}function re(E,$){!E.endEmitted&&E.length===0&&(E.endEmitted=!0,$.readable=!1,$.emit("end"))}function _(E,$){for(var ae=0,le=E.length;ae-1?r:f.nextTick,Z;W.WritableState=h;var p=Object.create(t("core-util-is"));p.inherits=t("inherits");var y={deprecate:t("util-deprecate")},X=t("./internal/streams/stream"),m=t("safe-buffer").Buffer,N=o.Uint8Array||function(){};function G(F){return m.from(F)}function d(F){return m.isBuffer(F)||F instanceof N}var u=t("./internal/streams/destroy");p.inherits(W,X);function s(){}function h(F,O){Z=Z||t("./_stream_duplex"),F=F||{};var Q=O instanceof Z;this.objectMode=!!F.objectMode,Q&&(this.objectMode=this.objectMode||!!F.writableObjectMode);var oe=F.highWaterMark,se=F.writableHighWaterMark,he=this.objectMode?16:16*1024;oe||oe===0?this.highWaterMark=oe:Q&&(se||se===0)?this.highWaterMark=se:this.highWaterMark=he,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var pe=F.decodeStrings===!1;this.decodeStrings=!pe,this.defaultEncoding=F.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(re){S(O,re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new v(this)}h.prototype.getBuffer=function(){for(var O=this.bufferedRequest,Q=[];O;)Q.push(O),O=O.next;return Q},function(){try{Object.defineProperty(h.prototype,"buffer",{get:y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var c;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(W,Symbol.hasInstance,{value:function(O){return c.call(this,O)?!0:this!==W?!1:O&&O._writableState instanceof h}})):c=function(O){return O instanceof this};function W(F){if(Z=Z||t("./_stream_duplex"),!c.call(W,this)&&!(this instanceof Z))return new W(F);this._writableState=new h(F,this),this.writable=!0,F&&(typeof F.write=="function"&&(this._write=F.write),typeof F.writev=="function"&&(this._writev=F.writev),typeof F.destroy=="function"&&(this._destroy=F.destroy),typeof F.final=="function"&&(this._final=F.final)),X.call(this)}W.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function M(F,O){var Q=new Error("write after end");F.emit("error",Q),f.nextTick(O,Q)}function I(F,O,Q,oe){var se=!0,he=!1;return Q===null?he=new TypeError("May not write null values to stream"):typeof Q!="string"&&Q!==void 0&&!O.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he&&(F.emit("error",he),f.nextTick(oe,he),se=!1),se}W.prototype.write=function(F,O,Q){var oe=this._writableState,se=!1,he=!oe.objectMode&&d(F);return he&&!m.isBuffer(F)&&(F=G(F)),typeof O=="function"&&(Q=O,O=null),he?O="buffer":O||(O=oe.defaultEncoding),typeof Q!="function"&&(Q=s),oe.ended?M(this,Q):(he||I(this,oe,F,Q))&&(oe.pendingcb++,se=C(this,oe,he,F,O,Q)),se},W.prototype.cork=function(){var F=this._writableState;F.corked++},W.prototype.uncork=function(){var F=this._writableState;F.corked&&(F.corked--,!F.writing&&!F.corked&&!F.finished&&!F.bufferProcessing&&F.bufferedRequest&&Y(this,F))},W.prototype.setDefaultEncoding=function(O){if(typeof O=="string"&&(O=O.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((O+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+O);return this._writableState.defaultEncoding=O,this};function w(F,O,Q){return!F.objectMode&&F.decodeStrings!==!1&&typeof O=="string"&&(O=m.from(O,Q)),O}Object.defineProperty(W.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function C(F,O,Q,oe,se,he){if(!Q){var pe=w(O,oe,se);oe!==pe&&(Q=!0,se="buffer",oe=pe)}var re=O.objectMode?1:oe.length;O.length+=re;var _=O.length0?this.tail.next=p:this.head=p,this.tail=p,++this.length},v.prototype.unshift=function(Z){var p={data:Z,next:this.head};this.length===0&&(this.tail=p),this.head=p,++this.length},v.prototype.shift=function(){if(this.length!==0){var Z=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,Z}},v.prototype.clear=function(){this.head=this.tail=null,this.length=0},v.prototype.join=function(Z){if(this.length===0)return"";for(var p=this.head,y=""+p.data;p=p.next;)y+=Z+p.data;return y},v.prototype.concat=function(Z){if(this.length===0)return o.alloc(0);if(this.length===1)return this.head.data;for(var p=o.allocUnsafe(Z>>>0),y=this.head,X=0;y;)f(y.data,p,X),X+=y.data.length,y=y.next;return p},v}(),r&&r.inspect&&r.inspect.custom&&(i.exports.prototype[r.inspect.custom]=function(){var v=r.inspect({length:this.length});return this.constructor.name+" "+v})},{"safe-buffer":494,util:185}],514:[function(t,i,a){var l=t("process-nextick-args");function o(v,b){var Z=this,p=this._readableState&&this._readableState.destroyed,y=this._writableState&&this._writableState.destroyed;return p||y?(b?b(v):v&&(!this._writableState||!this._writableState.errorEmitted)&&l.nextTick(f,this,v),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(v||null,function(X){!b&&X?(l.nextTick(f,Z,X),Z._writableState&&(Z._writableState.errorEmitted=!0)):b&&b(X)}),this)}function r(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function f(v,b){v.emit("error",b)}i.exports={destroy:o,undestroy:r}},{"process-nextick-args":466}],515:[function(t,i,a){arguments[4][490][0].apply(a,arguments)},{dup:490,events:367}],516:[function(t,i,a){i.exports=t("./readable").PassThrough},{"./readable":517}],517:[function(t,i,a){a=i.exports=t("./lib/_stream_readable.js"),a.Stream=a,a.Readable=a,a.Writable=t("./lib/_stream_writable.js"),a.Duplex=t("./lib/_stream_duplex.js"),a.Transform=t("./lib/_stream_transform.js"),a.PassThrough=t("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(t,i,a){i.exports=t("./readable").Transform},{"./readable":517}],519:[function(t,i,a){i.exports=t("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(t,i,a){var l=t("safe-buffer").Buffer,o=l.isEncoding||function(c){switch(c=""+c,c&&c.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function r(c){if(!c)return"utf8";for(var W;;)switch(c){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return c;default:if(W)return;c=(""+c).toLowerCase(),W=!0}}function f(c){var W=r(c);if(typeof W!="string"&&(l.isEncoding===o||!o(c)))throw new Error("Unknown encoding: "+c);return W||c}a.StringDecoder=v;function v(c){this.encoding=f(c);var W;switch(this.encoding){case"utf16le":this.text=N,this.end=G,W=4;break;case"utf8":this.fillLast=y,W=4;break;case"base64":this.text=d,this.end=u,W=3;break;default:this.write=s,this.end=h;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=l.allocUnsafe(W)}v.prototype.write=function(c){if(c.length===0)return"";var W,M;if(this.lastNeed){if(W=this.fillLast(c),W===void 0)return"";M=this.lastNeed,this.lastNeed=0}else M=0;return M>5===6?2:c>>4===14?3:c>>3===30?4:c>>6===2?-1:-2}function Z(c,W,M){var I=W.length-1;if(I=0?(w>0&&(c.lastNeed=w-1),w):--I=0?(w>0&&(c.lastNeed=w-2),w):--I=0?(w>0&&(w===2?w=0:c.lastNeed=w-3),w):0))}function p(c,W,M){if((W[0]&192)!==128)return c.lastNeed=0,"�";if(c.lastNeed>1&&W.length>1){if((W[1]&192)!==128)return c.lastNeed=1,"�";if(c.lastNeed>2&&W.length>2&&(W[2]&192)!==128)return c.lastNeed=2,"�"}}function y(c){var W=this.lastTotal-this.lastNeed,M=p(this,c);if(M!==void 0)return M;if(this.lastNeed<=c.length)return c.copy(this.lastChar,W,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);c.copy(this.lastChar,W,0,c.length),this.lastNeed-=c.length}function X(c,W){var M=Z(this,c,W);if(!this.lastNeed)return c.toString("utf8",W);this.lastTotal=M;var I=c.length-(M-this.lastNeed);return c.copy(this.lastChar,0,I),c.toString("utf8",W,I)}function m(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+"�":W}function N(c,W){if((c.length-W)%2===0){var M=c.toString("utf16le",W);if(M){var I=M.charCodeAt(M.length-1);if(I>=55296&&I<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=c[c.length-1],c.toString("utf16le",W,c.length-1)}function G(c){var W=c&&c.length?this.write(c):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return W+this.lastChar.toString("utf16le",0,M)}return W}function d(c,W){var M=(c.length-W)%3;return M===0?c.toString("base64",W):(this.lastNeed=3-M,this.lastTotal=3,M===1?this.lastChar[0]=c[c.length-1]:(this.lastChar[0]=c[c.length-2],this.lastChar[1]=c[c.length-1]),c.toString("base64",W,c.length-M))}function u(c){var W=c&&c.length?this.write(c):"";return this.lastNeed?W+this.lastChar.toString("base64",0,3-this.lastNeed):W}function s(c){return c.toString(this.encoding)}function h(c){return c&&c.length?this.write(c):""}},{"safe-buffer":494}],521:[function(t,i,a){(function(l,o){var r=t("process/browser.js").nextTick,f=Function.prototype.apply,v=Array.prototype.slice,b={},Z=0;a.setTimeout=function(){return new p(f.call(setTimeout,window,arguments),clearTimeout)},a.setInterval=function(){return new p(f.call(setInterval,window,arguments),clearInterval)},a.clearTimeout=a.clearInterval=function(y){y.close()};function p(y,X){this._id=y,this._clearFn=X}p.prototype.unref=p.prototype.ref=function(){},p.prototype.close=function(){this._clearFn.call(window,this._id)},a.enroll=function(y,X){clearTimeout(y._idleTimeoutId),y._idleTimeout=X},a.unenroll=function(y){clearTimeout(y._idleTimeoutId),y._idleTimeout=-1},a._unrefActive=a.active=function(y){clearTimeout(y._idleTimeoutId);var X=y._idleTimeout;X>=0&&(y._idleTimeoutId=setTimeout(function(){y._onTimeout&&y._onTimeout()},X))},a.setImmediate=typeof l=="function"?l:function(y){var X=Z++,m=arguments.length<2?!1:v.call(arguments,1);return b[X]=!0,r(function(){b[X]&&(m?y.apply(null,m):y.call(null),a.clearImmediate(X))}),X},a.clearImmediate=typeof o=="function"?o:function(y){delete b[y]}}).call(this,t("timers").setImmediate,t("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(t,i,a){(function(l){i.exports=o;function o(f,v){if(r("noDeprecation"))return f;var b=!1;function Z(){if(!b){if(r("throwDeprecation"))throw new Error(v);r("traceDeprecation")?console.trace(v):console.warn(v),b=!0}return f.apply(this,arguments)}return Z}function r(f){try{if(!l.localStorage)return!1}catch{return!1}var v=l.localStorage[f];return v==null?!1:String(v).toLowerCase()==="true"}}).call(this,typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(t,i,a){typeof Object.create=="function"?i.exports=function(o,r){o.super_=r,o.prototype=Object.create(r.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}})}:i.exports=function(o,r){o.super_=r;var f=function(){};f.prototype=r.prototype,o.prototype=new f,o.prototype.constructor=o}},{}],524:[function(t,i,a){function l(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l=function(f){return typeof f}:l=function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},l(o)}i.exports=function(r){return r&&l(r)==="object"&&typeof r.copy=="function"&&typeof r.fill=="function"&&typeof r.readUInt8=="function"}},{}],525:[function(t,i,a){(function(l,o){function r(k){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?r=function(O){return typeof O}:r=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},r(k)}var f=/%[sdj%]/g;a.format=function(k){if(!w(k)){for(var F=[],O=0;O=oe)return pe;switch(pe){case"%s":return String(Q[O++]);case"%d":return Number(Q[O++]);case"%j":try{return JSON.stringify(Q[O++])}catch{return"[Circular]"}default:return pe}}),he=Q[O];O=3&&(O.depth=arguments[2]),arguments.length>=4&&(O.colors=arguments[3]),c(F)?O.showHidden=F:F&&a._extend(O,F),x(O.showHidden)&&(O.showHidden=!1),x(O.depth)&&(O.depth=2),x(O.colors)&&(O.colors=!1),x(O.customInspect)&&(O.customInspect=!0),O.colors&&(O.stylize=p),m(O,k,O.depth)}a.inspect=Z,Z.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Z.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function p(k,F){var O=Z.styles[F];return O?"\x1B["+Z.colors[O][0]+"m"+k+"\x1B["+Z.colors[O][1]+"m":k}function y(k,F){return k}function X(k){var F={};return k.forEach(function(O,Q){F[O]=!0}),F}function m(k,F,O){if(k.customInspect&&F&&V(F.inspect)&&F.inspect!==a.inspect&&!(F.constructor&&F.constructor.prototype===F)){var Q=F.inspect(O,k);return w(Q)||(Q=m(k,Q,O)),Q}var oe=N(k,F);if(oe)return oe;var se=Object.keys(F),he=X(se);if(k.showHidden&&(se=Object.getOwnPropertyNames(F)),L(F)&&(se.indexOf("message")>=0||se.indexOf("description")>=0))return G(F);if(se.length===0){if(V(F)){var pe=F.name?": "+F.name:"";return k.stylize("[Function"+pe+"]","special")}if(R(F))return k.stylize(RegExp.prototype.toString.call(F),"regexp");if(S(F))return k.stylize(Date.prototype.toString.call(F),"date");if(L(F))return G(F)}var re="",_=!1,E=["{","}"];if(h(F)&&(_=!0,E=["[","]"]),V(F)){var $=F.name?": "+F.name:"";re=" [Function"+$+"]"}if(R(F)&&(re=" "+RegExp.prototype.toString.call(F)),S(F)&&(re=" "+Date.prototype.toUTCString.call(F)),L(F)&&(re=" "+G(F)),se.length===0&&(!_||F.length==0))return E[0]+re+E[1];if(O<0)return R(F)?k.stylize(RegExp.prototype.toString.call(F),"regexp"):k.stylize("[Object]","special");k.seen.push(F);var ae;return _?ae=d(k,F,O,he,se):ae=se.map(function(le){return u(k,F,O,he,le,_)}),k.seen.pop(),s(ae,re,E)}function N(k,F){if(x(F))return k.stylize("undefined","undefined");if(w(F)){var O="'"+JSON.stringify(F).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return k.stylize(O,"string")}if(I(F))return k.stylize(""+F,"number");if(c(F))return k.stylize(""+F,"boolean");if(W(F))return k.stylize("null","null")}function G(k){return"["+Error.prototype.toString.call(k)+"]"}function d(k,F,O,Q,oe){for(var se=[],he=0,pe=F.length;he-1&&(se?pe=pe.split(` `).map(function(_){return" "+_}).join(` `).substr(2):pe=` @@ -260,38 +260,38 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho `))):pe=k.stylize("[Circular]","special")),x(he)){if(se&&oe.match(/^\d+$/))return pe;he=JSON.stringify(""+oe),he.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(he=he.substr(1,he.length-2),he=k.stylize(he,"name")):(he=he.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),he=k.stylize(he,"string"))}return he+": "+pe}function s(k,F,O){var Q=k.reduce(function(oe,se){return se.indexOf(` `)>=0,oe+se.replace(/\u001b\[\d\d?m/g,"").length+1},0);return Q>60?O[0]+(F===""?"":F+` `)+" "+k.join(`, - `)+" "+O[1]:O[0]+F+" "+k.join(", ")+" "+O[1]}function h(k){return Array.isArray(k)}l.isArray=h;function c(k){return typeof k=="boolean"}l.isBoolean=c;function W(k){return k===null}l.isNull=W;function M(k){return k==null}l.isNullOrUndefined=M;function I(k){return typeof k=="number"}l.isNumber=I;function w(k){return typeof k=="string"}l.isString=w;function C(k){return r(k)==="symbol"}l.isSymbol=C;function x(k){return k===void 0}l.isUndefined=x;function R(k){return g(k)&&T(k)==="[object RegExp]"}l.isRegExp=R;function g(k){return r(k)==="object"&&k!==null}l.isObject=g;function S(k){return g(k)&&T(k)==="[object Date]"}l.isDate=S;function L(k){return g(k)&&(T(k)==="[object Error]"||k instanceof Error)}l.isError=L;function V(k){return typeof k=="function"}l.isFunction=V;function Y(k){return k===null||typeof k=="boolean"||typeof k=="number"||typeof k=="string"||r(k)==="symbol"||typeof k>"u"}l.isPrimitive=Y,l.isBuffer=t("./support/isBuffer");function T(k){return Object.prototype.toString.call(k)}function J(k){return k<10?"0"+k.toString(10):k.toString(10)}var U=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function K(){var k=new Date,F=[J(k.getHours()),J(k.getMinutes()),J(k.getSeconds())].join(":");return[k.getDate(),U[k.getMonth()],F].join(" ")}l.log=function(){console.log("%s - %s",K(),l.format.apply(l,arguments))},l.inherits=t("inherits"),l._extend=function(k,F){if(!F||!g(F))return k;for(var O=Object.keys(F),Q=O.length;Q--;)k[O[Q]]=F[O[Q]];return k};function H(k,F){return Object.prototype.hasOwnProperty.call(k,F)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),Object.defineProperty(l,"v1",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(l,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(l,"v4",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(l,"v5",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(l,"NIL",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(l,"version",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(l,"validate",{enumerable:!0,get:function(){return Z.default}}),Object.defineProperty(l,"stringify",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(l,"parse",{enumerable:!0,get:function(){return y.default}});var a=X(t("./v1.js")),o=X(t("./v3.js")),r=X(t("./v4.js")),f=X(t("./v5.js")),v=X(t("./nil.js")),b=X(t("./version.js")),Z=X(t("./validate.js")),p=X(t("./stringify.js")),y=X(t("./parse.js"));function X(m){return m&&m.__esModule?m:{default:m}}},{"./nil.js":528,"./parse.js":529,"./stringify.js":533,"./v1.js":534,"./v3.js":535,"./v4.js":537,"./v5.js":538,"./validate.js":539,"./version.js":540}],527:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;function a(d){if(typeof d=="string"){var u=unescape(encodeURIComponent(d));d=new Uint8Array(u.length);for(var s=0;s>5]>>>c%32&255,M=parseInt(h.charAt(W>>>4&15)+h.charAt(W&15),16);u.push(M)}return u}function r(d){return(d+64>>>9<<4)+14+1}function f(d,u){d[u>>5]|=128<>5]|=(d[h/8]&255)<>16)+(u>>16)+(s>>16);return h<<16|s&65535}function Z(d,u){return d<>>32-u}function p(d,u,s,h,c,W){return b(Z(b(b(u,d),b(h,W)),c),s)}function y(d,u,s,h,c,W,M){return p(u&s|~u&h,d,u,c,W,M)}function X(d,u,s,h,c,W,M){return p(u&h|s&~h,d,u,c,W,M)}function m(d,u,s,h,c,W,M){return p(u^s^h,d,u,c,W,M)}function N(d,u,s,h,c,W,M){return p(s^(u|~h),d,u,c,W,M)}var G=a;l.default=G},{}],528:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a="00000000-0000-0000-0000-000000000000";l.default=a},{}],529:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a=o(t("./validate.js"));function o(v){return v&&v.__esModule?v:{default:v}}function r(v){if(!(0,a.default)(v))throw TypeError("Invalid UUID");var b,Z=new Uint8Array(16);return Z[0]=(b=parseInt(v.slice(0,8),16))>>>24,Z[1]=b>>>16&255,Z[2]=b>>>8&255,Z[3]=b&255,Z[4]=(b=parseInt(v.slice(9,13),16))>>>8,Z[5]=b&255,Z[6]=(b=parseInt(v.slice(14,18),16))>>>8,Z[7]=b&255,Z[8]=(b=parseInt(v.slice(19,23),16))>>>8,Z[9]=b&255,Z[10]=(b=parseInt(v.slice(24,36),16))/1099511627776&255,Z[11]=b/4294967296&255,Z[12]=b>>>24&255,Z[13]=b>>>16&255,Z[14]=b>>>8&255,Z[15]=b&255,Z}var f=r;l.default=f},{"./validate.js":539}],530:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;l.default=a},{}],531:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=r;var a=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),o=new Uint8Array(16);function r(){if(!a)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(o)}},{}],532:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;function a(v,b,Z,p){switch(v){case 0:return b&Z^~b&p;case 1:return b^Z^p;case 2:return b&Z^b&p^Z&p;case 3:return b^Z^p}}function o(v,b){return v<>>32-b}function r(v){var b=[1518500249,1859775393,2400959708,3395469782],Z=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof v=="string"){var p=unescape(encodeURIComponent(v));v=[];for(var y=0;y>>0;x=C,C=w,w=o(I,30)>>>0,I=M,M=S}Z[0]=Z[0]+M>>>0,Z[1]=Z[1]+I>>>0,Z[2]=Z[2]+w>>>0,Z[3]=Z[3]+C>>>0,Z[4]=Z[4]+x>>>0}return[Z[0]>>24&255,Z[0]>>16&255,Z[0]>>8&255,Z[0]&255,Z[1]>>24&255,Z[1]>>16&255,Z[1]>>8&255,Z[1]&255,Z[2]>>24&255,Z[2]>>16&255,Z[2]>>8&255,Z[2]&255,Z[3]>>24&255,Z[3]>>16&255,Z[3]>>8&255,Z[3]&255,Z[4]>>24&255,Z[4]>>16&255,Z[4]>>8&255,Z[4]&255]}var f=r;l.default=f},{}],533:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a=o(t("./validate.js"));function o(Z){return Z&&Z.__esModule?Z:{default:Z}}for(var r=[],f=0;f<256;++f)r.push((f+256).toString(16).substr(1));function v(Z){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,y=(r[Z[p+0]]+r[Z[p+1]]+r[Z[p+2]]+r[Z[p+3]]+"-"+r[Z[p+4]]+r[Z[p+5]]+"-"+r[Z[p+6]]+r[Z[p+7]]+"-"+r[Z[p+8]]+r[Z[p+9]]+"-"+r[Z[p+10]]+r[Z[p+11]]+r[Z[p+12]]+r[Z[p+13]]+r[Z[p+14]]+r[Z[p+15]]).toLowerCase();if(!(0,a.default)(y))throw TypeError("Stringified UUID is invalid");return y}var b=v;l.default=b},{"./validate.js":539}],534:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a=r(t("./rng.js")),o=r(t("./stringify.js"));function r(X){return X&&X.__esModule?X:{default:X}}var f,v,b=0,Z=0;function p(X,m,N){var G=m&&N||0,d=m||new Array(16);X=X||{};var u=X.node||f,s=X.clockseq!==void 0?X.clockseq:v;if(u==null||s==null){var h=X.random||(X.rng||a.default)();u==null&&(u=f=[h[0]|1,h[1],h[2],h[3],h[4],h[5]]),s==null&&(s=v=(h[6]<<8|h[7])&16383)}var c=X.msecs!==void 0?X.msecs:Date.now(),W=X.nsecs!==void 0?X.nsecs:Z+1,M=c-b+(W-Z)/1e4;if(M<0&&X.clockseq===void 0&&(s=s+1&16383),(M<0||c>b)&&X.nsecs===void 0&&(W=0),W>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");b=c,Z=W,v=s,c+=122192928e5;var I=((c&268435455)*1e4+W)%4294967296;d[G++]=I>>>24&255,d[G++]=I>>>16&255,d[G++]=I>>>8&255,d[G++]=I&255;var w=c/4294967296*1e4&268435455;d[G++]=w>>>8&255,d[G++]=w&255,d[G++]=w>>>24&15|16,d[G++]=w>>>16&255,d[G++]=s>>>8|128,d[G++]=s&255;for(var C=0;C<6;++C)d[G+C]=u[C];return m||(0,o.default)(d)}var y=p;l.default=y},{"./rng.js":531,"./stringify.js":533}],535:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var a=r(t("./v35.js")),o=r(t("./md5.js"));function r(b){return b&&b.__esModule?b:{default:b}}var f=(0,a.default)("v3",48,o.default),v=f;l.default=v},{"./md5.js":527,"./v35.js":536}],536:[function(t,i,l){Object.defineProperty(l,"__esModule",{value:!0}),l.default=Z,l.URL=l.DNS=void 0;var a=r(t("./stringify.js")),o=r(t("./parse.js"));function r(p){return p&&p.__esModule?p:{default:p}}function f(p){p=unescape(encodeURIComponent(p));for(var y=[],X=0;X"u"}a.isPrimitive=Y,a.isBuffer=t("./support/isBuffer");function T(k){return Object.prototype.toString.call(k)}function J(k){return k<10?"0"+k.toString(10):k.toString(10)}var U=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function K(){var k=new Date,F=[J(k.getHours()),J(k.getMinutes()),J(k.getSeconds())].join(":");return[k.getDate(),U[k.getMonth()],F].join(" ")}a.log=function(){console.log("%s - %s",K(),a.format.apply(a,arguments))},a.inherits=t("inherits"),a._extend=function(k,F){if(!F||!g(F))return k;for(var O=Object.keys(F),Q=O.length;Q--;)k[O[Q]]=F[O[Q]];return k};function H(k,F){return Object.prototype.hasOwnProperty.call(k,F)}}).call(this,t("_process"),typeof vn<"u"?vn:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"v1",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(a,"v3",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(a,"v4",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(a,"v5",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(a,"NIL",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(a,"version",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(a,"validate",{enumerable:!0,get:function(){return Z.default}}),Object.defineProperty(a,"stringify",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(a,"parse",{enumerable:!0,get:function(){return y.default}});var l=X(t("./v1.js")),o=X(t("./v3.js")),r=X(t("./v4.js")),f=X(t("./v5.js")),v=X(t("./nil.js")),b=X(t("./version.js")),Z=X(t("./validate.js")),p=X(t("./stringify.js")),y=X(t("./parse.js"));function X(m){return m&&m.__esModule?m:{default:m}}},{"./nil.js":528,"./parse.js":529,"./stringify.js":533,"./v1.js":534,"./v3.js":535,"./v4.js":537,"./v5.js":538,"./validate.js":539,"./version.js":540}],527:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;function l(d){if(typeof d=="string"){var u=unescape(encodeURIComponent(d));d=new Uint8Array(u.length);for(var s=0;s>5]>>>c%32&255,M=parseInt(h.charAt(W>>>4&15)+h.charAt(W&15),16);u.push(M)}return u}function r(d){return(d+64>>>9<<4)+14+1}function f(d,u){d[u>>5]|=128<>5]|=(d[h/8]&255)<>16)+(u>>16)+(s>>16);return h<<16|s&65535}function Z(d,u){return d<>>32-u}function p(d,u,s,h,c,W){return b(Z(b(b(u,d),b(h,W)),c),s)}function y(d,u,s,h,c,W,M){return p(u&s|~u&h,d,u,c,W,M)}function X(d,u,s,h,c,W,M){return p(u&h|s&~h,d,u,c,W,M)}function m(d,u,s,h,c,W,M){return p(u^s^h,d,u,c,W,M)}function N(d,u,s,h,c,W,M){return p(s^(u|~h),d,u,c,W,M)}var G=l;a.default=G},{}],528:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l="00000000-0000-0000-0000-000000000000";a.default=l},{}],529:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l=o(t("./validate.js"));function o(v){return v&&v.__esModule?v:{default:v}}function r(v){if(!(0,l.default)(v))throw TypeError("Invalid UUID");var b,Z=new Uint8Array(16);return Z[0]=(b=parseInt(v.slice(0,8),16))>>>24,Z[1]=b>>>16&255,Z[2]=b>>>8&255,Z[3]=b&255,Z[4]=(b=parseInt(v.slice(9,13),16))>>>8,Z[5]=b&255,Z[6]=(b=parseInt(v.slice(14,18),16))>>>8,Z[7]=b&255,Z[8]=(b=parseInt(v.slice(19,23),16))>>>8,Z[9]=b&255,Z[10]=(b=parseInt(v.slice(24,36),16))/1099511627776&255,Z[11]=b/4294967296&255,Z[12]=b>>>24&255,Z[13]=b>>>16&255,Z[14]=b>>>8&255,Z[15]=b&255,Z}var f=r;a.default=f},{"./validate.js":539}],530:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;a.default=l},{}],531:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=r;var l=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),o=new Uint8Array(16);function r(){if(!l)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return l(o)}},{}],532:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;function l(v,b,Z,p){switch(v){case 0:return b&Z^~b&p;case 1:return b^Z^p;case 2:return b&Z^b&p^Z&p;case 3:return b^Z^p}}function o(v,b){return v<>>32-b}function r(v){var b=[1518500249,1859775393,2400959708,3395469782],Z=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof v=="string"){var p=unescape(encodeURIComponent(v));v=[];for(var y=0;y>>0;x=C,C=w,w=o(I,30)>>>0,I=M,M=S}Z[0]=Z[0]+M>>>0,Z[1]=Z[1]+I>>>0,Z[2]=Z[2]+w>>>0,Z[3]=Z[3]+C>>>0,Z[4]=Z[4]+x>>>0}return[Z[0]>>24&255,Z[0]>>16&255,Z[0]>>8&255,Z[0]&255,Z[1]>>24&255,Z[1]>>16&255,Z[1]>>8&255,Z[1]&255,Z[2]>>24&255,Z[2]>>16&255,Z[2]>>8&255,Z[2]&255,Z[3]>>24&255,Z[3]>>16&255,Z[3]>>8&255,Z[3]&255,Z[4]>>24&255,Z[4]>>16&255,Z[4]>>8&255,Z[4]&255]}var f=r;a.default=f},{}],533:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l=o(t("./validate.js"));function o(Z){return Z&&Z.__esModule?Z:{default:Z}}for(var r=[],f=0;f<256;++f)r.push((f+256).toString(16).substr(1));function v(Z){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,y=(r[Z[p+0]]+r[Z[p+1]]+r[Z[p+2]]+r[Z[p+3]]+"-"+r[Z[p+4]]+r[Z[p+5]]+"-"+r[Z[p+6]]+r[Z[p+7]]+"-"+r[Z[p+8]]+r[Z[p+9]]+"-"+r[Z[p+10]]+r[Z[p+11]]+r[Z[p+12]]+r[Z[p+13]]+r[Z[p+14]]+r[Z[p+15]]).toLowerCase();if(!(0,l.default)(y))throw TypeError("Stringified UUID is invalid");return y}var b=v;a.default=b},{"./validate.js":539}],534:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l=r(t("./rng.js")),o=r(t("./stringify.js"));function r(X){return X&&X.__esModule?X:{default:X}}var f,v,b=0,Z=0;function p(X,m,N){var G=m&&N||0,d=m||new Array(16);X=X||{};var u=X.node||f,s=X.clockseq!==void 0?X.clockseq:v;if(u==null||s==null){var h=X.random||(X.rng||l.default)();u==null&&(u=f=[h[0]|1,h[1],h[2],h[3],h[4],h[5]]),s==null&&(s=v=(h[6]<<8|h[7])&16383)}var c=X.msecs!==void 0?X.msecs:Date.now(),W=X.nsecs!==void 0?X.nsecs:Z+1,M=c-b+(W-Z)/1e4;if(M<0&&X.clockseq===void 0&&(s=s+1&16383),(M<0||c>b)&&X.nsecs===void 0&&(W=0),W>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");b=c,Z=W,v=s,c+=122192928e5;var I=((c&268435455)*1e4+W)%4294967296;d[G++]=I>>>24&255,d[G++]=I>>>16&255,d[G++]=I>>>8&255,d[G++]=I&255;var w=c/4294967296*1e4&268435455;d[G++]=w>>>8&255,d[G++]=w&255,d[G++]=w>>>24&15|16,d[G++]=w>>>16&255,d[G++]=s>>>8|128,d[G++]=s&255;for(var C=0;C<6;++C)d[G+C]=u[C];return m||(0,o.default)(d)}var y=p;a.default=y},{"./rng.js":531,"./stringify.js":533}],535:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=void 0;var l=r(t("./v35.js")),o=r(t("./md5.js"));function r(b){return b&&b.__esModule?b:{default:b}}var f=(0,l.default)("v3",48,o.default),v=f;a.default=v},{"./md5.js":527,"./v35.js":536}],536:[function(t,i,a){Object.defineProperty(a,"__esModule",{value:!0}),a.default=Z,a.URL=a.DNS=void 0;var l=r(t("./stringify.js")),o=r(t("./parse.js"));function r(p){return p&&p.__esModule?p:{default:p}}function f(p){p=unescape(encodeURIComponent(p));for(var y=[],X=0;X=f&&y<=55295||y===o||y===r||y===a||y>=57344&&y<=65533||y>=65536&&y<=1114111}l.isChar=v;function b(y){return y===f||y===o||y===r||y===a}l.isS=b;function Z(y){return y>=65&&y<=90||y>=97&&y<=122||y===58||y===95||y===8204||y===8205||y>=192&&y<=214||y>=216&&y<=246||y>=248&&y<=767||y>=880&&y<=893||y>=895&&y<=8191||y>=8304&&y<=8591||y>=11264&&y<=12271||y>=12289&&y<=55295||y>=63744&&y<=64975||y>=65008&&y<=65533||y>=65536&&y<=983039}l.isNameStartChar=Z;function p(y){return Z(y)||y>=48&&y<=57||y===45||y===46||y===183||y>=768&&y<=879||y>=8255&&y<=8256}l.isNameChar=p},{}],542:[function(t,i,l){/** + */Object.defineProperty(a,"__esModule",{value:!0}),a.CHAR=` +\r -퟿-�𐀀-􏿿`,a.S=` \r +`,a.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",a.NAME_CHAR="-"+a.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",a.CHAR_RE=new RegExp("^["+a.CHAR+"]$","u"),a.S_RE=new RegExp("^["+a.S+"]+$","u"),a.NAME_START_CHAR_RE=new RegExp("^["+a.NAME_START_CHAR+"]$","u"),a.NAME_CHAR_RE=new RegExp("^["+a.NAME_CHAR+"]$","u"),a.NAME_RE=new RegExp("^["+a.NAME_START_CHAR+"]["+a.NAME_CHAR+"]*$","u"),a.NMTOKEN_RE=new RegExp("^["+a.NAME_CHAR+"]+$","u");var l=9,o=10,r=13,f=32;a.S_LIST=[f,o,r,l];function v(y){return y>=f&&y<=55295||y===o||y===r||y===l||y>=57344&&y<=65533||y>=65536&&y<=1114111}a.isChar=v;function b(y){return y===f||y===o||y===r||y===l}a.isS=b;function Z(y){return y>=65&&y<=90||y>=97&&y<=122||y===58||y===95||y===8204||y===8205||y>=192&&y<=214||y>=216&&y<=246||y>=248&&y<=767||y>=880&&y<=893||y>=895&&y<=8191||y>=8304&&y<=8591||y>=11264&&y<=12271||y>=12289&&y<=55295||y>=63744&&y<=64975||y>=65008&&y<=65533||y>=65536&&y<=983039}a.isNameStartChar=Z;function p(y){return Z(y)||y>=48&&y<=57||y===45||y===46||y===183||y>=768&&y<=879||y>=8255&&y<=8256}a.isNameChar=p},{}],542:[function(t,i,a){/** * Character classes and associated utilities for the 2nd edition of XML 1.1. * * @author Louis-Dominique Dubeau * @license MIT * @copyright Louis-Dominique Dubeau - */Object.defineProperty(l,"__esModule",{value:!0}),l.CHAR="-퟿-�𐀀-􏿿",l.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",l.S=` \r -`,l.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",l.NAME_CHAR="-"+l.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",l.CHAR_RE=new RegExp("^["+l.CHAR+"]$","u"),l.RESTRICTED_CHAR_RE=new RegExp("^["+l.RESTRICTED_CHAR+"]$","u"),l.S_RE=new RegExp("^["+l.S+"]+$","u"),l.NAME_START_CHAR_RE=new RegExp("^["+l.NAME_START_CHAR+"]$","u"),l.NAME_CHAR_RE=new RegExp("^["+l.NAME_CHAR+"]$","u"),l.NAME_RE=new RegExp("^["+l.NAME_START_CHAR+"]["+l.NAME_CHAR+"]*$","u"),l.NMTOKEN_RE=new RegExp("^["+l.NAME_CHAR+"]+$","u");var a=9,o=10,r=13,f=32;l.S_LIST=[f,o,r,a];function v(m){return m>=1&&m<=55295||m>=57344&&m<=65533||m>=65536&&m<=1114111}l.isChar=v;function b(m){return m>=1&&m<=8||m===11||m===12||m>=14&&m<=31||m>=127&&m<=132||m>=134&&m<=159}l.isRestrictedChar=b;function Z(m){return m===9||m===10||m===13||m>31&&m<127||m===133||m>159&&m<=55295||m>=57344&&m<=65533||m>=65536&&m<=1114111}l.isCharAndNotRestricted=Z;function p(m){return m===f||m===o||m===r||m===a}l.isS=p;function y(m){return m>=65&&m<=90||m>=97&&m<=122||m===58||m===95||m===8204||m===8205||m>=192&&m<=214||m>=216&&m<=246||m>=248&&m<=767||m>=880&&m<=893||m>=895&&m<=8191||m>=8304&&m<=8591||m>=11264&&m<=12271||m>=12289&&m<=55295||m>=63744&&m<=64975||m>=65008&&m<=65533||m>=65536&&m<=983039}l.isNameStartChar=y;function X(m){return y(m)||m>=48&&m<=57||m===45||m===46||m===183||m>=768&&m<=879||m>=8255&&m<=8256}l.isNameChar=X},{}],543:[function(t,i,l){/** + */Object.defineProperty(a,"__esModule",{value:!0}),a.CHAR="-퟿-�𐀀-􏿿",a.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",a.S=` \r +`,a.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",a.NAME_CHAR="-"+a.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",a.CHAR_RE=new RegExp("^["+a.CHAR+"]$","u"),a.RESTRICTED_CHAR_RE=new RegExp("^["+a.RESTRICTED_CHAR+"]$","u"),a.S_RE=new RegExp("^["+a.S+"]+$","u"),a.NAME_START_CHAR_RE=new RegExp("^["+a.NAME_START_CHAR+"]$","u"),a.NAME_CHAR_RE=new RegExp("^["+a.NAME_CHAR+"]$","u"),a.NAME_RE=new RegExp("^["+a.NAME_START_CHAR+"]["+a.NAME_CHAR+"]*$","u"),a.NMTOKEN_RE=new RegExp("^["+a.NAME_CHAR+"]+$","u");var l=9,o=10,r=13,f=32;a.S_LIST=[f,o,r,l];function v(m){return m>=1&&m<=55295||m>=57344&&m<=65533||m>=65536&&m<=1114111}a.isChar=v;function b(m){return m>=1&&m<=8||m===11||m===12||m>=14&&m<=31||m>=127&&m<=132||m>=134&&m<=159}a.isRestrictedChar=b;function Z(m){return m===9||m===10||m===13||m>31&&m<127||m===133||m>159&&m<=55295||m>=57344&&m<=65533||m>=65536&&m<=1114111}a.isCharAndNotRestricted=Z;function p(m){return m===f||m===o||m===r||m===l}a.isS=p;function y(m){return m>=65&&m<=90||m>=97&&m<=122||m===58||m===95||m===8204||m===8205||m>=192&&m<=214||m>=216&&m<=246||m>=248&&m<=767||m>=880&&m<=893||m>=895&&m<=8191||m>=8304&&m<=8591||m>=11264&&m<=12271||m>=12289&&m<=55295||m>=63744&&m<=64975||m>=65008&&m<=65533||m>=65536&&m<=983039}a.isNameStartChar=y;function X(m){return y(m)||m>=48&&m<=57||m===45||m===46||m===183||m>=768&&m<=879||m>=8255&&m<=8256}a.isNameChar=X},{}],543:[function(t,i,a){/** * Character class utilities for XML NS 1.0 edition 3. * * @author Louis-Dominique Dubeau * @license MIT * @copyright Louis-Dominique Dubeau - */Object.defineProperty(l,"__esModule",{value:!0}),l.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",l.NC_NAME_CHAR="-"+l.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",l.NC_NAME_START_CHAR_RE=new RegExp("^["+l.NC_NAME_START_CHAR+"]$","u"),l.NC_NAME_CHAR_RE=new RegExp("^["+l.NC_NAME_CHAR+"]$","u"),l.NC_NAME_RE=new RegExp("^["+l.NC_NAME_START_CHAR+"]["+l.NC_NAME_CHAR+"]*$","u");function a(r){return r>=65&&r<=90||r===95||r>=97&&r<=122||r>=192&&r<=214||r>=216&&r<=246||r>=248&&r<=767||r>=880&&r<=893||r>=895&&r<=8191||r>=8204&&r<=8205||r>=8304&&r<=8591||r>=11264&&r<=12271||r>=12289&&r<=55295||r>=63744&&r<=64975||r>=65008&&r<=65533||r>=65536&&r<=983039}l.isNCNameStartChar=a;function o(r){return a(r)||r===45||r===46||r>=48&&r<=57||r===183||r>=768&&r<=879||r>=8255&&r<=8256}l.isNCNameChar=o},{}]},{},[15])(15)})})(KZe);function _S(n){return typeof n=="string"?n:n instanceof Blob?URL.createObjectURL(n):n instanceof ArrayBuffer?URL.createObjectURL(new Blob([n])):n instanceof Response?URL.createObjectURL(n.blob()):n}function HZe(n){return new Promise((e,t)=>{let i=document.createElement("script");i.src=n,i.onload=function(){e()},i.onerror=function(){t()},document.body.append(i)})}function b0(n){return b0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b0(n)}var PZe=/^\s+/,QZe=/\s+$/;function rn(n,e){if(n=n||"",e=e||{},n instanceof rn)return n;if(!(this instanceof rn))return new rn(n,e);var t=BZe(n);this._originalInput=n,this._r=t.r,this._g=t.g,this._b=t.b,this._a=t.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||t.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=t.ok}rn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},getLuminance:function(){var e=this.toRgb(),t,i,l,a,o,r;return t=e.r/255,i=e.g/255,l=e.b/255,t<=.03928?a=t/12.92:a=Math.pow((t+.055)/1.055,2.4),i<=.03928?o=i/12.92:o=Math.pow((i+.055)/1.055,2.4),l<=.03928?r=l/12.92:r=Math.pow((l+.055)/1.055,2.4),.2126*a+.7152*o+.0722*r},setAlpha:function(e){return this._a=$S(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=mL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=mL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),l=Math.round(e.v*100);return this._a==1?"hsv("+t+", "+i+"%, "+l+"%)":"hsva("+t+", "+i+"%, "+l+"%, "+this._roundA+")"},toHsl:function(){var e=bL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=bL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),l=Math.round(e.l*100);return this._a==1?"hsl("+t+", "+i+"%, "+l+"%)":"hsla("+t+", "+i+"%, "+l+"%, "+this._roundA+")"},toHex:function(e){return pL(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return qZe(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Ii(this._r,255)*100)+"%",g:Math.round(Ii(this._g,255)*100)+"%",b:Math.round(Ii(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%)":"rgba("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:d2e[pL(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+yL(this._r,this._g,this._b,this._a),i=t,l=this._gradientType?"GradientType = 1, ":"";if(e){var a=rn(e);i="#"+yL(a._r,a._g,a._b,a._a)}return"progid:DXImageTransform.Microsoft.gradient("+l+"startColorstr="+t+",endColorstr="+i+")"},toString:function(e){var t=!!e;e=e||this._format;var i=!1,l=this._a<1&&this._a>=0,a=!t&&l&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return a?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return rn(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(i2e,arguments)},brighten:function(){return this._applyModification(l2e,arguments)},darken:function(){return this._applyModification(a2e,arguments)},desaturate:function(){return this._applyModification(e2e,arguments)},saturate:function(){return this._applyModification(t2e,arguments)},greyscale:function(){return this._applyModification(n2e,arguments)},spin:function(){return this._applyModification(r2e,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(c2e,arguments)},complement:function(){return this._applyCombination(o2e,arguments)},monochromatic:function(){return this._applyCombination(u2e,arguments)},splitcomplement:function(){return this._applyCombination(s2e,arguments)},triad:function(){return this._applyCombination(ZL,[3])},tetrad:function(){return this._applyCombination(ZL,[4])}};rn.fromRatio=function(n,e){if(b0(n)=="object"){var t={};for(var i in n)n.hasOwnProperty(i)&&(i==="a"?t[i]=n[i]:t[i]=Jd(n[i]));n=t}return rn(n,e)};function BZe(n){var e={r:0,g:0,b:0},t=1,i=null,l=null,a=null,o=!1,r=!1;return typeof n=="string"&&(n=m2e(n)),b0(n)=="object"&&(yo(n.r)&&yo(n.g)&&yo(n.b)?(e=AZe(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):yo(n.h)&&yo(n.s)&&yo(n.v)?(i=Jd(n.s),l=Jd(n.v),e=$Ze(n.h,i,l),o=!0,r="hsv"):yo(n.h)&&yo(n.s)&&yo(n.l)&&(i=Jd(n.s),a=Jd(n.l),e=_Ze(n.h,i,a),o=!0,r="hsl"),n.hasOwnProperty("a")&&(t=n.a)),t=$S(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function AZe(n,e,t){return{r:Ii(n,255)*255,g:Ii(e,255)*255,b:Ii(t,255)*255}}function bL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),l=Math.min(n,e,t),a,o,r=(i+l)/2;if(i==l)a=o=0;else{var f=i-l;switch(o=r>.5?f/(2-i-l):f/(i+l),i){case n:a=(e-t)/f+(e1&&(Z-=1),Z<1/6?v+(b-v)*6*Z:Z<1/2?b:Z<2/3?v+(b-v)*(2/3-Z)*6:v}if(e===0)i=l=a=t;else{var r=t<.5?t*(1+e):t+e-t*e,f=2*t-r;i=o(f,r,n+1/3),l=o(f,r,n),a=o(f,r,n-1/3)}return{r:i*255,g:l*255,b:a*255}}function mL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),l=Math.min(n,e,t),a,o,r=i,f=i-l;if(o=i===0?0:f/i,i==l)a=0;else{switch(i){case n:a=(e-t)/f+(e>1)+720)%360;--e;)i.h=(i.h+l)%360,a.push(rn(i));return a}function u2e(n,e){e=e||6;for(var t=rn(n).toHsv(),i=t.h,l=t.s,a=t.v,o=[],r=1/e;e--;)o.push(rn({h:i,s:l,v:a})),a=(a+r)%1;return o}rn.mix=function(n,e,t){t=t===0?0:t||50;var i=rn(n).toRgb(),l=rn(e).toRgb(),a=t/100,o={r:(l.r-i.r)*a+i.r,g:(l.g-i.g)*a+i.g,b:(l.b-i.b)*a+i.b,a:(l.a-i.a)*a+i.a};return rn(o)};rn.readability=function(n,e){var t=rn(n),i=rn(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};rn.isReadable=function(n,e,t){var i=rn.readability(n,e),l,a;switch(a=!1,l=p2e(t),l.level+l.size){case"AAsmall":case"AAAlarge":a=i>=4.5;break;case"AAlarge":a=i>=3;break;case"AAAsmall":a=i>=7;break}return a};rn.mostReadable=function(n,e,t){var i=null,l=0,a,o,r,f;t=t||{},o=t.includeFallbackColors,r=t.level,f=t.size;for(var v=0;vl&&(l=a,i=rn(e[v]));return rn.isReadable(n,i,{level:r,size:f})||!o?i:(t.includeFallbackColors=!1,rn.mostReadable(n,["#fff","#000"],t))};var aW=rn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},d2e=rn.hexNames=h2e(aW);function h2e(n){var e={};for(var t in n)n.hasOwnProperty(t)&&(e[n[t]]=t);return e}function $S(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Ii(n,e){f2e(n)&&(n="100%");var t=b2e(n);return n=Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(n*e,10)/100),Math.abs(n-e)<1e-6?1:n%e/parseFloat(e)}function Rp(n){return Math.min(1,Math.max(0,n))}function Ca(n){return parseInt(n,16)}function f2e(n){return typeof n=="string"&&n.indexOf(".")!=-1&&parseFloat(n)===1}function b2e(n){return typeof n=="string"&&n.indexOf("%")!=-1}function Wr(n){return n.length==1?"0"+n:""+n}function Jd(n){return n<=1&&(n=n*100+"%"),n}function qS(n){return Math.round(parseFloat(n)*255).toString(16)}function vL(n){return Ca(n)/255}var pr=function(){var n="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+n+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",l="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+l),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+l),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+l),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function yo(n){return!!pr.CSS_UNIT.exec(n)}function m2e(n){n=n.replace(PZe,"").replace(QZe,"").toLowerCase();var e=!1;if(aW[n])n=aW[n],e=!0;else if(n=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=pr.rgb.exec(n))?{r:t[1],g:t[2],b:t[3]}:(t=pr.rgba.exec(n))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=pr.hsl.exec(n))?{h:t[1],s:t[2],l:t[3]}:(t=pr.hsla.exec(n))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=pr.hsv.exec(n))?{h:t[1],s:t[2],v:t[3]}:(t=pr.hsva.exec(n))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=pr.hex8.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),a:vL(t[4]),format:e?"name":"hex8"}:(t=pr.hex6.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),format:e?"name":"hex"}:(t=pr.hex4.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),a:vL(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=pr.hex3.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function p2e(n){var e,t;return n=n||{level:"AA",size:"small"},e=(n.level||"AA").toUpperCase(),t=(n.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var m0={},y2e={get exports(){return m0},set exports(n){m0=n}};/** + */Object.defineProperty(a,"__esModule",{value:!0}),a.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",a.NC_NAME_CHAR="-"+a.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",a.NC_NAME_START_CHAR_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]$","u"),a.NC_NAME_CHAR_RE=new RegExp("^["+a.NC_NAME_CHAR+"]$","u"),a.NC_NAME_RE=new RegExp("^["+a.NC_NAME_START_CHAR+"]["+a.NC_NAME_CHAR+"]*$","u");function l(r){return r>=65&&r<=90||r===95||r>=97&&r<=122||r>=192&&r<=214||r>=216&&r<=246||r>=248&&r<=767||r>=880&&r<=893||r>=895&&r<=8191||r>=8204&&r<=8205||r>=8304&&r<=8591||r>=11264&&r<=12271||r>=12289&&r<=55295||r>=63744&&r<=64975||r>=65008&&r<=65533||r>=65536&&r<=983039}a.isNCNameStartChar=l;function o(r){return l(r)||r===45||r===46||r>=48&&r<=57||r===183||r>=768&&r<=879||r>=8255&&r<=8256}a.isNCNameChar=o},{}]},{},[15])(15)})})(BZe);function qS(n){return typeof n=="string"?n:n instanceof Blob?URL.createObjectURL(n):n instanceof ArrayBuffer?URL.createObjectURL(new Blob([n])):n instanceof Response?URL.createObjectURL(n.blob()):n}function AZe(n){return new Promise((e,t)=>{let i=document.createElement("script");i.src=n,i.onload=function(){e()},i.onerror=function(){t()},document.body.append(i)})}function m0(n){return m0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m0(n)}var _Ze=/^\s+/,$Ze=/\s+$/;function rn(n,e){if(n=n||"",e=e||{},n instanceof rn)return n;if(!(this instanceof rn))return new rn(n,e);var t=qZe(n);this._originalInput=n,this._r=t.r,this._g=t.g,this._b=t.b,this._a=t.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||t.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=t.ok}rn.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},getLuminance:function(){var e=this.toRgb(),t,i,a,l,o,r;return t=e.r/255,i=e.g/255,a=e.b/255,t<=.03928?l=t/12.92:l=Math.pow((t+.055)/1.055,2.4),i<=.03928?o=i/12.92:o=Math.pow((i+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),.2126*l+.7152*o+.0722*r},setAlpha:function(e){return this._a=ez(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=yL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=yL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.v*100);return this._a==1?"hsv("+t+", "+i+"%, "+a+"%)":"hsva("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHsl:function(){var e=pL(this._r,this._g,this._b);return{h:e.h*360,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=pL(this._r,this._g,this._b),t=Math.round(e.h*360),i=Math.round(e.s*100),a=Math.round(e.l*100);return this._a==1?"hsl("+t+", "+i+"%, "+a+"%)":"hsla("+t+", "+i+"%, "+a+"%, "+this._roundA+")"},toHex:function(e){return ZL(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return i2e(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(Ii(this._r,255)*100)+"%",g:Math.round(Ii(this._g,255)*100)+"%",b:Math.round(Ii(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%)":"rgba("+Math.round(Ii(this._r,255)*100)+"%, "+Math.round(Ii(this._g,255)*100)+"%, "+Math.round(Ii(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:m2e[ZL(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+vL(this._r,this._g,this._b,this._a),i=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var l=rn(e);i="#"+vL(l._r,l._g,l._b,l._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+i+")"},toString:function(e){var t=!!e;e=e||this._format;var i=!1,a=this._a<1&&this._a>=0,l=!t&&a&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return l?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(i=this.toRgbString()),e==="prgb"&&(i=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(i=this.toHexString()),e==="hex3"&&(i=this.toHexString(!0)),e==="hex4"&&(i=this.toHex8String(!0)),e==="hex8"&&(i=this.toHex8String()),e==="name"&&(i=this.toName()),e==="hsl"&&(i=this.toHslString()),e==="hsv"&&(i=this.toHsvString()),i||this.toHexString())},clone:function(){return rn(this.toString())},_applyModification:function(e,t){var i=e.apply(null,[this].concat([].slice.call(t)));return this._r=i._r,this._g=i._g,this._b=i._b,this.setAlpha(i._a),this},lighten:function(){return this._applyModification(o2e,arguments)},brighten:function(){return this._applyModification(s2e,arguments)},darken:function(){return this._applyModification(c2e,arguments)},desaturate:function(){return this._applyModification(l2e,arguments)},saturate:function(){return this._applyModification(a2e,arguments)},greyscale:function(){return this._applyModification(r2e,arguments)},spin:function(){return this._applyModification(u2e,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(f2e,arguments)},complement:function(){return this._applyCombination(d2e,arguments)},monochromatic:function(){return this._applyCombination(b2e,arguments)},splitcomplement:function(){return this._applyCombination(h2e,arguments)},triad:function(){return this._applyCombination(WL,[3])},tetrad:function(){return this._applyCombination(WL,[4])}};rn.fromRatio=function(n,e){if(m0(n)=="object"){var t={};for(var i in n)n.hasOwnProperty(i)&&(i==="a"?t[i]=n[i]:t[i]=Jd(n[i]));n=t}return rn(n,e)};function qZe(n){var e={r:0,g:0,b:0},t=1,i=null,a=null,l=null,o=!1,r=!1;return typeof n=="string"&&(n=v2e(n)),m0(n)=="object"&&(yo(n.r)&&yo(n.g)&&yo(n.b)?(e=e2e(n.r,n.g,n.b),o=!0,r=String(n.r).substr(-1)==="%"?"prgb":"rgb"):yo(n.h)&&yo(n.s)&&yo(n.v)?(i=Jd(n.s),a=Jd(n.v),e=n2e(n.h,i,a),o=!0,r="hsv"):yo(n.h)&&yo(n.s)&&yo(n.l)&&(i=Jd(n.s),l=Jd(n.l),e=t2e(n.h,i,l),o=!0,r="hsl"),n.hasOwnProperty("a")&&(t=n.a)),t=ez(t),{ok:o,format:n.format||r,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function e2e(n,e,t){return{r:Ii(n,255)*255,g:Ii(e,255)*255,b:Ii(t,255)*255}}function pL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=(i+a)/2;if(i==a)l=o=0;else{var f=i-a;switch(o=r>.5?f/(2-i-a):f/(i+a),i){case n:l=(e-t)/f+(e1&&(Z-=1),Z<1/6?v+(b-v)*6*Z:Z<1/2?b:Z<2/3?v+(b-v)*(2/3-Z)*6:v}if(e===0)i=a=l=t;else{var r=t<.5?t*(1+e):t+e-t*e,f=2*t-r;i=o(f,r,n+1/3),a=o(f,r,n),l=o(f,r,n-1/3)}return{r:i*255,g:a*255,b:l*255}}function yL(n,e,t){n=Ii(n,255),e=Ii(e,255),t=Ii(t,255);var i=Math.max(n,e,t),a=Math.min(n,e,t),l,o,r=i,f=i-a;if(o=i===0?0:f/i,i==a)l=0;else{switch(i){case n:l=(e-t)/f+(e>1)+720)%360;--e;)i.h=(i.h+a)%360,l.push(rn(i));return l}function b2e(n,e){e=e||6;for(var t=rn(n).toHsv(),i=t.h,a=t.s,l=t.v,o=[],r=1/e;e--;)o.push(rn({h:i,s:a,v:l})),l=(l+r)%1;return o}rn.mix=function(n,e,t){t=t===0?0:t||50;var i=rn(n).toRgb(),a=rn(e).toRgb(),l=t/100,o={r:(a.r-i.r)*l+i.r,g:(a.g-i.g)*l+i.g,b:(a.b-i.b)*l+i.b,a:(a.a-i.a)*l+i.a};return rn(o)};rn.readability=function(n,e){var t=rn(n),i=rn(e);return(Math.max(t.getLuminance(),i.getLuminance())+.05)/(Math.min(t.getLuminance(),i.getLuminance())+.05)};rn.isReadable=function(n,e,t){var i=rn.readability(n,e),a,l;switch(l=!1,a=W2e(t),a.level+a.size){case"AAsmall":case"AAAlarge":l=i>=4.5;break;case"AAlarge":l=i>=3;break;case"AAAsmall":l=i>=7;break}return l};rn.mostReadable=function(n,e,t){var i=null,a=0,l,o,r,f;t=t||{},o=t.includeFallbackColors,r=t.level,f=t.size;for(var v=0;va&&(a=l,i=rn(e[v]));return rn.isReadable(n,i,{level:r,size:f})||!o?i:(t.includeFallbackColors=!1,rn.mostReadable(n,["#fff","#000"],t))};var oW=rn.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},m2e=rn.hexNames=p2e(oW);function p2e(n){var e={};for(var t in n)n.hasOwnProperty(t)&&(e[n[t]]=t);return e}function ez(n){return n=parseFloat(n),(isNaN(n)||n<0||n>1)&&(n=1),n}function Ii(n,e){y2e(n)&&(n="100%");var t=Z2e(n);return n=Math.min(e,Math.max(0,parseFloat(n))),t&&(n=parseInt(n*e,10)/100),Math.abs(n-e)<1e-6?1:n%e/parseFloat(e)}function Rp(n){return Math.min(1,Math.max(0,n))}function Ca(n){return parseInt(n,16)}function y2e(n){return typeof n=="string"&&n.indexOf(".")!=-1&&parseFloat(n)===1}function Z2e(n){return typeof n=="string"&&n.indexOf("%")!=-1}function Wr(n){return n.length==1?"0"+n:""+n}function Jd(n){return n<=1&&(n=n*100+"%"),n}function tz(n){return Math.round(parseFloat(n)*255).toString(16)}function GL(n){return Ca(n)/255}var pr=function(){var n="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+n+")",i="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",a="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function yo(n){return!!pr.CSS_UNIT.exec(n)}function v2e(n){n=n.replace(_Ze,"").replace($Ze,"").toLowerCase();var e=!1;if(oW[n])n=oW[n],e=!0;else if(n=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=pr.rgb.exec(n))?{r:t[1],g:t[2],b:t[3]}:(t=pr.rgba.exec(n))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=pr.hsl.exec(n))?{h:t[1],s:t[2],l:t[3]}:(t=pr.hsla.exec(n))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=pr.hsv.exec(n))?{h:t[1],s:t[2],v:t[3]}:(t=pr.hsva.exec(n))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=pr.hex8.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),a:GL(t[4]),format:e?"name":"hex8"}:(t=pr.hex6.exec(n))?{r:Ca(t[1]),g:Ca(t[2]),b:Ca(t[3]),format:e?"name":"hex"}:(t=pr.hex4.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),a:GL(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=pr.hex3.exec(n))?{r:Ca(t[1]+""+t[1]),g:Ca(t[2]+""+t[2]),b:Ca(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function W2e(n){var e,t;return n=n||{level:"AA",size:"small"},e=(n.level||"AA").toUpperCase(),t=(n.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}var Lh={},G2e={get exports(){return Lh},set exports(n){Lh=n}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(n,e){(function(){var t,i="4.17.21",l=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",r="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",v=500,b="__lodash_placeholder__",Z=1,p=2,y=4,X=1,m=2,N=1,G=2,d=4,u=8,s=16,h=32,c=64,W=128,M=256,I=512,w=30,C="...",x=800,R=16,g=1,S=2,L=3,V=1/0,Y=9007199254740991,T=17976931348623157e292,J=0/0,U=4294967295,K=U-1,H=U>>>1,k=[["ary",W],["bind",N],["bindKey",G],["curry",u],["curryRight",s],["flip",I],["partial",h],["partialRight",c],["rearg",M]],F="[object Arguments]",O="[object Array]",Q="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",he="[object DOMException]",pe="[object Error]",re="[object Function]",_="[object GeneratorFunction]",E="[object Map]",$="[object Number]",ae="[object Null]",le="[object Object]",ee="[object Promise]",te="[object Proxy]",be="[object RegExp]",ne="[object Set]",B="[object String]",q="[object Symbol]",ue="[object Undefined]",ve="[object WeakMap]",Ge="[object WeakSet]",Je="[object ArrayBuffer]",xe="[object DataView]",ke="[object Float32Array]",Pe="[object Float64Array]",Be="[object Int8Array]",Te="[object Int16Array]",we="[object Int32Array]",Se="[object Uint8Array]",De="[object Uint8ClampedArray]",me="[object Uint16Array]",Ve="[object Uint32Array]",Me=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,Ze=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ce=/&(?:amp|lt|gt|quot|#39);/g,ye=/[&<>"']/g,Ue=RegExp(Ce.source),qe=RegExp(ye.source),ie=/<%-([\s\S]+?)%>/g,Oe=/<%([\s\S]+?)%>/g,Ke=/<%=([\s\S]+?)%>/g,Xe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Re=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ct=/[\\^$.*+?()[\]{}|]/g,lt=RegExp(ct.source),ot=/^\s+/,wt=/\s/,Mt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,xt=/\{\n\/\* \[wrapped with (.+)\] \*/,Gt=/,? & /,Zt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Tt=/[()=,{}\[\]\/\s]/,Ct=/\\(\\)?/g,St=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Pt=/\w*$/,Ut=/^[-+]0x[0-9a-f]+$/i,kt=/^0b[01]+$/i,en=/^\[object .+?Constructor\]$/,nn=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,Ln=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,Gi=/['\n\r\u2028\u2029\\]/g,Pi="\\ud800-\\udfff",Gl="\\u0300-\\u036f",Fn="\\ufe20-\\ufe2f",cl="\\u20d0-\\u20ff",ki=Gl+Fn+cl,tl="\\u2700-\\u27bf",nl="a-z\\xdf-\\xf6\\xf8-\\xff",Dt="\\xac\\xb1\\xd7\\xf7",ht="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Fe="\\u2000-\\u206f",tt=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nt="A-Z\\xc0-\\xd6\\xd8-\\xde",Vt="\\ufe0e\\ufe0f",Bt=Dt+ht+Fe+tt,Nn="['’]",oi="["+Pi+"]",gi="["+Bt+"]",Ll="["+ki+"]",il="\\d+",Lr="["+tl+"]",ul="["+nl+"]",Ol="[^"+Pi+Bt+il+tl+nl+nt+"]",jl="\\ud83c[\\udffb-\\udfff]",_t="(?:"+Ll+"|"+jl+")",Rt="[^"+Pi+"]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",$t="["+nt+"]",si="\\u200d",Ul="(?:"+ul+"|"+Ol+")",Xl="(?:"+$t+"|"+Ol+")",El="(?:"+Nn+"(?:d|ll|m|re|s|t|ve))?",ll="(?:"+Nn+"(?:D|LL|M|RE|S|T|VE))?",Na=_t+"?",Rl="["+Vt+"]?",dl="(?:"+si+"(?:"+[Rt,zt,Ht].join("|")+")"+Rl+Na+")*",Tl="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",hl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Nl=Rl+Na+dl,fl="(?:"+[Lr,zt,Ht].join("|")+")"+Nl,eo="(?:"+[Rt+Ll+"?",Ll,zt,Ht,oi].join("|")+")",Ml=RegExp(Nn,"g"),xl=RegExp(Ll,"g"),Rr=RegExp(jl+"(?="+jl+")|"+eo+Nl,"g"),ra=RegExp([$t+"?"+ul+"+"+El+"(?="+[gi,$t,"$"].join("|")+")",Xl+"+"+ll+"(?="+[gi,$t+Ul,"$"].join("|")+")",$t+"?"+Ul+"+"+El,$t+"+"+ll,hl,Tl,il,fl].join("|"),"g"),Vs=RegExp("["+si+Pi+ki+Vt+"]"),Kl=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,oa=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],to=-1,$n={};$n[ke]=$n[Pe]=$n[Be]=$n[Te]=$n[we]=$n[Se]=$n[De]=$n[me]=$n[Ve]=!0,$n[F]=$n[O]=$n[Je]=$n[oe]=$n[xe]=$n[se]=$n[pe]=$n[re]=$n[E]=$n[$]=$n[le]=$n[be]=$n[ne]=$n[B]=$n[ve]=!1;var Un={};Un[F]=Un[O]=Un[Je]=Un[xe]=Un[oe]=Un[se]=Un[ke]=Un[Pe]=Un[Be]=Un[Te]=Un[we]=Un[E]=Un[$]=Un[le]=Un[be]=Un[ne]=Un[B]=Un[q]=Un[Se]=Un[De]=Un[me]=Un[Ve]=!0,Un[pe]=Un[re]=Un[ve]=!1;var sr={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Fo={"&":"&","<":"<",">":">",'"':""","'":"'"},Jo={"&":"&","<":"<",">":">",""":'"',"'":"'"},Do={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ja=parseFloat,je=parseInt,et=typeof vn=="object"&&vn&&vn.Object===Object&&vn,mt=typeof self=="object"&&self&&self.Object===Object&&self,Lt=et||mt||Function("return this")(),Jn=e&&!e.nodeType&&e,sn=Jn&&!0&&n&&!n.nodeType&&n,ii=sn&&sn.exports===Jn,_n=ii&&et.process,Dn=function(){try{var it=sn&&sn.require&&sn.require("util").types;return it||_n&&_n.binding&&_n.binding("util")}catch{}}(),ni=Dn&&Dn.isArrayBuffer,Fi=Dn&&Dn.isDate,fi=Dn&&Dn.isMap,Qn=Dn&&Dn.isRegExp,qn=Dn&&Dn.isSet,Ti=Dn&&Dn.isTypedArray;function yi(it,pt,dt){switch(dt.length){case 0:return it.call(pt);case 1:return it.call(pt,dt[0]);case 2:return it.call(pt,dt[0],dt[1]);case 3:return it.call(pt,dt[0],dt[1],dt[2])}return it.apply(pt,dt)}function Hl(it,pt,dt,Qt){for(var Mn=-1,ai=it==null?0:it.length;++Mn-1}function ge(it,pt,dt){for(var Qt=-1,Mn=it==null?0:it.length;++Qt-1;);return dt}function lN(it,pt){for(var dt=it.length;dt--&&Di(pt,it[dt],0)>-1;);return dt}function tz(it,pt){for(var dt=it.length,Qt=0;dt--;)it[dt]===pt&&++Qt;return Qt}var nz=Ma(sr),iz=Ma(Fo);function lz(it){return"\\"+Do[it]}function az(it,pt){return it==null?t:it[pt]}function xc(it){return Vs.test(it)}function rz(it){return Kl.test(it)}function oz(it){for(var pt,dt=[];!(pt=it.next()).done;)dt.push(pt.value);return dt}function xp(it){var pt=-1,dt=Array(it.size);return it.forEach(function(Qt,Mn){dt[++pt]=[Mn,Qt]}),dt}function aN(it,pt){return function(dt){return it(pt(dt))}}function Uo(it,pt){for(var dt=-1,Qt=it.length,Mn=0,ai=[];++dt-1}function Qz(z,j){var A=this.__data__,fe=mf(A,z);return fe<0?(++this.size,A.push([z,j])):A[fe][1]=j,this}io.prototype.clear=Ez,io.prototype.delete=Kz,io.prototype.get=Hz,io.prototype.has=Pz,io.prototype.set=Qz;function lo(z){var j=-1,A=z==null?0:z.length;for(this.clear();++j=j?z:j)),z}function Ha(z,j,A,fe,Ye,ze){var Qe,$e=j&Z,at=j&p,vt=j&y;if(A&&(Qe=Ye?A(z,fe,Ye,ze):A(z)),Qe!==t)return Qe;if(!Vi(z))return z;var Wt=Vn(z);if(Wt){if(Qe=$k(z),!$e)return sa(z,Qe)}else{var Xt=Sl(z),Jt=Xt==re||Xt==_;if(Bo(z))return ON(z,$e);if(Xt==le||Xt==F||Jt&&!Ye){if(Qe=at||Jt?{}:rM(z),!$e)return at?Ok(z,uk(Qe,z)):Dk(z,yN(Qe,z))}else{if(!Un[Xt])return Ye?z:{};Qe=qk(z,Xt,$e)}}ze||(ze=new ur);var tn=ze.get(z);if(tn)return tn;ze.set(z,Qe),SM(z)?z.forEach(function(Zn){Qe.add(Ha(Zn,j,A,Zn,z,ze))}):xM(z)&&z.forEach(function(Zn,On){Qe.set(On,Ha(Zn,j,A,On,z,ze))});var yn=vt?at?ay:ly:at?ua:bl,Cn=Wt?t:yn(z);return Zi(Cn||z,function(Zn,On){Cn&&(On=Zn,Zn=z[On]),rd(Qe,On,Ha(Zn,j,A,On,z,ze))}),Qe}function dk(z){var j=bl(z);return function(A){return ZN(A,z,j)}}function ZN(z,j,A){var fe=A.length;if(z==null)return!fe;for(z=bi(z);fe--;){var Ye=A[fe],ze=j[Ye],Qe=z[Ye];if(Qe===t&&!(Ye in z)||!ze(Qe))return!1}return!0}function vN(z,j,A){if(typeof z!="function")throw new Ea(o);return fd(function(){z.apply(t,A)},j)}function od(z,j,A,fe){var Ye=-1,ze=Tr,Qe=!0,$e=z.length,at=[],vt=j.length;if(!$e)return at;A&&(j=Ee(j,Ia(A))),fe?(ze=ge,Qe=!1):j.length>=l&&(ze=ed,Qe=!1,j=new Ts(j));e:for(;++Ye<$e;){var Wt=z[Ye],Xt=A==null?Wt:A(Wt);if(Wt=fe||Wt!==0?Wt:0,Qe&&Xt===Xt){for(var Jt=vt;Jt--;)if(j[Jt]===Xt)continue e;at.push(Wt)}else ze(j,Xt,fe)||at.push(Wt)}return at}var Ko=HN(Cr),WN=HN(Op,!0);function hk(z,j){var A=!0;return Ko(z,function(fe,Ye,ze){return A=!!j(fe,Ye,ze),A}),A}function pf(z,j,A){for(var fe=-1,Ye=z.length;++feYe?0:Ye+A),fe=fe===t||fe>Ye?Ye:xn(fe),fe<0&&(fe+=Ye),fe=A>fe?0:kM(fe);A0&&A($e)?j>1?Il($e,j-1,A,fe,Ye):st(Ye,$e):fe||(Ye[Ye.length]=$e)}return Ye}var Dp=PN(),XN=PN(!0);function Cr(z,j){return z&&Dp(z,j,bl)}function Op(z,j){return z&&XN(z,j,bl)}function yf(z,j){return al(j,function(A){return co(z[A])})}function Cs(z,j){j=Po(j,z);for(var A=0,fe=j.length;z!=null&&Aj}function bk(z,j){return z!=null&&ci.call(z,j)}function mk(z,j){return z!=null&&j in bi(z)}function pk(z,j,A){return z>=Cl(j,A)&&z=120&&Wt.length>=120)?new Ts(Qe&&Wt):t}Wt=z[0];var Xt=-1,Jt=$e[0];e:for(;++Xt-1;)$e!==z&&sf.call($e,at,1),sf.call(z,at,1);return z}function xN(z,j){for(var A=z?j.length:0,fe=A-1;A--;){var Ye=j[A];if(A==fe||Ye!==ze){var ze=Ye;so(Ye)?sf.call(z,Ye,1):_p(z,Ye)}}return z}function Qp(z,j){return z+df(fN()*(j-z+1))}function Vk(z,j,A,fe){for(var Ye=-1,ze=ol(uf((j-z)/(A||1)),0),Qe=dt(ze);ze--;)Qe[fe?ze:++Ye]=z,z+=A;return Qe}function Bp(z,j){var A="";if(!z||j<1||j>Y)return A;do j%2&&(A+=z),j=df(j/2),j&&(z+=z);while(j);return A}function kn(z,j){return hy(cM(z,j,da),z+"")}function Lk(z){return pN(Ec(z))}function Rk(z,j){var A=Ec(z);return gf(A,xs(j,0,A.length))}function ud(z,j,A,fe){if(!Vi(z))return z;j=Po(j,z);for(var Ye=-1,ze=j.length,Qe=ze-1,$e=z;$e!=null&&++YeYe?0:Ye+j),A=A>Ye?Ye:A,A<0&&(A+=Ye),Ye=j>A?0:A-j>>>0,j>>>=0;for(var ze=dt(Ye);++fe>>1,Qe=z[ze];Qe!==null&&!wa(Qe)&&(A?Qe<=j:Qe=l){var vt=j?null:Kk(z);if(vt)return qh(vt);Qe=!1,Ye=ed,at=new Ts}else at=j?[]:$e;e:for(;++fe=fe?z:Pa(z,j,A)}var DN=Xz||function(z){return Lt.clearTimeout(z)};function ON(z,j){if(j)return z.slice();var A=z.length,fe=sN?sN(A):new z.constructor(A);return z.copy(fe),fe}function ty(z){var j=new z.constructor(z.byteLength);return new rf(j).set(new rf(z)),j}function zk(z,j){var A=j?ty(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.byteLength)}function kk(z){var j=new z.constructor(z.source,Pt.exec(z));return j.lastIndex=z.lastIndex,j}function Fk(z){return ad?bi(ad.call(z)):{}}function jN(z,j){var A=j?ty(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.length)}function UN(z,j){if(z!==j){var A=z!==t,fe=z===null,Ye=z===z,ze=wa(z),Qe=j!==t,$e=j===null,at=j===j,vt=wa(j);if(!$e&&!vt&&!ze&&z>j||ze&&Qe&&at&&!$e&&!vt||fe&&Qe&&at||!A&&at||!Ye)return 1;if(!fe&&!ze&&!vt&&z=$e)return at;var vt=A[fe];return at*(vt=="desc"?-1:1)}}return z.index-j.index}function EN(z,j,A,fe){for(var Ye=-1,ze=z.length,Qe=A.length,$e=-1,at=j.length,vt=ol(ze-Qe,0),Wt=dt(at+vt),Xt=!fe;++$e1?A[Ye-1]:t,Qe=Ye>2?A[2]:t;for(ze=z.length>3&&typeof ze=="function"?(Ye--,ze):t,Qe&&_l(A[0],A[1],Qe)&&(ze=Ye<3?t:ze,Ye=1),j=bi(j);++fe-1?Ye[ze?j[Qe]:Qe]:t}}function AN(z){return oo(function(j){var A=j.length,fe=A,Ye=Ka.prototype.thru;for(z&&j.reverse();fe--;){var ze=j[fe];if(typeof ze!="function")throw new Ea(o);if(Ye&&!Qe&&Yf(ze)=="wrapper")var Qe=new Ka([],!0)}for(fe=Qe?fe:A;++fe1&&Bn.reverse(),Wt&&at$e))return!1;var vt=ze.get(z),Wt=ze.get(j);if(vt&&Wt)return vt==j&&Wt==z;var Xt=-1,Jt=!0,tn=A&m?new Ts:t;for(ze.set(z,j),ze.set(j,z);++Xt<$e;){var yn=z[Xt],Cn=j[Xt];if(fe)var Zn=Qe?fe(Cn,yn,Xt,j,z,ze):fe(yn,Cn,Xt,z,j,ze);if(Zn!==t){if(Zn)continue;Jt=!1;break}if(tn){if(!Et(j,function(On,Bn){if(!ed(tn,Bn)&&(yn===On||Ye(yn,On,A,fe,ze)))return tn.push(Bn)})){Jt=!1;break}}else if(!(yn===Cn||Ye(yn,Cn,A,fe,ze))){Jt=!1;break}}return ze.delete(z),ze.delete(j),Jt}function Pk(z,j,A,fe,Ye,ze,Qe){switch(A){case xe:if(z.byteLength!=j.byteLength||z.byteOffset!=j.byteOffset)return!1;z=z.buffer,j=j.buffer;case Je:return!(z.byteLength!=j.byteLength||!ze(new rf(z),new rf(j)));case oe:case se:case $:return dr(+z,+j);case pe:return z.name==j.name&&z.message==j.message;case be:case B:return z==j+"";case E:var $e=xp;case ne:var at=fe&X;if($e||($e=qh),z.size!=j.size&&!at)return!1;var vt=Qe.get(z);if(vt)return vt==j;fe|=m,Qe.set(z,j);var Wt=iM($e(z),$e(j),fe,Ye,ze,Qe);return Qe.delete(z),Wt;case q:if(ad)return ad.call(z)==ad.call(j)}return!1}function Qk(z,j,A,fe,Ye,ze){var Qe=A&X,$e=ly(z),at=$e.length,vt=ly(j),Wt=vt.length;if(at!=Wt&&!Qe)return!1;for(var Xt=at;Xt--;){var Jt=$e[Xt];if(!(Qe?Jt in j:ci.call(j,Jt)))return!1}var tn=ze.get(z),yn=ze.get(j);if(tn&&yn)return tn==j&&yn==z;var Cn=!0;ze.set(z,j),ze.set(j,z);for(var Zn=Qe;++Xt1?"& ":"")+j[fe],j=j.join(A>2?", ":" "),z.replace(Mt,`{ + */(function(n,e){(function(){var t,i="4.17.21",a=200,l="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",r="Invalid `variable` option passed into `_.template`",f="__lodash_hash_undefined__",v=500,b="__lodash_placeholder__",Z=1,p=2,y=4,X=1,m=2,N=1,G=2,d=4,u=8,s=16,h=32,c=64,W=128,M=256,I=512,w=30,C="...",x=800,R=16,g=1,S=2,L=3,V=1/0,Y=9007199254740991,T=17976931348623157e292,J=0/0,U=4294967295,K=U-1,H=U>>>1,k=[["ary",W],["bind",N],["bindKey",G],["curry",u],["curryRight",s],["flip",I],["partial",h],["partialRight",c],["rearg",M]],F="[object Arguments]",O="[object Array]",Q="[object AsyncFunction]",oe="[object Boolean]",se="[object Date]",he="[object DOMException]",pe="[object Error]",re="[object Function]",_="[object GeneratorFunction]",E="[object Map]",$="[object Number]",ae="[object Null]",le="[object Object]",ee="[object Promise]",te="[object Proxy]",be="[object RegExp]",ne="[object Set]",B="[object String]",q="[object Symbol]",ue="[object Undefined]",ve="[object WeakMap]",Ge="[object WeakSet]",Je="[object ArrayBuffer]",xe="[object DataView]",ke="[object Float32Array]",Pe="[object Float64Array]",Be="[object Int8Array]",Te="[object Int16Array]",we="[object Int32Array]",Se="[object Uint8Array]",De="[object Uint8ClampedArray]",me="[object Uint16Array]",Ve="[object Uint32Array]",Me=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,Ze=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ce=/&(?:amp|lt|gt|quot|#39);/g,ye=/[&<>"']/g,Ue=RegExp(Ce.source),qe=RegExp(ye.source),ie=/<%-([\s\S]+?)%>/g,Oe=/<%([\s\S]+?)%>/g,Ke=/<%=([\s\S]+?)%>/g,Xe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Re=/^\w*$/,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ct=/[\\^$.*+?()[\]{}|]/g,lt=RegExp(ct.source),ot=/^\s+/,wt=/\s/,Mt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,xt=/\{\n\/\* \[wrapped with (.+)\] \*/,Gt=/,? & /,Zt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Tt=/[()=,{}\[\]\/\s]/,Ct=/\\(\\)?/g,St=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Pt=/\w*$/,Ut=/^[-+]0x[0-9a-f]+$/i,kt=/^0b[01]+$/i,en=/^\[object .+?Constructor\]$/,nn=/^0o[0-7]+$/i,Ft=/^(?:0|[1-9]\d*)$/,Ln=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,An=/($^)/,Gi=/['\n\r\u2028\u2029\\]/g,Pi="\\ud800-\\udfff",Gl="\\u0300-\\u036f",Fn="\\ufe20-\\ufe2f",cl="\\u20d0-\\u20ff",ki=Gl+Fn+cl,tl="\\u2700-\\u27bf",nl="a-z\\xdf-\\xf6\\xf8-\\xff",Dt="\\xac\\xb1\\xd7\\xf7",ht="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Fe="\\u2000-\\u206f",tt=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nt="A-Z\\xc0-\\xd6\\xd8-\\xde",Vt="\\ufe0e\\ufe0f",Bt=Dt+ht+Fe+tt,Nn="['’]",oi="["+Pi+"]",gi="["+Bt+"]",Ll="["+ki+"]",il="\\d+",Lr="["+tl+"]",ul="["+nl+"]",Ol="[^"+Pi+Bt+il+tl+nl+nt+"]",jl="\\ud83c[\\udffb-\\udfff]",_t="(?:"+Ll+"|"+jl+")",Rt="[^"+Pi+"]",zt="(?:\\ud83c[\\udde6-\\uddff]){2}",Ht="[\\ud800-\\udbff][\\udc00-\\udfff]",$t="["+nt+"]",si="\\u200d",Ul="(?:"+ul+"|"+Ol+")",Xl="(?:"+$t+"|"+Ol+")",El="(?:"+Nn+"(?:d|ll|m|re|s|t|ve))?",ll="(?:"+Nn+"(?:D|LL|M|RE|S|T|VE))?",Na=_t+"?",Rl="["+Vt+"]?",dl="(?:"+si+"(?:"+[Rt,zt,Ht].join("|")+")"+Rl+Na+")*",Tl="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",hl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Nl=Rl+Na+dl,fl="(?:"+[Lr,zt,Ht].join("|")+")"+Nl,eo="(?:"+[Rt+Ll+"?",Ll,zt,Ht,oi].join("|")+")",Ml=RegExp(Nn,"g"),xl=RegExp(Ll,"g"),Rr=RegExp(jl+"(?="+jl+")|"+eo+Nl,"g"),ra=RegExp([$t+"?"+ul+"+"+El+"(?="+[gi,$t,"$"].join("|")+")",Xl+"+"+ll+"(?="+[gi,$t+Ul,"$"].join("|")+")",$t+"?"+Ul+"+"+El,$t+"+"+ll,hl,Tl,il,fl].join("|"),"g"),Vs=RegExp("["+si+Pi+ki+Vt+"]"),Kl=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,oa=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],to=-1,$n={};$n[ke]=$n[Pe]=$n[Be]=$n[Te]=$n[we]=$n[Se]=$n[De]=$n[me]=$n[Ve]=!0,$n[F]=$n[O]=$n[Je]=$n[oe]=$n[xe]=$n[se]=$n[pe]=$n[re]=$n[E]=$n[$]=$n[le]=$n[be]=$n[ne]=$n[B]=$n[ve]=!1;var Un={};Un[F]=Un[O]=Un[Je]=Un[xe]=Un[oe]=Un[se]=Un[ke]=Un[Pe]=Un[Be]=Un[Te]=Un[we]=Un[E]=Un[$]=Un[le]=Un[be]=Un[ne]=Un[B]=Un[q]=Un[Se]=Un[De]=Un[me]=Un[Ve]=!0,Un[pe]=Un[re]=Un[ve]=!1;var sr={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Fo={"&":"&","<":"<",">":">",'"':""","'":"'"},Jo={"&":"&","<":"<",">":">",""":'"',"'":"'"},Do={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ja=parseFloat,je=parseInt,et=typeof vn=="object"&&vn&&vn.Object===Object&&vn,mt=typeof self=="object"&&self&&self.Object===Object&&self,Lt=et||mt||Function("return this")(),Jn=e&&!e.nodeType&&e,sn=Jn&&!0&&n&&!n.nodeType&&n,ii=sn&&sn.exports===Jn,_n=ii&&et.process,Dn=function(){try{var it=sn&&sn.require&&sn.require("util").types;return it||_n&&_n.binding&&_n.binding("util")}catch{}}(),ni=Dn&&Dn.isArrayBuffer,Fi=Dn&&Dn.isDate,fi=Dn&&Dn.isMap,Qn=Dn&&Dn.isRegExp,qn=Dn&&Dn.isSet,Ti=Dn&&Dn.isTypedArray;function yi(it,pt,dt){switch(dt.length){case 0:return it.call(pt);case 1:return it.call(pt,dt[0]);case 2:return it.call(pt,dt[0],dt[1]);case 3:return it.call(pt,dt[0],dt[1],dt[2])}return it.apply(pt,dt)}function Hl(it,pt,dt,Qt){for(var Mn=-1,ai=it==null?0:it.length;++Mn-1}function ge(it,pt,dt){for(var Qt=-1,Mn=it==null?0:it.length;++Qt-1;);return dt}function rN(it,pt){for(var dt=it.length;dt--&&Di(pt,it[dt],0)>-1;);return dt}function az(it,pt){for(var dt=it.length,Qt=0;dt--;)it[dt]===pt&&++Qt;return Qt}var rz=Ma(sr),oz=Ma(Fo);function sz(it){return"\\"+Do[it]}function cz(it,pt){return it==null?t:it[pt]}function xc(it){return Vs.test(it)}function uz(it){return Kl.test(it)}function dz(it){for(var pt,dt=[];!(pt=it.next()).done;)dt.push(pt.value);return dt}function xp(it){var pt=-1,dt=Array(it.size);return it.forEach(function(Qt,Mn){dt[++pt]=[Mn,Qt]}),dt}function oN(it,pt){return function(dt){return it(pt(dt))}}function Uo(it,pt){for(var dt=-1,Qt=it.length,Mn=0,ai=[];++dt-1}function $z(z,j){var A=this.__data__,fe=pf(A,z);return fe<0?(++this.size,A.push([z,j])):A[fe][1]=j,this}io.prototype.clear=Qz,io.prototype.delete=Bz,io.prototype.get=Az,io.prototype.has=_z,io.prototype.set=$z;function lo(z){var j=-1,A=z==null?0:z.length;for(this.clear();++j=j?z:j)),z}function Ha(z,j,A,fe,Ye,ze){var Qe,$e=j&Z,at=j&p,vt=j&y;if(A&&(Qe=Ye?A(z,fe,Ye,ze):A(z)),Qe!==t)return Qe;if(!Vi(z))return z;var Wt=Vn(z);if(Wt){if(Qe=nF(z),!$e)return sa(z,Qe)}else{var Xt=Sl(z),Jt=Xt==re||Xt==_;if(Bo(z))return UN(z,$e);if(Xt==le||Xt==F||Jt&&!Ye){if(Qe=at||Jt?{}:sM(z),!$e)return at?Kk(z,bk(Qe,z)):Ek(z,vN(Qe,z))}else{if(!Un[Xt])return Ye?z:{};Qe=iF(z,Xt,$e)}}ze||(ze=new ur);var tn=ze.get(z);if(tn)return tn;ze.set(z,Qe),kM(z)?z.forEach(function(Zn){Qe.add(Ha(Zn,j,A,Zn,z,ze))}):SM(z)&&z.forEach(function(Zn,On){Qe.set(On,Ha(Zn,j,A,On,z,ze))});var yn=vt?at?ay:ly:at?ua:bl,Cn=Wt?t:yn(z);return Zi(Cn||z,function(Zn,On){Cn&&(On=Zn,Zn=z[On]),rd(Qe,On,Ha(Zn,j,A,On,z,ze))}),Qe}function mk(z){var j=bl(z);return function(A){return WN(A,z,j)}}function WN(z,j,A){var fe=A.length;if(z==null)return!fe;for(z=bi(z);fe--;){var Ye=A[fe],ze=j[Ye],Qe=z[Ye];if(Qe===t&&!(Ye in z)||!ze(Qe))return!1}return!0}function GN(z,j,A){if(typeof z!="function")throw new Ea(o);return fd(function(){z.apply(t,A)},j)}function od(z,j,A,fe){var Ye=-1,ze=Tr,Qe=!0,$e=z.length,at=[],vt=j.length;if(!$e)return at;A&&(j=Ee(j,Ia(A))),fe?(ze=ge,Qe=!1):j.length>=a&&(ze=ed,Qe=!1,j=new Ts(j));e:for(;++Ye<$e;){var Wt=z[Ye],Xt=A==null?Wt:A(Wt);if(Wt=fe||Wt!==0?Wt:0,Qe&&Xt===Xt){for(var Jt=vt;Jt--;)if(j[Jt]===Xt)continue e;at.push(Wt)}else ze(j,Xt,fe)||at.push(Wt)}return at}var Ko=QN(Cr),XN=QN(Op,!0);function pk(z,j){var A=!0;return Ko(z,function(fe,Ye,ze){return A=!!j(fe,Ye,ze),A}),A}function yf(z,j,A){for(var fe=-1,Ye=z.length;++feYe?0:Ye+A),fe=fe===t||fe>Ye?Ye:xn(fe),fe<0&&(fe+=Ye),fe=A>fe?0:JM(fe);A0&&A($e)?j>1?Il($e,j-1,A,fe,Ye):st(Ye,$e):fe||(Ye[Ye.length]=$e)}return Ye}var Dp=BN(),MN=BN(!0);function Cr(z,j){return z&&Dp(z,j,bl)}function Op(z,j){return z&&MN(z,j,bl)}function Zf(z,j){return al(j,function(A){return co(z[A])})}function Cs(z,j){j=Po(j,z);for(var A=0,fe=j.length;z!=null&&Aj}function Zk(z,j){return z!=null&&ci.call(z,j)}function vk(z,j){return z!=null&&j in bi(z)}function Wk(z,j,A){return z>=Cl(j,A)&&z=120&&Wt.length>=120)?new Ts(Qe&&Wt):t}Wt=z[0];var Xt=-1,Jt=$e[0];e:for(;++Xt-1;)$e!==z&&cf.call($e,at,1),cf.call(z,at,1);return z}function SN(z,j){for(var A=z?j.length:0,fe=A-1;A--;){var Ye=j[A];if(A==fe||Ye!==ze){var ze=Ye;so(Ye)?cf.call(z,Ye,1):_p(z,Ye)}}return z}function Qp(z,j){return z+hf(mN()*(j-z+1))}function xk(z,j,A,fe){for(var Ye=-1,ze=ol(df((j-z)/(A||1)),0),Qe=dt(ze);ze--;)Qe[fe?ze:++Ye]=z,z+=A;return Qe}function Bp(z,j){var A="";if(!z||j<1||j>Y)return A;do j%2&&(A+=z),j=hf(j/2),j&&(z+=z);while(j);return A}function kn(z,j){return hy(dM(z,j,da),z+"")}function Ck(z){return ZN(Ec(z))}function Sk(z,j){var A=Ec(z);return Vf(A,xs(j,0,A.length))}function ud(z,j,A,fe){if(!Vi(z))return z;j=Po(j,z);for(var Ye=-1,ze=j.length,Qe=ze-1,$e=z;$e!=null&&++YeYe?0:Ye+j),A=A>Ye?Ye:A,A<0&&(A+=Ye),Ye=j>A?0:A-j>>>0,j>>>=0;for(var ze=dt(Ye);++fe>>1,Qe=z[ze];Qe!==null&&!wa(Qe)&&(A?Qe<=j:Qe=a){var vt=j?null:Bk(z);if(vt)return ef(vt);Qe=!1,Ye=ed,at=new Ts}else at=j?[]:$e;e:for(;++fe=fe?z:Pa(z,j,A)}var jN=Yz||function(z){return Lt.clearTimeout(z)};function UN(z,j){if(j)return z.slice();var A=z.length,fe=uN?uN(A):new z.constructor(A);return z.copy(fe),fe}function ty(z){var j=new z.constructor(z.byteLength);return new of(j).set(new of(z)),j}function Dk(z,j){var A=j?ty(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.byteLength)}function Ok(z){var j=new z.constructor(z.source,Pt.exec(z));return j.lastIndex=z.lastIndex,j}function jk(z){return ad?bi(ad.call(z)):{}}function EN(z,j){var A=j?ty(z.buffer):z.buffer;return new z.constructor(A,z.byteOffset,z.length)}function KN(z,j){if(z!==j){var A=z!==t,fe=z===null,Ye=z===z,ze=wa(z),Qe=j!==t,$e=j===null,at=j===j,vt=wa(j);if(!$e&&!vt&&!ze&&z>j||ze&&Qe&&at&&!$e&&!vt||fe&&Qe&&at||!A&&at||!Ye)return 1;if(!fe&&!ze&&!vt&&z=$e)return at;var vt=A[fe];return at*(vt=="desc"?-1:1)}}return z.index-j.index}function HN(z,j,A,fe){for(var Ye=-1,ze=z.length,Qe=A.length,$e=-1,at=j.length,vt=ol(ze-Qe,0),Wt=dt(at+vt),Xt=!fe;++$e1?A[Ye-1]:t,Qe=Ye>2?A[2]:t;for(ze=z.length>3&&typeof ze=="function"?(Ye--,ze):t,Qe&&_l(A[0],A[1],Qe)&&(ze=Ye<3?t:ze,Ye=1),j=bi(j);++fe-1?Ye[ze?j[Qe]:Qe]:t}}function $N(z){return oo(function(j){var A=j.length,fe=A,Ye=Ka.prototype.thru;for(z&&j.reverse();fe--;){var ze=j[fe];if(typeof ze!="function")throw new Ea(o);if(Ye&&!Qe&&wf(ze)=="wrapper")var Qe=new Ka([],!0)}for(fe=Qe?fe:A;++fe1&&Bn.reverse(),Wt&&at$e))return!1;var vt=ze.get(z),Wt=ze.get(j);if(vt&&Wt)return vt==j&&Wt==z;var Xt=-1,Jt=!0,tn=A&m?new Ts:t;for(ze.set(z,j),ze.set(j,z);++Xt<$e;){var yn=z[Xt],Cn=j[Xt];if(fe)var Zn=Qe?fe(Cn,yn,Xt,j,z,ze):fe(yn,Cn,Xt,z,j,ze);if(Zn!==t){if(Zn)continue;Jt=!1;break}if(tn){if(!Et(j,function(On,Bn){if(!ed(tn,Bn)&&(yn===On||Ye(yn,On,A,fe,ze)))return tn.push(Bn)})){Jt=!1;break}}else if(!(yn===Cn||Ye(yn,Cn,A,fe,ze))){Jt=!1;break}}return ze.delete(z),ze.delete(j),Jt}function _k(z,j,A,fe,Ye,ze,Qe){switch(A){case xe:if(z.byteLength!=j.byteLength||z.byteOffset!=j.byteOffset)return!1;z=z.buffer,j=j.buffer;case Je:return!(z.byteLength!=j.byteLength||!ze(new of(z),new of(j)));case oe:case se:case $:return dr(+z,+j);case pe:return z.name==j.name&&z.message==j.message;case be:case B:return z==j+"";case E:var $e=xp;case ne:var at=fe&X;if($e||($e=ef),z.size!=j.size&&!at)return!1;var vt=Qe.get(z);if(vt)return vt==j;fe|=m,Qe.set(z,j);var Wt=aM($e(z),$e(j),fe,Ye,ze,Qe);return Qe.delete(z),Wt;case q:if(ad)return ad.call(z)==ad.call(j)}return!1}function $k(z,j,A,fe,Ye,ze){var Qe=A&X,$e=ly(z),at=$e.length,vt=ly(j),Wt=vt.length;if(at!=Wt&&!Qe)return!1;for(var Xt=at;Xt--;){var Jt=$e[Xt];if(!(Qe?Jt in j:ci.call(j,Jt)))return!1}var tn=ze.get(z),yn=ze.get(j);if(tn&&yn)return tn==j&&yn==z;var Cn=!0;ze.set(z,j),ze.set(j,z);for(var Zn=Qe;++Xt1?"& ":"")+j[fe],j=j.join(A>2?", ":" "),z.replace(Mt,`{ /* [wrapped with `+j+`] */ -`)}function tF(z){return Vn(z)||ks(z)||!!(dN&&z&&z[dN])}function so(z,j){var A=typeof z;return j=j??Y,!!j&&(A=="number"||A!="symbol"&&Ft.test(z))&&z>-1&&z%1==0&&z0){if(++j>=x)return arguments[0]}else j=0;return z.apply(t,arguments)}}function gf(z,j){var A=-1,fe=z.length,Ye=fe-1;for(j=j===t?fe:j;++A1?z[j-1]:t;return A=typeof A=="function"?(z.pop(),A):t,GM(z,A)});function XM(z){var j=Le(z);return j.__chain__=!0,j}function hJ(z,j){return j(z),z}function Vf(z,j){return j(z)}var fJ=oo(function(z){var j=z.length,A=j?z[0]:0,fe=this.__wrapped__,Ye=function(ze){return Jp(ze,z)};return j>1||this.__actions__.length||!(fe instanceof En)||!so(A)?this.thru(Ye):(fe=fe.slice(A,+A+(j?1:0)),fe.__actions__.push({func:Vf,args:[Ye],thisArg:t}),new Ka(fe,this.__chain__).thru(function(ze){return j&&!ze.length&&ze.push(t),ze}))});function bJ(){return XM(this)}function mJ(){return new Ka(this.value(),this.__chain__)}function pJ(){this.__values__===t&&(this.__values__=zM(this.value()));var z=this.__index__>=this.__values__.length,j=z?t:this.__values__[this.__index__++];return{done:z,value:j}}function yJ(){return this}function ZJ(z){for(var j,A=this;A instanceof bf;){var fe=mM(A);fe.__index__=0,fe.__values__=t,j?Ye.__wrapped__=fe:j=fe;var Ye=fe;A=A.__wrapped__}return Ye.__wrapped__=z,j}function vJ(){var z=this.__wrapped__;if(z instanceof En){var j=z;return this.__actions__.length&&(j=new En(this)),j=j.reverse(),j.__actions__.push({func:Vf,args:[fy],thisArg:t}),new Ka(j,this.__chain__)}return this.thru(fy)}function WJ(){return FN(this.__wrapped__,this.__actions__)}var GJ=Gf(function(z,j,A){ci.call(z,A)?++z[A]:ao(z,A,1)});function XJ(z,j,A){var fe=Vn(z)?Pl:hk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}function NJ(z,j){var A=Vn(z)?al:GN;return A(z,mn(j,3))}var MJ=BN(pM),IJ=BN(yM);function YJ(z,j){return Il(Lf(z,j),1)}function wJ(z,j){return Il(Lf(z,j),V)}function gJ(z,j,A){return A=A===t?1:xn(A),Il(Lf(z,j),A)}function NM(z,j){var A=Vn(z)?Zi:Ko;return A(z,mn(j,3))}function MM(z,j){var A=Vn(z)?no:WN;return A(z,mn(j,3))}var VJ=Gf(function(z,j,A){ci.call(z,A)?z[A].push(j):ao(z,A,[j])});function LJ(z,j,A,fe){z=ca(z)?z:Ec(z),A=A&&!fe?xn(A):0;var Ye=z.length;return A<0&&(A=ol(Ye+A,0)),Sf(z)?A<=Ye&&z.indexOf(j,A)>-1:!!Ye&&Di(z,j,A)>-1}var RJ=kn(function(z,j,A){var fe=-1,Ye=typeof j=="function",ze=ca(z)?dt(z.length):[];return Ko(z,function(Qe){ze[++fe]=Ye?yi(j,Qe,A):sd(Qe,j,A)}),ze}),TJ=Gf(function(z,j,A){ao(z,A,j)});function Lf(z,j){var A=Vn(z)?Ee:wN;return A(z,mn(j,3))}function xJ(z,j,A,fe){return z==null?[]:(Vn(j)||(j=j==null?[]:[j]),A=fe?t:A,Vn(A)||(A=A==null?[]:[A]),RN(z,j,A))}var CJ=Gf(function(z,j,A){z[A?0:1].push(j)},function(){return[[],[]]});function SJ(z,j,A){var fe=Vn(z)?It:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,Ko)}function zJ(z,j,A){var fe=Vn(z)?an:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,WN)}function kJ(z,j){var A=Vn(z)?al:GN;return A(z,xf(mn(j,3)))}function FJ(z){var j=Vn(z)?pN:Lk;return j(z)}function JJ(z,j,A){(A?_l(z,j,A):j===t)?j=1:j=xn(j);var fe=Vn(z)?ok:Rk;return fe(z,j)}function DJ(z){var j=Vn(z)?sk:xk;return j(z)}function OJ(z){if(z==null)return 0;if(ca(z))return Sf(z)?Cc(z):z.length;var j=Sl(z);return j==E||j==ne?z.size:Kp(z).length}function jJ(z,j,A){var fe=Vn(z)?Et:Ck;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}var UJ=kn(function(z,j){if(z==null)return[];var A=j.length;return A>1&&_l(z,j[0],j[1])?j=[]:A>2&&_l(j[0],j[1],j[2])&&(j=[j[0]]),RN(z,Il(j,1),[])}),Rf=Nz||function(){return Lt.Date.now()};function EJ(z,j){if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){if(--z<1)return j.apply(this,arguments)}}function IM(z,j,A){return j=A?t:j,j=z&&j==null?z.length:j,ro(z,W,t,t,t,t,j)}function YM(z,j){var A;if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){return--z>0&&(A=j.apply(this,arguments)),z<=1&&(j=t),A}}var my=kn(function(z,j,A){var fe=N;if(A.length){var Ye=Uo(A,jc(my));fe|=h}return ro(z,fe,j,A,Ye)}),wM=kn(function(z,j,A){var fe=N|G;if(A.length){var Ye=Uo(A,jc(wM));fe|=h}return ro(j,fe,z,A,Ye)});function gM(z,j,A){j=A?t:j;var fe=ro(z,u,t,t,t,t,t,j);return fe.placeholder=gM.placeholder,fe}function VM(z,j,A){j=A?t:j;var fe=ro(z,s,t,t,t,t,t,j);return fe.placeholder=VM.placeholder,fe}function LM(z,j,A){var fe,Ye,ze,Qe,$e,at,vt=0,Wt=!1,Xt=!1,Jt=!0;if(typeof z!="function")throw new Ea(o);j=Ba(j)||0,Vi(A)&&(Wt=!!A.leading,Xt="maxWait"in A,ze=Xt?ol(Ba(A.maxWait)||0,j):ze,Jt="trailing"in A?!!A.trailing:Jt);function tn(ji){var hr=fe,ho=Ye;return fe=Ye=t,vt=ji,Qe=z.apply(ho,hr),Qe}function yn(ji){return vt=ji,$e=fd(On,j),Wt?tn(ji):Qe}function Cn(ji){var hr=ji-at,ho=ji-vt,BM=j-hr;return Xt?Cl(BM,ze-ho):BM}function Zn(ji){var hr=ji-at,ho=ji-vt;return at===t||hr>=j||hr<0||Xt&&ho>=ze}function On(){var ji=Rf();if(Zn(ji))return Bn(ji);$e=fd(On,Cn(ji))}function Bn(ji){return $e=t,Jt&&fe?tn(ji):(fe=Ye=t,Qe)}function ga(){$e!==t&&DN($e),vt=0,fe=at=Ye=$e=t}function $l(){return $e===t?Qe:Bn(Rf())}function Va(){var ji=Rf(),hr=Zn(ji);if(fe=arguments,Ye=this,at=ji,hr){if($e===t)return yn(at);if(Xt)return DN($e),$e=fd(On,j),tn(at)}return $e===t&&($e=fd(On,j)),Qe}return Va.cancel=ga,Va.flush=$l,Va}var KJ=kn(function(z,j){return vN(z,1,j)}),HJ=kn(function(z,j,A){return vN(z,Ba(j)||0,A)});function PJ(z){return ro(z,I)}function Tf(z,j){if(typeof z!="function"||j!=null&&typeof j!="function")throw new Ea(o);var A=function(){var fe=arguments,Ye=j?j.apply(this,fe):fe[0],ze=A.cache;if(ze.has(Ye))return ze.get(Ye);var Qe=z.apply(this,fe);return A.cache=ze.set(Ye,Qe)||ze,Qe};return A.cache=new(Tf.Cache||lo),A}Tf.Cache=lo;function xf(z){if(typeof z!="function")throw new Ea(o);return function(){var j=arguments;switch(j.length){case 0:return!z.call(this);case 1:return!z.call(this,j[0]);case 2:return!z.call(this,j[0],j[1]);case 3:return!z.call(this,j[0],j[1],j[2])}return!z.apply(this,j)}}function QJ(z){return YM(2,z)}var BJ=Sk(function(z,j){j=j.length==1&&Vn(j[0])?Ee(j[0],Ia(mn())):Ee(Il(j,1),Ia(mn()));var A=j.length;return kn(function(fe){for(var Ye=-1,ze=Cl(fe.length,A);++Ye=j}),ks=MN(function(){return arguments}())?MN:function(z){return xi(z)&&ci.call(z,"callee")&&!uN.call(z,"callee")},Vn=dt.isArray,uD=ni?Ia(ni):Zk;function ca(z){return z!=null&&Cf(z.length)&&!co(z)}function Oi(z){return xi(z)&&ca(z)}function dD(z){return z===!0||z===!1||xi(z)&&Al(z)==oe}var Bo=Iz||wy,hD=Fi?Ia(Fi):vk;function fD(z){return xi(z)&&z.nodeType===1&&!bd(z)}function bD(z){if(z==null)return!0;if(ca(z)&&(Vn(z)||typeof z=="string"||typeof z.splice=="function"||Bo(z)||Uc(z)||ks(z)))return!z.length;var j=Sl(z);if(j==E||j==ne)return!z.size;if(hd(z))return!Kp(z).length;for(var A in z)if(ci.call(z,A))return!1;return!0}function mD(z,j){return cd(z,j)}function pD(z,j,A){A=typeof A=="function"?A:t;var fe=A?A(z,j):t;return fe===t?cd(z,j,t,A):!!fe}function yy(z){if(!xi(z))return!1;var j=Al(z);return j==pe||j==he||typeof z.message=="string"&&typeof z.name=="string"&&!bd(z)}function yD(z){return typeof z=="number"&&hN(z)}function co(z){if(!Vi(z))return!1;var j=Al(z);return j==re||j==_||j==Q||j==te}function TM(z){return typeof z=="number"&&z==xn(z)}function Cf(z){return typeof z=="number"&&z>-1&&z%1==0&&z<=Y}function Vi(z){var j=typeof z;return z!=null&&(j=="object"||j=="function")}function xi(z){return z!=null&&typeof z=="object"}var xM=fi?Ia(fi):Gk;function ZD(z,j){return z===j||Ep(z,j,oy(j))}function vD(z,j,A){return A=typeof A=="function"?A:t,Ep(z,j,oy(j),A)}function WD(z){return CM(z)&&z!=+z}function GD(z){if(lF(z))throw new Mn(a);return IN(z)}function XD(z){return z===null}function ND(z){return z==null}function CM(z){return typeof z=="number"||xi(z)&&Al(z)==$}function bd(z){if(!xi(z)||Al(z)!=le)return!1;var j=of(z);if(j===null)return!0;var A=ci.call(j,"constructor")&&j.constructor;return typeof A=="function"&&A instanceof A&&nf.call(A)==vz}var Zy=Qn?Ia(Qn):Xk;function MD(z){return TM(z)&&z>=-Y&&z<=Y}var SM=qn?Ia(qn):Nk;function Sf(z){return typeof z=="string"||!Vn(z)&&xi(z)&&Al(z)==B}function wa(z){return typeof z=="symbol"||xi(z)&&Al(z)==q}var Uc=Ti?Ia(Ti):Mk;function ID(z){return z===t}function YD(z){return xi(z)&&Sl(z)==ve}function wD(z){return xi(z)&&Al(z)==Ge}var gD=If(Hp),VD=If(function(z,j){return z<=j});function zM(z){if(!z)return[];if(ca(z))return Sf(z)?cr(z):sa(z);if(td&&z[td])return oz(z[td]());var j=Sl(z),A=j==E?xp:j==ne?qh:Ec;return A(z)}function uo(z){if(!z)return z===0?z:0;if(z=Ba(z),z===V||z===-V){var j=z<0?-1:1;return j*T}return z===z?z:0}function xn(z){var j=uo(z),A=j%1;return j===j?A?j-A:j:0}function kM(z){return z?xs(xn(z),0,U):0}function Ba(z){if(typeof z=="number")return z;if(wa(z))return J;if(Vi(z)){var j=typeof z.valueOf=="function"?z.valueOf():z;z=Vi(j)?j+"":j}if(typeof z!="string")return z===0?z:+z;z=nN(z);var A=kt.test(z);return A||nn.test(z)?je(z.slice(2),A?2:8):Ut.test(z)?J:+z}function FM(z){return Sr(z,ua(z))}function LD(z){return z?xs(xn(z),-Y,Y):z===0?z:0}function ri(z){return z==null?"":Ya(z)}var RD=Dc(function(z,j){if(hd(j)||ca(j)){Sr(j,bl(j),z);return}for(var A in j)ci.call(j,A)&&rd(z,A,j[A])}),JM=Dc(function(z,j){Sr(j,ua(j),z)}),zf=Dc(function(z,j,A,fe){Sr(j,ua(j),z,fe)}),TD=Dc(function(z,j,A,fe){Sr(j,bl(j),z,fe)}),xD=oo(Jp);function CD(z,j){var A=Jc(z);return j==null?A:yN(A,j)}var SD=kn(function(z,j){z=bi(z);var A=-1,fe=j.length,Ye=fe>2?j[2]:t;for(Ye&&_l(j[0],j[1],Ye)&&(fe=1);++A1),ze}),Sr(z,ay(z),A),fe&&(A=Ha(A,Z|p|y,Hk));for(var Ye=j.length;Ye--;)_p(A,j[Ye]);return A});function qD(z,j){return OM(z,xf(mn(j)))}var eO=oo(function(z,j){return z==null?{}:wk(z,j)});function OM(z,j){if(z==null)return{};var A=Ee(ay(z),function(fe){return[fe]});return j=mn(j),TN(z,A,function(fe,Ye){return j(fe,Ye[0])})}function tO(z,j,A){j=Po(j,z);var fe=-1,Ye=j.length;for(Ye||(Ye=1,z=t);++fej){var fe=z;z=j,j=fe}if(A||z%1||j%1){var Ye=fN();return Cl(z+Ye*(j-z+ja("1e-"+((Ye+"").length-1))),j)}return Qp(z,j)}var hO=Oc(function(z,j,A){return j=j.toLowerCase(),z+(A?EM(j):j)});function EM(z){return Gy(ri(z).toLowerCase())}function KM(z){return z=ri(z),z&&z.replace(Ln,nz).replace(xl,"")}function fO(z,j,A){z=ri(z),j=Ya(j);var fe=z.length;A=A===t?fe:xs(xn(A),0,fe);var Ye=A;return A-=j.length,A>=0&&z.slice(A,Ye)==j}function bO(z){return z=ri(z),z&&qe.test(z)?z.replace(ye,iz):z}function mO(z){return z=ri(z),z&<.test(z)?z.replace(ct,"\\$&"):z}var pO=Oc(function(z,j,A){return z+(A?"-":"")+j.toLowerCase()}),yO=Oc(function(z,j,A){return z+(A?" ":"")+j.toLowerCase()}),ZO=QN("toLowerCase");function vO(z,j,A){z=ri(z),j=xn(j);var fe=j?Cc(z):0;if(!j||fe>=j)return z;var Ye=(j-fe)/2;return Mf(df(Ye),A)+z+Mf(uf(Ye),A)}function WO(z,j,A){z=ri(z),j=xn(j);var fe=j?Cc(z):0;return j&&fe>>0,A?(z=ri(z),z&&(typeof j=="string"||j!=null&&!Zy(j))&&(j=Ya(j),!j&&xc(z))?Qo(cr(z),0,A):z.split(j,A)):[]}var wO=Oc(function(z,j,A){return z+(A?" ":"")+Gy(j)});function gO(z,j,A){return z=ri(z),A=A==null?0:xs(xn(A),0,z.length),j=Ya(j),z.slice(A,A+j.length)==j}function VO(z,j,A){var fe=Le.templateSettings;A&&_l(z,j,A)&&(j=t),z=ri(z),j=zf({},j,fe,tM);var Ye=zf({},j.imports,fe.imports,tM),ze=bl(Ye),Qe=Tp(Ye,ze),$e,at,vt=0,Wt=j.interpolate||An,Xt="__p += '",Jt=Cp((j.escape||An).source+"|"+Wt.source+"|"+(Wt===Ke?St:An).source+"|"+(j.evaluate||An).source+"|$","g"),tn="//# sourceURL="+(ci.call(j,"sourceURL")?(j.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++to+"]")+` -`;z.replace(Jt,function(Zn,On,Bn,ga,$l,Va){return Bn||(Bn=ga),Xt+=z.slice(vt,Va).replace(Gi,lz),On&&($e=!0,Xt+=`' + +`)}function aF(z){return Vn(z)||ks(z)||!!(fN&&z&&z[fN])}function so(z,j){var A=typeof z;return j=j??Y,!!j&&(A=="number"||A!="symbol"&&Ft.test(z))&&z>-1&&z%1==0&&z0){if(++j>=x)return arguments[0]}else j=0;return z.apply(t,arguments)}}function Vf(z,j){var A=-1,fe=z.length,Ye=fe-1;for(j=j===t?fe:j;++A1?z[j-1]:t;return A=typeof A=="function"?(z.pop(),A):t,NM(z,A)});function MM(z){var j=Le(z);return j.__chain__=!0,j}function pJ(z,j){return j(z),z}function Lf(z,j){return j(z)}var yJ=oo(function(z){var j=z.length,A=j?z[0]:0,fe=this.__wrapped__,Ye=function(ze){return Jp(ze,z)};return j>1||this.__actions__.length||!(fe instanceof En)||!so(A)?this.thru(Ye):(fe=fe.slice(A,+A+(j?1:0)),fe.__actions__.push({func:Lf,args:[Ye],thisArg:t}),new Ka(fe,this.__chain__).thru(function(ze){return j&&!ze.length&&ze.push(t),ze}))});function ZJ(){return MM(this)}function vJ(){return new Ka(this.value(),this.__chain__)}function WJ(){this.__values__===t&&(this.__values__=FM(this.value()));var z=this.__index__>=this.__values__.length,j=z?t:this.__values__[this.__index__++];return{done:z,value:j}}function GJ(){return this}function XJ(z){for(var j,A=this;A instanceof mf;){var fe=yM(A);fe.__index__=0,fe.__values__=t,j?Ye.__wrapped__=fe:j=fe;var Ye=fe;A=A.__wrapped__}return Ye.__wrapped__=z,j}function NJ(){var z=this.__wrapped__;if(z instanceof En){var j=z;return this.__actions__.length&&(j=new En(this)),j=j.reverse(),j.__actions__.push({func:Lf,args:[fy],thisArg:t}),new Ka(j,this.__chain__)}return this.thru(fy)}function MJ(){return DN(this.__wrapped__,this.__actions__)}var IJ=Xf(function(z,j,A){ci.call(z,A)?++z[A]:ao(z,A,1)});function YJ(z,j,A){var fe=Vn(z)?Pl:pk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}function wJ(z,j){var A=Vn(z)?al:NN;return A(z,mn(j,3))}var gJ=_N(ZM),VJ=_N(vM);function LJ(z,j){return Il(Rf(z,j),1)}function RJ(z,j){return Il(Rf(z,j),V)}function TJ(z,j,A){return A=A===t?1:xn(A),Il(Rf(z,j),A)}function IM(z,j){var A=Vn(z)?Zi:Ko;return A(z,mn(j,3))}function YM(z,j){var A=Vn(z)?no:XN;return A(z,mn(j,3))}var xJ=Xf(function(z,j,A){ci.call(z,A)?z[A].push(j):ao(z,A,[j])});function CJ(z,j,A,fe){z=ca(z)?z:Ec(z),A=A&&!fe?xn(A):0;var Ye=z.length;return A<0&&(A=ol(Ye+A,0)),zf(z)?A<=Ye&&z.indexOf(j,A)>-1:!!Ye&&Di(z,j,A)>-1}var SJ=kn(function(z,j,A){var fe=-1,Ye=typeof j=="function",ze=ca(z)?dt(z.length):[];return Ko(z,function(Qe){ze[++fe]=Ye?yi(j,Qe,A):sd(Qe,j,A)}),ze}),zJ=Xf(function(z,j,A){ao(z,A,j)});function Rf(z,j){var A=Vn(z)?Ee:VN;return A(z,mn(j,3))}function kJ(z,j,A,fe){return z==null?[]:(Vn(j)||(j=j==null?[]:[j]),A=fe?t:A,Vn(A)||(A=A==null?[]:[A]),xN(z,j,A))}var FJ=Xf(function(z,j,A){z[A?0:1].push(j)},function(){return[[],[]]});function JJ(z,j,A){var fe=Vn(z)?It:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,Ko)}function DJ(z,j,A){var fe=Vn(z)?an:xr,Ye=arguments.length<3;return fe(z,mn(j,4),A,Ye,XN)}function OJ(z,j){var A=Vn(z)?al:NN;return A(z,Cf(mn(j,3)))}function jJ(z){var j=Vn(z)?ZN:Ck;return j(z)}function UJ(z,j,A){(A?_l(z,j,A):j===t)?j=1:j=xn(j);var fe=Vn(z)?dk:Sk;return fe(z,j)}function EJ(z){var j=Vn(z)?hk:kk;return j(z)}function KJ(z){if(z==null)return 0;if(ca(z))return zf(z)?Cc(z):z.length;var j=Sl(z);return j==E||j==ne?z.size:Kp(z).length}function HJ(z,j,A){var fe=Vn(z)?Et:Fk;return A&&_l(z,j,A)&&(j=t),fe(z,mn(j,3))}var PJ=kn(function(z,j){if(z==null)return[];var A=j.length;return A>1&&_l(z,j[0],j[1])?j=[]:A>2&&_l(j[0],j[1],j[2])&&(j=[j[0]]),xN(z,Il(j,1),[])}),Tf=wz||function(){return Lt.Date.now()};function QJ(z,j){if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){if(--z<1)return j.apply(this,arguments)}}function wM(z,j,A){return j=A?t:j,j=z&&j==null?z.length:j,ro(z,W,t,t,t,t,j)}function gM(z,j){var A;if(typeof j!="function")throw new Ea(o);return z=xn(z),function(){return--z>0&&(A=j.apply(this,arguments)),z<=1&&(j=t),A}}var my=kn(function(z,j,A){var fe=N;if(A.length){var Ye=Uo(A,jc(my));fe|=h}return ro(z,fe,j,A,Ye)}),VM=kn(function(z,j,A){var fe=N|G;if(A.length){var Ye=Uo(A,jc(VM));fe|=h}return ro(j,fe,z,A,Ye)});function LM(z,j,A){j=A?t:j;var fe=ro(z,u,t,t,t,t,t,j);return fe.placeholder=LM.placeholder,fe}function RM(z,j,A){j=A?t:j;var fe=ro(z,s,t,t,t,t,t,j);return fe.placeholder=RM.placeholder,fe}function TM(z,j,A){var fe,Ye,ze,Qe,$e,at,vt=0,Wt=!1,Xt=!1,Jt=!0;if(typeof z!="function")throw new Ea(o);j=Ba(j)||0,Vi(A)&&(Wt=!!A.leading,Xt="maxWait"in A,ze=Xt?ol(Ba(A.maxWait)||0,j):ze,Jt="trailing"in A?!!A.trailing:Jt);function tn(ji){var hr=fe,ho=Ye;return fe=Ye=t,vt=ji,Qe=z.apply(ho,hr),Qe}function yn(ji){return vt=ji,$e=fd(On,j),Wt?tn(ji):Qe}function Cn(ji){var hr=ji-at,ho=ji-vt,_M=j-hr;return Xt?Cl(_M,ze-ho):_M}function Zn(ji){var hr=ji-at,ho=ji-vt;return at===t||hr>=j||hr<0||Xt&&ho>=ze}function On(){var ji=Tf();if(Zn(ji))return Bn(ji);$e=fd(On,Cn(ji))}function Bn(ji){return $e=t,Jt&&fe?tn(ji):(fe=Ye=t,Qe)}function ga(){$e!==t&&jN($e),vt=0,fe=at=Ye=$e=t}function $l(){return $e===t?Qe:Bn(Tf())}function Va(){var ji=Tf(),hr=Zn(ji);if(fe=arguments,Ye=this,at=ji,hr){if($e===t)return yn(at);if(Xt)return jN($e),$e=fd(On,j),tn(at)}return $e===t&&($e=fd(On,j)),Qe}return Va.cancel=ga,Va.flush=$l,Va}var BJ=kn(function(z,j){return GN(z,1,j)}),AJ=kn(function(z,j,A){return GN(z,Ba(j)||0,A)});function _J(z){return ro(z,I)}function xf(z,j){if(typeof z!="function"||j!=null&&typeof j!="function")throw new Ea(o);var A=function(){var fe=arguments,Ye=j?j.apply(this,fe):fe[0],ze=A.cache;if(ze.has(Ye))return ze.get(Ye);var Qe=z.apply(this,fe);return A.cache=ze.set(Ye,Qe)||ze,Qe};return A.cache=new(xf.Cache||lo),A}xf.Cache=lo;function Cf(z){if(typeof z!="function")throw new Ea(o);return function(){var j=arguments;switch(j.length){case 0:return!z.call(this);case 1:return!z.call(this,j[0]);case 2:return!z.call(this,j[0],j[1]);case 3:return!z.call(this,j[0],j[1],j[2])}return!z.apply(this,j)}}function $J(z){return gM(2,z)}var qJ=Jk(function(z,j){j=j.length==1&&Vn(j[0])?Ee(j[0],Ia(mn())):Ee(Il(j,1),Ia(mn()));var A=j.length;return kn(function(fe){for(var Ye=-1,ze=Cl(fe.length,A);++Ye=j}),ks=YN(function(){return arguments}())?YN:function(z){return xi(z)&&ci.call(z,"callee")&&!hN.call(z,"callee")},Vn=dt.isArray,bD=ni?Ia(ni):Xk;function ca(z){return z!=null&&Sf(z.length)&&!co(z)}function Oi(z){return xi(z)&&ca(z)}function mD(z){return z===!0||z===!1||xi(z)&&Al(z)==oe}var Bo=Vz||wy,pD=Fi?Ia(Fi):Nk;function yD(z){return xi(z)&&z.nodeType===1&&!bd(z)}function ZD(z){if(z==null)return!0;if(ca(z)&&(Vn(z)||typeof z=="string"||typeof z.splice=="function"||Bo(z)||Uc(z)||ks(z)))return!z.length;var j=Sl(z);if(j==E||j==ne)return!z.size;if(hd(z))return!Kp(z).length;for(var A in z)if(ci.call(z,A))return!1;return!0}function vD(z,j){return cd(z,j)}function WD(z,j,A){A=typeof A=="function"?A:t;var fe=A?A(z,j):t;return fe===t?cd(z,j,t,A):!!fe}function yy(z){if(!xi(z))return!1;var j=Al(z);return j==pe||j==he||typeof z.message=="string"&&typeof z.name=="string"&&!bd(z)}function GD(z){return typeof z=="number"&&bN(z)}function co(z){if(!Vi(z))return!1;var j=Al(z);return j==re||j==_||j==Q||j==te}function CM(z){return typeof z=="number"&&z==xn(z)}function Sf(z){return typeof z=="number"&&z>-1&&z%1==0&&z<=Y}function Vi(z){var j=typeof z;return z!=null&&(j=="object"||j=="function")}function xi(z){return z!=null&&typeof z=="object"}var SM=fi?Ia(fi):Ik;function XD(z,j){return z===j||Ep(z,j,oy(j))}function ND(z,j,A){return A=typeof A=="function"?A:t,Ep(z,j,oy(j),A)}function MD(z){return zM(z)&&z!=+z}function ID(z){if(sF(z))throw new Mn(l);return wN(z)}function YD(z){return z===null}function wD(z){return z==null}function zM(z){return typeof z=="number"||xi(z)&&Al(z)==$}function bd(z){if(!xi(z)||Al(z)!=le)return!1;var j=sf(z);if(j===null)return!0;var A=ci.call(j,"constructor")&&j.constructor;return typeof A=="function"&&A instanceof A&&lf.call(A)==Nz}var Zy=Qn?Ia(Qn):Yk;function gD(z){return CM(z)&&z>=-Y&&z<=Y}var kM=qn?Ia(qn):wk;function zf(z){return typeof z=="string"||!Vn(z)&&xi(z)&&Al(z)==B}function wa(z){return typeof z=="symbol"||xi(z)&&Al(z)==q}var Uc=Ti?Ia(Ti):gk;function VD(z){return z===t}function LD(z){return xi(z)&&Sl(z)==ve}function RD(z){return xi(z)&&Al(z)==Ge}var TD=Yf(Hp),xD=Yf(function(z,j){return z<=j});function FM(z){if(!z)return[];if(ca(z))return zf(z)?cr(z):sa(z);if(td&&z[td])return dz(z[td]());var j=Sl(z),A=j==E?xp:j==ne?ef:Ec;return A(z)}function uo(z){if(!z)return z===0?z:0;if(z=Ba(z),z===V||z===-V){var j=z<0?-1:1;return j*T}return z===z?z:0}function xn(z){var j=uo(z),A=j%1;return j===j?A?j-A:j:0}function JM(z){return z?xs(xn(z),0,U):0}function Ba(z){if(typeof z=="number")return z;if(wa(z))return J;if(Vi(z)){var j=typeof z.valueOf=="function"?z.valueOf():z;z=Vi(j)?j+"":j}if(typeof z!="string")return z===0?z:+z;z=lN(z);var A=kt.test(z);return A||nn.test(z)?je(z.slice(2),A?2:8):Ut.test(z)?J:+z}function DM(z){return Sr(z,ua(z))}function CD(z){return z?xs(xn(z),-Y,Y):z===0?z:0}function ri(z){return z==null?"":Ya(z)}var SD=Dc(function(z,j){if(hd(j)||ca(j)){Sr(j,bl(j),z);return}for(var A in j)ci.call(j,A)&&rd(z,A,j[A])}),OM=Dc(function(z,j){Sr(j,ua(j),z)}),kf=Dc(function(z,j,A,fe){Sr(j,ua(j),z,fe)}),zD=Dc(function(z,j,A,fe){Sr(j,bl(j),z,fe)}),kD=oo(Jp);function FD(z,j){var A=Jc(z);return j==null?A:vN(A,j)}var JD=kn(function(z,j){z=bi(z);var A=-1,fe=j.length,Ye=fe>2?j[2]:t;for(Ye&&_l(j[0],j[1],Ye)&&(fe=1);++A1),ze}),Sr(z,ay(z),A),fe&&(A=Ha(A,Z|p|y,Ak));for(var Ye=j.length;Ye--;)_p(A,j[Ye]);return A});function iO(z,j){return UM(z,Cf(mn(j)))}var lO=oo(function(z,j){return z==null?{}:Rk(z,j)});function UM(z,j){if(z==null)return{};var A=Ee(ay(z),function(fe){return[fe]});return j=mn(j),CN(z,A,function(fe,Ye){return j(fe,Ye[0])})}function aO(z,j,A){j=Po(j,z);var fe=-1,Ye=j.length;for(Ye||(Ye=1,z=t);++fej){var fe=z;z=j,j=fe}if(A||z%1||j%1){var Ye=mN();return Cl(z+Ye*(j-z+ja("1e-"+((Ye+"").length-1))),j)}return Qp(z,j)}var pO=Oc(function(z,j,A){return j=j.toLowerCase(),z+(A?HM(j):j)});function HM(z){return Gy(ri(z).toLowerCase())}function PM(z){return z=ri(z),z&&z.replace(Ln,rz).replace(xl,"")}function yO(z,j,A){z=ri(z),j=Ya(j);var fe=z.length;A=A===t?fe:xs(xn(A),0,fe);var Ye=A;return A-=j.length,A>=0&&z.slice(A,Ye)==j}function ZO(z){return z=ri(z),z&&qe.test(z)?z.replace(ye,oz):z}function vO(z){return z=ri(z),z&<.test(z)?z.replace(ct,"\\$&"):z}var WO=Oc(function(z,j,A){return z+(A?"-":"")+j.toLowerCase()}),GO=Oc(function(z,j,A){return z+(A?" ":"")+j.toLowerCase()}),XO=AN("toLowerCase");function NO(z,j,A){z=ri(z),j=xn(j);var fe=j?Cc(z):0;if(!j||fe>=j)return z;var Ye=(j-fe)/2;return If(hf(Ye),A)+z+If(df(Ye),A)}function MO(z,j,A){z=ri(z),j=xn(j);var fe=j?Cc(z):0;return j&&fe>>0,A?(z=ri(z),z&&(typeof j=="string"||j!=null&&!Zy(j))&&(j=Ya(j),!j&&xc(z))?Qo(cr(z),0,A):z.split(j,A)):[]}var RO=Oc(function(z,j,A){return z+(A?" ":"")+Gy(j)});function TO(z,j,A){return z=ri(z),A=A==null?0:xs(xn(A),0,z.length),j=Ya(j),z.slice(A,A+j.length)==j}function xO(z,j,A){var fe=Le.templateSettings;A&&_l(z,j,A)&&(j=t),z=ri(z),j=kf({},j,fe,iM);var Ye=kf({},j.imports,fe.imports,iM),ze=bl(Ye),Qe=Tp(Ye,ze),$e,at,vt=0,Wt=j.interpolate||An,Xt="__p += '",Jt=Cp((j.escape||An).source+"|"+Wt.source+"|"+(Wt===Ke?St:An).source+"|"+(j.evaluate||An).source+"|$","g"),tn="//# sourceURL="+(ci.call(j,"sourceURL")?(j.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++to+"]")+` +`;z.replace(Jt,function(Zn,On,Bn,ga,$l,Va){return Bn||(Bn=ga),Xt+=z.slice(vt,Va).replace(Gi,sz),On&&($e=!0,Xt+=`' + __e(`+On+`) + '`),$l&&(at=!0,Xt+=`'; `+$l+`; @@ -307,4 +307,4 @@ __p += '`),Bn&&(Xt+=`' + function print() { __p += __j.call(arguments, '') } `:`; `)+Xt+`return __p -}`;var Cn=PM(function(){return ai(ze,tn+"return "+Xt).apply(t,Qe)});if(Cn.source=Xt,yy(Cn))throw Cn;return Cn}function LO(z){return ri(z).toLowerCase()}function RO(z){return ri(z).toUpperCase()}function TO(z,j,A){if(z=ri(z),z&&(A||j===t))return nN(z);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=cr(j),ze=iN(fe,Ye),Qe=lN(fe,Ye)+1;return Qo(fe,ze,Qe).join("")}function xO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.slice(0,rN(z)+1);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=lN(fe,cr(j))+1;return Qo(fe,0,Ye).join("")}function CO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.replace(ot,"");if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=iN(fe,cr(j));return Qo(fe,Ye).join("")}function SO(z,j){var A=w,fe=C;if(Vi(j)){var Ye="separator"in j?j.separator:Ye;A="length"in j?xn(j.length):A,fe="omission"in j?Ya(j.omission):fe}z=ri(z);var ze=z.length;if(xc(z)){var Qe=cr(z);ze=Qe.length}if(A>=ze)return z;var $e=A-Cc(fe);if($e<1)return fe;var at=Qe?Qo(Qe,0,$e).join(""):z.slice(0,$e);if(Ye===t)return at+fe;if(Qe&&($e+=at.length-$e),Zy(Ye)){if(z.slice($e).search(Ye)){var vt,Wt=at;for(Ye.global||(Ye=Cp(Ye.source,ri(Pt.exec(Ye))+"g")),Ye.lastIndex=0;vt=Ye.exec(Wt);)var Xt=vt.index;at=at.slice(0,Xt===t?$e:Xt)}}else if(z.indexOf(Ya(Ye),$e)!=$e){var Jt=at.lastIndexOf(Ye);Jt>-1&&(at=at.slice(0,Jt))}return at+fe}function zO(z){return z=ri(z),z&&Ue.test(z)?z.replace(Ce,dz):z}var kO=Oc(function(z,j,A){return z+(A?" ":"")+j.toUpperCase()}),Gy=QN("toUpperCase");function HM(z,j,A){return z=ri(z),j=A?t:j,j===t?rz(z)?bz(z):Xi(z):z.match(j)||[]}var PM=kn(function(z,j){try{return yi(z,t,j)}catch(A){return yy(A)?A:new Mn(A)}}),FO=oo(function(z,j){return Zi(j,function(A){A=zr(A),ao(z,A,my(z[A],z))}),z});function JO(z){var j=z==null?0:z.length,A=mn();return z=j?Ee(z,function(fe){if(typeof fe[1]!="function")throw new Ea(o);return[A(fe[0]),fe[1]]}):[],kn(function(fe){for(var Ye=-1;++YeY)return[];var A=U,fe=Cl(z,U);j=mn(j),z-=U;for(var Ye=jo(fe,j);++A0||j<0)?new En(A):(z<0?A=A.takeRight(-z):z&&(A=A.drop(z)),j!==t&&(j=xn(j),A=j<0?A.dropRight(-j):A.take(j-z)),A)},En.prototype.takeRightWhile=function(z){return this.reverse().takeWhile(z).reverse()},En.prototype.toArray=function(){return this.take(U)},Cr(En.prototype,function(z,j){var A=/^(?:filter|find|map|reject)|While$/.test(j),fe=/^(?:head|last)$/.test(j),Ye=Le[fe?"take"+(j=="last"?"Right":""):j],ze=fe||/^find/.test(j);Ye&&(Le.prototype[j]=function(){var Qe=this.__wrapped__,$e=fe?[1]:arguments,at=Qe instanceof En,vt=$e[0],Wt=at||Vn(Qe),Xt=function(On){var Bn=Ye.apply(Le,st([On],$e));return fe&&Jt?Bn[0]:Bn};Wt&&A&&typeof vt=="function"&&vt.length!=1&&(at=Wt=!1);var Jt=this.__chain__,tn=!!this.__actions__.length,yn=ze&&!Jt,Cn=at&&!tn;if(!ze&&Wt){Qe=Cn?Qe:new En(this);var Zn=z.apply(Qe,$e);return Zn.__actions__.push({func:Vf,args:[Xt],thisArg:t}),new Ka(Zn,Jt)}return yn&&Cn?z.apply(this,$e):(Zn=this.thru(Xt),yn?fe?Zn.value()[0]:Zn.value():Zn)})}),Zi(["pop","push","shift","sort","splice","unshift"],function(z){var j=ef[z],A=/^(?:push|sort|unshift)$/.test(z)?"tap":"thru",fe=/^(?:pop|shift)$/.test(z);Le.prototype[z]=function(){var Ye=arguments;if(fe&&!this.__chain__){var ze=this.value();return j.apply(Vn(ze)?ze:[],Ye)}return this[A](function(Qe){return j.apply(Vn(Qe)?Qe:[],Ye)})}}),Cr(En.prototype,function(z,j){var A=Le[j];if(A){var fe=A.name+"";ci.call(Fc,fe)||(Fc[fe]=[]),Fc[fe].push({name:j,func:A})}}),Fc[Xf(t,G).name]=[{name:"wrapper",func:t}],En.prototype.clone=zz,En.prototype.reverse=kz,En.prototype.value=Fz,Le.prototype.at=fJ,Le.prototype.chain=bJ,Le.prototype.commit=mJ,Le.prototype.next=pJ,Le.prototype.plant=ZJ,Le.prototype.reverse=vJ,Le.prototype.toJSON=Le.prototype.valueOf=Le.prototype.value=WJ,Le.prototype.first=Le.prototype.head,td&&(Le.prototype[td]=yJ),Le},Sc=mz();sn?((sn.exports=Sc)._=Sc,Jn._=Sc):Lt._=Sc}).call(vn)})(y2e,m0);const Z2e=m0;function WL(n,e={}){return v2e(_S(n),e)}function v2e(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t.arrayBuffer())}function W2e(n){try{return new lW.Workbook().xlsx.load(n)}catch(e){return Promise.reject(e)}}function G2e(n,e,t){for(let i=0;i<(n.columns||[]).length;i++)e.cols[i.toString()]={},n.columns[i].width?e.cols[i.toString()].width=n.columns[i].width*9:e.cols[i.toString()].width=100;e.cols.len=Math.max(Object.keys(e.cols).length,t.minColLength||0)}function X2e(n){let e="";if(n.value&&n.value.result)e=n.value.result;else if(n.value&&n.value.richText)for(let t in n.value.richText)e+=n.value.richText[t].text;else e=n.value;return e}function qZ(n){if(typeof n=="object"){debugger;return"#000000"}n=n.trim().toLowerCase();let e={};try{let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e.r=parseInt(t[2],16),e.g=parseInt(t[3],16),e.b=parseInt(t[4],16),e.a=parseInt(t[1],16)/255,rn(`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`).toHexString()}catch{debugger}}function N2e(n){let e=null;n.style.fill&&n.style.fill.fgColor&&(n.style.fill.fgColor.argb?e=qZ(n.style.fill.fgColor.argb):e="#C7C9CC"),e&&(n.style.bgcolor=e);let t=null;return n.style.font&&n.style.font.color&&(n.style.font.color.argb?t=qZ(n.style.font.color.argb):t="#000000"),t&&(n.style.color=t),n.style.alignment&&(n.style.alignment.horizontal&&(n.style.align=n.style.alignment.horizontal),n.style.alignment.vertical&&(n.style.valign=n.style.alignment.vertical)),n.style.alignment&&n.style.alignment.wrapText&&(n.style.textwrap=!0),n.style.border&&Object.keys(n.style.border).forEach(i=>{let l=n.style.border[i];n.style.border[i]=[l.style||"thick",l.color&&l.color.argb&&qZ(l.color.argb)||"#000000"]}),n.style}function M2e(n,e){let t=[];return n.eachSheet(i=>{console.log(i,"sheet");let l={name:i.name,styles:[],rows:{},cols:{},merges:[]},a=[];for(let o in i._merges){l.merges.push(i._merges[o].shortRange);let r={};r.startAddress=i._merges[o].tl,r.endAddress=i._merges[o].br,r.YRange=i._merges[o].model.bottom-i._merges[o].model.top,r.XRange=i._merges[o].model.right-i._merges[o].model.left,a.push(r)}G2e(i,l,e),(i._rows||[]).forEach((o,r)=>{l.rows[r]={cells:{}},o.height&&(l.rows[r].height=o.height),(o._cells||[]).forEach((f,v)=>{l.rows[r].cells[v]={};let b=Z2e.find(a,function(Z){return Z.startAddress==f._address});b&&f.master.address!=b.startAddress||(b&&(l.rows[r].cells[v].merge=[b.YRange,b.XRange]),l.rows[r].cells[v].text=X2e(f),l.styles.push(N2e(f)),l.rows[r].cells[v].style=l.styles.length-1)})}),t.push(l)}),console.log(t,"workbookData"),t}const I2e=He({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({minColLength:20})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null),i=Ne(null);let l=null;function a(o){W2e(o).then(r=>{l.loadData(M2e(r,n.options)),e("rendered")}).catch(r=>{console.warn(r),l.loadData({}),e("error",r)})}return Kt(()=>{window.xs=l=new AS(i.value,{mode:"read",showToolbar:!1,view:{height:()=>t.value.clientHeight||300,width:()=>document.documentElement.clientWidth}}).loadData({}),n.src&&WL(n.src,n.requestOptions).then(a).catch(o=>{l.loadData({}),e("error",o)})}),rt(()=>n.src,()=>{n.src?WL(n.src).then(a).catch(o=>{l.loadData({}),e("error",o)}):l.loadData({})}),{wrapperRef:t,rootRef:i}}}),Y2e={class:"vue-office-excel",ref:"wrapperRef"},w2e={class:"vue-office-excel-main",ref:"rootRef"};function g2e(n,e,t,i,l,a){return kl(),rc("div",Y2e,[Du("div",w2e,null,512)],512)}const bm=$u(I2e,[["render",g2e]]);bm.install=function(n){n.component(bm.name,bm)};const V2e={__name:"ExcelDemo",setup(n){return(e,t)=>(kl(),Vo(KX,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx"},{default:pa(i=>[D(mi(bm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},L2e="LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNiksbz1hKDY5KSxjPWEoNjMpLGw9YSgxMDApLGg9YSgxMDEpLHU9YSgxMDIpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19dC5Xb3JrZXJUYXNrPVdvcmtlclRhc2s7Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uIHdwaFNldHVwVGVzdCh0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24gd3BoQ29uZmlndXJlKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBEb2MoZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPVtdLHA9KDAsci5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6bSxhcGlWZXJzaW9uOmJ9PWUseT0iMy4wLjI3OSI7aWYoYiE9PXkpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Yn0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiMy4wLjI3OSIuYCk7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBpbltdKXcucHVzaChlKTtpZih3Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit3LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVhZGFibGVTdHJlYW0pe2NvbnN0IGU9IlRoZSBicm93c2VyL2Vudmlyb25tZW50IGxhY2tzIG5hdGl2ZSBzdXBwb3J0IGZvciBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgdGhlIFBERi5qcyBsaWJyYXJ5IChlLmcuIGBSZWFkYWJsZVN0cmVhbWApOyAiO2lmKGwuaXNOb2RlSlMpdGhyb3cgbmV3IEVycm9yKGUrInBsZWFzZSB1c2UgYSBgbGVnYWN5YC1idWlsZCBpbnN0ZWFkLiIpO3Rocm93IG5ldyBFcnJvcihlKyJwbGVhc2UgdXBkYXRlIHRvIGEgc3VwcG9ydGVkIGJyb3dzZXIuIil9Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5wdXNoKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtjb25zdCB0PWcuaW5kZXhPZihlKTtnLnNwbGljZSh0LDEpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm4sbGVuZ3RoOmksZG9jQmFzZVVybDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDtpZihlKXt0cnl7ZD1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIobSxlLHQseCxsLGMsbyk7aC5yZXNvbHZlKGQpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IGcscD1bXTt0cnl7Zz1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBiPWcuZ2V0RnVsbFJlYWRlcigpO2IuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoYi5pc1JhbmdlU3VwcG9ydGVkKXthPWF8fGIuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7ZD1uZXcgcy5OZXR3b3JrUGRmTWFuYWdlcihtLGcse21zZ0hhbmRsZXI6eCxwYXNzd29yZDp0LGxlbmd0aDpiLmNvbnRlbnRMZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm59LGwsYyxvKTtmb3IoY29uc3QgZSBvZiBwKWQuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtwPVtdO2gucmVzb2x2ZShkKTtmPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtmPW51bGx9KSk7bGV0IHk9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTpufSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKXtkfHxmdW5jdGlvbigpe2NvbnN0IGU9KDAsci5hcnJheXNUb0J5dGVzKShwKTtpJiZlLmxlbmd0aCE9PWkmJigwLHIud2FybikoInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtkPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihtLGUsdCx4LGwsYyxvKTtoLnJlc29sdmUoZCl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cD1bXX0oKTtmPW51bGw7cmV0dXJufXkrPSgwLHIuYXJyYXlCeXRlTGVuZ3RoKShlKTtiLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHx4LnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnksdG90YWw6TWF0aC5tYXgoeSxiLmNvbnRlbnRMZW5ndGh8fDApfSk7ZD9kLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6cC5wdXNoKGUpO2IucmVhZCgpLnRoZW4ocmVhZENodW5rLGEpfWNhdGNoKGUpe2EoZSl9fTtiLnJlYWQoKS50aGVuKHJlYWRDaHVuayxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7Zj1udWxsfSkpO2Y9ZnVuY3Rpb24oZSl7Zy5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX14Lm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7eC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbiB3cGhTZXR1cEdldERlc3RpbmF0aW9ucyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0RGVzdGluYXRpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7eC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxhYmVscyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7eC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxheW91dChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VNb2RlKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7eC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO3gub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7eC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7eC5vbigiR2V0SmF2YVNjcmlwdCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0SmF2YVNjcmlwdChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7eC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREb2NKU0FjdGlvbnMoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7eC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO3gub24oIkdldE91dGxpbmUiLChmdW5jdGlvbiB3cGhTZXR1cEdldE91dGxpbmUoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7eC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7eC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3gub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRNZXRhZGF0YShlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTt4Lm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0TWFya0luZm8oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREYXRhKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTt4Lm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpfSkpfSkpfSkpO3gub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7eC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTt4Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7eC5vbigiU2F2ZURvY3VtZW50IiwoZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cyxmaWxlbmFtZTpvfSl7Y29uc3QgbD1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKV0saD1lP251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkocyk7aWYoaClmb3IoY29uc3RbZSx0XW9mIGgpbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChhPT57Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2V9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgscix0KS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2socil9KSl9KSkpO2lmKGUpbC5wdXNoKGEuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKWwucHVzaChhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZSh4LGEscykuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSkpfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oW3QsYSxpLHMsbCwuLi5oXSl7bGV0IHU9W10sZD1udWxsO2lmKGUpe2Q9aFswXTtpZighZClyZXR1cm4gdC5ieXRlc31lbHNle3U9aC5mbGF0KDIpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gdC5ieXRlc31jb25zdCBmPWEgaW5zdGFuY2VvZiBuLkRpY3QmJmEuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgZz1udWxsLHA9ITE7aWYoQXJyYXkuaXNBcnJheShmKSl7Zm9yKGxldCBlPTAsdD1mLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09ZltlXSl7Zz1mW2UrMV07aT1udWxsO3A9ITB9bnVsbD09PWcmJihnPXMuZ2V0TmV3UmVmKCkpfWVsc2UgaWYoZil7aT1udWxsOygwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpfWxldCBtPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO209e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1JlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmwsZmlsZW5hbWU6b319cy5yZXNldE5ld1JlZigpO3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzptLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZix4ZmFEYXRhc2V0c1JlZjpnLGhhc1hmYURhdGFzZXRzRW50cnk6cCxhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp4LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7cyYmKDAsci5pbmZvKShgcGFnZT0ke24rMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt4Lm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIituKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjp4LHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktcykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbiB3cGhHZXRTdHJ1Y3RUcmVlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7eC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQseCl9KSk7eC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uIHdwaENsZWFudXAoZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7eC5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24gd3BoVGVybWluYXRlKGUpe2Q9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSgwLG8uY2xlYXJHbG9iYWxDYWNoZXMpKCk7ZiYmZihuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBnKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXt4LmRlc3Ryb3koKTt4PW51bGx9KSl9KSk7eC5vbigiUmVhZHkiLChmdW5jdGlvbiB3cGhSZWFkeSh0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIHIuUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7eC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygci5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVua25vd25FcnJvckV4Y2VwdGlvbj94LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6eC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSkpOm9uRmFpbHVyZShlKX0pKX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Z2V0UGRmTWFuYWdlcihlKS50aGVuKChmdW5jdGlvbihlKXtpZihkKXtlLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWE9ZTthLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9Pnt4LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBTfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgaC5NZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1Xb3JrZXJNZXNzYWdlSGFuZGxlcjsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWwuaXNOb2RlSlMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmV29ya2VyTWVzc2FnZUhhbmRsZXIuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5Qnl0ZUxlbmd0aD1hcnJheUJ5dGVMZW5ndGg7dC5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5c1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYSs9YXJyYXlCeXRlTGVuZ3RoKGVbcl0pO2xldCByPTA7Y29uc3Qgbj1uZXcgVWludDhBcnJheShhKTtmb3IobGV0IGE9MDthPHQ7YSsrKXtsZXQgdD1lW2FdO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwodD0ic3RyaW5nIj09dHlwZW9mIHQ/c3RyaW5nVG9CeXRlcyh0KTpuZXcgVWludDhBcnJheSh0KSk7Y29uc3QgaT10LmJ5dGVMZW5ndGg7bi5zZXQodCxyKTtyKz1pfXJldHVybiBufTt0LmFzc2VydD1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX07dC5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmdm9pZCAwIT09ZS5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQ7bis9YSl7Y29uc3QgaT1NYXRoLm1pbihuK2EsdCkscz1lLnN1YmFycmF5KG4saSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9O3QuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNldHRsZWQiLHtnZXQ6KCk9PnR9KTtlLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7ZS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3Q9ITA7YShlKX07ZS5yZWplY3Q9ZnVuY3Rpb24oZSl7dD0hMDtyKGUpfX0pKTtyZXR1cm4gZX07dC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dCYmdC5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe2lmKCFlKXJldHVybiExO3N3aXRjaChlLnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpKXJldHVybiByfWNhdGNoKGUpe31yZXR1cm4gbnVsbH07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTt0LmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIHJ9O3QuaW5mbz1mdW5jdGlvbiBpbmZvKGUpe3I+PWEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9O3QuaXNBcnJheUJ1ZmZlcj1mdW5jdGlvbiBpc0FycmF5QnVmZmVyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH07dC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHI9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9c1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZCRVN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1VURjE2QkVTdHJpbmcoZSl7Y29uc3QgdD1bIsO+w78iXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIHQuam9pbigiIil9O3Quc3RyaW5nVG9VVEY4U3RyaW5nPXN0cmluZ1RvVVRGOFN0cmluZzt0LnVucmVhY2hhYmxlPXVucmVhY2hhYmxlO3QudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX07dC53YXJuPXdhcm47dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07dC5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O3QuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxJTks6MTV9O3QuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e0ZSRUVURVhUX1NJWkU6MSxGUkVFVEVYVF9DT0xPUjoyLEZSRUVURVhUX09QQUNJVFk6MyxJTktfQ09MT1I6MTEsSU5LX1RISUNLTkVTUzoxMixJTktfT1BBQ0lUWToxM307dC5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTt0LlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O3QuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307dC5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O3QuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXtNQVJLRUQ6Ik1hcmtlZCIsUkVWSUVXOiJSZXZpZXcifTt0LkFubm90YXRpb25NYXJrZWRTdGF0ZT17TUFSS0VEOiJNYXJrZWQiLFVOTUFSS0VEOiJVbm1hcmtlZCJ9O3QuQW5ub3RhdGlvblJldmlld1N0YXRlPXtBQ0NFUFRFRDoiQWNjZXB0ZWQiLFJFSkVDVEVEOiJSZWplY3RlZCIsQ0FOQ0VMTEVEOiJDYW5jZWxsZWQiLENPTVBMRVRFRDoiQ29tcGxldGVkIixOT05FOiJOb25lIn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07dC5TdHJlYW1UeXBlPXtVTktOT1dOOiJVTktOT1dOIixGTEFURToiRkxBVEUiLExaVzoiTFpXIixEQ1Q6IkRDVCIsSlBYOiJKUFgiLEpCSUc6IkpCSUciLEE4NToiQTg1IixBSFg6IkFIWCIsQ0NGOiJDQ0YiLFJMWDoiUkxYIn07dC5Gb250VHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsVFlQRTE6IlRZUEUxIixUWVBFMVNUQU5EQVJEOiJUWVBFMVNUQU5EQVJEIixUWVBFMUM6IlRZUEUxQyIsQ0lERk9OVFRZUEUwOiJDSURGT05UVFlQRTAiLENJREZPTlRUWVBFMEM6IkNJREZPTlRUWVBFMEMiLFRSVUVUWVBFOiJUUlVFVFlQRSIsQ0lERk9OVFRZUEUyOiJDSURGT05UVFlQRTIiLFRZUEUzOiJUWVBFMyIsT1BFTlRZUEU6Ik9QRU5UWVBFIixUWVBFMDoiVFlQRTAiLE1NVFlQRTE6Ik1NVFlQRTEifTtjb25zdCBhPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9YTt0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX07dC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX07dC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHI9YS5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe3I+PWEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IG49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPW47dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIGFycmF5Qnl0ZUxlbmd0aChlKXtpZih2b2lkIDAhPT1lLmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYodm9pZCAwIT09ZS5ieXRlTGVuZ3RoKXJldHVybiBlLmJ5dGVMZW5ndGg7dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGFycmF5Qnl0ZUxlbmd0aCIpfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX07Y29uc3QgaT1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7aVtlXX0ke2lbdF19JHtpW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxuPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0sblsxXSxpWzFdKSxNYXRoLm1heChhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1heChhWzFdLHJbMV0sblsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10sbj1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK2kpLzIsbz1NYXRoLnNxcnQoKGEraSkqKjItNCooYSppLW4qcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksaT1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBuPmk/bnVsbDpbYSxuLHIsaV19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsbixpLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Km47aD0tMyplKzkqYS05Km4rMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNippO2g9LTMqdCs5KnItOSppKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqbitmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZippK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWZTZXRDYWNoZT10LlJlZlNldD10LlJlZj10Lk5hbWU9dC5FT0Y9dC5EaWN0PXQuQ21kPXQuQ0lSQ1VMQVJfUkVGPXZvaWQgMDt0LmNsZWFyUHJpbWl0aXZlQ2FjaGVzPWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7by5fY2xlYXJDYWNoZSgpO3MuX2NsZWFyQ2FjaGUoKTtsLl9jbGVhckNhY2hlKCl9O3QuaXNDbWQ9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8mJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfTt0LmlzRGljdD1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9O3QuaXNOYW1lPWlzTmFtZTt0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciByPWEoMik7Y29uc3Qgbj1TeW1ib2woIkNJUkNVTEFSX1JFRiIpO3QuQ0lSQ1VMQVJfUkVGPW47Y29uc3QgaT1TeW1ib2woIkVPRiIpO3QuRU9GPWk7Y29uc3Qgcz1mdW5jdGlvbiBOYW1lQ2xvc3VyZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KHQpe3JldHVybiBlW3RdfHwoZVt0XT1uZXcgTmFtZSh0KSl9c3RhdGljIF9jbGVhckNhY2hlKCl7ZT1PYmplY3QuY3JlYXRlKG51bGwpfX1yZXR1cm4gTmFtZX0oKTt0Lk5hbWU9cztjb25zdCBvPWZ1bmN0aW9uIENtZENsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQodCl7cmV0dXJuIGVbdF18fChlW3RdPW5ldyBDbWQodCkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIENtZH0oKTt0LkNtZD1vO2NvbnN0IGM9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBjfTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1jfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yZXR1cm4gciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBsJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZiYmKHI9dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KHIpKXtyPXIuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXWluc3RhbmNlb2YgbCYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksbj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1uLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO24uc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBuKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPWEpO24uc2l6ZT4wJiYoci5fbWFwW3RdPW4pfW4uY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjb25zdCBsPWZ1bmN0aW9uIFJlZkNsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZ2V0KHQsYSl7Y29uc3Qgcj0wPT09YT9gJHt0fVJgOmAke3R9UiR7YX1gO3JldHVybiBlW3JdfHwoZVtyXT1uZXcgUmVmKHQsYSkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIFJlZn0oKTt0LlJlZj1sO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1SZWZTZXQ7Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19dC5SZWZTZXRDYWNoZT1SZWZTZXRDYWNoZTtmdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMDt0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KWZvcihjb25zdCB0IG9mIHIuZ2V0S2V5cygpKXtjb25zdCBzPWFbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1yLmdldFJhdyh0KSxjPW5ldyBuLlJlZlNldCxsPVtdO19jb2xsZWN0SlMobyxlLGwsYyk7bC5sZW5ndGg+MCYmKGlbc109bCl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9dC5nZXQoIkEiKSxyPW5ldyBuLlJlZlNldCxzPVtdO19jb2xsZWN0SlMoYSxlLHMscik7cy5sZW5ndGg+MCYmKGkuQWN0aW9uPXMpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2xldCBhPWUoKTtlPW51bGw7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrPTIpdFthW2VdXT1hW2UrMV07YT1udWxsfXJldHVybiB0fX07dC5nZXRJbmhlcml0YWJsZVByb3BlcnR5PWdldEluaGVyaXRhYmxlUHJvcGVydHk7dC5nZXRMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19O3QuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSl7aWYoIWEuc3RhcnRzV2l0aChyLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KG4ucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChuLnBhZ2VJbmRleCxlKX1lLnB1c2gobil9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8Iikuc3BsaXQoIi4iKS5qb2luKCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTppfT1lO2lmKC9eIi4qIiQvLnRlc3QoYSkpe2lmKC9bXlxcXSIvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAke2F9LmApO3JldHVybiExfX1lbHNlIGlmKC9eJy4qJyQvLnRlc3QoYSkpe2lmKC9bXlxcXScvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAnOiAke2F9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBlIG9mIGEuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoZSl8fCEvXltcdy1cXF0rJC8udGVzdChlKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7YX0uYCk7cmV0dXJuITF9Y29uc3Qgcz1uP24udG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocyk/czoiNDAwIjtjb25zdCBvPXBhcnNlRmxvYXQoaSk7ZS5pdGFsaWNBbmdsZT1pc05hTihvKXx8bzwtOTB8fG8+OTA/IjE0IjppLnRvU3RyaW5nKCk7cmV0dXJuITB9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg1KTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO3QuRG9jU3RhdHM9Y2xhc3MgRG9jU3RhdHN7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lO3RoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQ7dGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9X3NlbmQoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0cmVhbVR5cGVzKWVbdF09ITA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZm9udFR5cGVzKXRbZV09ITA7dGhpcy5faGFuZGxlci5zZW5kKCJEb2NTdGF0cyIse3N0cmVhbVR5cGVzOmUsZm9udFR5cGVzOnR9KX1hZGRTdHJlYW1UeXBlKGUpe2lmKCF0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSkpe3RoaXMuX3N0cmVhbVR5cGVzLmFkZChlKTt0aGlzLl9zZW5kKCl9fWFkZEZvbnRUeXBlKGUpe2lmKCF0aGlzLl9mb250VHlwZXMuaGFzKGUpKXt0aGlzLl9mb250VHlwZXMuYWRkKGUpO3RoaXMuX3NlbmQoKX19fTtmdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBzPW5ldyBuLlJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBuLkRpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKHIpcmV0dXJuIG47aXx8KGk9W10pO2kucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gaX1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO249biYmKDAsci5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZSgvXHUwMDAwL2csIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CYXNlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO2NsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmV0d29ya1BkZk1hbmFnZXI9dC5Mb2NhbFBkZk1hbmFnZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDcpLGk9YSg0KSxzPWEoOSksbz1hKDgpO2Z1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIil9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLGMpe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKGMpO3RoaXMubXNnSGFuZGxlcj1yO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1uO3RoaXMuZW5hYmxlWGZhPWk7Y29uc3QgbD1uZXcgby5TdHJlYW0odCk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLGwpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKGwpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0LGEscixpLG8pe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hLnBhc3N3b3JkO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKG8pO3RoaXMubXNnSGFuZGxlcj1hLm1zZ0hhbmRsZXI7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXI7dGhpcy5lbmFibGVYZmE9aTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjphLm1zZ0hhbmRsZXIsbGVuZ3RoOmEubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6YS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmEucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpLGk9YSg4KTtjbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBuPU1hdGguZmxvb3IoZS9hKSxpPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9bjtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBhPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoYT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9YTtpPHI7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCByPShlK2EpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpcmV0dXJuIHJ9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsYT10aGlzLnBvcyxyPXRoaXMuZW5kO2lmKCFlKXtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEscik7cmV0dXJuIHQuc3ViYXJyYXkoYSxyKX1sZXQgbj1hK2U7bj5yJiYobj1yKTtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEsbik7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGE9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxyPVtdO2ZvcihsZXQgZT10O2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8ci5wdXNoKGUpO3JldHVybiByfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCByPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO3IucG9zPXIuc3RhcnQ9ZTtyLmVuZD1lK3R8fHRoaXMuZW5kO3IuZGljdD1hO3JldHVybiByfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09Q2h1bmtlZFN0cmVhbTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChhLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBuPVtdLGk9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPXM9Pnt0cnl7aWYoIXMuZG9uZSl7Y29uc3QgZT1zLnZhbHVlO24ucHVzaChlKTtpKz0oMCxyLmFycmF5Qnl0ZUxlbmd0aCkoZSk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpO3JldHVybn1jb25zdCBvPSgwLHIuYXJyYXlzVG9CeXRlcykobik7bj1udWxsO2Uobyl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBuPSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsbik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLG49W107Zm9yKGxldCBlPWE7ZTxyOysrZSluLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mobil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbil7Y29uc3QgaT1lW25dO2E8MCYmKGE9aSk7aWYocj49MCYmcisxIT09aSl7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1pfW4rMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazppKzF9KTtyPWl9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG49cit0LmJ5dGVMZW5ndGgsaT1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9bjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKG4vdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChuL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9bn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9aTtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJpbmdTdHJlYW09dC5TdHJlYW09dC5OdWxsU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgyKTtjbGFzcyBTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBuPWErZTtuPnImJihuPXIpO3RoaXMucG9zPW47cmV0dXJuIHQuc3ViYXJyYXkoYSxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIHI9YSgxMCksbj1hKDIpLGk9YSg0KSxzPWEoMyksbz1hKDQ5KSxjPWEoNSksbD1hKDY1KSxoPWEoNjcpLHU9YSg2OSksZD1hKDk4KSxmPWEoMTUpLGc9YSg4KSxwPWEoNzMpLG09YSg2MCksYj1hKDEzKSx5PWEoMTcpLHc9YSg3MiksUz1hKDYzKSx4PWEoNzQpLGs9YSg5OSk7Y29uc3QgQz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6aSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLG5vbkJsZW5kTW9kZXNTZXQ6aCx4ZmFGYWN0b3J5OnV9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1uO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT11O2NvbnN0IGQ9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIGl7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2F9XyR7KytkLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcGFnZSR7bi50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2Ygcy5EaWN0P3MuRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2Ygcy5EaWN0P2U6cy5EaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0WzJdLXRbMF0hPTAmJnRbM10tdFsxXSE9MClyZXR1cm4gdDsoMCxuLndhcm4pKGBFbXB0eSAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxDKX1nZXQgY3JvcEJveCgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2xldCBhO2lmKGU9PT10fHwoMCxuLmlzQXJyYXlFcXVhbCkoZSx0KSlhPXQ7ZWxzZXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtyJiZyWzJdLXJbMF0hPTAmJnJbM10tclsxXSE9MD9hPXI6KDAsbi53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLGF8fHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQsYSl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDtlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pOygwLG4ud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke2F9KTogIiR7dH0iLmApfWdldENvbnRlbnRTdHJlYW0oZSl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKHQ9PnQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/dDpBcnJheS5pc0FycmF5KHQpP25ldyB5LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbSh0LHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzLGUpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksaT10aGlzLnBhZ2VEaWN0LHM9dGhpcy5hbm5vdGF0aW9ucy5zbGljZSgpLG89YXdhaXQgci5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEpO2Zvcihjb25zdHtyZWY6ZX1vZiBvLmFubm90YXRpb25zKXMucHVzaChlKTtjb25zdCBjPWkuZ2V0KCJBbm5vdHMiKTtpLnNldCgiQW5ub3RzIixzKTtjb25zdCBsPVtdO2xldCBoPW51bGw7dGhpcy54cmVmLmVuY3J5cHQmJihoPXRoaXMueHJlZi5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaSxsLGgpO2MmJmkuc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChhKSYmaS5wdXNoKHMuc2F2ZShyLHQsYSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IHAuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazphLGludGVudDpzLGNhY2hlS2V5Om8sYW5ub3RhdGlvblN0b3JhZ2U6Yz1udWxsfSl7Y29uc3QgbD10aGlzLmdldENvbnRlbnRTdHJlYW0oZSksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZD10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShjKTtsZXQgZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYoZCl7Y29uc3QgZT1kLmdldCh0aGlzLnBhZ2VJbmRleCk7ZSYmKGY9ci5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHUsYSxlKSl9Y29uc3QgZz1Qcm9taXNlLmFsbChbbCxoXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdChzLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OnUuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpvfSk7cmV0dXJuIHUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsZl0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQscl0pe3ImJih0PXQuY29uY2F0KHIpKTtpZigwPT09dC5sZW5ndGh8fHMmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3QgaT0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbz0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEocyZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZD1bXTtmb3IoY29uc3QgZSBvZiB0KShvfHxsJiZlLm11c3RCZVZpZXdlZChjKXx8aCYmZS5tdXN0QmVQcmludGVkKGMpKSYmZC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsYSxzLGksYykuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbigoZnVuY3Rpb24odCl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiB0KXtlLmFkZE9wTGlzdChuKTtpJiYoYT1pKTtzJiYocj1zKX1lLmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLHNpbms6cixjb21iaW5lVGV4dEl0ZW1zOm59KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbShlKSxzPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2ksc10pLnRoZW4oKChbaV0pPT5uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTppLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxjb21iaW5lVGV4dEl0ZW1zOm4sc2luazpyLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3QgaT1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZzLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHwobz1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkpO2kucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsdGhpcy52aWV3KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKGkpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKCgoKT0+e2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbm5vdGF0aW9ucyllLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChlKS50aGVuKChmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgYTtmb3IoY29uc3QgbiBvZiBlKWlmKG4paWYobiBpbnN0YW5jZW9mIHIuUG9wdXBBbm5vdGF0aW9uKXthfHwoYT1bXSk7YS5wdXNoKG4pfWVsc2UgdC5wdXNoKG4pO2EmJnQucHVzaCguLi5hKTtyZXR1cm4gdH0pKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT0oMCxpLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxuLlBhZ2VBY3Rpb25FdmVudFR5cGUpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLGUpfX10LlBhZ2U9UGFnZTtjb25zdCB2PW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxPPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IG49dC5sZW5ndGgsaT1lLnBlZWtCeXRlcyhhKSxzPWkubGVuZ3RoLW47aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPW4tMTtsZXQgcj1pLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPG4mJmlbci1zXT09PXRbYS1zXTspcysrO2lmKHM+PW4pe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8biYmaVthK3JdPT09dFtyXTspcisrO2lmKHI+PW4pe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9dC5QREZEb2N1bWVudD1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBuLkludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBrLlhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBoLkNhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPWYuTGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShlKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtmaW5kKGUsTykmJih0PWUucG9zKzYtZS5zdGFydCl9ZWxzZXtjb25zdCBhPTEwMjQscj1GLmxlbmd0aDtsZXQgbj0hMSxzPWUuZW5kO2Zvcig7IW4mJnM+MDspe3MtPWEtcjtzPDAmJihzPTApO2UucG9zPXM7bj1maW5kKGUsRixhLCEwKX1pZihuKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsdikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHYubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoYSk/dGhpcy5fdmVyc2lvbj1hOigwLG4ud2FybikoYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXsoMCxuLndhcm4pKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT0oMCxzLmlzTmFtZSkoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGEmJml9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2FbInhkcDp4ZHAiXT10O3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IG47bj0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihhW25dPWkpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lW3RdO2lmKGEpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGQuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYocil0cnl7dFthXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgeC5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCksYT1uZXcgcC5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgYS5sb2FkKCk7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoYSk7dCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmci5zZXQoYSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMocil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGM9bmV3IHAuT2JqZWN0TG9hZGVyKHIsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBjLmxvYWQoKTtjb25zdCBsPXIuZ2V0KCJGb250Iik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyBtLk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSx5PW5ldyBNYXA7bC5mb3JFYWNoKCgoZSx0KT0+e3kuc2V0KGUsdCl9KSk7Y29uc3Qgdz1bXTtmb3IoY29uc3RbZSxhXW9mIHkpe2NvbnN0IG89YS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShvIGluc3RhbmNlb2Ygcy5EaWN0KSljb250aW51ZTtsZXQgYz1vLmdldCgiRm9udEZhbWlseSIpO2M9Yy5yZXBsYWNlKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6Yyxmb250V2VpZ2h0Om8uZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LW8uZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJncucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTtjb25zdCBTPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyhmKTtpZighUylyZXR1cm47aC5pZ25vcmVFcnJvcnM9ITA7dy5sZW5ndGg9MDtmLmxlbmd0aD0wO2NvbnN0IHg9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBTKSgwLG8uZ2V0WGZhRm9udE5hbWUpKGAke2V9LVJlZ3VsYXJgKXx8eC5hZGQoZSk7eC5zaXplJiZTLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgUylpZigheC5oYXMoZSkpZm9yKGNvbnN0IGEgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGk9YCR7ZX0tJHthLm5hbWV9YCxjPSgwLG8uZ2V0WGZhRm9udERpY3QpKGkpO3cucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChpKSwxXSxudWxsLGQsdCxnLGMse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OmEuZm9udFdlaWdodCxpdGFsaWNBbmdsZTphLml0YWxpY0FuZ2xlfSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoZix4KX1hc3luYyBzZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHQ9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCF0KXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IG49dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjB8fG4gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFuLmlzRW1wdHk7Y29uc3QgaT0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPWkmJnRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoYSk7ZS5oYXNBY3JvRm9ybT1yJiYhcztlLmhhc1NpZ25hdHVyZXM9aX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCByPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2Ygcil7ZVthXT0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHIgaW5zdGFuY2VvZiBzLk5hbWUpe2VbYV09cjtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCB0O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSJzdHJpbmciOnQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykocik7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dD1yO2JyZWFrO2RlZmF1bHQ6ciBpbnN0YW5jZW9mIHMuTmFtZSYmKHQ9cil9aWYodm9pZCAwPT09dCl7KDAsbi53YXJuKShgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCk7Y29udGludWV9ZS5DdXN0b218fChlLkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKTtlLkN1c3RvbVthXT10O2NvbnRpbnVlfSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGE7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9KDAsbi5zdHJpbmdUb0J5dGVzKShlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihhPSgwLG4uc3RyaW5nVG9CeXRlcykoZVsxXSkpfWVsc2UgdD0oMCxsLmNhbGN1bGF0ZU1ENSkodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGE/aGV4U3RyaW5nKGEpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOnJ9PXRoaXMsaT1zLlJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2Ygcy5SZWYmJihhPWF3YWl0IHIuZmV0Y2hBc3luYyhhKSk7aWYoKDAscy5pc05hbWUpKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpeygwLG4ud2FybikoYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLl9wYWdlUHJvbWlzZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Om59PXRoaXM7bGV0IGk7aT1uP1Byb21pc2UucmVzb2x2ZShbcy5EaWN0LmVtcHR5LG51bGxdKTpyJiZyLnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtpPWkudGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bn0pKSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IHI7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtyPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChzKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKHItMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247KDAsbi53YXJuKShgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBvO3RyeXtvPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLG5dXW9mIG8pe2xldCBpO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7aT1Qcm9taXNlLnJlamVjdChyKTtpLmNhdGNoKCgoKT0+e30pKX1lbHNlIGk9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWEuaGFzKGUpfHxhLnNldChlLFtdKTthLmdldChlKS5wdXNoKHIuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+ZSYmZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlfHwhZS5oYXMoIkNPIikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMTEpLHM9YSgzKSxvPWEoNjMpLGM9YSg1KSxsPWEoNTgpLGg9YSg2NyksdT1hKDEyKSxkPWEoNzApLGY9YSg3MyksZz1hKDYwKSxwPWEoOCksbT1hKDc0KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtpLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxvLGMsbixsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxpLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7aS5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06byBpbnN0YW5jZW9mIHMuRGljdD9vOnMuRGljdC5lbXB0eSxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLHBhZ2VJbmRleDp1fTtzd2l0Y2goZyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2Ygcy5OYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpofHwoZz8oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtnfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYCk6KDAsci53YXJuKSgiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKSk7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBuPXIuZ2V0UmF3KCJQIik7aWYoIShuIGluc3RhbmNlb2Ygcy5SZWYpKXJldHVybi0xO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW25dKX1jYXRjaChlKXsoMCxyLndhcm4pKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCk7cmV0dXJuLTF9fXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEpe2NvbnN0IG49ZS54cmVmO2xldCBpO2NvbnN0IGM9W10sbD1bXTtmb3IoY29uc3QgaCBvZiBhKXN3aXRjaChoLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6aWYoIWkpe2NvbnN0IGU9bmV3IHMuRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtpPW4uZ2V0TmV3UmVmKCk7KDAsby53cml0ZU9iamVjdCkoaSxlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6aSxkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49ZS54cmVmLGk9W107Zm9yKGNvbnN0IHMgb2YgYSlzd2l0Y2gocy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmkucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scyx7ZXZhbHVhdG9yOmUsdGFzazp0fSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6aS5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scykpfXJldHVybiBQcm9taXNlLmFsbChpKX19O2Z1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2lmKCFlLmhhcygiUXVhZFBvaW50cyIpKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGgvODtlPG47ZSsrKXtyLnB1c2goW10pO2ZvcihsZXQgbj04KmUsaT04KmUrODtuPGk7bis9Mil7Y29uc3QgaT1hW25dLHM9YVtuKzFdO2lmKG51bGwhPT10JiYoaTx0WzBdfHxpPnRbMl18fHM8dFsxXXx8cz50WzNdKSlyZXR1cm4gbnVsbDtyW2VdLnB1c2goe3g6aSx5OnN9KX19cmV0dXJuIHIubWFwKChlPT57Y29uc3RbdCxhLHIsbl09ZS5yZWR1Y2UoKChbZSx0LGEscl0sbik9PltNYXRoLm1pbihlLG4ueCksTWF0aC5tYXgodCxuLngpLE1hdGgubWluKGEsbi55KSxNYXRoLm1heChyLG4ueSldKSxbTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUlOX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1JTl9WQUxVRV0pO3JldHVyblt7eDp0LHk6bn0se3g6YSx5Om59LHt4OnQseTpyfSx7eDphLHk6cn1dfSkpfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3RbbixpLHMsb109ci5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsYSk7aWYobj09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1uKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tbipjLGVbMV0taSpsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9ZS5kaWN0O3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgYT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoYSk7dGhpcy5zZXRSb3RhdGlvbihhKTt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgYT10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSl0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsbi5jb2xsZWN0QWN0aW9ucykoZS54cmVmLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbH1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5OT1ZJRVcpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuUFJJTlQpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKX1tdXN0QmVWaWV3ZWQoZSl7Y29uc3QgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWUmJmUuZ2V0KHRoaXMuZGF0YS5pZCk7cmV0dXJuIHQmJnZvaWQgMCE9PXQucHJpbnQ/dC5wcmludDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGwuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe0FycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD90aGlzLnJlY3RhbmdsZT1yLlV0aWwubm9ybWFsaXplUmVjdChlKTp0aGlzLnJlY3RhbmdsZT1bMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUpe3RoaXMucm90YXRpb249MDtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgdD1lLmdldCgiUiIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIodCkmJjAhPT10KXt0JT0zNjA7dDwwJiYodCs9MzYwKTt0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KX19fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIiksYT10LmdldCgiVHlwZSIpO2lmKCFhfHwoMCxzLmlzTmFtZSkoYSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpJiYodGhpcy5hcHBlYXJhbmNlPWEuZ2V0KHIubmFtZSkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxuPVtdLGk9W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7aS5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7bi5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGNvbWJpbmVUZXh0SXRlbXM6ITAsc2luazpzLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtpLmxlbmd0aCYmbi5wdXNoKGkuam9pbigiIikpO24ubGVuZ3RoPjAmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9bil9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGE9KHRbMl0tdFswXSkvMixuPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZuPjAmJihlPmF8fGU+bikpeygwLHIud2FybikoYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlVOREVSTElORX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZihhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKHMuTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUFubm90YXRpb25Cb3JkZXJTdHlsZTtjbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PWUuZGljdDtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PXIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO3RoaXMuZGF0YS5oYXNQb3B1cD1lLmhhcygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7dGhpcy5kYXRhLmhhc1BvcHVwPXQuaGFzKCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpuLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6Y30pe2xldCBsPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1JTl9WQUxVRSxkPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgZj1bInEiXTt0JiZmLnB1c2godCk7YSYmZi5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmYucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtsZXQgZz10aGlzLmRhdGEucXVhZFBvaW50cztnfHwoZz1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIGcpe2NvbnN0W3QsYSxyLG5dPWMoZixlKTtsPU1hdGgubWluKGwsdCk7dT1NYXRoLm1heCh1LGEpO2g9TWF0aC5taW4oaCxyKTtkPU1hdGgubWF4KGQsbil9Zi5wdXNoKCJRIik7Y29uc3QgbT1uZXcgcy5EaWN0KGUpLGI9bmV3IHMuRGljdChlKTtiLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB5PW5ldyBwLlN0cmluZ1N0cmVhbShmLmpvaW4oIiAiKSk7eS5kaWN0PWI7bS5zZXQoIkZtMCIseSk7Y29uc3Qgdz1uZXcgcy5EaWN0KGUpO24mJncuc2V0KCJCTSIscy5OYW1lLmdldChuKSk7Im51bWJlciI9PXR5cGVvZiBpJiZ3LnNldCgiQ0EiLGkpOyJudW1iZXIiPT10eXBlb2YgbyYmdy5zZXQoImNhIixvKTtjb25zdCBTPW5ldyBzLkRpY3QoZSk7Uy5zZXQoIkdTMCIsdyk7Y29uc3QgeD1uZXcgcy5EaWN0KGUpO3guc2V0KCJFeHRHU3RhdGUiLFMpO3guc2V0KCJYT2JqZWN0IixtKTtjb25zdCBrPW5ldyBzLkRpY3QoZSk7ay5zZXQoIlJlc291cmNlcyIseCk7Y29uc3QgQz10aGlzLmRhdGEucmVjdD1bbCxoLHUsZF07ay5zZXQoIkJCb3giLEMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWs7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx5KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPWUuZ2V0TmV3UmVmKCksaT1lLmdldE5ld1JlZigpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pLGM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxsPVtdO2xldCBoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKGksYyxsLGgpO2EucHVzaCh7cmVmOmksZGF0YTpsLmpvaW4oIiIpfSk7bC5sZW5ndGg9MDtoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKG4scyxsLGgpO3JldHVybntyZWY6bixkYXRhOmwuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplfSl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0LGE9dGhpcy5kYXRhO3RoaXMucmVmPWUucmVmO2EuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09YS5maWVsZE5hbWUmJihhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PWEuYWN0aW9ucyYmKGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShlLnhyZWYsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2EuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTthLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7YS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWEuZGVmYXVsdEZpZWxkVmFsdWUmJihhLmZpZWxkVmFsdWU9YS5kZWZhdWx0RmllbGRWYWx1ZSk7YS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTtjb25zdCBsPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGw/bDoiIjthLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKTtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZUIn0pO2EuZmllbGRUeXBlPWggaW5zdGFuY2VvZiBzLk5hbWU/aC5uYW1lOm51bGw7Y29uc3QgdT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEUiJ9KSxkPWUuYWNyb0Zvcm0uZ2V0KCJEUiIpLGY9dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLmFwcGVhcmFuY2UuZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczp1LGFjcm9Gb3JtUmVzb3VyY2VzOmQsYXBwZWFyYW5jZVJlc291cmNlczpmLG1lcmdlZFJlc291cmNlczpzLkRpY3QubWVyZ2Uoe3hyZWY6ZS54cmVmLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX07YS5maWVsZEZsYWdzPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhLmZpZWxkRmxhZ3MpfHxhLmZpZWxkRmxhZ3M8MCkmJihhLmZpZWxkRmxhZ3M9MCk7YS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpO2EucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKTthLmhpZGRlbj10aGlzLl9oYXNGbGFnKGEuYW5ub3RhdGlvbkZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1zdGF0aWMgX2dldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0Um90YXRpb25NYXRyaXgoZSl7Y29uc3QgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwO2xldCBhPXQmJnQucm90YXRpb247dm9pZCAwPT09YSYmKGE9dGhpcy5yb3RhdGlvbik7aWYoMD09PWEpcmV0dXJuIHIuSURFTlRJVFlfTUFUUklYO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0saT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4gV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoYSxuLGkpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtjb25zdCB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGE9dCYmdC5yb3RhdGlvbjt2b2lkIDA9PT1hJiYoYT10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IHI9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1hfHwxODA9PT1hP2AwIDAgJHtyfSAke259IHJlYDpgMCAwICR7bn0gJHtyfSByZWA7bGV0IG89IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihvPWAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe28rPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHsoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIG99YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7aWYobiYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikpcmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLEFycmF5LmZyb20odGhpcy5ib3JkZXJDb2xvciwoZT0+ZS8yNTUpKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsQXJyYXkuZnJvbSh0aGlzLmJhY2tncm91bmRDb2xvciwoZT0+ZS8yNTUpKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hc3luYyBzYXZlKGUsdCxhKXtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGk9biYmbi52YWx1ZSxjPW4mJm4ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1jKXJldHVybiBudWxsO2k9aXx8dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09YyYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmkubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZpLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbik7bGV0IGw9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSk7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IGQ9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZj17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh1LmdldCgiVCIpfHwiIiksdmFsdWU6aX0sZz1oLmdldE5ld1JlZigpLHA9bmV3IHMuRGljdChoKTtwLnNldCgiTiIsZyk7Y29uc3QgbT1oLmVuY3J5cHQ7bGV0IGI9bnVsbCx5PW51bGw7aWYobSl7Yj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTt5PW0uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGcubnVtLGcuZ2VuKTtsPXkuZW5jcnlwdFN0cmluZyhsKX1jb25zdCBlbmNvZGVyPWU9PigwLHIuaXNBc2NpaSkoZSk/ZTooMCxyLnN0cmluZ1RvVVRGMTZCRVN0cmluZykoZSk7dS5zZXQoIlYiLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoZW5jb2Rlcik6ZW5jb2RlcihpKSk7dS5zZXQoIkFQIixwKTt1LnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QoYyk7dyYmdS5zZXQoIk1LIix3KTtjb25zdCBTPW5ldyBzLkRpY3QoaCk7Uy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO1Muc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO1Muc2V0KCJSZXNvdXJjZXMiLHRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhoKSk7Uy5zZXQoIkJCb3giLGQpO2NvbnN0IHg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTt4IT09ci5JREVOVElUWV9NQVRSSVgmJlMuc2V0KCJNYXRyaXgiLHgpO2NvbnN0IGs9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKHUsayxiKTtrLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBDPVtgJHtnLm51bX0gJHtnLmdlbn0gb2JqXG5gXTsoMCxvLndyaXRlRGljdCkoUyxDLHkpO0MucHVzaCgiIHN0cmVhbVxuIixsLCJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmsuam9pbigiIikseGZhOmZ9LHtyZWY6ZyxkYXRhOkMuam9pbigiIikseGZhOm51bGx9XX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSlyZXR1cm4gbnVsbDtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuIiJ9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTsoMCxyLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltKCk7aWYoIiI9PT1zKXJldHVybiIiO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBjPS0xO3RoaXMuZGF0YS5tdWx0aUxpbmUmJihjPXMuc3BsaXQoL1xyXG58XHJ8XG4vKS5sZW5ndGgpO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IHU9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKSxbZCxmXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLGgtNCxzLHUsYyk7bGV0IGc9dS5kZXNjZW50O2lzTmFOKGcpJiYoZz0wKTtjb25zdCBwPU1hdGgubWluKE1hdGguZmxvb3IoKGwtZikvMiksMikrTWF0aC5hYnMoZykqZixtPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZCxzLHUsZixoLGwsbSwyLHAsYSk7Y29uc3QgYj11LmVuY29kZVN0cmluZyhzKS5qb2luKCIiKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZCx1LGIsaCwyLHAsYSk7Y29uc3QgeT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZigwPT09bXx8bT4yKXJldHVybmAvVHggQk1DIHEgJHt5fUJUIGArZCtgIDEgMCAwIDEgMiAke3B9IFRtICgkeygwLHIuZXNjYXBlU3RyaW5nKShiKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7eX1CVCBgK2QrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQoYix1LGYsaCxtLDIscCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IG49bmV3IGcuT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbbyYmcy5OYW1lLmdldChvKSxjXSxudWxsLG4sdCxpLG51bGwpO3JldHVybiBpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsYSxuLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKCFvKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3QgaT10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3IuTElORV9GQUNUT1IsdC9pKSl9ZWxzZXtjb25zdCBpPWEuc3BsaXQoL1xyXG4/fFxuLyksYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9bi5jaGFyc1RvR2x5cGhzKHQpLHI9bi5nZXRDaGFyUG9zaXRpb25zKHQpO2MucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IGkgb2YgYyl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsbixhLHQsaSkubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtvPTEyO2xldCBsPW8qci5MSU5FX0ZBQ1RPUixoPU1hdGgucm91bmQoZS9sKTtoPU1hdGgubWF4KGgscyk7Zm9yKDs7KXtsPWUvaDtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhsL3IuTElORV9GQUNUT1IpO2lmKCFpc1Rvb0JpZyhvKSlicmVhaztoKyt9fWNvbnN0e2ZvbnROYW1lOmMsZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9KDAsaS5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSkoe2ZvbnRTaXplOm8sZm9udE5hbWU6Yyxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxvXX1fcmVuZGVyVGV4dChlLHQsYSxpLHMsbyxjKXtsZXQgbDtpZigxPT09cyl7bD0oaS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9aS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLW99ZWxzZSBsPW87bD0oMCxuLm51bWJlclRvU3RyaW5nKShsKTtyZXR1cm5gJHtsfSAke2M9KDAsbi5udW1iZXJUb1N0cmluZykoYyl9IFRkICgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSYmdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZTtpZighbilyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKG4pKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhuKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KG4sYS5nZXRSYXcobikpO2NvbnN0IGk9bmV3IHMuRGljdChlKTtpLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbaSx0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9KDAsbi5udW1iZXJUb1N0cmluZykoaS90aGlzLmRhdGEubWF4TGVuKSxoPVtdLHU9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgdSloLnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGMpfUJUIGArZStgIDEgMCAwIDEgJHtzfSAke299IFRtICR7aC5qb2luKGAgJHtsfSAwIFRkIGApfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLGkscyxvLGMsbCl7Y29uc3QgaD10LnNwbGl0KC9cclxuP3xcbi8pLHU9W10sZD1uLTIqbztmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PXRoaXMuX3NwbGl0TGluZShlLGEscixkKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PTA9PT11Lmxlbmd0aD9vOjA7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQoZSxhLHIsbixzLHQsLXIpKX19Y29uc3QgZj11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpfUJUIGArZStgIDEgMCAwIDEgMCAke2l9IFRtICR7Zn0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixuPXt9KXtlPW4ubGluZXx8dC5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7Y29uc3QgaT1uLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKGkubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPW4ucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxuXT1zW3RdLGc9aVt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9bjt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLGkpO2xldCBzPW51bGwsbz1udWxsO2lmKGkpe2NvbnN0IGU9aS5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO289ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7bnVsbD09cyYmKHM9dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTtjb25zdCBjPXM/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U7aWYoYyl7Y29uc3Qgcz10aGlzLmFwcGVhcmFuY2UsbD1jLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpfHxyLklERU5USVRZX01BVFJJWDtvJiZjLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSkpO3RoaXMuYXBwZWFyYW5jZT1jO2NvbnN0IGg9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7dGhpcy5hcHBlYXJhbmNlPXM7Yy5kaWN0LnNldCgiTWF0cml4IixsKTtyZXR1cm4gaH1yZXR1cm57b3BMaXN0Om5ldyBnLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaT1uJiZuLnJvdGF0aW9uLGM9biYmbi52YWx1ZTtpZih2b2lkIDA9PT1pKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGwuZ2V0KCJUIil8fCIiKSx2YWx1ZTpjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KGM/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSk7bC5zZXQoIkFTIix1KTtsLnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9biYmbi5yb3RhdGlvbixjPW4mJm4udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09YylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PWMpcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1jJiYoYz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdOygwLG8ud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwsbSxwKTttLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBiPVt7cmVmOnRoaXMucmVmLGRhdGE6bS5qb2luKCIiKSx4ZmE6aH1dO251bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KTtyZXR1cm4gYn1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG89WzAsMCxhLGldLGM9LjgqTWF0aC5taW4oYSxpKTtsZXQgbCxoO2lmKCJjaGVjayI9PT10KXtsPXt3aWR0aDouNzU1KmMsaGVpZ2h0Oi43MDUqY307aD0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtsPXt3aWR0aDouNzkxKmMsaGVpZ2h0Oi43MDUqY307aD0ibCJ9ZWxzZSgwLHIudW5yZWFjaGFibGUpKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IHU9YHEgQlQgL1BkZkpzWmFEYiAke2N9IFRmIDAgZyAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChhLWwud2lkdGgpLzIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChpLWwuaGVpZ2h0KS8yKX0gVGQgKCR7aH0pIFRqIEVUIFFgLGQ9bmV3IHMuRGljdChlLnhyZWYpO2Quc2V0KCJGb3JtVHlwZSIsMSk7ZC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7ZC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7ZC5zZXQoIkJCb3giLG8pO2Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Quc2V0KCJMZW5ndGgiLHUubGVuZ3RoKTtjb25zdCBmPW5ldyBzLkRpY3QoZS54cmVmKSxnPW5ldyBzLkRpY3QoZS54cmVmKTtnLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Yuc2V0KCJGb250IixnKTtkLnNldCgiUmVzb3VyY2VzIixmKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSh1KTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9ZDt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IG49bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLGk9YS5nZXRLZXlzKCk7aWYoMD09PWkubGVuZ3RoKWkucHVzaCgiT2ZmIixuKTtlbHNlIGlmKDE9PT1pLmxlbmd0aCkiT2ZmIj09PWlbMF0/aS5wdXNoKG4pOmkudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihpLmluY2x1ZGVzKG4pKXtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixuKX1lbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSl8fG51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KCJPZmYiKXx8bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZihyIGluc3RhbmNlb2Ygcy5EaWN0KXtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpfHxudWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCgiT2ZmIil8fG51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTtoLkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWEuZmV0Y2hJZlJlZih0W2VdKSxuPUFycmF5LmlzQXJyYXkocik7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP2EuZmV0Y2hJZlJlZihyWzBdKTpyKSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/YS5mZXRjaElmUmVmKHJbMV0pOnIpfX19InN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPW4ucm90YXRpb247bGV0IG89bi52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1vKXJldHVybiBudWxsO3ZvaWQgMD09PW8/bz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2xldCBjPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGw9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1zJiYyNzAhPT1zfHwoW2wsY109W2MsbF0pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07by5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShjLTIpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxsLTQsdCxkLC0xKX1jb25zdCBwPWcqci5MSU5FX0ZBQ1RPUixtPShwLWcpLzIsYj1NYXRoLmZsb29yKGMvcCk7bGV0IHk7aWYoMT09PXUubGVuZ3RoKXtjb25zdCBlPXVbMF07eT1lLWUlYn1lbHNlIHk9dS5sZW5ndGg/dVswXTowO2NvbnN0IHc9TWF0aC5taW4oeStiKzEsaCksUz1bIi9UeCBCTUMgcSIsYDEgMSAke2x9ICR7Y30gcmUgVyBuYF07aWYodS5sZW5ndGgpe1MucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmUy5wdXNoKGAxICR7Yy0oZS15KzEpKnB9ICR7bH0gJHtwfSByZSBmYCl9Uy5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7Y30gVG1gKTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT8yOjAscj1lPT09eT9tOjA7Uy5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsbCwwLGEsLXArcikpfVMucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gUy5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0O3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5MSU5LO2NvbnN0IHQ9Z2V0UXVhZFBvaW50cyhlLmRpY3QsdGhpcy5yZWN0YW5nbGUpO3QmJih0aGlzLmRhdGEucXVhZFBvaW50cz10KTt0aGlzLmRhdGEuYm9yZGVyQ29sb3I9dGhpcy5kYXRhLmJvcmRlckNvbG9yfHx0aGlzLmRhdGEuY29sb3I7aC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO2xldCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKCF0KXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgYT10LmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOm51bGw7Y29uc3Qgbj1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTt0aGlzLmRhdGEucGFyZW50SWQ9biBpbnN0YW5jZW9mIHMuUmVmP24udG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXRBcnJheSgiUmVjdCIpO0FycmF5LmlzQXJyYXkoaSkmJjQ9PT1pLmxlbmd0aD90aGlzLmRhdGEucGFyZW50UmVjdD1yLlV0aWwubm9ybWFsaXplUmVjdChpKTp0aGlzLmRhdGEucGFyZW50UmVjdD1bMCwwLDAsMF07Y29uc3Qgbz10LmdldCgiUlQiKTsoMCxzLmlzTmFtZSkobyxyLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApJiYodD10LmdldCgiSVJUIikpO2lmKHQuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKHQuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPXQuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZSRUVURVhUfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHVzZXI6dSx2YWx1ZTpkfT1lLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO2Yuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2Yuc2V0KCJSZWN0IixsKTtjb25zdCBnPWAvSGVsdiAke2N9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobywhMCl9YDtmLnNldCgiREEiLGcpO2Yuc2V0KCJDb250ZW50cyIsZCk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0KCJSb3RhdGUiLGgpO3UmJmYuc2V0KCJUIiwoMCxyLnN0cmluZ1RvVVRGOFN0cmluZykodSkpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO2E/cC5zZXQoIk4iLGEpOnAuc2V0KCJOIixuKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6byxldmFsdWF0b3I6Yyx0YXNrOmx9PWEse2NvbG9yOmgsZm9udFNpemU6dSxyZWN0OmQscm90YXRpb246Zix2YWx1ZTpnfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYobyliLnNldCgiSGVsdiIsbyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShjLGwse2ZvbnROYW1lOiJIZWx2ZXRpY2EiLGZvbnRTaXplOnV9LG0pLFt3LFMseCxrXT1kO2xldCBDPXgtdyx2PWstUztmJTE4MCE9MCYmKFtDLHZdPVt2LENdKTtjb25zdCBGPWcuc3BsaXQoIlxuIiksTz11LzFlMztsZXQgVD0tMS8wO2NvbnN0IE09W107Zm9yKGxldCBlIG9mIEYpe2U9eS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7TS5wdXNoKGUpO2xldCB0PTA7Y29uc3QgYT15LmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl0Kz1lLndpZHRoKk87VD1NYXRoLm1heChULHQpfWxldCBFPTE7VD5DJiYoRT1DL1QpO2xldCBEPTE7Y29uc3QgTj1yLkxJTkVfRkFDVE9SKnUsUj1yLkxJTkVfREVTQ0VOVF9GQUNUT1IqdSxMPU4qRi5sZW5ndGg7TD52JiYoRD12L0wpO2NvbnN0IGo9dSpNYXRoLm1pbihFLEQpLCQ9WyJxIixgMCAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoQyl9ICR7KDAsbi5udW1iZXJUb1N0cmluZykodil9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoditSKX0gVG0gMCBUYyAkeygwLGkuZ2V0UGRmQ29sb3IpKGgsITApfWAsYC9IZWx2ICR7KDAsbi5udW1iZXJUb1N0cmluZykoail9IFRmYF0sXz0oMCxuLm51bWJlclRvU3RyaW5nKShOKTtmb3IoY29uc3QgZSBvZiBNKSQucHVzaChgMCAtJHtffSBUZCAoJHsoMCxyLmVzY2FwZVN0cmluZykoZSl9KSBUamApOyQucHVzaCgiRVQiLCJRIik7Y29uc3QgVT0kLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7WC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7WC5zZXQoIkJCb3giLFswLDAsQyx2XSk7WC5zZXQoIkxlbmd0aCIsVS5sZW5ndGgpO1guc2V0KCJSZXNvdXJjZXMiLG0pO2lmKGYpe2NvbnN0IGU9V2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoZixDLHYpO1guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEg9bmV3IHAuU3RyaW5nU3RyZWFtKFUpO0guZGljdD1YO3JldHVybiBIfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7Y29uc3QgYT10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IG49dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpO2xldCBzPW51bGwsbz10LmdldEFycmF5KCJJQyIpO2lmKG8pe289Z2V0UmdiQ29sb3IobyxudWxsKTtzPW8/QXJyYXkuZnJvbShvLChlPT5lLzI1NSkpOm51bGx9Y29uc3QgYz1zP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtyLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVQVJFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLnhyZWYsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6dCxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTphLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtufSAke2l9ICR7c30gcmVgKTtyP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUueHJlZixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjp0LGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYz1hKyhpLWEpLzIsbD1uKyhvLW4pLzIsaD0oaS1hKS8yKnMsdT0oby1uKS8yKnM7ZS5wdXNoKGAke2N9ICR7b30gbWAsYCR7YytofSAke299ICR7aX0gJHtsK3V9ICR7aX0gJHtsfSBjYCxgJHtpfSAke2wtdX0gJHtjK2h9ICR7bn0gJHtjfSAke259IGNgLGAke2MtaH0gJHtufSAke2F9ICR7bC11fSAke2F9ICR7bH0gY2AsYCR7YX0gJHtsK3V9ICR7Yy1ofSAke299ICR7Y30gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBhPXRoaXMuY29sb3I/QXJyYXkuZnJvbSh0aGlzLmNvbG9yLChlPT5lLzI1NSkpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxpPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKmksbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2l9IHdgLHN0cm9rZUNvbG9yOmEsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dGhpcy5kYXRhLnZlcnRpY2VzO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyO3QrKyllLnB1c2goYCR7YVt0XS54fSAke2FbdF0ueX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgdD1lLmRpY3QuZ2V0QXJyYXkoIklua0xpc3QiKTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm47Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCByPTAsbj10W2VdLmxlbmd0aDtyPG47cis9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYodFtlXVtyXSkseTphLmZldGNoSWZSZWYodFtlXVtyKzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIiksbj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGk9MipuLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7c1swXT1NYXRoLm1pbihzWzBdLHQueC1pKTtzWzFdPU1hdGgubWluKHNbMV0sdC55LWkpO3NbMl09TWF0aC5tYXgoc1syXSx0LngraSk7c1szXT1NYXRoLm1heChzWzNdLHQueStpKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOnQsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7cGF0aHM6aSxyZWN0Om8scm90YXRpb246Y309ZSxsPW5ldyBzLkRpY3QodCk7bC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2wuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7bC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7bC5zZXQoIlJlY3QiLG8pO2wuc2V0KCJJbmtMaXN0IixpLm1hcCgoZT0+ZS5wb2ludHMpKSk7bC5zZXQoIkYiLDQpO2wuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2wuc2V0KCJSb3RhdGUiLGMpO2NvbnN0IGg9bmV3IHMuRGljdCh0KTtsLnNldCgiQVAiLGgpO2E/aC5zZXQoIk4iLGEpOmguc2V0KCJOIixuKTtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Om8scm90YXRpb246YyxwYXRoczpsLHRoaWNrbmVzczpoLG9wYWNpdHk6dX09ZSxbZCxmLGcsbV09bztsZXQgYj1nLWQseT1tLWY7YyUxODAhPTAmJihbYix5XT1beSxiXSk7Y29uc3Qgdz1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmdy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBTPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtTLmxlbmd0aD0wO1MucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtTLnB1c2goYCR7YX0gY2ApfVMucHVzaCgiUyIpO3cucHVzaChTLmpvaW4oIlxuIikpfWNvbnN0IHg9dy5qb2luKCJcbiIpLGs9bmV3IHMuRGljdCh0KTtrLnNldCgiRm9ybVR5cGUiLDEpO2suc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2suc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2suc2V0KCJCQm94IixbMCwwLGIseV0pO2suc2V0KCJMZW5ndGgiLHgubGVuZ3RoKTtpZihjKXtjb25zdCBlPVdpZGdldEFubm90YXRpb24uX2dldFJvdGF0aW9uTWF0cml4KGMsYix5KTtrLnNldCgiTWF0cml4IixlKX1pZigxIT09dSl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpLGE9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCk7ci5zZXQoIkNBIix1KTtyLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRXh0R1N0YXRlIikpO2Euc2V0KCJSMCIscik7ZS5zZXQoIkV4dEdTdGF0ZSIsYSk7ay5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgQz1uZXcgcC5TdHJpbmdTdHJlYW0oeCk7Qy5kaWN0PWs7cmV0dXJuIEN9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKGUuZGljdCxudWxsKSl7Y29uc3QgdD10aGlzLmFwcGVhcmFuY2UmJnRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzEsMSwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGZpbGxDb2xvcjp0LGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueX0gbWAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsbj10WzJdLng7Y29uc3QgaT10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke259ICR7aStyfSBtYCk7ZG97bis9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7bn0gJHtpK3J9IGxgKX13aGlsZShuPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxpLTIqYSxpKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVB9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgZC5GaWxlU3BlYyhlLmRpY3QuZ2V0KCJGUyIpLGUueHJlZik7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmZpbGU9dC5zZXJpYWxpemFibGV9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7KDAsci5lc2NhcGVQREZOYW1lKSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9O3QuZ2V0UGRmQ29sb3I9Z2V0UGRmQ29sb3I7dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMTIpLHM9YSgxMyksbz1hKDMpLGM9YSg4KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIHMuRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBjLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIG4uT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBvLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTppLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7KDAsbi53YXJuKShgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3QgYT1lWzBdLzI1NTtyZXR1cm5gJHsoMCxyLm51bWJlclRvU3RyaW5nKShhKX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxyLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29sb3JTcGFjZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSg0KTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSXRlbShlLHQsYSxuKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLGkscyxvKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxyLG4saSxzLG8sYyl7Y29uc3QgbD10KmE7bGV0IGg9bnVsbDtjb25zdCB1PTE8PHMsZD1hIT09bnx8dCE9PXI7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKHMpKWg9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZsPnUmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9czw9OD9uZXcgVWludDhBcnJheSh1KTpuZXcgVWludDE2QXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1O2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsdSxhLDAscywwKTtpZihkKXtoPW5ldyBVaW50OEFycmF5KDMqbCk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGw7Kyt0KXtjb25zdCByPTMqb1t0XTtoW2UrK109YVtyXTtoW2UrK109YVtyKzFdO2hbZSsrXT1hW3IrMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IHI9MDtyPGw7KytyKXtjb25zdCBuPTMqb1tyXTtlW3QrK109YVtuXTtlW3QrK109YVtuKzFdO2VbdCsrXT1hW24rMl07dCs9Y319fWVsc2UgaWYoZCl7aD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypsKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsbCxoLDAscywwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxyKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxyLG4saSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPWEvbixjPXIvaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkobiksZD0zKmE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmMpKmQ7Zm9yKGxldCBhPTA7YTxuO2ErKyl7bD1yK3VbYV07dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107aCs9c319fShoLGUsdCxhLHIsbixjKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgbj0wLHM9cippO248cztuKyspe2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO3QrPWN9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGEscil7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgaSxzO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2Ygbi5OYW1lJiYoaT1lLm5hbWUpOyhpfHxzKSYmYS5zZXQoaSxzLHIpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7Y29uc3Qgcj1hLmdldEJ5UmVmKGUpO2lmKHIpcmV0dXJuIHI7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2Ygbi5OYW1lKXtjb25zdCB0PWEuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3QgaT10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixpKTtyZXR1cm4gaX1zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IGk9dGhpcy5nZXRDYWNoZWQoZSx0LG4pO2lmKGkpcmV0dXJuIGk7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixzKTtyZXR1cm4gc31zdGF0aWMgX3BhcnNlKGUsdCxhPW51bGwsaSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCByPWEuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxhLGkpO2U9czticmVha319fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGc7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Zz1zLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IGMoZCxmLGcpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgcD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IGwoZCxmLGcscCk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPW0uZ2V0KCJOIik7Y29uc3QgYj1tLmdldCgiQWx0ZXJuYXRlIik7aWYoYil7Y29uc3QgZT10aGlzLl9wYXJzZShiLHQsYSxpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxyLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnU9ZVsxXXx8bnVsbDt1JiYodT10aGlzLl9wYXJzZSh1LHQsYSxpKSk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1ModSk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOnU9dGhpcy5fcGFyc2UoZVsxXSx0LGEsaSk7Y29uc3QgeT10LmZldGNoSWZSZWYoZVsyXSkrMSx3PXQuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyh1LHksdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IFM9dC5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShTKT9TLmxlbmd0aDoxO3U9dGhpcy5fcGFyc2UoZVsyXSx0LGEsaSk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sdSx4KTtjYXNlIkxhYiI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3Qgaz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgaChkLGYsayk7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtufWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY215ayIsbmV3IG8pfX0pfX10LkNvbG9yU3BhY2U9Q29sb3JTcGFjZTtjbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LG4sMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0obiwwLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy50aW50Rm4sYz10aGlzLmJhc2UsbD0xLygoMTw8aSktMSksaD1jLm51bUNvbXBzLHU9Yy51c2VzWmVyb1RvT25lUmFuZ2UsZD0oYy5pc1Bhc3N0aHJvdWdoKDgpfHwhdSkmJjA9PT1zO2xldCBmPWQ/bjowO2NvbnN0IGc9ZD9yOm5ldyBVaW50OENsYW1wZWRBcnJheShoKmEpLHA9dGhpcy5udW1Db21wcyxtPW5ldyBGbG9hdDMyQXJyYXkocCksYj1uZXcgRmxvYXQzMkFycmF5KGgpO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXtmb3Iodz0wO3c8cDt3KyspbVt3XT1lW3QrK10qbDtvKG0sMCxiLDApO2lmKHUpZm9yKHc9MDt3PGg7dysrKWdbZisrXT0yNTUqYlt3XTtlbHNle2MuZ2V0UmdiSXRlbShiLDAsZyxmKTtmKz1ofX1kfHxjLmdldFJnYkJ1ZmZlcihnLDAsYSxyLG4sOCxzKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyp0O3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KG4pO2lmKGEgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhuKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKm47dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPGE7KytpKXtjb25zdCBhPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsYSwxLHIsbiw4LHMpO24rPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7KDAsci53YXJuKSgiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXsoMCxyLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPW59Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLG4saSxzKXtpZig4PT09aSYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksbik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBvPWZ1bmN0aW9uIERldmljZUNteWtDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuKXtjb25zdCBpPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW25dPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltuKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW24rMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBjbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnZlcnRUb1JnYihlLHQsbyxyLG4pO3QrPTQ7bis9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fX0oKSxjPWZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2NvbnN0IHM9KHRbYV0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7cltuXT1jO3JbbisxXT1jO3JbbisyXT1jfXJldHVybiBjbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7dD10fHxbMCwwLDBdO2E9YXx8MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyk7ZnVuY3Rpb24gbWF0cml4UHJvZHVjdChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19ZnVuY3Rpb24gc1JHQlRyYW5zZmVyRnVuY3Rpb24oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2FkanVzdFRvUmFuZ2UoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmFkanVzdFRvUmFuZ2UoMCwxLDEuMDU1KmUqKigxLzIuNCktLjA1NSl9ZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShlLHQsYSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxhKSl9ZnVuY3Rpb24gZGVjb2RlTChlKXtyZXR1cm4gZTwwPy1kZWNvZGVMKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOi4wMDExMDcwNTY0NTk4Nzk0NTM5KmV9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksaz1zO2tbMF09dztrWzFdPVM7a1syXT14O2NvbnN0IEM9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LGssQyk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LEMsdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO2E9YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtuPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9bltpXT0yNTUqTWF0aC5zcXJ0KHApO25baSsxXT0yNTUqTWF0aC5zcXJ0KG0pO25baSsyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dD10fHxbMCwwLDBdO2E9YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnRpYWxFdmFsdWF0b3I9dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9dm9pZCAwO3ZhciByPWEoMiksbj1hKDE0KSxpPWEoMykscz1hKDMyKSxvPWEoMzYpLGM9YSgzNSksbD1hKDM5KSxoPWEoMzgpLHU9YSg0OCksZD1hKDQ5KSxmPWEoNDApLGc9YSg1NSkscD1hKDE1KSxtPWEoNTcpLGI9YSg4KSx5PWEoNSksdz1hKDU4KSxTPWEoMTIpLHg9YSgxNyksaz1hKDM3KSxDPWEoNCksdj1hKDQzKSxGPWEoNTkpLE89YSg2MCksVD1hKDYxKTtjb25zdCBNPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMCxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxFPTEsRD0yLE49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX0oMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0JiZlLmFyZ3NbMF0mJmUuYXJnc1swXS5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIGdldCBUSU1FX1NMT1RfRFVSQVRJT05fTVMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiVElNRV9TTE9UX0RVUkFUSU9OX01TIiwyMCl9c3RhdGljIGdldCBDSEVDS19USU1FX0VWRVJZKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6bixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsSW1hZ2VDYWNoZTpvLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPW47dGhpcy5idWlsdEluQ01hcENhY2hlPWk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLm9wdGlvbnM9Y3x8TTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZy5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IGkuUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IG49W2VdLHM9dGhpcy54cmVmO2Zvcig7bi5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBpLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7bi5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxuPWF3YWl0IGZldGNoKHQpO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7bi5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBiLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsbC5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgbjtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP249YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7bj1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIW4pcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG5ldyBiLlN0cmVhbShuKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLG4scyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZuLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxpLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGEmJmEuYmFja2Ryb3Ape3M9c3x8Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1uLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZuLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9VC5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHguRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ISFkJiZkWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhaTtwPVtnXTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1nPVQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6byx3aWR0aDpoLGhlaWdodDp1LGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiB4LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhZCYmZFswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoZy5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxmKTtpJiZzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxhcmdzOltdLG9wdGlvbmFsQ29udGVudDpmfSk7cmV0dXJufWNvbnN0IG09YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KG0pO3RoaXMuX3NlbmRJbWdEYXRhKG0sZyk7cD1be2RhdGE6bSx3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodCxpbnRlcnBvbGF0ZTpnLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBpPW5ldyBULlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1pLmNyZWF0ZUltYWdlRGF0YSghMCk7bi5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsdz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe3c9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO3cmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1uLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO1QuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGU9PntnPWUuY3JlYXRlSW1hZ2VEYXRhKCExKTtpJiZsJiZ3JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUobCxnLmRhdGEubGVuZ3RoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxnLHcpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt5fSI6ICIke2V9Ii5gKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxudWxsLHcpfSkpO24uYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZVhPYmplY3QscCxmKTtpZihpKXtzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO2lmKGwpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGwsdGhpcy5wYWdlSW5kZXgpO3cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGwse29iaklkOnksZm46ci5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpwLG9wdGlvbmFsQ29udGVudDpmLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGM9ZS5nZXQoIlRSIik7aWYoKDAsZy5pc1BERkZ1bmN0aW9uKShjKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQscyxvLGEscixuLnN0YXRlLmNsb25lKCksaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxnLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IHI9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyKys7aWYoKDAsaS5pc05hbWUpKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighKDAsZy5pc1BERkZ1bmN0aW9uKSh0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbz1uZXcgVWludDhBcnJheSgyNTYpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe2NbMF09ZS8yNTU7cyhjLDAsYywwKTtvW2VdPTI1NSpjWzBdfDB9YS5wdXNoKG8pO24rK31yZXR1cm4gMSE9PXImJjQhPT1yfHwwPT09bj9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMsbyxjLGwpe2NvbnN0IGg9bmV3IE8uT3BlcmF0b3JMaXN0LGQ9aS5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDpofSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWguZ2V0SVIoKSxyPSgwLHUuZ2V0VGlsaW5nUGF0dGVybklSKShhLHMsdCk7by5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpO28uYWRkT3AoZSxyKTtzLm9iaklkJiZsLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSk7KDAsci53YXJuKShgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9aGFuZGxlU2V0Rm9udChlLHQsYSxuLG8sYyxsPW51bGwsaD1udWxsKXtjb25zdCB1PXQmJnRbMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udCh1LGEsZSxsLGgpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG8pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pnt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZFR5cGUzfSk7cmV0dXJuIG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX0pKTp0KSkudGhlbigoZT0+e2MuZm9udD1lLmZvbnQ7ZS5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGUubG9hZGVkTmFtZX0pKX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgYT10LmZvbnQsbj1hLmNoYXJzVG9HbHlwaHMoZSk7aWYoYS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSk7KDAsci53YXJuKShgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpuLHRhc2s6cyxzdGF0ZU1hbmFnZXI6byxsb2NhbEdTdGF0ZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe2NvbnN0IGg9dC5vYmpJZDtsZXQgdT0hMDtjb25zdCBkPVtdO2xldCBmPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBuIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBjPXQuZ2V0KG4pO3N3aXRjaChuKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6ZC5wdXNoKFtuLGNdKTticmVhaztjYXNlIkZvbnQiOnU9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLGNbMF0sYSxzLG8uc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtkLnB1c2goW24sW2UsY1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmQucHVzaChbbixub3JtYWxpemVCbGVuZE1vZGUoYyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkoYywiTm9uZSIpKXtkLnB1c2goW24sITFdKTticmVha31pZihjIGluc3RhbmNlb2YgaS5EaWN0KXt1PSExO2Y9Zi50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhjLGUsYSxzLG8sbCkpKTtkLnB1c2goW24sITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGMpO2QucHVzaChbbix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pfX1yZXR1cm4gZi50aGVuKChmdW5jdGlvbigpe2QubGVuZ3RoPjAmJmEuYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtkXSk7dSYmYy5zZXQobixoLGQpfSkpfWxvYWRGb250KGUsdCxhLG49bnVsbCxjPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSksbD10aGlzLnhyZWY7bGV0IGg7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihoPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihoPXQuZ2V0UmF3KGUpKX1pZighaCl7Y29uc3QgYT1gRm9udCAiJHtlfHx0JiZ0LnRvU3RyaW5nKCl9IiBpcyBub3QgYXZhaWxhYmxlYDtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgJHthfS5gKTtyZXR1cm4gZXJyb3JGb250KCl9dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KTsoMCxyLndhcm4pKGAke2F9IC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7aD1ufHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGgpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMoaCkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChoKTtpZighKCh0PWwuZmV0Y2hJZlJlZihoKSlpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIGVycm9yRm9udCgpO2lmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDt0cnl7ZD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtkLmNzc0ZvbnRJbmZvPWN9Y2F0Y2goZSl7KDAsci53YXJuKShgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6ZixoYXNoOmd9PWQscD1oIGluc3RhbmNlb2YgaS5SZWY7bGV0IG07cCYmKG09YGYke2gudG9TdHJpbmcoKX1gKTtpZihnJiZmIGluc3RhbmNlb2YgaS5EaWN0KXtmLmZvbnRBbGlhc2VzfHwoZi5mb250QWxpYXNlcz1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdCBlPWYuZm9udEFsaWFzZXM7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpfX1lbHNlIGVbZ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07cCYmKGVbZ10uYWxpYXNSZWY9aCk7bT1lW2ddLmZvbnRJRH1pZihwKXRoaXMuZm9udENhY2hlLnB1dChoLHUucHJvbWlzZSk7ZWxzZXttfHwobT10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKSk7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKX0oMCxyLmFzc2VydCkobSYmbS5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dm9pZCAwIT09ZS5mb250VHlwZSYmbC5zdGF0cy5hZGRGb250VHlwZShlLmZvbnRUeXBlKTt1LnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRyYW5zbGF0ZX0pOygwLHIud2FybikoYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTt0cnl7Y29uc3QgZT1mJiZmLmdldCgiRm9udEZpbGUzIiksdD1lJiZlLmdldCgiU3VidHlwZSIpLGE9KDAsby5nZXRGb250VHlwZSkoZC50eXBlLHQmJnQubmFtZSk7dm9pZCAwIT09YSYmbC5zdGF0cy5hZGRGb250VHlwZShhKX1jYXRjaChlKXt9dS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIHUucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsbj0hMSl7Y29uc3QgaT1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihpPDB8fGUuZm5BcnJheVtpXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKG4peygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgaTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107aT1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86aT1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDppPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxpXSk7biYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3Qgbj1lLmFyZ3NBcnJheVtpXTtuWzBdLnB1c2godCk7blsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9blsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4gUy5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JDb2xvclNwYWNlfSk7KDAsci53YXJuKShgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBuPXIuZ2V0KGUpO2lmKCFuKXtjb25zdCBpPXUuUGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGEpLmdldElSKCk7bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLnNldChlLG4pO3RoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSl9cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsbCxoLGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJmguZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCx1LmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09RSl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxtLGksZSxjLGgpfWlmKHM9PT1EKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6cz1udWxsLGZhbGxiYWNrRm9udERpY3Q6bz1udWxsfSl7YT1hfHxpLkRpY3QuZW1wdHk7cz1zfHxuZXcgRXZhbFN0YXRlO2lmKCFuKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxsPXRoaXMueHJlZjtsZXQgaD0hMTtjb25zdCB1PW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxkPW5ldyBtLkxvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IG0uTG9jYWxHU3RhdGVDYWNoZSxnPW5ldyBtLkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fGkuRGljdC5lbXB0eSx3PWEuZ2V0KCJQYXR0ZXJuIil8fGkuRGljdC5lbXB0eSx4PW5ldyBTdGF0ZU1hbmFnZXIocyksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbCx4KSxDPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWsuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKW4uYWRkT3Aoci5PUFMucmVzdG9yZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsbi5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscyl9Y2F0Y2goZSl7cyhlKX19KSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Qy5yZXNldCgpO2NvbnN0IG09e307bGV0IHYsRixPLFQsTSxFO2Zvcig7ISh2PUMuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighay5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxzPW0uZm47c3dpdGNoKDB8cyl7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6RT1lWzBdaW5zdGFuY2VvZiBpLk5hbWU7TT1lWzBdLm5hbWU7aWYoRSl7Y29uc3QgdD11LmdldEJ5TmFtZShNKTtpZih0KXtuLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBvPWIuZ2V0UmF3KE0pO2lmKG8gaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG8pO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2UoKTtyZXR1cm59Y29uc3QgYT1jLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGMucGFnZUluZGV4KTtpZihhKXtuLmFkZERlcGVuZGVuY3koYS5vYmpJZCk7bi5hZGRJbWFnZU9wcyhhLmZuLGEuYXJncyxhLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1vPWwuZmV0Y2gobyl9aWYoIShvIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBoPW8uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aC5uYW1lKWlmKCJJbWFnZSIhPT1oLm5hbWUpe2lmKCJQUyIhPT1oLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtoLm5hbWV9YCk7KDAsci5pbmZvKSgiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm8sb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLHMpO2Vsc2V7eC5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KGEsbyxudWxsLG4sdCx4LnN0YXRlLmNsb25lKCksZCkudGhlbigoZnVuY3Rpb24oKXt4LnJlc3RvcmUoKTtlKCl9KSxzKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsbix0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7bi5hZGREZXBlbmRlbmN5KGUpO24uYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PXUuZ2V0QnlOYW1lKFIpO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxqPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LGopKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7bi5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7bi5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9Uy5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4obixyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKG4sci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgXz0kLmdldChlWzBdLm5hbWUpO2lmKCFfKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOl8scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2YgaS5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmbi5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgobixzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57bi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTtjLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSk7KDAsci53YXJuKShgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgaS5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihGPTAsTz1lLmxlbmd0aDtGPE8mJiEoZVtGXWluc3RhbmNlb2YgaS5EaWN0KTtGKyspO2lmKEY8Tyl7KDAsci53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrcyk7Y29udGludWV9fX1uLmFkZE9wKHMsZSl9aWYodiluZXh0KE4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JPcGVyYXRvckxpc3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsc3RhdGVNYW5hZ2VyOm49bnVsbCxjb21iaW5lVGV4dEl0ZW1zOnM9ITEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bz0hMSxzaW5rOmMsc2VlblN0eWxlczpsPW5ldyBTZXQsdmlld0JveDp1LG1hcmtlZENvbnRlbnREYXRhOmQ9bnVsbH0pe2E9YXx8aS5EaWN0LmVtcHR5O249bnx8bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtvJiYoZD1kfHx7bGV2ZWw6MH0pO2NvbnN0IGY9KDAsaC5nZXROb3JtYWxpemVkVW5pY29kZXMpKCksZz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHA9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sYj1bIiAiLCIgIl07bGV0IFM9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oUysxKSUyLGE9IiAiIT09YltTXSYmIiAiPT09Ylt0XTtiW1NdPWU7Uz10O3JldHVybiBhfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7YlswXT1iWzFdPSIgIjtTPTB9Y29uc3QgeD10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxPPW5ldyBtLkxvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsayxuKTtsZXQgTTtmdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpNLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE0uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihwLmluaXRpYWxpemVkKXJldHVybiBwO2NvbnN0IGU9TS5mb250LHQ9ZS5sb2FkZWROYW1lO2lmKCFsLmhhcyh0KSl7bC5hZGQodCk7Zy5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9fXAuZm9udE5hbWU9dDtjb25zdCBhPXAudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7cC53aWR0aD1wLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3AuaGVpZ2h0PXAudG90YWxIZWlnaHQ9MDtwLnZlcnRpY2FsPSEwfWVsc2V7cC53aWR0aD1wLnRvdGFsV2lkdGg9MDtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtwLnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLG49TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7cC50ZXh0QWR2YW5jZVNjYWxlPW4qcjtwLnRyYWNraW5nU3BhY2VNaW49LjEqTS5mb250U2l6ZTtwLm5vdEFTcGFjZT0uMDMqTS5mb250U2l6ZTtwLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKk0uZm9udFNpemU7cC5zcGFjZUluRmxvd01pbj0uMSpNLmZvbnRTaXplO3Auc3BhY2VJbkZsb3dNYXg9LjYqTS5mb250U2l6ZTtwLmhhc0VPTD0hMTtwLmluaXRpYWxpemVkPSEwO3JldHVybiBwfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFwLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXAudGV4dEFkdmFuY2VTY2FsZSl7aWYocC52ZXJ0aWNhbCl7cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlO3AuaGVpZ2h0PTB9ZWxzZXtwLnRvdGFsV2lkdGgrPXAud2lkdGgqcC50ZXh0QWR2YW5jZVNjYWxlO3Aud2lkdGg9MH1wLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLG4pe3JldHVybiB4LmxvYWRGb250KGUsbixhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb250LmlzVHlwZTNGb250P2UubG9hZFR5cGUzRGF0YSh4LGEsdCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSk6ZX0pKS50aGVuKChmdW5jdGlvbihlKXtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbigpe2NvbnN0IGU9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgdD1lWzRdLGE9ZVs1XTtjb25zdCByPXQtdVswXSxuPWEtdVsxXTtpZihyPDB8fHI+dVsyXXx8bjwwfHxuPnVbM10pcmV0dXJuITE7aWYoIXN8fCFNLmZvbnR8fCFwLnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9cC5wcmV2VHJhbnNmb3JtWzRdLG89cC5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT10JiZvPT09YSlyZXR1cm4hMDtsZXQgYz0tMTtlWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0/Yz1lWzBdPjA/MDoxODA6ZVsxXSYmMD09PWVbMF0mJjA9PT1lWzNdJiYoYz1lWzFdPjA/OTA6MjcwKTtzd2l0Y2goYyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W3QsYV09W2EsdF07W2ksb109W28saV07YnJlYWs7Y2FzZSAxODA6W3QsYSxpLG9dPVstdCwtYSwtaSwtb107YnJlYWs7Y2FzZSAyNzA6W3QsYV09Wy1hLC10XTtbaSxvXT1bLW8sLWldO2JyZWFrO2RlZmF1bHQ6W3QsYV09YXBwbHlJbnZlcnNlUm90YXRpb24odCxhLGUpO1tpLG9dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbyxwLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0oby1hKS9wLnRleHRBZHZhbmNlU2NhbGUscj10LWksbj1NYXRoLnNpZ24ocC5oZWlnaHQpO2lmKGU8bipwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHIpPi41KnAud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhyKT5wLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnAubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qcC50cmFja2luZ1NwYWNlTWluKXAuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSxwLnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXAuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0Ok1hdGguYWJzKGUpLHRyYW5zZm9ybTpwLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cC5mb250TmFtZSxoYXNFT0w6ITF9KX1lbHNlIHAuaGVpZ2h0Kz1lO3JldHVybiEwfWNvbnN0IGw9KHQtaSkvcC50ZXh0QWR2YW5jZVNjYWxlLGg9YS1vLGQ9TWF0aC5zaWduKHAud2lkdGgpO2lmKGw8ZCpwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGgpPi41KnAuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoaCk+cC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfWw8PWQqcC5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobDw9ZCpwLnRyYWNraW5nU3BhY2VNaW4pcC53aWR0aCs9bDtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGwscC5wcmV2VHJhbnNmb3JtLGQpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7Zy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyhsKSxoZWlnaHQ6MCx0cmFuc2Zvcm06cC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnAuZm9udE5hbWUsaGFzRU9MOiExfSl9ZWxzZSBwLndpZHRoKz1sO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1NLmZvbnQ7aWYoIWUpe2NvbnN0IGU9TS5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxuPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3Qgcz1yW2VdO2lmKHMuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBvPU0uY2hhclNwYWNpbmcrKGUrMT09PWk/dDowKSxjPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGM9cy52bWV0cmljP3Mudm1ldHJpY1swXTotYyk7bGV0IGw9YypuO2lmKHMuaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtvKz0tbCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1vKX1lbHNle28rPWwrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgobypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKCkpY29udGludWU7Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtzLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobD0wKTtpZihhLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxsKTtsPU1hdGguYWJzKGwpO3UuaGVpZ2h0Kz1sfWVsc2V7bCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChsLDApO3Uud2lkdGgrPWx9bCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtsZXQgZD1zLnVuaWNvZGU7ZD1mW2RdfHxkO2Q9KDAsaC5yZXZlcnNlSWZSdGwpKGQpO3NhdmVMYXN0Q2hhcihkKSYmdS5zdHIucHVzaCgiICIpO3Uuc3RyLnB1c2goZCk7byYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLW8pOk0udHJhbnNsYXRlVGV4dE1hdHJpeChvKk0udGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYocC5pbml0aWFsaXplZCl7cC5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0uZm9udC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqcC5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSpwLnNwYWNlSW5GbG93TWF4KXtpZihwLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3Auc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCByPXAuZm9udE5hbWU7bGV0IG49MDtpZihwLnZlcnRpY2FsKXtuPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhuKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyLGhhc0VPTDohMX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zy5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lLnN0ci5qb2luKCIiKSxhPSgwLHcuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShwKSk7cC5pbml0aWFsaXplZD0hMTtwLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Zy5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2MuZW5xdWV1ZShnLHQpO2cuaXRlbXM9W107Zy5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxoKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsYy5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaCl9Y2F0Y2goZSl7aChlKX19KSxoKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RS5yZXNldCgpO2NvbnN0IGY9e307bGV0IHAsbT1bXTtmb3IoOyEocD1FLmNoZWNrKCkpOyl7bS5sZW5ndGg9MDtmLmFyZ3M9bTtpZighVC5yZWFkKGYpKWJyZWFrO009bi5zdGF0ZTtjb25zdCBlPWYuZm47bT1mLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zZXRGb250OnZhciBiPW1bMF0ubmFtZSx3PW1bMV07aWYoTS5mb250JiZiPT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPWI7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udChiLG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPW1bMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPW1bMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgobVswXSxtWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tbVsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1jb25zdCBlPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsaD1tWzBdO2ZvcihsZXQgdD0wLGE9aC5sZW5ndGg7dDxhLTE7dCsrKXtjb25zdCBhPWhbdF07aWYoInN0cmluZyI9PXR5cGVvZiBhKUMucHVzaChhKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSYmMCE9PWEpe2NvbnN0IHQ9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp0LGV4dHJhU3BhY2luZzphKmV9KX19Y29uc3QgZj1oLmF0KC0xKTsic3RyaW5nIj09dHlwZW9mIGYmJkMucHVzaChmKTtpZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2Ugci5PUFMuc2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOm1bMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczptWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPW1bMF07TS5jaGFyU3BhY2luZz1tWzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6bVsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRYT2JqZWN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dnx8KHY9YS5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5KTt2YXIgUz1tWzBdaW5zdGFuY2VvZiBpLk5hbWUsRD1tWzBdLm5hbWU7aWYoUyYmRi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxoKXtpZighUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGY9di5nZXRSYXcoRCk7aWYoZiBpbnN0YW5jZW9mIGkuUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKHguZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYseC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Yuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHA9bi5zdGF0ZS5jbG9uZSgpLG09bmV3IFN0YXRlTWFuYWdlcihwKSxiPWYuZGljdC5nZXRBcnJheSgiTWF0cml4Iik7QXJyYXkuaXNBcnJheShiKSYmNj09PWIubGVuZ3RoJiZtLnRyYW5zZm9ybShiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07eC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxjb21iaW5lVGV4dEl0ZW1zOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6byxzaW5rOncsc2VlblN0eWxlczpsLHZpZXdCb3g6dSxtYXJrZWRDb250ZW50RGF0YTpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxGLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksaCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOlM9bVswXWluc3RhbmNlb2YgaS5OYW1lO0Q9bVswXS5uYW1lO2lmKFMmJk8uZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldChEKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChELHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXtkLmxldmVsKys7Zy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzptWzBdaW5zdGFuY2VvZiBpLk5hbWU/bVswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7ZC5sZXZlbCsrO2xldCBlPW51bGw7bVsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1tWzFdLmdldCgiTUNJRCIpKTtnLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3guaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tY2lkJHtlfWA6bnVsbCx0YWc6bVswXWluc3RhbmNlb2YgaS5OYW1lP21bMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7aWYoMD09PWQubGV2ZWwpYnJlYWs7ZC5sZXZlbC0tO2cuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX19aWYoZy5pdGVtcy5sZW5ndGg+PWMuZGVzaXJlZFNpemUpe3A9ITA7YnJlYWt9fWlmKHApbmV4dChOKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcztjb25zdCBsPXRoaXMucmVhZFRvVW5pY29kZShhLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmKGEuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtJiYocz10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7dT1lLmdldCgiRW5jb2RpbmciKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKTtkPWQgaW5zdGFuY2VvZiBpLk5hbWU/ZC5uYW1lOm51bGw7aWYodS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBpLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGUpOygwLHIud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9aWYoZClhLmRlZmF1bHRFbmNvZGluZz0oMCxjLmdldEVuY29kaW5nKShkKTtlbHNle2NvbnN0IGU9ISEoYS5mbGFncyZvLkZvbnRGbGFncy5TeW1ib2xpYyksdD0hIShhLmZsYWdzJm8uRm9udEZsYWdzLk5vbnN5bWJvbGljKTt1PWMuU3RhbmRhcmRFbmNvZGluZzsiVHJ1ZVR5cGUiIT09YS50eXBlfHx0fHwodT1jLldpbkFuc2lFbmNvZGluZyk7aWYoZSl7dT1jLk1hY1JvbWFuRW5jb2Rpbmc7YS5maWxlJiYhYS5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KGEubmFtZSk/dT1jLlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PWMuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKX1hLmRlZmF1bHRFbmNvZGluZz11fWEuZGlmZmVyZW5jZXM9aDthLmJhc2VFbmNvZGluZ05hbWU9ZDthLmhhc0VuY29kaW5nPSEhZHx8aC5sZW5ndGg+MDthLmRpY3Q9ZTtyZXR1cm4gbC50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtyZXR1cm4gdGhpcy5idWlsZFRvVW5pY29kZShhKX0pKS50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtzJiYoYS5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChzLGUpKTtyZXR1cm4gYX0pKX1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpeygwLHIuYXNzZXJ0KSghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBhPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihuW2VdPXQpfWNvbnN0IG89KDAsay5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcihjb25zdCByIGluIG4pe2xldCBzPW5bcl07aWYoIiI9PT1zKWNvbnRpbnVlO2xldCBsPW9bc107aWYodm9pZCAwIT09bCl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpO2NvbnRpbnVlfWxldCB1PTA7c3dpdGNoKHNbMF0pe2Nhc2UiRyI6Mz09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihzLmxlbmd0aD49MyYmcy5sZW5ndGg8PTQpe2NvbnN0IGE9cy5zdWJzdHJpbmcoMSk7aWYodCl7dT1wYXJzZUludChhLDE2KTticmVha311PSthO2lmKE51bWJlci5pc05hTih1KSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpsPSgwLGguZ2V0VW5pY29kZUZvckdseXBoKShzLG8pOy0xIT09bCYmKHU9bCl9aWYodT4wJiZ1PD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKHUpKXtpZihpJiZ1PT09K3Ipe2NvbnN0IGU9KDAsYy5nZXRFbmNvZGluZykoaSk7aWYoZSYmKHM9ZVtyXSkpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShvW3NdKTtjb250aW51ZX19YVtyXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh1KX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIWUudG9Vbmljb2RlJiZlLnRvVW5pY29kZS5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1pLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgbi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgYT1vLmxvb2t1cCh0KTthJiYoY1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChhLmNoYXJDb2RlQXQoMCk8PDgpK2EuY2hhckNvZGVBdCgxKSkpfSkpO3JldHVybiBuZXcgZi5Ub1VuaWNvZGVNYXAoYyl9cmV0dXJuIG5ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfXJlYWRUb1VuaWNvZGUoZSl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIGkuTmFtZT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwP25ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBmLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtP24uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGYuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpe3RbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk7cmV0dXJufWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtjb25zdCB0PWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JnQpKXtyLnB1c2godCk7Y29udGludWV9ZSs9Mjtjb25zdCBuPWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJnQpPDwxMCkrKDEwMjMmbikrNjU1MzYpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0KX0pLChlPT57aWYoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pOygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBjPVtdO2xldCBsLGgsdSxkLGYsZyxwLG07aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO209ZS5nZXQoIlciKTtpZihtKWZvcihoPTAsdT1tLmxlbmd0aDtoPHU7aCsrKXtnPXIuZmV0Y2hJZlJlZihtW2grK10pO3A9ci5mZXRjaElmUmVmKG1baF0pO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspbltnKytdPXIuZmV0Y2hJZlJlZihwW2RdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKG1bKytoXSk7Zm9yKGQ9ZztkPD1wO2QrKyluW2RdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2w9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGg9MCx1PXQubGVuZ3RoO2g8dTtoKyspe2c9ci5mZXRjaElmUmVmKHRbaCsrXSk7cD1yLmZldGNoSWZSZWYodFtoXSk7aWYoQXJyYXkuaXNBcnJheShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKyljW2crK109W3IuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2RdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKV07Zm9yKGQ9ZztkPD1wO2QrKyljW2RdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO209ZS5nZXQoIldpZHRocyIpO2lmKG0pe2Q9bztmb3IoaD0wLHU9bS5sZW5ndGg7aDx1O2grKyluW2QrK109ci5mZXRjaElmUmVmKG1baF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYj0hMCx5PXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoeSl7aWYoeSE9PXQpe2I9ITE7YnJlYWt9fWVsc2UgeT10fWImJihhLmZsYWdzfD1vLkZvbnRGbGFncy5GaXhlZFBpdGNoKTthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9bDthLnZtZXRyaWNzPWN9aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGwuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLHYuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBGLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6Yyx0eXBlOmgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpwfSl7Y29uc3QgbT0iVHlwZTMiPT09aDtsZXQgeTtpZighZSl7aWYoIW0pe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkJhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkIik7ZT1lLm5hbWUucmVwbGFjZSgvWyxfXS9nLCItIik7Y29uc3Qgbj10aGlzLmdldEJhc2VGb250TWV0cmljcyhlKSxjPWUuc3BsaXQoIi0iKVswXSxkPSh0aGlzLmlzU2VyaWZGb250KGMpP28uRm9udEZsYWdzLlNlcmlmOjApfChuLm1vbm9zcGFjZT9vLkZvbnRGbGFncy5GaXhlZFBpdGNoOjApfCgoMCxsLmdldFN5bWJvbHNGb250cykoKVtjXT9vLkZvbnRGbGFncy5TeW1ib2xpYzpvLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7eT17dHlwZTpoLG5hbWU6ZSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IHA9dC5nZXQoIldpZHRocyIpLGI9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgdz1udWxsO2lmKGIpe3kuaXNTdGFuZGFyZEZvbnQ9ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShiKTt5LmlzSW50ZXJuYWxGb250PSEhd31yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LHkpLnRoZW4oKHQ9PntpZihwKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgcCllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgobi53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx3LHQpfSkpfShlPW5ldyBpLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQoaCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdyxTLHgsayxDLHY9ZS5nZXQoIkZvbnROYW1lIiksRj10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PWkuTmFtZS5nZXQodikpOyJzdHJpbmciPT10eXBlb2YgRiYmKEY9aS5OYW1lLmdldChGKSk7aWYoIW0pe2NvbnN0IGU9diYmdi5uYW1lLHQ9RiYmRi5uYW1lO2lmKGUhPT10KXsoMCxyLmluZm8pKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtlfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke3R9Ii5gKTtlJiZ0JiZ0LnN0YXJ0c1dpdGgoZSkmJih2PUYpfX12PXZ8fEY7aWYoISh2IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTt0cnl7dz1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt2Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt3PW5ldyBiLk51bGxTdHJlYW19bGV0IE89ITEsVD0hMSxNPW51bGw7aWYodyl7aWYody5kaWN0KXtjb25zdCBlPXcuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoUz1lLm5hbWUpO3g9dy5kaWN0LmdldCgiTGVuZ3RoMSIpO2s9dy5kaWN0LmdldCgiTGVuZ3RoMiIpO0M9dy5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKHApe2NvbnN0IGU9KDAsZC5nZXRYZmFGb250TmFtZSkodi5uYW1lKTtpZihlKXtwLmZvbnRGYW1pbHk9YCR7cC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO3AubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7TT1lLmZhY3RvcnN8fG51bGw7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO1Q9ISF3O2E9dD0oMCxkLmdldFhmYUZvbnREaWN0KSh2Lm5hbWUpO2M9ITB9fWVsc2UgaWYoIW0pe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKSh2Lm5hbWUpO2lmKGUpe089ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtUPSEhd319eT17dHlwZTpoLG5hbWU6di5uYW1lLHN1YnR5cGU6UyxmaWxlOncsbGVuZ3RoMTp4LGxlbmd0aDI6ayxsZW5ndGgzOkMsaXNTdGFuZGFyZEZvbnQ6Tyxpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpjLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpwLHNjYWxlRmFjdG9yczpNfTtpZihjKXtjb25zdCBlPWEuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBpLk5hbWUmJih5LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt5LmNNYXA9dDt5LnZlcnRpY2FsPXkuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxhLHkpLnRoZW4oKGE9Pnt0aGlzLmV4dHJhY3RXaWR0aHModCxlLGEpO3JldHVybiBuZXcgcy5Gb250KHYubmFtZSx3LGEpfSkpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3QgaT1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXthLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEJ1aWxkUGF0aH0pOygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0JiZ0LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IGkuRGljdDtlLnNldCgiQmFzZUZvbnQiLGkuTmFtZS5nZXQoIlBERkpTLUZhbGxiYWNrRm9udCIpKTtlLnNldCgiVHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixpLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixpLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9UGFydGlhbEV2YWx1YXRvcjtjbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmEsZXZhbHVhdG9yT3B0aW9uczpyfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1yfHxNO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pO24ucGFyc2luZ1R5cGUzRm9udD0hMDtjb25zdCBzPW5ldyBpLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7Y29uc3Qgbz10aGlzLmZvbnQsYz10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBsPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGg9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksdT10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxkPU9iamVjdC5jcmVhdGUobnVsbCksZj1yLlV0aWwubm9ybWFsaXplUmVjdChvLmJib3h8fFswLDAsMCwwXSksZz1mWzJdLWZbMF0scD1mWzNdLWZbMV0sbT1NYXRoLmh5cG90KGcscCk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpbD1sLnRoZW4oKCgpPT57Y29uc3QgdD1oLmdldChlKSxpPW5ldyBPLk9wZXJhdG9yTGlzdDtyZXR1cm4gbi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKCgpPT57aS5mbkFycmF5WzBdPT09ci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGksbSk7ZFtlXT1pLmdldElSKCk7Zm9yKGNvbnN0IGUgb2YgaS5kZXBlbmRlbmNpZXMpYy5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHIud2FybikoYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgTy5PcGVyYXRvckxpc3Q7ZFtlXT1hLmdldElSKCl9KSl9KSk7dGhpcy50eXBlM0xvYWRlZD1sLnRoZW4oKCgpPT57by5jaGFyUHJvY09wZXJhdG9yTGlzdD1kO2lmKHRoaXMuX2Jib3gpe28uaXNDaGFyQkJveD0hMDtvLmJib3g9dGhpcy5fYmJveH19KSk7cmV0dXJuIHRoaXMudHlwZTNMb2FkZWR9X3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoZSx0PU5hTil7Y29uc3QgYT1yLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1hWzJdLWFbMF0saT1hWzNdLWFbMV0scz1NYXRoLmh5cG90KG4saSk7aWYoMD09PW58fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGFbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxhWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sYVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGFbM10pfWxldCBvPTAsYz1lLmxlbmd0aDtmb3IoO288Yzspe3N3aXRjaChlLmZuQXJyYXlbb10pe2Nhc2Ugci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzOmJyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldEZpbGxDb2xvclNwYWNlOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOmNhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpjYXNlIHIuT1BTLnNldEZpbGxHcmF5OmNhc2Ugci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDTVlLQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2hhZGluZ0ZpbGw6Y2FzZSByLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2MtLTtjb250aW51ZTtjYXNlIHIuT1BTLnNldEdTdGF0ZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtvXTtsZXQgYT0wLG49dC5sZW5ndGg7Zm9yKDthPG47KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7bi0tO2NvbnRpbnVlfWErK319bysrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09ci5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9ci5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLG4saSl7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1uO3NbNV09aX10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KHIuSURFTlRJVFlfTUFUUklYKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPXIuVGV4dFJlbmRlcmluZ01vZGUuRklMTDt0aGlzLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5zdHJva2VDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLEMuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpyLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5KPXtpZDpyLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2Uuaj17aWQ6ci5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NPXtpZDpyLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZD17aWQ6ci5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLnJpPXtpZDpyLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5pPXtpZDpyLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmdzPXtpZDpyLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5xPXtpZDpyLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuUT17aWQ6ci5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmNtPXtpZDpyLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5tPXtpZDpyLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5sPXtpZDpyLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5jPXtpZDpyLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2Uudj17aWQ6ci5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS55PXtpZDpyLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLmg9e2lkOnIuT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLnJlPXtpZDpyLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5TPXtpZDpyLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5zPXtpZDpyLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmY9e2lkOnIuT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5GPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImYqIl09e2lkOnIuT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkI9e2lkOnIuT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiQioiXT17aWQ6ci5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuYj17aWQ6ci5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImIqIl09e2lkOnIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uubj17aWQ6ci5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlc9e2lkOnIuT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiVyoiXT17aWQ6ci5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlQ9e2lkOnIuT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVUPXtpZDpyLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGM9e2lkOnIuT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHc9e2lkOnIuT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHo9e2lkOnIuT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRMPXtpZDpyLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGY9e2lkOnIuT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5Ucj17aWQ6ci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5Ucz17aWQ6ci5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UZD17aWQ6ci5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5URD17aWQ6ci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVG09e2lkOnIuT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZVsiVCoiXT17aWQ6ci5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5Uaj17aWQ6ci5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5USj17aWQ6ci5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZVsiJyJdPXtpZDpyLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbJyInXT17aWQ6ci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5kMD17aWQ6ci5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuZDE9e2lkOnIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLkNTPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuY3M9e2lkOnIuT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuU0M9e2lkOnIuT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9O2UuU0NOPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2Uuc2M9e2lkOnIuT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLnNjbj17aWQ6ci5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH07ZS5HPXtpZDpyLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZz17aWQ6ci5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5SRz17aWQ6ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5yZz17aWQ6ci5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuSz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2Uuaz17aWQ6ci5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLnNoPXtpZDpyLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJJPXtpZDpyLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuSUQ9e2lkOnIuT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRUk9e2lkOnIuT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRG89e2lkOnIuT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLk1QPXtpZDpyLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5EUD17aWQ6ci5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5CTUM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJEQz17aWQ6ci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5FTUM9e2lkOnIuT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CWD17aWQ6ci5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FWD17aWQ6ci5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQk09bnVsbDtlLkJEPW51bGw7ZS50cnVlPW51bGw7ZS5mYT1udWxsO2UuZmFsPW51bGw7ZS5mYWxzPW51bGw7ZS5mYWxzZT1udWxsO2UubnU9bnVsbDtlLm51bD1udWxsO2UubnVsbD1udWxsfSkpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1zdGF0aWMgZ2V0IE1BWF9JTlZBTElEX1BBVEhfT1BTKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IHAuUGFyc2VyKHtsZXhlcjpuZXcgcC5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSgxNSksbz1hKDQpLGM9YSg4KTtjb25zdCBsPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0saD0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5oKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtlPD10JiZuPHI7KXt0aGlzLl9tYXBbZV09YVtuKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBuPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2NvbnN0IHM9bltpXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLG49c1tlKytdO2lmKHI+PXQmJnI8PW4pe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1pKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjspe2NvbnN0IG49clt0KytdLGk9clt0KytdO2lmKGU+PW4mJmU8PWkpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7Y29uc3QgdT1mdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpe2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgZT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtsZXQgdD0iIjtmb3IobGV0IGE9MDthPGU7YSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1yZXR1cm4gY2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKHQsYSxyKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKHQpLGk9bi5yZWFkQnl0ZSgpO2EudmVydGljYWw9ISEoMSZpKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoZSksYz1uZXcgVWludDhBcnJheShlKSxsPW5ldyBVaW50OEFycmF5KGUpLGg9bmV3IFVpbnQ4QXJyYXkoZSksdT1uZXcgVWludDhBcnJheShlKTtsZXQgZCxmO2Zvcig7KGY9bi5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IHQ9Zj4+NTtpZig3PT09dCl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCByPSEhKDE2JmYpLGk9MTUmZjtpZihpKzE+ZSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1uLnJlYWROdW1iZXIoKTtzd2l0Y2godCl7Y2FzZSAwOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKX1icmVhaztjYXNlIDE6bi5yZWFkSGV4KG8saSk7bi5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtuLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7bi5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChsLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxpKTtpZighcil7bi5yZWFkSGV4TnVtYmVyKHUsaSk7YWRkSGV4KGwsdSxpKX1kPW4ucmVhZFNpZ25lZCgpKyhkKzEpO2EubWFwT25lKGhleFRvSW50KGwsaSksZCl9YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1uLnJlYWROdW1iZXIoKTthLm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtpZihyKW8uc2V0KGMpO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8sYyxpKX1uLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBDaWRSYW5nZShoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSksZCl9YnJlYWs7Y2FzZSA0Om4ucmVhZEhleChsLGcpO24ucmVhZEhleChoLGkpO2EubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIXIpe24ucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsaSk7bi5yZWFkSGV4U2lnbmVkKHUsaSk7YWRkSGV4KGgsdSxpKTthLm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2Nhc2UgNTpuLnJlYWRIZXgobyxnKTtuLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO24ucmVhZEhleChoLGkpO2EubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYocilvLnNldChjKTtlbHNle24ucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9bi5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtuLnJlYWRIZXgoaCxpKTthLm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7dH1gKX19cmV0dXJuIHM/cihzKTphfX19KCksZD1mdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKXtmdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShyLGksdCl9ZWxzZXtpZighKDAsbi5pc0NtZCkoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxuLmlzQ21kKShhLCJdIikmJmEhPT1uLkVPRjspe3MucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShyLGkscyl9fX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwQ2lkUmFuZ2UocixpLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2Ygbi5OYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLGkpe2xldCBzLGM7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIG4uTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBuLkNtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBuLk5hbWUmJihjPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFpJiZjJiYoaT1jKTtyZXR1cm4gaT9leHRlbmRDTWFwKGUsYSxpKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmEsY29tcHJlc3Npb25UeXBlOm59PWF3YWl0IHQoZSksaT1uZXcgQ01hcCghMCk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyB1KS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IHMuTGV4ZXIobmV3IGMuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke259YCl9cmV0dXJue2FzeW5jIGNyZWF0ZShlKXtjb25zdCB0PWUuZW5jb2RpbmcsYT1lLmZldGNoQnVpbHRJbkNNYXAscj1lLnVzZUNNYXA7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAodC5uYW1lLGEpO2lmKHQgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBzLkxleGVyKHQpLGEscik7cmV0dXJuIGUuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLGEpOmV9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19fSgpO3QuQ01hcEZhY3Rvcnk9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpLHM9YSgxNiksbz1hKDE4KSxjPWEoMTkpLGw9YSgyMSksaD1hKDIyKSx1PWEoMjUpLGQ9YSgyNyksZj1hKDI5KSxnPWEoOCkscD1hKDMwKSxtPWEoMzEpO2Z1bmN0aW9uIGNvbXB1dGVBZGxlcjMyKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MSxyPTA7Zm9yKGxldCBuPTA7bjx0Oysrbil7YSs9MjU1JmVbbl07cis9YX1yZXR1cm4gciU2NTUyMTw8MTZ8YSU2NTUyMX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPWUucG9zO2xldCBzLG8sYz0wO2Zvcig7LTEhPT0ocz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1jKWM9Njk9PT1zPzE6MDtlbHNlIGlmKDE9PT1jKWM9NzM9PT1zPzI6MDtlbHNleygwLHIuYXNzZXJ0KSgyPT09YywiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBpbnZhbGlkIHN0YXRlLiIpO2lmKDMyPT09c3x8MTA9PT1zfHwxMz09PXMpe289ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxMCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtzPWFbZV07aWYoKDAhPT1zfHwwPT09YVtlKzFdKSYmKDEwIT09cyYmMTMhPT1zJiYoczwzMnx8cz4xMjcpKSl7Yz0wO2JyZWFrfX1pZigyIT09Yyljb250aW51ZTtpZih0Lmtub3duQ29tbWFuZHMpe2NvbnN0IGU9dC5wZWVrT2JqKCk7ZSBpbnN0YW5jZW9mIG4uQ21kJiYhdC5rbm93bkNvbW1hbmRzW2UuY21kXSYmKGM9MCl9ZWxzZSgwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtpZigyPT09YylicmVha31lbHNlIGM9MH1pZigtMT09PXMpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihvKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLW8pKX19bGV0IGw9NDtlLnNraXAoLWwpO3M9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChsKTsoMCxpLmlzV2hpdGVTcGFjZSkocyl8fGwtLTtyZXR1cm4gZS5wb3MtbC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxuLGk9ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Om49ZS5nZXRVaW50MTYoKTtuPjI/ZS5za2lwKG4tMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0saT1uZXcgbi5EaWN0KHRoaXMueHJlZik7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aS5zZXQodCx0aGlzLmdldE9iaihlKSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz1pLmdldCgiRiIsIkZpbHRlciIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaDtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9bGV0IHUsZD1hLm1ha2VTdWJTdHJlYW0obCxoLGkpO2lmKGg8MWUzJiZzPDU1NTIpe2NvbnN0IGU9ZC5nZXRCeXRlcygpO2QucmVzZXQoKTtjb25zdCByPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjb25zdCBpPWEuZ2V0Qnl0ZXMocyk7YS5wb3M9cjt1PWNvbXB1dGVBZGxlcjMyKGUpKyJfIitjb21wdXRlQWRsZXIzMihpKTtjb25zdCBvPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1vKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtvLnJlc2V0KCk7cmV0dXJuIG99fWUmJihkPWUuY3JlYXRlU3RyZWFtKGQsaCkpO2Q9dGhpcy5maWx0ZXIoZCxpLGgpO2QuZGljdD1pO2lmKHZvaWQgMCE9PXUpe2QuY2FjaGVLZXk9YGlubGluZV8ke2h9XyR7dX1gO3RoaXMuaW1hZ2VDYWNoZVt1XT1kfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBkfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBnLk51bGxTdHJlYW19Y29uc3QgYj10aGlzLnhyZWYuc3RhdHM7dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkZMQVRFKTtyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGwuRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBsLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkxaVyk7bGV0IHQ9MTtpZihuKXtuLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9bi5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGYuTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgZi5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5EQ1QpO3JldHVybiBuZXcgdS5KcGVnU3RyZWFtKGUsYSxuKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOmIuYWRkU3RyZWFtVHlwZShyLlN0cmVhbVR5cGUuSlBYKTtyZXR1cm4gbmV3IGQuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkE4NSk7cmV0dXJuIG5ldyBzLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5BSFgpO3JldHVybiBuZXcgby5Bc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkNDRik7cmV0dXJuIG5ldyBjLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5STFgpO3JldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkpCSUcpO3JldHVybiBuZXcgaC5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgZy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxhPTAsbj0wO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSBpZig0Mz09PWUpe249MTtlPXRoaXMubmV4dENoYXIoKX1pZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1uPW58fDE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBuKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpuPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gobil7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jm47bj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihuPj00OCYmbjw9NTUpe2U9KGU8PDMpKygxNSZuKTtuPXRoaXMubmV4dENoYXIoKTtpZihuPj00OCYmbjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1Jm4pfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9aWYodClicmVhaztpfHwobj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpeygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gbi5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLG49dGhpcy5jdXJyZW50Q2hhcixpPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKG48MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PW4pe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltuXSl7aWYoaSl7dD10b0hleERpZ2l0KG4pO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihuKTtuPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQobik7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfWk9IWk7bj10aGlzLm5leHRDaGFyKCl9ZWxzZSBuPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiPj4iKX1yZXR1cm4gbi5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KGEpfX1jb25zdCBpPXRoaXMua25vd25Db21tYW5kcztsZXQgcz1pJiZ2b2lkIDAhPT1pW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1pW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2EubGVuZ3RofWApO2E9ZTtzPWkmJnZvaWQgMCE9PWlbYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1wZWVrT2JqKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MsdD10aGlzLmN1cnJlbnRDaGFyLGE9dGhpcy5iZWdpbklubGluZUltYWdlUG9zO2xldCBuO3RyeXtuPXRoaXMuZ2V0T2JqKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBwZWVrT2JqOiAke2V9YCl9dGhpcy5zdHJlYW0ucG9zPWU7dGhpcy5jdXJyZW50Q2hhcj10O3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz1hO3JldHVybiBufXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19dC5MZXhlcj1MZXhlcjt0LkxpbmVhcml6YXRpb249Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBvLGM7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoMCxuLmlzQ21kKShpLCJvYmoiKSYmcyBpbnN0YW5jZW9mIG4uRGljdCYmIm51bWJlciI9PXR5cGVvZihvPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZvPjApKXJldHVybiBudWxsO2lmKChjPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6YyxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KSxuPWEoNCk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSg4KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIHIuQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO3RoaXMucG9zPTA7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmVvZj0hMTt0aGlzLmJ1ZmZlcj1pO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIodCtlKTthPXQrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2soKTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KHQsYSl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3QmJnQuZGljdC5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaUhleFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKG48MCluPWU7ZWxzZXthW3IrK109bjw8NHxlO249LTF9fWlmKG4+PTAmJnRoaXMuZW9mKXthW3IrK109bjw8NDtuPS0xfXRoaXMuZmlyc3REaWdpdD1uO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuQXNjaWlIZXhTdHJlYW09QXNjaWlIZXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgyMCksbj1hKDE3KSxpPWEoMyk7Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBpLkRpY3R8fChhPWkuRGljdC5lbXB0eSk7Y29uc3Qgbj17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyByLkNDSVRURmF4RGVjb2RlcihuLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09Q0NJVFRGYXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheERlY29kZXI9dm9pZCAwO3ZhciByPWEoMik7Y29uc3Qgbj0tMSxpPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLHM9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxvPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxjPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLGw9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0saD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07dC5DQ0lUVEZheERlY29kZXI9Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDtsZXQgYSxyPXQuRW5kT2ZCbG9jaztudWxsPT1yJiYocj0hMCk7dGhpcy5lb2Jsb2NrPXI7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBpLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbaSsxXSxzKTtlW2krMV08YSYmKGkrPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtpXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtpXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSBuOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09biYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09biYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09bil7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZSYmZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsaSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIG59X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1uKXJldHVybiAxO2U9dD4+NT09MD9zW3RdOm9bdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LG8pO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLHMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PW4pcmV0dXJuIDE7dD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsaCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixsLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxjKTtpZihlWzBdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bjp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxzPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLG89bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxjPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxsPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoKChhPDw4KStyKSUzMSE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7b3w9aTw8cztzKz04fWNvbnN0IGM9YVtvJigxPDxyKS0xXSxsPWM+PjE2LGg9NjU1MzUmYztpZihsPDF8fHM8bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1vPj5sO3RoaXMuY29kZVNpemU9cy1sO3JldHVybiBofWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGEscj0wO2ZvcihhPTA7YTx0OysrYSllW2FdPnImJihyPWVbYV0pO2NvbnN0IG49MTw8cixpPW5ldyBJbnQzMkFycmF5KG4pO2ZvcihsZXQgcz0xLG89MCxjPTI7czw9cjsrK3Msbzw8PTEsYzw8PTEpZm9yKGxldCByPTA7cjx0OysrcilpZihlW3JdPT09cyl7bGV0IGU9MCx0PW87Zm9yKGE9MDthPHM7KythKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihhPWU7YTxuO2ErPWMpaVthXT1zPDwxNnxyOysrb31yZXR1cm5baSxyXX1yZWFkQmxvY2soKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHI7bGV0IHIsaCx1PXRoaXMuZ2V0Qml0cygzKTsxJnUmJih0aGlzLmVvZj0hMCk7dT4+PTE7aWYoMD09PXUpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cnw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2l8PXQ8PDg7aWYoaSE9PSg2NTUzNSZ+cikmJigwIT09cnx8MCE9PWkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxvPXMrcjtlPXRoaXMuZW5zdXJlQnVmZmVyKG8pO3RoaXMuYnVmZmVyTGVuZ3RoPW87aWYoMD09PXIpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMocik7ZS5zZXQodCxzKTt0Lmxlbmd0aDxyJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09dSl7cj1jO2g9bH1lbHNle2lmKDIhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxhPXRoaXMuZ2V0Qml0cyg1KSsxLG49dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTA7bz0wO2NvbnN0IGw9ZSthLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXtkPTI7Zj0zO2c9dH1lbHNlIGlmKDE3PT09ZSl7ZD0zO2Y9MztnPXQ9MH1lbHNle2lmKDE4IT09ZSl7dVtvKytdPXQ9ZTtjb250aW51ZX1kPTc7Zj0xMTtnPXQ9MH1sZXQgYT10aGlzLmdldEJpdHMoZCkrZjtmb3IoO2EtLSA+MDspdVtvKytdPWd9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoMCxlKSk7aD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IGQ9ZT9lLmxlbmd0aDowLGY9dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgYT10aGlzLmdldENvZGUocik7aWYoYTwyNTYpe2lmKGYrMT49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmKzEpO2Q9ZS5sZW5ndGh9ZVtmKytdPWE7Y29udGludWV9aWYoMjU2PT09YSl7dGhpcy5idWZmZXJMZW5ndGg9ZjtyZXR1cm59YS09MjU3O2E9c1thXTtsZXQgbj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7dD0oNjU1MzUmYSkrbjthPXRoaXMuZ2V0Q29kZShoKTthPW9bYV07bj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgaT0oNjU1MzUmYSkrbjtpZihmK3Q+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZit0KTtkPWUubGVuZ3RofWZvcihsZXQgYT0wO2E8dDsrK2EsKytmKWVbZl09ZVtmLWldfX19dC5GbGF0ZVN0cmVhbT1GbGF0ZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpiaWcyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgxNyksaT1hKDMpLHM9YSgyMyksbz1hKDIpO2NsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBzLkpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiByLkJhc2VTdHJlYW0pe2NvbnN0IGE9ZS5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTphLHN0YXJ0OjAsZW5kOmEubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Y29uc3QgYT1lLnBhcnNlQ2h1bmtzKHQpLG49YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuZW9mPSEwfX10LkpiaWcyU3RyZWFtPUpiaWcyU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNCksaT1hKDI0KSxzPWEoMjApO2NsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoYEpCSUcyIGVycm9yOiAke2V9YCwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtjb25zdCBlPW5ldyBpLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9Z2V0IGNvbnRleHRDYWNoZSgpe2NvbnN0IGU9bmV3IENvbnRleHRDYWNoZTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY29udGV4dENhY2hlIixlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBuPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWEucmVhZEJpdChyLG4pO249bjwyNTY/bjw8MXxlOjUxMSYobjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IGk9cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7cmV0dXJuIDA9PT1pP3M6cz4wPy1zOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3Qgbz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGM9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLGw9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxoPVszOTcxNywxOTQxLDIyOSw0MDVdLHU9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgbD0hIWksdT1jW3JdLmNvbmNhdChzKTt1LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgZD11Lmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkoZCksZz1uZXcgSW50OEFycmF5KGQpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPGQ7YisrKXtmW2JdPXVbYl0ueDtnW2JdPXVbYl0ueTt3PU1hdGgubWluKHcsdVtiXS54KTtTPU1hdGgubWF4KFMsdVtiXS54KTt4PU1hdGgubWluKHgsdVtiXS55KTtiPGQtMSYmdVtiXS55PT09dVtiKzFdLnkmJnVbYl0ueD09PXVbYisxXS54LTE/eXw9MTw8ZC0xLWI6cC5wdXNoKGIpfWNvbnN0IGs9cC5sZW5ndGgsQz1uZXcgSW50OEFycmF5KGspLHY9bmV3IEludDhBcnJheShrKSxGPW5ldyBVaW50MTZBcnJheShrKTtmb3IobT0wO208azttKyspe2I9cFttXTtDW21dPXVbYl0ueDt2W21dPXVbYl0ueTtGW21dPTE8PGQtMS1ifWNvbnN0IE89LXcsVD0teCxNPXQtUyxFPWhbcl07bGV0IEQ9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgTj1bXSxSPW8uZGVjb2RlcixMPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBqLCQsXyxVLFgsSD0wLHE9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtIXj1SLnJlYWRCaXQoTCxFKTtpZihIKXtOLnB1c2goRCk7Y29udGludWV9fUQ9bmV3IFVpbnQ4QXJyYXkoRCk7Ti5wdXNoKEQpO2ZvcihqPTA7ajx0O2orKyl7aWYobCYmaVtlXVtqXSl7RFtqXT0wO2NvbnRpbnVlfWlmKGo+PU8mJmo8TSYmZT49VCl7cT1xPDwxJnk7Zm9yKGI9MDtiPGs7YisrKXskPWUrdltiXTtfPWorQ1tiXTtVPU5bJF1bX107aWYoVSl7VT1GW2JdO3F8PVV9fX1lbHNle3E9MDtYPWQtMTtmb3IoYj0wO2I8ZDtiKyssWC0tKXtfPWorZltiXTtpZihfPj0wJiZfPHQpeyQ9ZStnW2JdO2lmKCQ+PTApe1U9TlskXVtfXTtVJiYocXw9VTw8WCl9fX19Y29uc3QgYT1SLnJlYWRCaXQoTCxxKTtEW2pdPWF9fXJldHVybiBOfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBoPWxbYV0uY29kaW5nOzA9PT1hJiYoaD1oLmNvbmNhdChbb1swXV0pKTtjb25zdCBkPWgubGVuZ3RoLGY9bmV3IEludDMyQXJyYXkoZCksZz1uZXcgSW50MzJBcnJheShkKTtsZXQgcDtmb3IocD0wO3A8ZDtwKyspe2ZbcF09aFtwXS54O2dbcF09aFtwXS55fWxldCBtPWxbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxrPXVbYV0sQz1bXSx2PWMuZGVjb2RlcixGPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBPPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7T149di5yZWFkQml0KEYsayk7aWYoTyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtDLnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGQ7cCsrKXtvPWErZ1twXTtjPXMrZltwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8Q1tvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCBoPXYucmVhZEJpdChGLGwpO3Rbc109aH19cmV0dXJuIEN9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDtTPTA7Zm9yKDtTPGk7KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IGk9cyp2K24sRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksTz10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgVD1vW0ZdLE09VFswXS5sZW5ndGgsRT1ULmxlbmd0aDtpZihPKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayksYT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSxyPWRlY29kZUludGVnZXIoQywiSUFSRFkiLGspO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrYSwodD4+MSkrciwhMSxwLG0pfWNvbnN0IEQ9aS0oMSZ1PzA6RS0xKSxOPXItKDImdT9NLTE6MCk7bGV0IFIsTCxqO2lmKGwpe2ZvcihSPTA7UjxFO1IrKyl7eD13W04rUl07aWYoIXgpY29udGludWU7aj1UW1JdO2NvbnN0IGU9TWF0aC5taW4oYS1ELE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXXw9altMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXV49altMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19cis9RS0xfWVsc2V7Zm9yKEw9MDtMPEU7TCsrKXt4PXdbRCtMXTtpZih4KXtqPVRbTF07c3dpdGNoKGQpe2Nhc2UgMDpmb3IoUj0wO1I8TTtSKyspeFtOK1JdfD1qW1JdO2JyZWFrO2Nhc2UgMjpmb3IoUj0wO1I8TTtSKyspeFtOK1JdXj1qW1JdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX19cis9TS0xfVMrKztjb25zdCAkPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09JClicmVhaztyKz0kK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj0oMCxuLnJlYWRVaW50MzIpKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFvW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPW9baV07YS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmcik7Y29uc3Qgcz0hISg2NCZyKSxjPWVbdCs1XTtsZXQgbD1jPj41Jjc7Y29uc3QgaD1bMzEmY107bGV0IHU9dCs2O2lmKDc9PT1jKXtsPTUzNjg3MDkxMSYoMCxuLnJlYWRVaW50MzIpKGUsdS0xKTt1Kz0zO2xldCB0PWwrNz4+MztoWzBdPWVbdSsrXTtmb3IoOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2EucmV0YWluQml0cz1oO2xldCBmPTQ7YS5udW1iZXI8PTI1Nj9mPTE6YS5udW1iZXI8PTY1NTM2JiYoZj0yKTtjb25zdCBnPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1mP2VbdV06Mj09PWY/KDAsbi5yZWFkVWludDE2KShlLHUpOigwLG4ucmVhZFVpbnQzMikoZSx1KTtnLnB1c2godCk7dSs9Zn1hLnJlZmVycmVkVG89ZztpZihzKXthLnBhZ2VBc3NvY2lhdGlvbj0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NH1lbHNlIGEucGFnZUFzc29jaWF0aW9uPWVbdSsrXTthLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NDtpZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpe2lmKDM4IT09aSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHUpLHI9ISEoMSZlW3UrZF0pLG49NixpPW5ldyBVaW50OEFycmF5KG4pO2lmKCFyKXtpWzBdPTI1NTtpWzFdPTE3Mn1pWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O2lbM109dC5oZWlnaHQ+PjE2JjI1NTtpWzRdPXQuaGVpZ2h0Pj44JjI1NTtpWzVdPTI1NSZ0LmhlaWdodDtmb3IocD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8biYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1uKXthLmxlbmd0aD1wK247YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD11O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBuPVtdO2xldCBpPWE7Zm9yKDtpPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsaSk7aT1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1pO2krPWEubGVuZ3RoO3IuZW5kPWl9bi5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bltlXS5zdGFydD1pO2krPW5bZV0uaGVhZGVyLmxlbmd0aDtuW2VdLmVuZD1pfXJldHVybiBufWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6KDAsbi5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLG4ucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsbi5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBkPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBzLG8sYyxsLGg9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PSgwLG4ucmVhZFVpbnQxNikocixoKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7aCs9MjtpZighZS5odWZmbWFuKXtsPTA9PT1lLnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUuYXQ9b31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLnJlZmluZW1lbnRBdD1vfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgdT17fTt1LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWQ7Y29uc3QgZj0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW49ISEoMSZmKTt1LnJlZmluZW1lbnQ9ISEoMiZmKTt1LmxvZ1N0cmlwU2l6ZT1mPj4yJjM7dS5zdHJpcFNpemU9MTw8dS5sb2dTdHJpcFNpemU7dS5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzO3UudHJhbnNwb3NlZD0hISg2NCZmKTt1LmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzO3UuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxO3UuZHNPZmZzZXQ9Zjw8MTc+PjI3O3UucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjE7aWYodS5odWZmbWFuKXtjb25zdCBlPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbkZTPTMmZTt1Lmh1ZmZtYW5EUz1lPj4yJjM7dS5odWZmbWFuRFQ9ZT4+NCYzO3UuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7dS5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMzt1Lmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKHUucmVmaW5lbWVudCYmIXUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXUucmVmaW5lbWVudEF0PW99dS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVt1LGEucmVmZXJyZWRUbyxyLGgsaV07YnJlYWs7Y2FzZSAxNjpjb25zdCBnPXt9LHA9cltoKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5wYXR0ZXJuV2lkdGg9cltoKytdO2cucGF0dGVybkhlaWdodD1yW2grK107Zy5tYXhQYXR0ZXJuSW5kZXg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZyxhLm51bWJlcixyLGgsaV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1kO2NvbnN0IGI9cltoKytdO20ubW1yPSEhKDEmYik7bS50ZW1wbGF0ZT1iPj4xJjM7bS5lbmFibGVTa2lwPSEhKDgmYik7bS5jb21iaW5hdGlvbk9wZXJhdG9yPWI+PjQmNzttLmRlZmF1bHRQaXhlbFZhbHVlPWI+PjcmMTttLmdyaWRXaWR0aD0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRIZWlnaHQ9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRWZWN0b3JYPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO20uZ3JpZFZlY3Rvclk9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7cz1bbSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCB5PXt9O3kuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9ZDtjb25zdCB3PXJbaCsrXTt5Lm1tcj0hISgxJncpO3kudGVtcGxhdGU9dz4+MSYzO3kucHJlZGljdGlvbj0hISg4JncpO2lmKCF5Lm1tcil7bD0wPT09eS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn15LmF0PW99cz1beSxyLGgsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCBTPXt3aWR0aDooMCxuLnJlYWRVaW50MzIpKHIsaCksaGVpZ2h0OigwLG4ucmVhZFVpbnQzMikocixoKzQpLHJlc29sdXRpb25YOigwLG4ucmVhZFVpbnQzMikocixoKzgpLHJlc29sdXRpb25ZOigwLG4ucmVhZFVpbnQzMikocixoKzEyKX07NDI5NDk2NzI5NT09PVMuaGVpZ2h0JiZkZWxldGUgUy5oZWlnaHQ7Y29uc3QgeD1yW2grMTZdOygwLG4ucmVhZFVpbnQxNikocixoKzE3KTtTLmxvc3NsZXNzPSEhKDEmeCk7Uy5yZWZpbmVtZW50PSEhKDImeCk7Uy5kZWZhdWx0UGl4ZWxWYWx1ZT14Pj4yJjE7Uy5jb21iaW5hdGlvbk9wZXJhdG9yPXg+PjMmMztTLnJlcXVpcmVzQnVmZmVyPSEhKDMyJngpO1MuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JngpO3M9W1NdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVthLm51bWJlcixyLGgsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCB1PSJvbiIrYS50eXBlTmFtZTt1IGluIHQmJnRbdV0uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLG49ZS5oZWlnaHQsaT1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxuO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1pfWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IG49ZS5pbmZvLGk9bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsbi53aWR0aCxuLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKG4scyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyl7bGV0IG8sYztpZihlLmh1ZmZtYW4pe289ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLG4saSxzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpuPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIGk9Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6bix0YWJsZUJpdG1hcFNpemU6aSx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtjPW5ldyBSZWFkZXIocixpLHMpfWxldCBsPXRoaXMuc3ltYm9scztsfHwodGhpcy5zeW1ib2xzPWw9e30pO2NvbnN0IGg9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQocixpLHMpO2xbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBmPVtdO2xldCBnPTAscD0oMCxuLmxvZzIpKGEubGVuZ3RoK3IpO2NvbnN0IG09dS5kZWNvZGVyLGI9dS5jb250ZXh0Q2FjaGU7bGV0IHksdztpZihlKXt5PWdldFN0YW5kYXJkVGFibGUoMSk7dz1bXTtwPU1hdGgubWF4KHAsMSl9Zm9yKDtmLmxlbmd0aDxyOyl7Zys9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFESCIsbSk7bGV0IHI9MCxuPTA7Y29uc3QgaT1lP3cubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBpPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFEVyIsbSk7aWYobnVsbD09PWkpYnJlYWs7cis9aTtuKz1yO2xldCB5O2lmKHQpe2NvbnN0IG49ZGVjb2RlSW50ZWdlcihiLCJJQUFJIixtKTtpZihuPjEpeT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGcsMCxuLDEsYS5jb25jYXQoZikscCwwLDAsMSwwLHMsbCxoLHUsMCxkKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChiLG0scCksdD1kZWNvZGVJbnRlZ2VyKGIsIklBUkRYIixtKSxuPWRlY29kZUludGVnZXIoYiwiSUFSRFkiLG0pO3k9ZGVjb2RlUmVmaW5lbWVudChyLGcsbCxlPGEubGVuZ3RoP2FbZV06ZltlLWEubGVuZ3RoXSx0LG4sITEsaCx1KX1mLnB1c2goeSl9ZWxzZSBpZihlKXcucHVzaChyKTtlbHNle3k9ZGVjb2RlQml0bWFwKCExLHIsZyxvLCExLG51bGwsYyx1KTtmLnB1c2goeSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShkKTtkLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChkLG4sZyk7ZWxzZXtjb25zdCBhPWQuZW5kLHI9ZC5wb3NpdGlvbitlO2QuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAoZCxuLGcsITEpO2QuZW5kPWE7ZC5wb3NpdGlvbj1yfWNvbnN0IGE9dy5sZW5ndGg7aWYoaT09PWEtMSlmLnB1c2godCk7ZWxzZXtsZXQgZSxyLG4scyxvLGM9MDtmb3IoZT1pO2U8YTtlKyspe3M9d1tlXTtuPWMrcztvPVtdO2ZvcihyPTA7cjxnO3IrKylvLnB1c2godFtyXS5zdWJhcnJheShjLG4pKTtmLnB1c2gobyk7Yz1ufX19fWNvbnN0IFM9W10seD1bXTtsZXQgayxDLHY9ITE7Y29uc3QgRj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8Rjspe2xldCB0PWU/eS5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQUVYIixtKTtmb3IoO3QtLTspeC5wdXNoKHYpO3Y9IXZ9Zm9yKGs9MCxDPWEubGVuZ3RoO2s8QztrKyspeFtrXSYmUy5wdXNoKGFba10pO2ZvcihsZXQgZT0wO2U8cjtrKyssZSsrKXhba10mJlMucHVzaChmW2VdKTtyZXR1cm4gU30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxoLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxjKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPWUuaW5mbztsZXQgbyxjO2NvbnN0IGw9dGhpcy5zeW1ib2xzLGg9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PSgwLG4ubG9nMikoaC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7Yz1uZXcgUmVhZGVyKGEscixpKTtvPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsbil7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9bi5yZWFkQml0cyg0KTtpLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtpLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUobik7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1uLnJlYWRCaXRzKDIpKzM7YT1pW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1uLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1uLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fW4uYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKGksITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxoLmxlbmd0aCxjKX1jb25zdCBkPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGY9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGgsdSxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxkLGUubG9nU3RyaXBTaXplLGMpO3RoaXMuZHJhd0JpdG1hcChzLGYpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbil7bGV0IGk9dGhpcy5wYXR0ZXJucztpfHwodGhpcy5wYXR0ZXJucz1pPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pO2lbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixuLGkpe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09biYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLG4sITEsbnVsbCxzLGkpLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10sbj10KmUsaT1uK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShuLGkpKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbz1lLmluZm8sYz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxsPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSxkLGYsZyxwKXtpZihvKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7Y30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgbT1bXTtsZXQgYix5LHc7Zm9yKGI9MDtiPGk7YisrKXt3PW5ldyBVaW50OEFycmF5KHIpO2lmKHMpZm9yKHk9MDt5PHI7eSsrKXdbeV09czttLnB1c2godyl9Y29uc3QgUz10Lmxlbmd0aCx4PXRbMF0saz14WzBdLmxlbmd0aCxDPXgubGVuZ3RoLHY9KDAsbi5sb2cyKShTKSxGPVtdO2lmKCFlKXtGLnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgTz1bXTtsZXQgVCxNLEUsRCxOLFIsTCxqLCQsXyxVO2UmJihUPW5ldyBSZWFkZXIocC5kYXRhLHAuc3RhcnQscC5lbmQpKTtmb3IoYj12LTE7Yj49MDtiLS0pe009ZT9kZWNvZGVNTVJCaXRtYXAoVCxsLGgsITApOmRlY29kZUJpdG1hcCghMSxsLGgsYSwhMSxudWxsLEYscCk7T1tiXT1NfWZvcihFPTA7RTxoO0UrKylmb3IoRD0wO0Q8bDtEKyspe049MDtSPTA7Zm9yKHk9di0xO3k+PTA7eS0tKXtOXj1PW3ldW0VdW0RdO1J8PU48PHl9TD10W1JdO2o9dStFKmcrRCpmPj44OyQ9ZCtFKmYtRCpnPj44O2lmKGo+PTAmJmorazw9ciYmJD49MCYmJCtDPD1pKWZvcihiPTA7YjxDO2IrKyl7VT1tWyQrYl07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKylVW2oreV18PV9beV19ZWxzZXtsZXQgZSx0O2ZvcihiPTA7YjxDO2IrKyl7dD0kK2I7aWYoISh0PDB8fHQ+PWkpKXtVPW1bdF07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKyl7ZT1qK3k7ZT49MCYmZTxyJiYoVVtlXXw9X1t5XSl9fX19fXJldHVybiBtfShlLm1tcixzLGUudGVtcGxhdGUsby53aWR0aCxvLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3RvclksYyk7dGhpcy5kcmF3Qml0bWFwKG8sbCl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKGUsdCsxKSxzPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrNSksbz1uZXcgUmVhZGVyKGUsdCs5LGEpLGM9MSsocj4+MSY3KSxsPTErKHI+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyk7ZD1vLnJlYWRCaXRzKGwpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW2YsdSxkLDBdKSk7Zis9MTw8ZH13aGlsZShmPHMpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsdSwzMiwwLCJsb3dlciJdKSk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsdSwzMiwwXSkpO2lmKDEmcil7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3UsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShoLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBuLGkscyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO249YztpPTA7Zm9yKDtpPHQ7KXtzPWVbaV07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9bjtuKyt9aSsrfW8rK319fWNvbnN0IGY9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxhPWZbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtmW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWFbdFtuXV07aWYoaSl7aWYoZT09PXIpcmV0dXJuIGk7cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IG49e0s6LTEsQ29sdW1uczp0LFJvd3M6YSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOnJ9LGk9bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsbiksbz1bXTtsZXQgYyxsPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7by5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7Yz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09Yyl7Yz0wO2w9ITB9YT03fWVbcl09Yz4+YSYxO2EtLX19aWYociYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3QgYT1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWE7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgcj1lW3RdPj4xLG49MSZlW3RdO2NvbnN0IGk9YVtyXSxzPWkucWU7bGV0IG8sYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYoYzxzKXtjPXM7bz1uO3I9aS5ubXBzfWVsc2V7Yz1zO289MV5uOzE9PT1pLnN3aXRjaEZsYWcmJihuPW8pO3I9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3NjgmYykpe3RoaXMuYT1jO3JldHVybiBufWlmKGM8cyl7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXtvPW47cj1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO2M8PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTt0aGlzLmE9YztlW3RdPXI8PDF8bjtyZXR1cm4gb319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyNikscz1hKDIpO2NsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09cil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYodGhpcy5mb3JjZVJHQiYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHIpO2xldCBpPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe25bZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtuW2UrMV09dFtlXSpzfDA7MjU2PT09bltlXSYmMD09PW5bZSsxXXx8KGk9ITApfWkmJihlLmRlY29kZVRyYW5zZm9ybT1uKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9Y29uc3QgYT1uZXcgaS5KcGVnSW1hZ2UoZSk7YS5wYXJzZSh0aGlzLmJ5dGVzKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLHM9NDAxNyxvPTc5OSxjPTM0MDYsbD0yMjc2LGg9MTU2Nyx1PTM3ODQsZD01NzkzLGY9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscyxvLGMsbCxoLHUsZD0hMSl7Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLG4ucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgQyx2LEYsTyxULE07TT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIscz1yPj40O2lmKDA9PT1uKXtpZihzPDE1KXt5PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9cztjb25zdCBvPWlbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixzLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQraVthXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOnM9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1JnM7bz1zPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPXM7Y29uc3Qgbz1pW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRSxELE4sUixMPTA7RD0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47Zm9yKDtMPD1EOyl7Y29uc3QgYT1vP01hdGgubWluKEQtTCxvKTpEO2lmKGE+MCl7Zm9yKHY9MDt2PGs7disrKXNbdl0ucHJlZD0wO3k9MDtpZigxPT09ayl7Qz1zWzBdO2ZvcihUPTA7VDxhO1QrKyl7ZGVjb2RlQmxvY2soQyxNLEwpO0wrK319ZWxzZSBmb3IoVD0wO1Q8YTtUKyspe2Zvcih2PTA7djxrO3YrKyl7Qz1zW3ZdO049Qy5oO1I9Qy52O2ZvcihGPTA7RjxSO0YrKylmb3IoTz0wO088TjtPKyspZGVjb2RlTWN1KEMsTSxMLEYsTyl9TCsrfX1iPTA7RT1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighRSlicmVhaztpZihFLmludmFsaWQpe2NvbnN0IGU9YT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxyLndhcm4pKGBkZWNvZGVTY2FuIC0gJHtlfSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7RS5pbnZhbGlkfWApO3Q9RS5vZmZzZXR9aWYoIShFLm1hcmtlcj49NjU0ODgmJkUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1wfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsYSl7Y29uc3Qgcj1lLnF1YW50aXphdGlvblRhYmxlLG49ZS5ibG9ja0RhdGE7bGV0IGksZyxwLG0sYix5LHcsUyx4LGssQyx2LEYsTyxULE0sRTtpZighcil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe3g9blt0K2VdO2s9blt0K2UrMV07Qz1uW3QrZSsyXTt2PW5bdCtlKzNdO0Y9blt0K2UrNF07Tz1uW3QrZSs1XTtUPW5bdCtlKzZdO009blt0K2UrN107eCo9cltlXTtpZigwIT0oa3xDfHZ8RnxPfFR8TSkpe2sqPXJbZSsxXTtDKj1yW2UrMl07dio9cltlKzNdO0YqPXJbZSs0XTtPKj1yW2UrNV07VCo9cltlKzZdO00qPXJbZSs3XTtpPWQqeCsxMjg+Pjg7Zz1kKkYrMTI4Pj44O3A9QzttPVQ7Yj1mKihrLU0pKzEyOD4+ODtTPWYqKGsrTSkrMTI4Pj44O3k9djw8NDt3PU88PDQ7aT1pK2crMT4+MTtnPWktZztFPXAqdSttKmgrMTI4Pj44O3A9cCpoLW0qdSsxMjg+Pjg7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO2c9ZytwKzE+PjE7cD1nLXA7RT1iKmwrUypjKzIwNDg+PjEyO2I9YipjLVMqbCsyMDQ4Pj4xMjtTPUU7RT15Km8rdypzKzIwNDg+PjEyO3k9eSpzLXcqbysyMDQ4Pj4xMjt3PUU7YVtlXT1pK1M7YVtlKzddPWktUzthW2UrMV09Zyt3O2FbZSs2XT1nLXc7YVtlKzJdPXAreTthW2UrNV09cC15O2FbZSszXT1tK2I7YVtlKzRdPW0tYn1lbHNle0U9ZCp4KzUxMj4+MTA7YVtlXT1FO2FbZSsxXT1FO2FbZSsyXT1FO2FbZSszXT1FO2FbZSs0XT1FO2FbZSs1XT1FO2FbZSs2XT1FO2FbZSs3XT1FfX1mb3IobGV0IGU9MDtlPDg7KytlKXt4PWFbZV07az1hW2UrOF07Qz1hW2UrMTZdO3Y9YVtlKzI0XTtGPWFbZSszMl07Tz1hW2UrNDBdO1Q9YVtlKzQ4XTtNPWFbZSs1Nl07aWYoMCE9KGt8Q3x2fEZ8T3xUfE0pKXtpPWQqeCsyMDQ4Pj4xMjtnPWQqRisyMDQ4Pj4xMjtwPUM7bT1UO2I9Ziooay1NKSsyMDQ4Pj4xMjtTPWYqKGsrTSkrMjA0OD4+MTI7eT12O3c9TztpPTQxMTIrKGkrZysxPj4xKTtnPWktZztFPXAqdSttKmgrMjA0OD4+MTI7cD1wKmgtbSp1KzIwNDg+PjEyO209RTtiPWIrdysxPj4xO3c9Yi13O1M9Uyt5KzE+PjE7eT1TLXk7aT1pK20rMT4+MTttPWktbTtnPWcrcCsxPj4xO3A9Zy1wO0U9YipsK1MqYysyMDQ4Pj4xMjtiPWIqYy1TKmwrMjA0OD4+MTI7Uz1FO0U9eSpvK3cqcysyMDQ4Pj4xMjt5PXkqcy13Km8rMjA0OD4+MTI7dz1FO3g9aStTO009aS1TO2s9Zyt3O1Q9Zy13O0M9cCt5O089cC15O3Y9bStiO0Y9bS1iO3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7RjwxNj9GPTA6Rj49NDA4MD9GPTI1NTpGPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtuW3QrZV09eDtuW3QrZSs4XT1rO25bdCtlKzE2XT1DO25bdCtlKzI0XT12O25bdCtlKzMyXT1GO25bdCtlKzQwXT1PO25bdCtlKzQ4XT1UO25bdCtlKzU2XT1NfWVsc2V7RT1kKngrODE5Mj4+MTQ7RT1FPC0yMDQwPzA6RT49MjAyND8yNTU6RSsyMDU2Pj40O25bdCtlXT1FO25bdCtlKzhdPUU7blt0K2UrMTZdPUU7blt0K2UrMjRdPUU7blt0K2UrMzJdPUU7blt0K2UrNDBdPUU7blt0K2UrNDhdPUU7blt0K2UrNTZdPUV9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBhPXQuYmxvY2tzUGVyTGluZSxyPXQuYmxvY2tzUGVyQ29sdW1uLG49bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8cjtlKyspZm9yKGxldCByPTA7cjxhO3IrKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLHIpLG4pfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGE9dCl7Y29uc3Qgcj1lLmxlbmd0aC0xO2xldCBpPWE8dD9hOnQ7aWYodD49cilyZXR1cm4gbnVsbDtjb25zdCBzPSgwLG4ucmVhZFVpbnQxNikoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG89KDAsbi5yZWFkVWludDE2KShlLGkpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytpPj1yKXJldHVybiBudWxsO289KDAsbi5yZWFkVWludDE2KShlLGkpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpvLG9mZnNldDppfX10LkpwZWdJbWFnZT1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhPW8rdC0yO2NvbnN0IGk9ZmluZE5leHRGaWxlTWFya2VyKGUsYSxvKTtpZihpJiZpLmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1uO3IuYmxvY2tzUGVyQ29sdW1uPWl9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLHMsbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9aVttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1pW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3Qgaz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxrO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IEM9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxDO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LG49MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxuJiYoRj1uKTtjb25zdCBpPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjpuLHF1YW50aXphdGlvbklkOmkscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKyluW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsbil9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO3M9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxuPWEuY29tcG9uZW50c1tyXTtuLmluZGV4PXQ7Y29uc3QgaT1lW28rK107bi5odWZmbWFuVGFibGVEQz1mW2k+PjRdO24uaHVmZm1hblRhYmxlQUM9ZFsxNSZpXTtFLnB1c2gobil9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLHMsRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTCYmTC5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK0wuaW52YWxpZCk7bz1MLm9mZnNldDticmVha31pZighTHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKz00KXt0PWVbbl07YT1lW24rMV07cj1lW24rMl07ZVtuXT00MzQuNDU2LXQtMS40MDIqcjtlW24rMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtuKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixuLGk9MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07bj1lW3MrM107ZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipuLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpuLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqbisuMDY4Njc0MjIzODU5NTM0NSktbiooLjAwMDMzNjE5NzE3NzYxODM5MzcqbisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqbi0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqbi0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqbi0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLW4qKC4wMDAzMTg5MTMxMTc1ODgzMjgxKm4rLjczNjQ4ODM4MDc3MzMxNjgpO2VbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqbi0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqbi0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqbi0uNzU5MTQ1NDY0OTc0OTYwOSktbiooLjAwMDM0MzUzMTk5NjUxMDU1NTMqbisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBuPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJmEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbi5sZW5ndGgpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2Ygbil7ZVt0KytdPWE7ZVt0KytdPWE7ZVt0KytdPWF9cmV0dXJuIGV9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDI4KSxpPWEoMik7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweEltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMjQpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUFggZXJyb3I6ICR7ZX1gLCJKcHhFcnJvciIpfX1jb25zdCBzPXtMTDowLExIOjEsSEw6MSxISDoyfTt0LkpweEltYWdlPWNsYXNzIEpweEltYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZT0hMX1wYXJzZShlKXtpZig2NTM1OT09PSgwLG4ucmVhZFVpbnQxNikoZSwwKSl7dGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKTtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0Oyl7bGV0IGk9OCxzPSgwLG4ucmVhZFVpbnQzMikoZSxhKTtjb25zdCBvPSgwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPWk7aWYoMT09PXMpe3M9NDI5NDk2NzI5NiooMCxuLnJlYWRVaW50MzIpKGUsYSkrKDAsbi5yZWFkVWludDMyKShlLGErNCk7YSs9ODtpKz04fTA9PT1zJiYocz10LWEraSk7aWYoczxpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBib3ggZmllbGQgc2l6ZSIpO2NvbnN0IGM9cy1pO2xldCBsPSEwO3N3aXRjaChvKXtjYXNlIDE3ODU3Mzc4MzI6bD0hMTticmVhaztjYXNlIDE2NjgyNDY2NDI6Y29uc3QgdD1lW2FdO2lmKDE9PT10KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQzMikoZSxhKzMpO3N3aXRjaCh0KXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLHIud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK3QpfX1lbHNlIDI9PT10JiYoMCxyLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsYSxhK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLG4ucmVhZFVpbnQzMikoZSxhKSYmKDAsci53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OmNvbnN0IGk9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvKTsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAke299ICgke2l9KS5gKX1sJiYoYSs9Yyl9fXBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7dGhpcy53aWR0aD10LXI7dGhpcy5oZWlnaHQ9YS1uO3RoaXMuY29tcG9uZW50c0NvdW50PWk7dGhpcy5iaXRzUGVyQ29tcG9uZW50PTg7cmV0dXJufX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX1wYXJzZUNvZGVzdHJlYW0oZSx0LGEpe2NvbnN0IGk9e307bGV0IHM9ITE7dHJ5e2xldCBvPXQ7Zm9yKDtvKzE8YTspe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGEsYyxsLGgsdSxkLGY9MDtzd2l0Y2godCl7Y2FzZSA2NTM1OTppLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGc9e307Zy5Yc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2cuWXNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys4KTtnLlhPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzEyKTtnLllPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzE2KTtnLlhUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzIwKTtnLllUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzI0KTtnLlhUT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysyOCk7Zy5ZVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMzIpO2NvbnN0IHA9KDAsbi5yZWFkVWludDE2KShlLG8rMzYpO2cuQ3Npej1wO2NvbnN0IG09W107YT1vKzM4O2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IHQ9e3ByZWNpc2lvbjoxKygxMjcmZVthXSksaXNTaWduZWQ6ISEoMTI4JmVbYV0pLFhSc2l6OmVbYSsxXSxZUnNpejplW2ErMl19O2ErPTM7Y2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyh0LGcpO20ucHVzaCh0KX1pLlNJWj1nO2kuY29tcG9uZW50cz1tO2NhbGN1bGF0ZVRpbGVHcmlkcyhpLG0pO2kuUUNDPVtdO2kuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgYj17fTthPW8rMjtjPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Yi5ub1F1YW50aXphdGlvbj04PT09aDtiLnNjYWxhckV4cG91bmRlZD11O2IuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX1iLlNQcWNkcz1sO2lmKGkubWFpbkhlYWRlcilpLlFDRD1iO2Vsc2V7aS5jdXJyZW50VGlsZS5RQ0Q9YjtpLmN1cnJlbnRUaWxlLlFDQz1bXX1icmVhaztjYXNlIDY1MzczOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IHk9e307YT1vKzI7bGV0IHc7aWYoaS5TSVouQ3NpejwyNTcpdz1lW2ErK107ZWxzZXt3PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yfWM9ZVthKytdO3N3aXRjaCgzMSZjKXtjYXNlIDA6aD04O3U9ITA7YnJlYWs7Y2FzZSAxOmg9MTY7dT0hMTticmVhaztjYXNlIDI6aD0xNjt1PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX15Lm5vUXVhbnRpemF0aW9uPTg9PT1oO3kuc2NhbGFyRXhwb3VuZGVkPXU7eS5ndWFyZEJpdHM9Yz4+NTtsPVtdO2Zvcig7YTxmK287KXtjb25zdCB0PXt9O2lmKDg9PT1oKXt0LmVwc2lsb249ZVthKytdPj4zO3QubXU9MH1lbHNle3QuZXBzaWxvbj1lW2FdPj4zO3QubXU9KDcmZVthXSk8PDh8ZVthKzFdO2ErPTJ9bC5wdXNoKHQpfXkuU1BxY2RzPWw7aS5tYWluSGVhZGVyP2kuUUNDW3ddPXk6aS5jdXJyZW50VGlsZS5RQ0Nbd109eTticmVhaztjYXNlIDY1MzYyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IFM9e307YT1vKzI7Y29uc3QgeD1lW2ErK107Uy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmeCk7Uy5zb3BNYXJrZXJVc2VkPSEhKDImeCk7Uy5lcGhNYXJrZXJVc2VkPSEhKDQmeCk7Uy5wcm9ncmVzc2lvbk9yZGVyPWVbYSsrXTtTLmxheWVyc0NvdW50PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yO1MubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVthKytdO1MuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbYSsrXTtTLnhjYj0yKygxNSZlW2ErK10pO1MueWNiPTIrKDE1JmVbYSsrXSk7Y29uc3Qgaz1lW2ErK107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmayk7Uy5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImayk7Uy50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZrKTtTLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZrKTtTLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmayk7Uy5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJmspO1MucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbYSsrXTtpZihTLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDthPGYrbzspe2NvbnN0IHI9ZVthKytdO3QucHVzaCh7UFB4OjE1JnIsUFB5OnI+PjR9KX1TLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgQz1bXTtTLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkMucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZDLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpO1MudmVydGljYWxseVN0cmlwZSYmQy5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIik7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZDLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKTtpZihDLmxlbmd0aD4wKXtzPSEwOygwLHIud2FybikoYEpQWDogVW5zdXBwb3J0ZWQgQ09EIG9wdGlvbnMgKCR7Qy5qb2luKCIsICIpfSkuYCl9aWYoaS5tYWluSGVhZGVyKWkuQ09EPVM7ZWxzZXtpLmN1cnJlbnRUaWxlLkNPRD1TO2kuY3VycmVudFRpbGUuQ09DPVtdfWJyZWFrO2Nhc2UgNjU0MjQ6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7ZD17fTtkLmluZGV4PSgwLG4ucmVhZFVpbnQxNikoZSxvKzIpO2QubGVuZ3RoPSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2QuZGF0YUVuZD1kLmxlbmd0aCtvLTI7ZC5wYXJ0SW5kZXg9ZVtvKzhdO2QucGFydHNDb3VudD1lW28rOV07aS5tYWluSGVhZGVyPSExO2lmKDA9PT1kLnBhcnRJbmRleCl7ZC5DT0Q9aS5DT0Q7ZC5DT0M9aS5DT0Muc2xpY2UoMCk7ZC5RQ0Q9aS5RQ0Q7ZC5RQ0M9aS5RQ0Muc2xpY2UoMCl9aS5jdXJyZW50VGlsZT1kO2JyZWFrO2Nhc2UgNjU0Mjc6ZD1pLmN1cnJlbnRUaWxlO2lmKDA9PT1kLnBhcnRJbmRleCl7aW5pdGlhbGl6ZVRpbGUoaSxkLmluZGV4KTtidWlsZFBhY2tldHMoaSl9Zj1kLmRhdGFFbmQtbztwYXJzZVRpbGVQYWNrZXRzKGksZSxvLGYpO2JyZWFrO2Nhc2UgNjUzNjM6KDAsci53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9Zn19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgSnB4RXJyb3IoZS5tZXNzYWdlKTsoMCxyLndhcm4pKGBKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICIke2UubWVzc2FnZX0iLmApfXRoaXMudGlsZXM9ZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jb21wb25lbnRzLHI9dC5Dc2l6LG49W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXNbdF09dHJhbnNmb3JtVGlsZShlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKnIpLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1yLHQ9c1swXS5pdGVtcyxuPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1hWzBdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1yLTM7Zj10Lmxlbmd0aDtpZih5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1O3A9bltkXTttPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+Pmg7Y1tiKytdPWU+Pmg7Y1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NbYisrXT1nKzEuNDAyKm0+Pmg7Y1tiKytdPWctLjM0NDEzKnAtLjcxNDE0Km0+Pmg7Y1tiKytdPWcrMS43NzIqcD4+aH1pZihlKWZvcihkPTAsYj0zO2Q8ZjtkKyssYis9NCljW2JdPWxbZF0rdT4+aH1lbHNlIGZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9c1tlXS5pdGVtcztoPWFbZV0ucHJlY2lzaW9uLTg7dT0uNSsoMTI4PDxoKTtmb3IoYj1lLGQ9MCxmPXQubGVuZ3RoO2Q8ZjtkKyspe2NbYl09dFtkXSt1Pj5oO2IrPXJ9fW4ucHVzaChsKX1yZXR1cm4gbn0oaSk7dGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6O3RoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXo7dGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2Z1bmN0aW9uIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoZSx0KXtlLngwPU1hdGguY2VpbCh0LlhPc2l6L2UuWFJzaXopO2UueDE9TWF0aC5jZWlsKHQuWHNpei9lLlhSc2l6KTtlLnkwPU1hdGguY2VpbCh0LllPc2l6L2UuWVJzaXopO2UueTE9TWF0aC5jZWlsKHQuWXNpei9lLllSc2l6KTtlLndpZHRoPWUueDEtZS54MDtlLmhlaWdodD1lLnkxLWUueTB9ZnVuY3Rpb24gY2FsY3VsYXRlVGlsZUdyaWRzKGUsdCl7Y29uc3QgYT1lLlNJWixyPVtdO2xldCBuO2NvbnN0IGk9TWF0aC5jZWlsKChhLlhzaXotYS5YVE9zaXopL2EuWFRzaXopLHM9TWF0aC5jZWlsKChhLllzaXotYS5ZVE9zaXopL2EuWVRzaXopO2ZvcihsZXQgZT0wO2U8cztlKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7bj17fTtuLnR4MD1NYXRoLm1heChhLlhUT3Npeit0KmEuWFRzaXosYS5YT3Npeik7bi50eTA9TWF0aC5tYXgoYS5ZVE9zaXorZSphLllUc2l6LGEuWU9zaXopO24udHgxPU1hdGgubWluKGEuWFRPc2l6Kyh0KzEpKmEuWFRzaXosYS5Yc2l6KTtuLnR5MT1NYXRoLm1pbihhLllUT3NpeisoZSsxKSphLllUc2l6LGEuWXNpeik7bi53aWR0aD1uLnR4MS1uLnR4MDtuLmhlaWdodD1uLnR5MS1uLnR5MDtuLmNvbXBvbmVudHM9W107ci5wdXNoKG4pfWUudGlsZXM9cjtmb3IobGV0IGU9MCxpPWEuQ3NpejtlPGk7ZSsrKXtjb25zdCBhPXRbZV07Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXt9O249clt0XTtpLnRjeDA9TWF0aC5jZWlsKG4udHgwL2EuWFJzaXopO2kudGN5MD1NYXRoLmNlaWwobi50eTAvYS5ZUnNpeik7aS50Y3gxPU1hdGguY2VpbChuLnR4MS9hLlhSc2l6KTtpLnRjeTE9TWF0aC5jZWlsKG4udHkxL2EuWVJzaXopO2kud2lkdGg9aS50Y3gxLWkudGN4MDtpLmhlaWdodD1pLnRjeTEtaS50Y3kwO24uY29tcG9uZW50c1tlXT1pfX19ZnVuY3Rpb24gZ2V0QmxvY2tzRGltZW5zaW9ucyhlLHQsYSl7Y29uc3Qgcj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXt9O2lmKHIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyl7bi5QUHg9ci5wcmVjaW5jdHNTaXplc1thXS5QUHg7bi5QUHk9ci5wcmVjaW5jdHNTaXplc1thXS5QUHl9ZWxzZXtuLlBQeD0xNTtuLlBQeT0xNX1uLnhjYl89YT4wP01hdGgubWluKHIueGNiLG4uUFB4LTEpOk1hdGgubWluKHIueGNiLG4uUFB4KTtuLnljYl89YT4wP01hdGgubWluKHIueWNiLG4uUFB5LTEpOk1hdGgubWluKHIueWNiLG4uUFB5KTtyZXR1cm4gbn1mdW5jdGlvbiBidWlsZFByZWNpbmN0cyhlLHQsYSl7Y29uc3Qgcj0xPDxhLlBQeCxuPTE8PGEuUFB5LGk9MD09PXQucmVzTGV2ZWwscz0xPDxhLlBQeCsoaT8wOi0xKSxvPTE8PGEuUFB5KyhpPzA6LTEpLGM9dC50cngxPnQudHJ4MD9NYXRoLmNlaWwodC50cngxL3IpLU1hdGguZmxvb3IodC50cngwL3IpOjAsbD10LnRyeTE+dC50cnkwP01hdGguY2VpbCh0LnRyeTEvbiktTWF0aC5mbG9vcih0LnRyeTAvbik6MCxoPWMqbDt0LnByZWNpbmN0UGFyYW1ldGVycz17cHJlY2luY3RXaWR0aDpyLHByZWNpbmN0SGVpZ2h0Om4sbnVtcHJlY2luY3Rzd2lkZTpjLG51bXByZWNpbmN0c2hpZ2g6bCxudW1wcmVjaW5jdHM6aCxwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOnMscHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6b319ZnVuY3Rpb24gYnVpbGRDb2RlYmxvY2tzKGUsdCxhKXtjb25zdCByPWEueGNiXyxuPWEueWNiXyxpPTE8PHIscz0xPDxuLG89dC50YngwPj5yLGM9dC50YnkwPj5uLGw9dC50YngxK2ktMT4+cixoPXQudGJ5MStzLTE+Pm4sdT10LnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLGQ9W10sZj1bXTtsZXQgZyxwLG0sYjtmb3IocD1jO3A8aDtwKyspZm9yKGc9bztnPGw7ZysrKXttPXtjYng6ZyxjYnk6cCx0YngwOmkqZyx0YnkwOnMqcCx0YngxOmkqKGcrMSksdGJ5MTpzKihwKzEpfTttLnRieDBfPU1hdGgubWF4KHQudGJ4MCxtLnRieDApO20udGJ5MF89TWF0aC5tYXgodC50YnkwLG0udGJ5MCk7bS50YngxXz1NYXRoLm1pbih0LnRieDEsbS50YngxKTttLnRieTFfPU1hdGgubWluKHQudGJ5MSxtLnRieTEpO2I9TWF0aC5mbG9vcigobS50YngwXy10LnRieDApL3UucHJlY2luY3RXaWR0aEluU3ViYmFuZCkrTWF0aC5mbG9vcigobS50YnkwXy10LnRieTApL3UucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpKnUubnVtcHJlY2luY3Rzd2lkZTttLnByZWNpbmN0TnVtYmVyPWI7bS5zdWJiYW5kVHlwZT10LnR5cGU7bS5MYmxvY2s9MztpZihtLnRieDFfPD1tLnRieDBffHxtLnRieTFfPD1tLnRieTBfKWNvbnRpbnVlO2QucHVzaChtKTtsZXQgZT1mW2JdO2lmKHZvaWQgMCE9PWUpe2c8ZS5jYnhNaW4/ZS5jYnhNaW49ZzpnPmUuY2J4TWF4JiYoZS5jYnhNYXg9Zyk7cDxlLmNieU1pbj9lLmNieE1pbj1wOnA+ZS5jYnlNYXgmJihlLmNieU1heD1wKX1lbHNlIGZbYl09ZT17Y2J4TWluOmcsY2J5TWluOnAsY2J4TWF4OmcsY2J5TWF4OnB9O20ucHJlY2luY3Q9ZX10LmNvZGVibG9ja1BhcmFtZXRlcnM9e2NvZGVibG9ja1dpZHRoOnIsY29kZWJsb2NrSGVpZ2h0Om4sbnVtY29kZWJsb2Nrd2lkZTpsLW8rMSxudW1jb2RlYmxvY2toaWdoOmgtYysxfTt0LmNvZGVibG9ja3M9ZDt0LnByZWNpbmN0cz1mfWZ1bmN0aW9uIGNyZWF0ZVBhY2tldChlLHQsYSl7Y29uc3Qgcj1bXSxuPWUuc3ViYmFuZHM7Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPW5bZV0uY29kZWJsb2Nrcztmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49YVtlXTtuLnByZWNpbmN0TnVtYmVyPT09dCYmci5wdXNoKG4pfX1yZXR1cm57bGF5ZXJOdW1iZXI6YSxjb2RlYmxvY2tzOnJ9fWZ1bmN0aW9uIExheWVyUmVzb2x1dGlvbkNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288bjtvKyspe2Zvcig7Yzw9cztjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLG8pO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288PXM7bysrKXtmb3IoO2M8bjtjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYobz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW29dLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLGMpO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzLG8sYyxsLGg9MDtmb3IoYz0wO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2g9TWF0aC5tYXgoaCxlLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpfWNvbnN0IHU9bmV3IEludDMyQXJyYXkoaCsxKTtmb3Iobz0wO288PWg7KytvKXtsZXQgZT0wO2ZvcihjPTA7YzxpOysrYyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbY10ucmVzb2x1dGlvbnM7bzx0Lmxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0W29dLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX11W29dPWV9cz0wO289MDtjPTA7bD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1oO28rKyl7Zm9yKDtsPHVbb107bCsrKXtmb3IoO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztpZighKGw+PWEpKXtmb3IoO3M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsbCxzKTtzKys7cmV0dXJuIGV9cz0wfX1jPTB9bD0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz1nZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHIpLG89cztsZXQgYz0wLGw9MCxoPTAsdT0wLGQ9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7ZDxvLm1heE51bUhpZ2g7ZCsrKXtmb3IoO3U8by5tYXhOdW1XaWRlO3UrKyl7Zm9yKDtoPGk7aCsrKXtjb25zdCBlPXIuY29tcG9uZW50c1toXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2w8PXQ7bCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbbF0sYT1zLmNvbXBvbmVudHNbaF0ucmVzb2x1dGlvbnNbbF0scj1nZXRQcmVjaW5jdEluZGV4SWZFeGlzdCh1LGQsYSxvLHQpO2lmKG51bGwhPT1yKXtmb3IoO2M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQscixjKTtjKys7cmV0dXJuIGV9Yz0wfX1sPTB9aD0wfXU9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKTtsZXQgbz0wLGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bDxpOysrbCl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF0sdD1zLmNvbXBvbmVudHNbbF0sYT1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDt1PHQubWF4TnVtSGlnaDt1Kyspe2Zvcig7aDx0Lm1heE51bVdpZGU7aCsrKXtmb3IoO2M8PWE7YysrKXtjb25zdCBhPWUucmVzb2x1dGlvbnNbY10scj10LnJlc29sdXRpb25zW2NdLGk9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QoaCx1LHIsdCxhKTtpZihudWxsIT09aSl7Zm9yKDtvPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldChhLGksbyk7bysrO3JldHVybiBlfW89MH19Yz0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdChlLHQsYSxyLG4pe2NvbnN0IGk9ZSpyLm1pbldpZHRoLHM9dCpyLm1pbkhlaWdodDtpZihpJWEud2lkdGghPTB8fHMlYS5oZWlnaHQhPTApcmV0dXJuIG51bGw7Y29uc3Qgbz1zL2Eud2lkdGgqbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTtyZXR1cm4gaS9hLmhlaWdodCtvfWZ1bmN0aW9uIGdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUoZSl7Y29uc3QgdD1lLmNvbXBvbmVudHMubGVuZ3RoO2xldCBhPU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLG49MCxpPTA7Y29uc3Qgcz1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyl7Y29uc3QgdD1lLmNvbXBvbmVudHNbb10sYz10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkoYysxKTtsZXQgaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1BWF9WQUxVRSxkPTAsZj0wLGc9MTtmb3IobGV0IGU9YztlPj0wOy0tZSl7Y29uc3QgYT10LnJlc29sdXRpb25zW2VdLHI9ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoLG49ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDtoPU1hdGgubWluKGgscik7dT1NYXRoLm1pbih1LG4pO2Q9TWF0aC5tYXgoZCxhLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlKTtmPU1hdGgubWF4KGYsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaCk7bFtlXT17d2lkdGg6cixoZWlnaHQ6bn07Zzw8PTF9YT1NYXRoLm1pbihhLGgpO3I9TWF0aC5taW4ocix1KTtuPU1hdGgubWF4KG4sZCk7aT1NYXRoLm1heChpLGYpO3Nbb109e3Jlc29sdXRpb25zOmwsbWluV2lkdGg6aCxtaW5IZWlnaHQ6dSxtYXhOdW1XaWRlOmQsbWF4TnVtSGlnaDpmfX1yZXR1cm57Y29tcG9uZW50czpzLG1pbldpZHRoOmEsbWluSGVpZ2h0OnIsbWF4TnVtV2lkZTpuLG1heE51bUhpZ2g6aX19ZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXQuQ3Npejtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCB0PXIuY29tcG9uZW50c1tlXSxhPXQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxuPVtdLGk9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IHI9Z2V0QmxvY2tzRGltZW5zaW9ucygwLHQsZSkscz17fSxvPTE8PGEtZTtzLnRyeDA9TWF0aC5jZWlsKHQudGN4MC9vKTtzLnRyeTA9TWF0aC5jZWlsKHQudGN5MC9vKTtzLnRyeDE9TWF0aC5jZWlsKHQudGN4MS9vKTtzLnRyeTE9TWF0aC5jZWlsKHQudGN5MS9vKTtzLnJlc0xldmVsPWU7YnVpbGRQcmVjaW5jdHMoMCxzLHIpO24ucHVzaChzKTtsZXQgYztpZigwPT09ZSl7Yz17fTtjLnR5cGU9IkxMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtzLnN1YmJhbmRzPVtjXX1lbHNle2NvbnN0IG49MTw8YS1lKzEsbz1bXTtjPXt9O2MudHlwZT0iSEwiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24pO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24pO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iTEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24pO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24pO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iSEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtzLnN1YmJhbmRzPW99fXQucmVzb2x1dGlvbnM9bjt0LnN1YmJhbmRzPWl9Y29uc3QgaT1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMucHJvZ3Jlc3Npb25PcmRlcjtzd2l0Y2goaSl7Y2FzZSAwOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMTpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDI6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAzOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBQb3NpdGlvbkNvbXBvbmVudFJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgNDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgQ29tcG9uZW50UG9zaXRpb25SZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKcHhFcnJvcihgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtpfWApfX1mdW5jdGlvbiBwYXJzZVRpbGVQYWNrZXRzKGUsdCxhLHIpe2xldCBpLHM9MCxvPTAsYz0hMTtmdW5jdGlvbiByZWFkQml0cyhlKXtmb3IoO288ZTspe2NvbnN0IGU9dFthK3NdO3MrKztpZihjKXtpPWk8PDd8ZTtvKz03O2M9ITF9ZWxzZXtpPWk8PDh8ZTtvKz04fTI1NT09PWUmJihjPSEwKX1vLT1lO3JldHVybiBpPj4+byYoMTw8ZSktMX1mdW5jdGlvbiBza2lwTWFya2VySWZFcXVhbChlKXtpZigyNTU9PT10W2Ercy0xXSYmdFthK3NdPT09ZSl7c2tpcEJ5dGVzKDEpO3JldHVybiEwfWlmKDI1NT09PXRbYStzXSYmdFthK3MrMV09PT1lKXtza2lwQnl0ZXMoMik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gc2tpcEJ5dGVzKGUpe3MrPWV9ZnVuY3Rpb24gYWxpZ25Ub0J5dGUoKXtvPTA7aWYoYyl7cysrO2M9ITF9fWZ1bmN0aW9uIHJlYWRDb2RpbmdwYXNzZXMoKXtpZigwPT09cmVhZEJpdHMoMSkpcmV0dXJuIDE7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAyO2xldCBlPXJlYWRCaXRzKDIpO2lmKGU8MylyZXR1cm4gZSszO2U9cmVhZEJpdHMoNSk7aWYoZTwzMSlyZXR1cm4gZSs2O2U9cmVhZEJpdHMoNyk7cmV0dXJuIGUrMzd9Y29uc3QgbD1lLmN1cnJlbnRUaWxlLmluZGV4LGg9ZS50aWxlc1tsXSx1PWUuQ09ELnNvcE1hcmtlclVzZWQsZD1lLkNPRC5lcGhNYXJrZXJVc2VkLGY9aC5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPHI7KXthbGlnblRvQnl0ZSgpO3UmJnNraXBNYXJrZXJJZkVxdWFsKDE0NSkmJnNraXBCeXRlcyg0KTtjb25zdCBlPWYubmV4dFBhY2tldCgpO2lmKCFyZWFkQml0cygxKSljb250aW51ZTtjb25zdCByPWUubGF5ZXJOdW1iZXIsaT1bXTtsZXQgbztmb3IobGV0IHQ9MCxhPWUuY29kZWJsb2Nrcy5sZW5ndGg7dDxhO3QrKyl7bz1lLmNvZGVibG9ja3NbdF07bGV0IGE9by5wcmVjaW5jdDtjb25zdCBzPW8uY2J4LWEuY2J4TWluLGM9by5jYnktYS5jYnlNaW47bGV0IGwsaCx1PSExLGQ9ITE7aWYodm9pZCAwIT09by5pbmNsdWRlZCl1PSEhcmVhZEJpdHMoMSk7ZWxzZXthPW8ucHJlY2luY3Q7bGV0IGU7aWYodm9pZCAwIT09YS5pbmNsdXNpb25UcmVlKWU9YS5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1hLmNieE1heC1hLmNieE1pbisxLG49YS5jYnlNYXgtYS5jYnlNaW4rMTtlPW5ldyBJbmNsdXNpb25UcmVlKHQsbixyKTtoPW5ldyBUYWdUcmVlKHQsbik7YS5pbmNsdXNpb25UcmVlPWU7YS56ZXJvQml0UGxhbmVzVHJlZT1oO2ZvcihsZXQgZT0wO2U8cjtlKyspaWYoMCE9PXJlYWRCaXRzKDEpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGUucmVzZXQocyxjLHIpKWZvcig7Oyl7aWYoIXJlYWRCaXRzKDEpKXtlLmluY3JlbWVudFZhbHVlKHIpO2JyZWFrfWw9IWUubmV4dExldmVsKCk7aWYobCl7by5pbmNsdWRlZD0hMDt1PWQ9ITA7YnJlYWt9fX1pZighdSljb250aW51ZTtpZihkKXtoPWEuemVyb0JpdFBsYW5lc1RyZWU7aC5yZXNldChzLGMpO2Zvcig7OylpZihyZWFkQml0cygxKSl7bD0haC5uZXh0TGV2ZWwoKTtpZihsKWJyZWFrfWVsc2UgaC5pbmNyZW1lbnRWYWx1ZSgpO28uemVyb0JpdFBsYW5lcz1oLnZhbHVlfWNvbnN0IGY9cmVhZENvZGluZ3Bhc3NlcygpO2Zvcig7cmVhZEJpdHMoMSk7KW8uTGJsb2NrKys7Y29uc3QgZz0oMCxuLmxvZzIpKGYpLHA9cmVhZEJpdHMoKGY8MTw8Zz9nLTE6Zykrby5MYmxvY2spO2kucHVzaCh7Y29kZWJsb2NrOm8sY29kaW5ncGFzc2VzOmYsZGF0YUxlbmd0aDpwfSl9YWxpZ25Ub0J5dGUoKTtkJiZza2lwTWFya2VySWZFcXVhbCgxNDYpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5zaGlmdCgpO289ZS5jb2RlYmxvY2s7dm9pZCAwPT09by5kYXRhJiYoby5kYXRhPVtdKTtvLmRhdGEucHVzaCh7ZGF0YTp0LHN0YXJ0OmErcyxlbmQ6YStzK2UuZGF0YUxlbmd0aCxjb2RpbmdwYXNzZXM6ZS5jb2RpbmdwYXNzZXN9KTtzKz1lLmRhdGFMZW5ndGh9fXJldHVybiBzfWZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoZSx0LGEscixuLHMsYyxsLGgpe2NvbnN0IHU9ci50YngwLGQ9ci50YnkwLGY9ci50YngxLXIudGJ4MCxnPXIuY29kZWJsb2NrcyxwPSJIIj09PXIudHlwZS5jaGFyQXQoMCk/MTowLG09IkgiPT09ci50eXBlLmNoYXJBdCgxKT90OjA7Zm9yKGxldCBhPTAsYj1nLmxlbmd0aDthPGI7KythKXtjb25zdCBiPWdbYV0seT1iLnRieDFfLWIudGJ4MF8sdz1iLnRieTFfLWIudGJ5MF87aWYoMD09PXl8fDA9PT13KWNvbnRpbnVlO2lmKHZvaWQgMD09PWIuZGF0YSljb250aW51ZTtjb25zdCBTPW5ldyBvKHksdyxiLnN1YmJhbmRUeXBlLGIuemVyb0JpdFBsYW5lcyxzKTtsZXQgeD0yO2NvbnN0IGs9Yi5kYXRhO2xldCBDLHYsRixPPTAsVD0wO2ZvcihDPTAsdj1rLmxlbmd0aDtDPHY7QysrKXtGPWtbQ107Tys9Ri5lbmQtRi5zdGFydDtUKz1GLmNvZGluZ3Bhc3Nlc31jb25zdCBNPW5ldyBVaW50OEFycmF5KE8pO2xldCBFPTA7Zm9yKEM9MCx2PWsubGVuZ3RoO0M8djtDKyspe0Y9a1tDXTtjb25zdCBlPUYuZGF0YS5zdWJhcnJheShGLnN0YXJ0LEYuZW5kKTtNLnNldChlLEUpO0UrPWUubGVuZ3RofWNvbnN0IEQ9bmV3IGkuQXJpdGhtZXRpY0RlY29kZXIoTSwwLE8pO1Muc2V0RGVjb2RlcihEKTtmb3IoQz0wO0M8VDtDKyspe3N3aXRjaCh4KXtjYXNlIDA6Uy5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6Uy5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjpTLnJ1bkNsZWFudXBQYXNzKCk7bCYmUy5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfWgmJlMucmVzZXQoKTt4PSh4KzEpJTN9bGV0IE49Yi50YngwXy11KyhiLnRieTBfLWQpKmY7Y29uc3QgUj1TLmNvZWZmaWNlbnRzU2lnbixMPVMuY29lZmZpY2VudHNNYWduaXR1ZGUsaj1TLmJpdHNEZWNvZGVkLCQ9Yz8wOi41O2xldCBfLFUsWDtFPTA7Y29uc3QgSD0iTEwiIT09ci50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7Y29uc3QgYT0yKihOL2Z8MCkqKHQtZikrcCttO2ZvcihfPTA7Xzx5O18rKyl7VT1MW0VdO2lmKDAhPT1VKXtVPShVKyQpKm47MCE9PVJbRV0mJihVPS1VKTtYPWpbRV07Y29uc3QgdD1IP2ErKE48PDEpOk47ZVt0XT1jJiZYPj1zP1U6VSooMTw8cy1YKX1OKys7RSsrfU4rPWYteX19fWZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoZSx0LGEpe2NvbnN0IHI9dC5jb21wb25lbnRzW2FdLG49ci5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT1yLnF1YW50aXphdGlvblBhcmFtZXRlcnMsbz1uLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxjPWkuU1BxY2RzLGw9aS5zY2FsYXJFeHBvdW5kZWQsaD1pLmd1YXJkQml0cyx1PW4uc2VnbWVudGF0aW9uU3ltYm9sVXNlZCxkPW4ucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyxmPWUuY29tcG9uZW50c1thXS5wcmVjaXNpb24sZz1uLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbixwPWc/bmV3IFJldmVyc2libGVUcmFuc2Zvcm06bmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSxtPVtdO2xldCBiPTA7Zm9yKGxldCBlPTA7ZTw9bztlKyspe2NvbnN0IHQ9ci5yZXNvbHV0aW9uc1tlXSxhPXQudHJ4MS10LnRyeDAsbj10LnRyeTEtdC50cnkwLGk9bmV3IEZsb2F0MzJBcnJheShhKm4pO2ZvcihsZXQgcj0wLG49dC5zdWJiYW5kcy5sZW5ndGg7cjxuO3IrKyl7bGV0IG4sbztpZihsKXtuPWNbYl0ubXU7bz1jW2JdLmVwc2lsb247YisrfWVsc2V7bj1jWzBdLm11O289Y1swXS5lcHNpbG9uKyhlPjA/MS1lOjApfWNvbnN0IHA9dC5zdWJiYW5kc1tyXSxtPXNbcC50eXBlXTtjb3B5Q29lZmZpY2llbnRzKGksYSwwLHAsZz8xOjIqKihmK20tbykqKDErbi8yMDQ4KSxoK28tMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDphLGhlaWdodDpuLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sci50Y3gwLHIudGN5MCk7cmV0dXJue2xlZnQ6ci50Y3gwLHRvcDpyLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gaW5pdGlhbGl6ZVRpbGUoZSx0KXtjb25zdCBhPWUuU0laLkNzaXoscj1lLnRpbGVzW3RdO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9ci5jb21wb25lbnRzW3RdLG49dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbdF0/ZS5jdXJyZW50VGlsZS5RQ0NbdF06ZS5jdXJyZW50VGlsZS5RQ0Q7YS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW47Y29uc3QgaT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLkNPQ1t0XT9lLmN1cnJlbnRUaWxlLkNPQ1t0XTplLmN1cnJlbnRUaWxlLkNPRDthLmNvZGluZ1N0eWxlUGFyYW1ldGVycz1pfXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycz1lLmN1cnJlbnRUaWxlLkNPRH1jbGFzcyBUYWdUcmVle2NvbnN0cnVjdG9yKGUsdCl7Y29uc3QgYT0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChhKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCl7bGV0IGEscj0wLG49MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7YT10aGlzLmxldmVsc1tyXTtjb25zdCBpPWUrdCphLndpZHRoO2lmKHZvaWQgMCE9PWEuaXRlbXNbaV0pe249YS5pdGVtc1tpXTticmVha31hLmluZGV4PWk7ZT4+PTE7dD4+PTE7cisrfXItLTthPXRoaXMubGV2ZWxzW3JdO2EuaXRlbXNbYS5pbmRleF09bjt0aGlzLmN1cnJlbnRMZXZlbD1yO2RlbGV0ZSB0aGlzLnZhbHVlfWluY3JlbWVudFZhbHVlKCl7Y29uc3QgZT10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07ZS5pdGVtc1tlLmluZGV4XSsrfW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2UtLTtpZihlPDApe3RoaXMudmFsdWU9YTtyZXR1cm4hMX10aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jbGFzcyBJbmNsdXNpb25UcmVle2NvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPSgwLG4ubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV09YTtjb25zdCBuPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOnJ9O3RoaXMubGV2ZWxzLnB1c2gobik7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQsYSl7bGV0IHI9MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmxldmVsc1tyXSxpPWUrdCpuLndpZHRoO24uaW5kZXg9aTtjb25zdCBzPW4uaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPmEpe3RoaXMuY3VycmVudExldmVsPXI7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTtyZXR1cm4hMX1lPj49MTt0Pj49MTtyKyt9dGhpcy5jdXJyZW50TGV2ZWw9ci0xO3JldHVybiEwfWluY3JlbWVudFZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO3QuaXRlbXNbdC5pbmRleF09ZSsxO3RoaXMucHJvcGFnYXRlVmFsdWVzKCl9cHJvcGFnYXRlVmFsdWVzKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07Zm9yKDstLWU+PTA7KXt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YX19bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07dC5pdGVtc1t0LmluZGV4XT0yNTU7ZS0tO2lmKGU8MClyZXR1cm4hMTt0aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jb25zdCBvPWZ1bmN0aW9uIEJpdE1vZGVsQ2xvc3VyZSgpe2NvbnN0IGU9MTcsdD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSxhPW5ldyBVaW50OEFycmF5KFswLDMsNCwwLDUsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDEsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7cmV0dXJuIGNsYXNzIEJpdE1vZGVse2NvbnN0cnVjdG9yKGUsbixpLHMsbyl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PW47bGV0IGM7Yz0iSEgiPT09aT9yOiJITCI9PT1pP2E6dDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPWM7Y29uc3QgbD1lKm47dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkobCk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGg7aD1vPjE0P25ldyBVaW50MzJBcnJheShsKTpvPjY/bmV3IFVpbnQxNkFycmF5KGwpOm5ldyBVaW50OEFycmF5KGwpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9aDt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShsKTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2lmKDAhPT1zKWZvcihsZXQgZT0wO2U8bDtlKyspdVtlXT1zO3RoaXMuYml0c0RlY29kZWQ9dTt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbMTddPTkyO3RoaXMuY29udGV4dHNbMThdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgdD10aGlzLmRlY29kZXIsYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbixvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZCxoPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLHU9YSxkPTIqYSxmPTMqYTtsZXQgZztmb3IobGV0IHA9MDtwPHI7cD1nKXtnPU1hdGgubWluKHArNCxyKTtjb25zdCBtPXAqYSxiPXArMzxyO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IHk9bStyO2xldCB3LFM9MCx4PXksaz1wO2lmKGImJjA9PT1oW3ldJiYwPT09aFt5K3VdJiYwPT09aFt5K2RdJiYwPT09aFt5K2ZdJiYwPT09blt5XSYmMD09PW5beSt1XSYmMD09PW5beStkXSYmMD09PW5beStmXSl7aWYoIXQucmVhZEJpdChvLDE4KSl7bFt5XSsrO2xbeSt1XSsrO2xbeStkXSsrO2xbeStmXSsrO2NvbnRpbnVlfVM9dC5yZWFkQml0KG8sZSk8PDF8dC5yZWFkQml0KG8sZSk7aWYoMCE9PVMpe2s9cCtTO3grPVMqYX13PXRoaXMuZGVjb2RlU2lnbkJpdChrLHIseCk7c1t4XT13O2lbeF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShrLHIseCk7aFt4XXw9Mjt4PXk7Zm9yKGxldCBlPXA7ZTw9aztlKysseCs9YSlsW3hdKys7UysrfWZvcihrPXArUztrPGc7aysrLHgrPWEpe2lmKGlbeF18fDAhPSgxJmhbeF0pKWNvbnRpbnVlO2NvbnN0IGU9Y1tuW3hdXTtpZigxPT09dC5yZWFkQml0KG8sZSkpe3c9dGhpcy5kZWNvZGVTaWduQml0KGsscix4KTtzW3hdPXc7aVt4XT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsscix4KTtoW3hdfD0yfWxbeF0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IHQ9dGhpcy5kZWNvZGVyLGE9dGhpcy5jb250ZXh0cztpZigxMCE9PSh0LnJlYWRCaXQoYSxlKTw8M3x0LnJlYWRCaXQoYSxlKTw8Mnx0LnJlYWRCaXQoYSxlKTw8MXx0LnJlYWRCaXQoYSxlKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19fSgpO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgbj0xLGk9ZS5sZW5ndGg7bjxpO24rKylyPXRoaXMuaXRlcmF0ZShyLGVbbl0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxuPXQrMSxpPXQrYS0yLHM9dCthO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbcl09ZVtuXTtlW3NdPWVbaV19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PG47dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtuPSh0fD0wKS0zO2ZvcihpPXIrNDtpLS07bis9MillW25dKj0uODEyODkzMDY2MTE1OTYwOTtuPXQtMjtzPXUqZVtuLTFdO2ZvcihpPXIrMztpLS07bis9Mil7bz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW87aWYoIWktLSlicmVhaztuKz0yO3M9dSplW24rMV07ZVtuXT1kKmVbbl0tcy1vfW49dC0xO3M9aCplW24tMV07Zm9yKGk9cisyO2ktLTtuKz0yKXtvPWgqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1oKmVbbisxXTtlW25dLT1zK299bj10O3M9bCplW24tMV07Zm9yKGk9cisxO2ktLTtuKz0yKXtvPWwqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1sKmVbbisxXTtlW25dLT1zK299aWYoMCE9PXIpe249dCsxO3M9YyplW24tMV07Zm9yKGk9cjtpLS07bis9Mil7bz1jKmVbbisxXTtlW25dLT1zK287aWYoIWktLSlicmVhaztuKz0yO3M9YyplW24rMV07ZVtuXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IG4saTtmb3Iobj10fD0wLGk9cisxO2ktLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsaT1yO2ktLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsbj17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtuLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtuLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1ufXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3Qgbj10aGlzLmx6d1N0YXRlO2lmKCFuKXJldHVybjtjb25zdCBpPW4uZWFybHlDaGFuZ2U7bGV0IHM9bi5uZXh0Q29kZTtjb25zdCBvPW4uZGljdGlvbmFyeVZhbHVlcyxjPW4uZGljdGlvbmFyeUxlbmd0aHMsbD1uLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9bi5jb2RlTGVuZ3RoLHU9bi5wcmV2Q29kZTtjb25zdCBkPW4uY3VycmVudFNlcXVlbmNlO2xldCBmPW4uY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxuPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKG4pe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytpJnMraS0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK2kpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19bi5uZXh0Q29kZT1zO24uY29kZUxlbmd0aD1oO24ucHJldkNvZGU9dTtuLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBuPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLG49YSgzMyksaT1hKDM2KSxzPWEoMzgpLG89YSgzNyksYz1hKDM1KSxsPWEoMzkpLGg9YSg0MCksdT1hKDQxKSxkPWEoNDIpLGY9YSg0MyksZz1hKDQ0KSxwPWEoMTQpLG09YSg0NSksYj1hKDQpLHk9YSg4KSx3PWEoNDYpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLGs9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImZvbnRUeXBlIiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwidHlwZSIsInZlcnRpY2FsIl0sQz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLG8sYyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1vO3RoaXMuaXNTcGFjZT1jO3RoaXMuaXNJbkZvbnQ9bDtjb25zdCBoPSgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkoYSk7dGhpcy5pc1doaXRlc3BhY2U9aC5pc1doaXRlc3BhY2U7dGhpcy5pc1plcm9XaWR0aERpYWNyaXRpYz1oLmlzWmVyb1dpZHRoRGlhY3JpdGljO3RoaXMuaXNJbnZpc2libGVGb3JtYXRNYXJrPWguaXNJbnZpc2libGVGb3JtYXRNYXJrfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuInR0Y2YiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBpLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1uPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWk9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtpPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtzPWF9cmV0dXJuW2ksc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBuPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihuKTsoMCxyLndhcm4pKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wO2NvbnN0IGg9U1tsXVswXTtsZXQgdT1oLGQ9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKHU+ZCl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha311PVNbbF1bMF07ZD1TW2xdWzFdfWNvbnN0IHA9dSsrOzA9PT1nJiYoZz1hKTtsZXQgbT1uLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJm08aCYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTp1fX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLGs9IiIsQz0iIix2PSIiLEY9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe2srPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7Qys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipGO0YrPXktYisxO2srPXN0cmluZzE2KDApO0MrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKXYrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7ays9IlwwASI7Qys9IlwwXDAifWNvbnN0IE89IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK2srQyt2O2xldCBUPSIiLE09IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCk7VD0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfVQrPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfU09IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoTy5sZW5ndGgrNCkrTytNK1R9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2E9YXx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IG49MCxpPTAsbz0wLGM9MCxsPW51bGwsaD0wO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTtjb25zdCB0PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlKTtpZih0PDMyKW58PTE8PHQ7ZWxzZSBpZih0PDY0KWl8PTE8PHQtMzI7ZWxzZSBpZih0PDk2KW98PTE8PHQtNjQ7ZWxzZXtpZighKHQ8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dC05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IHU9ZS5iYm94fHxbMCwwLDAsMF0sZD1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZj1lLmFzY2VudFNjYWxlZD8xOmQveCxnPWEuYXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuYXNjZW50fHx1WzNdKSk7bGV0IHA9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuZGVzY2VudHx8dVsxXSkpO3A+MCYmZS5kZXNjZW50PjAmJnVbMV08MCYmKHA9LXApO2NvbnN0IG09YS55TWF4fHxnLGI9LWEueU1pbnx8LXA7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZykrc3RyaW5nMTYocCkrIlwwZCIrc3RyaW5nMTYobSkrc3RyaW5nMTYoYikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0IHM9YS50eXBlLG89YS5zdWJ0eXBlO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1vO2xldCBjLGg9InNhbnMtc2VyaWYiO3RoaXMuaXNNb25vc3BhY2U/aD0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250JiYoaD0ic2VyaWYiKTt0aGlzLmZhbGxiYWNrTmFtZT1oO3RoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L3g7dGhpcy5hc2NlbnQ9YS5hc2NlbnQveDt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3g7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyIhPT1hLnR5cGUpe3RoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKHQmJiF0LmlzRW1wdHkpe1tzLG9dPWdldEZvbnRGaWxlVHlwZSh0LGEpO3M9PT10aGlzLnR5cGUmJm89PT10aGlzLnN1YnR5cGV8fCgwLHIuaW5mbykoYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7c30vJHtvfS5gKTt0cnl7c3dpdGNoKHMpe2Nhc2UiTU1UeXBlMSI6KDAsci5pbmZvKSgiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgbj0iVHlwZTFDIj09PW98fCJDSURGb250VHlwZTBDIj09PW8/bmV3IHUuQ0ZGRm9udCh0LGEpOm5ldyB3LlR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUsbixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhhKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7KDAsci53YXJuKShlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMuZm9udFR5cGU9KDAsaS5nZXRGb250VHlwZSkocyxvLGEuaXNTdGFuZGFyZEZvbnQpO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1lbHNle3QmJigwLHIud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9fWVsc2V7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTt0aGlzLmZvbnRUeXBlPXIuRm9udFR5cGUuVFlQRTN9fWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5rLC4uLkNdOmssYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLG47Zm9yKHIgb2YgdCl7bj10aGlzW3JdO3ZvaWQgMCE9PW4mJihhW3JdPW4pfXJldHVybiBhfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3QgdD10aGlzLm5hbWUsYT10aGlzLnR5cGUsbj10aGlzLnN1YnR5cGU7bGV0IHU9KDAsaS5ub3JtYWxpemVGb250TmFtZSkodCk7Y29uc3QgZD0oMCxsLmdldFN0ZEZvbnRNYXApKCksZz0oMCxsLmdldE5vblN0ZEZvbnRNYXApKCkscD0hIWRbdV0sbT0hKCFnW3VdfHwhZFtnW3VdXSk7dT1kW3VdfHxnW3VdfHx1O2NvbnN0IGI9KDAsZi5nZXRGb250QmFzaWNNZXRyaWNzKSgpW3VdO2lmKGIpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWIuYXNjZW50L3gpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yi5kZXNjZW50L3gpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWIuY2FwSGVpZ2h0L3gpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHUpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHUpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCB5PS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghcHx8eSkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigocHx8bSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKTsvQXJpYWwtP0JsYWNrL2kudGVzdCh0KT9hcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIsKDAsbC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2spKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpKSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1yW2VdO3ZvaWQgMD09PWFbbl0mJihyWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7clsrZV09dH0pKTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgaC5Ub1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdCh1KSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuU3ltYm9sU2V0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdCh1KSl7L1dpbmdkaW5ncy9pLnRlc3QodCkmJigwLHIud2FybikoIk5vbi1lbWJlZGRlZCBXaW5nZGluZ3MgZm9udCwgZmFsbGluZyBiYWNrIHRvIFphcGZEaW5nYmF0cy4iKTt0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZihwKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZVsrdF09YX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLGE9W107dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sbj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYSxlKTstMSE9PW4mJihyPW4pfWFbK3RdPXJ9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1ZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsKDAsbC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMpKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXUuc3BsaXQoIi0iKVswXTt0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGEsbixlLmlzU3RhbmRhcmRGb250KX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgcz1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO3MuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChyKTtjb25zdCBzPWUuZ2V0Qnl0ZXMobik7ZS5wb3M9aTtpZigiaGVhZCI9PT10KXtzWzhdPXNbOV09c1sxMF09c1sxMV09MDtzWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOm4sb2Zmc2V0OnIsZGF0YTpzfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxhLHIsbixpKXtjb25zdCBzPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYoYS10PD0xMilyZXR1cm4gcztjb25zdCBvPWUuc3ViYXJyYXkodCxhKTtsZXQgYz1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGM8MCl7Yz0tMTt3cml0ZVNpZ25lZEludDE2KG8sMCxjKTtyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBsLGg9MTAsdT0wO2ZvcihsPTA7bDxjO2wrKyl7dT0ob1toXTw8OHxvW2grMV0pKzE7aCs9Mn1jb25zdCBkPWgsZj1vW2hdPDw4fG9baCsxXTtzLnNpemVPZkluc3RydWN0aW9ucz1mO2grPTIrZjtjb25zdCBnPWg7bGV0IHA9MDtmb3IobD0wO2w8dTtsKyspe2NvbnN0IGU9b1toKytdOzE5MiZlJiYob1toLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7cCs9cjtpZig4JmUpe2NvbnN0IGU9b1toKytdO2wrPWU7cCs9ZSpyfX1pZigwPT09cClyZXR1cm4gcztsZXQgbT1oK3A7aWYobT5vLmxlbmd0aClyZXR1cm4gcztpZighaSYmZj4wKXtyLnNldChvLnN1YmFycmF5KDAsZCksbik7ci5zZXQoWzAsMF0sbitkKTtyLnNldChvLnN1YmFycmF5KGcsbSksbitkKzIpO20tPWY7by5sZW5ndGgtbT4zJiYobT1tKzMmLTQpO3MubGVuZ3RoPW07cmV0dXJuIHN9aWYoby5sZW5ndGgtbT4zKXttPW0rMyYtNDtyLnNldChvLnN1YmFycmF5KDAsbSksbik7cy5sZW5ndGg9bTtyZXR1cm4gc31yLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0sbj1lLmxlbmd0aCxpPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybiByO2NvbnN0IHM9dC5nZXRVaW50MTYoKSxvPXQuZ2V0VWludDE2KCksYz1bXTtsZXQgbCxoO2ZvcihsPTA7bDxzJiZ0LnBvcysxMjw9aTtsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V8fDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2UpJiZjLnB1c2goZSl9Zm9yKGw9MCxoPWMubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9Y1tsXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBuPWErbytlLm9mZnNldDtpZihuK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9bjtjb25zdCBzPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgYT0iIjtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7clsxXVtzXT1hfWVsc2UgclswXVtzXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuIHJ9Y29uc3QgbD1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGEsbixpLHMsbyxjPWUuZGF0YSxoPTAsdT0wLGQ9MDtjb25zdCBmPVtdLGc9W10scD1bXTtsZXQgbT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxiPSExLHk9MCx3PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2g8ZTspe2NvbnN0IGU9Y1toKytdO2lmKDY0PT09ZSl7bj1jW2grK107aWYoYnx8dyloKz1uO2Vsc2UgZm9yKGE9MDthPG47YSsrKWYucHVzaChjW2grK10pfWVsc2UgaWYoNjU9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe249ZS0xNzYrMTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe249ZS0xODQrMTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZig0MyE9PWV8fG0paWYoNDQhPT1lfHxtKXtpZig0NT09PWUpaWYoYil7Yj0hMTt1PWh9ZWxzZXtvPWcucG9wKCk7aWYoIW8peygwLHIud2FybikoIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1wLnBvcCgpO2M9by5kYXRhO2g9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109Zi5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1ofWVsc2UgaWYoODg9PT1lKSsreTtlbHNlIGlmKDI3PT09ZSl3PXk7ZWxzZSBpZig4OT09PWUpe3c9PT15JiYodz0wKTstLXl9ZWxzZSBpZigyOD09PWUmJiFiJiYhdyl7Y29uc3QgZT1mLmF0KC0xKTtlPjAmJihoKz1lLTEpfX1lbHNle2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1oO3M9Zi5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmh9fWVsc2UgaWYoIWImJiF3KXtzPWYuYXQoLTEpO2lmKGlzTmFOKHMpKSgwLHIuaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9Zi5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApeygwLHIud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zi5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhzKSl7Zy5wdXNoKHtkYXRhOmMsaTpoLHN0YWNrVG9wOmYubGVuZ3RoLTF9KTtwLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8peygwLHIud2FybikoIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7aD1vLml9fX1pZighYiYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9bFtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPWYucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZmLmxlbmd0aD4wOyl7Zi5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtmLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1tO2NvbnN0IFM9W2NdO2g+Yy5sZW5ndGgmJlMucHVzaChuZXcgVWludDhBcnJheShoLWMubGVuZ3RoKSk7aWYoZD51KXsoMCxyLndhcm4pKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO1MucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixuPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspbis9dFthXS5sZW5ndGg7bj1uKzMmLTQ7Y29uc3QgaT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1pO2UubGVuZ3RoPW59fShlLFMpfWxldCBkLGYsYix3O2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyB5LlN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTsoMCxyLmFzc2VydCkoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG89e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6c307c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gbztjYXNlIDI6by5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG99dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbz0wO288YTtvKyspe2UucG9zPShlLnN0YXJ0fHwwKStuW29dO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLGM9cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighYy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0IGw9cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXSYmbFtlXVtyXS5yZXBsYWNlKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOmN9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6Y30pfX19aWYocyl7KDAsci53YXJuKShgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7ZD1lLmhlYWRlcjtmPWUudGFibGVzfWVsc2V7ZD1yZWFkT3BlblR5cGVIZWFkZXIodCk7Zj1yZWFkVGFibGVzKHQsZC5udW1UYWJsZXMpfWNvbnN0IFM9IWZbIkNGRiAiXTtpZihTKXtpZighZi5sb2NhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWYuZ2x5Zil7KDAsci53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtmLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKChhLmNpZFRvR2lkTWFwfHxbXSkubGVuZ3RoPjB8fCEoYS5jTWFwIGluc3RhbmNlb2YgcC5JZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1kLnZlcnNpb24mJiF0fHwhZi5oZWFkfHwhZi5oaGVhfHwhZi5tYXhwfHwhZi5wb3N0KXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgdS5DRkZGb250KHcsYSk7YWRqdXN0V2lkdGhzKGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxiLGEpfWRlbGV0ZSBmLmdseWY7ZGVsZXRlIGYubG9jYTtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWYubWF4cCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStmLm1heHAub2Zmc2V0O2NvbnN0IHg9dC5nZXRJbnQzMigpLGs9dC5nZXRVaW50MTYoKTtpZihhLnNjYWxlRmFjdG9ycyYmYS5zY2FsZUZhY3RvcnMubGVuZ3RoPT09ayYmUyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSxyPW5ldyBnLkdseWZUYWJsZSh7Z2x5ZlRhYmxlOmYuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmYubG9jYS5kYXRhLG51bUdseXBoczprfSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOm4sbG9jYTppLGlzTG9jYXRpb25Mb25nOnN9PXIud3JpdGUoKTtmLmdseWYuZGF0YT1uO2YubG9jYS5kYXRhPWk7aWYocyE9PSEhdCl7Zi5oZWFkLmRhdGFbNTBdPTA7Zi5oZWFkLmRhdGFbNTFdPXM/MTowfWNvbnN0IG89Zi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPXI+PjgmMjU1O29bYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgQz1rKzEsdj0hMDtpZihDPjY1NTM1KXt2PSExO0M9azsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRj0wLE89MDtpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7Zi5tYXhwLmRhdGFbMTRdPTA7Zi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Rj10LmdldFVpbnQxNigpO3QucG9zKz00O089dC5nZXRVaW50MTYoKX1mLm1heHAuZGF0YVs0XT1DPj44O2YubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IFQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpeygwLHIud2FybikoIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXsoMCxyLndhcm4pKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7KDAsci53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGksbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KGYuZnBnbSxmLnByZXAsZlsiY3Z0ICJdLEYpO2lmKCFUKXtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4saSxzKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG89ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgYz1lLmdldFVpbnQxNigpO2lmKDAhPT1vKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKGM+aSl7KDAsci5pbmZvKShgVGhlIG51bU9mTWV0cmljcyAoJHtjfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7Yz1pO3QuZGF0YVszNF09KDY1MjgwJmMpPj44O3QuZGF0YVszNV09MjU1JmN9Y29uc3QgbD1pLWMtKGEubGVuZ3RoLTQqYz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihzKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGYuaGhlYSxmLmhtdHgsZi5oZWFkLEMsdik7aWYoIWYuaGVhZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IG49ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZihpPj4xNiE9MSl7KDAsci5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7blswXT0wO25bMV09MTtuWzJdPTA7blszXT0wfWNvbnN0IHM9aW50MTYobls1MF0sbls1MV0pO2lmKHM8MHx8cz4xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIitzKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7bls1MF09MDtuWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTtuWzUwXT0wO25bNTFdPTF9fX0oZi5oZWFkLGssUz9mLmxvY2EubGVuZ3RoOjApO2xldCBNPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUyl7Y29uc3QgZT1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixuLGkscyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1pP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihtPTA7bTxhO20rKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXlbbV07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9eVttKzFdLm9mZnNldDtpZigwIT09YSl7eVttXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgdz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsbiksdD1lLmxlbmd0aDswPT09dCYmKHdbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihpKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6dyxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KGYubG9jYSxmLmdseWYsayxlLFQsdixPKTtNPXQubWlzc2luZ0dseXBocztpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe2YubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtmLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighZi5oaGVhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWYuaGhlYS5kYXRhWzEwXSYmMD09PWYuaGhlYS5kYXRhWzExXSl7Zi5oaGVhLmRhdGFbMTBdPTI1NTtmLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IEU9e3VuaXRzUGVyRW06aW50MTYoZi5oZWFkLmRhdGFbMThdLGYuaGVhZC5kYXRhWzE5XSkseU1heDppbnQxNihmLmhlYWQuZGF0YVs0Ml0sZi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzM4XSxmLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs0XSxmLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs2XSxmLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs4XSxmLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PUUuYXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9RS5kZXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9RS5saW5lR2FwL0UudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvJiZ0aGlzLmNzc0ZvbnRJbmZvLmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLGspO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8ayYmaGFzR2x5cGgoaSkmJihEW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoIWN8fGMucGxhdGZvcm1JZCE9PXJ8fGMuZW5jb2RpbmdJZCE9PWkpe2lmKDAhPT1yfHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1yJiYwPT09aSloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1pfHwhbiYmYyl7aWYoYSYmMz09PXImJjA9PT1pKXtoPSEwO2xldCBhPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGE9ITEpfWEmJihsPSEwKX19ZWxzZXtoPSEwO2F8fChsPSEwKX1lbHNlIGg9ITA7aCYmKGM9e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOmksb2Zmc2V0OnN9KTtpZihsKWJyZWFrfX1jJiYodC5wb3M9cytjLm9mZnNldCk7aWYoIWN8fC0xPT09dC5wZWVrQnl0ZSgpKXsoMCxyLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBoPXQuZ2V0VWludDE2KCk7bGV0IHU9ITE7Y29uc3QgZD1bXTtsZXQgZixnO2lmKDA9PT1oKXt0LnNraXAoNCk7Zm9yKGY9MDtmPDI1NjtmKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmZC5wdXNoKHtjaGFyQ29kZTpmLGdseXBoSWQ6ZX0pfXU9ITB9ZWxzZSBpZigyPT09aCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2c9dC5nZXRVaW50MTYoKTtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9ZWxzZXtjb25zdCBuPXJbZVthXV07Zm9yKGY9MDtmPG4uZW50cnlDb3VudDtmKyspe2NvbnN0IGU9KGE8PDgpK2Yrbi5maXJzdENvZGU7dC5wb3M9bi5pZFJhbmdlUG9zKzIqZjtnPXQuZ2V0VWludDE2KCk7MCE9PWcmJihnPShnK24uaWREZWx0YSklNjU1MzYpO2QucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmd9KX19fWVsc2UgaWYoND09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGY9MDtmPG87ZisrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtzPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7bj1pLm9mZnNldEluZGV4O2ZvcihmPXM7Zjw9ZTtmKyspaWYoNjU1MzUhPT1mKXtnPW48MD9mOmNbbitmLXNdO2c9Zyt0JjY1NTM1O2QucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmd9KX19fWVsc2UgaWYoNj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihmPTA7ZjxhO2YrKyl7Zz10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStmO2QucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmd9KX19ZWxzZXtpZigxMiE9PWgpeygwLHIud2FybikoImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitoKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihmPTA7ZjxlO2YrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKWQucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19ZC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxkLmxlbmd0aDtlKyspaWYoZFtlLTFdLmNoYXJDb2RlPT09ZFtlXS5jaGFyQ29kZSl7ZC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmQsaGFzU2hvcnRDbWFwOnV9fShmLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcjtyPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShyLGUpO2xldCBkOzM9PT1uJiYxPT09cz9kPWVbb106MT09PW4mJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSk7aWYodm9pZCAwPT09ZCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe0RbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgbClEW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09biYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtEW3RdPWUuZ2x5cGhJZH1pZihhLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PURbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKERbZV09cil9fTA9PT1ELmxlbmd0aCYmKERbMF09MCk7bGV0IE49Qy0xO3Z8fChOPTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcoRCxoYXNHbHlwaCxOLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO2YuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsQyl9O2ZbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oZlsiT1MvMiJdLHQpfHwoZlsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLEUpfSl9aWYoIVMpdHJ5e3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyBuLkNGRlBhcnNlcih3LGEsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCk7Yi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgbi5DRkZDb21waWxlcihiKTtmWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaChlKXsoMCxyLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihmLm5hbWUpe2NvbnN0IHQ9cmVhZE5hbWVUYWJsZShmLm5hbWUpO2YubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGx9ZWxzZSBmLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUj1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKGQudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gZilSLmFkZFRhYmxlKGUsZltlXS5kYXRhKTtyZXR1cm4gUi50b0FycmF5KCl9Y29udmVydChlLHQsYSl7YS5maXhlZFBpdGNoPSExO2EuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoMD09PWUuZGlmZmVyZW5jZXMubGVuZ3RofHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpaWYodD09PWVbcl0pe2F8fChhPVtdKTthLnB1c2goMHxyKX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiJiZiLmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsbj10LmdldENoYXJzZXQoKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGIpe3R8PTA7Y29uc3QgYT1iW3RdLHI9Yy5TdGFuZGFyZEVuY29kaW5nW2FbMl1dLHM9Yy5TdGFuZGFyZEVuY29kaW5nW2FbM11dLG89bi5pbmRleE9mKHIpLGg9bi5pbmRleE9mKHMpO2lmKG88MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxvKSxyPWNyZWF0ZUNoYXJDb2RlKHQsaCk7aVtlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDp1fX19YS5zZWFjTWFwPWl9Y29uc3QgeT0xLyhhLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgpWzBdLHc9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3cuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxmKSk7dy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKGYsZyxwKSk7dy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih5KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihhLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc3RyaW5nMTYoYS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTt3LmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGEuYXNjZW50KStzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihhLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGE9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxuPXA7dDxuO3QrKyl7bGV0IG49MDtpZihlKXtjb25zdCBhPWVbdC0xXTtuPSJ3aWR0aCJpbiBhP2Eud2lkdGg6MH1lbHNlIGEmJihuPU1hdGguY2VpbChhW3RdfHwwKSk7cis9c3RyaW5nMTYobikrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO3cuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihwKSk7dy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt3LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB3LnRvQXJyYXkoKX1nZXQgc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpW2FdO2xldCByPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7cj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhlLHIpKX0hciYmdGhpcy50b1VuaWNvZGUmJihyPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO3I8PTAmJihyPWUpO3Q9dGhpcy53aWR0aHNbcl07aWYodClicmVha310PXR8fHRoaXMuZGVmYXVsdFdpZHRoO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzcGFjZVdpZHRoIix0KX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLGksbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8mJm8uaXNTcGFjZT09PXQpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXAmJnRoaXMuY01hcC5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1uPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgbiYmKG49dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXTtsZXQgaD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBoJiYoaD1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKTtsZXQgdT12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07YT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChhPTMyKTthPSgwLHMubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe3U9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7ZD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGY9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT9mPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOigwLHIud2FybikoYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7bz1uZXcgR2x5cGgoZSxmLGgsZCxuLGwsaSx0LHUpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW99Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsbixhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDppfT1hO24rPWk7Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1pJiYzMj09PWUuY2hhckNvZGVBdChuLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxuPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2gobil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBuPWEubGVuZ3RoO3QucHVzaChbcixyK25dKTtyKz1ufX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChuKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1yKGkpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChpKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX07dC5FcnJvckZvbnQ9Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDM0KSxpPWEoMzUpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPTM5MSxjPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGw9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qobi5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxuPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KG4pO3QuZmRBcnJheS5wdXNoKG4pfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXsoMCxyLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCBuPWVbMF0saT1lWzFdLHM9ZVsyXSxvPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKG4saSxzLG8pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsbj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0saT1lLmxlbmd0aDtmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdLHM9aT4+NCxvPTE1Jmk7aWYocz09PXIpYnJlYWs7YSs9bltzXTtpZihvPT09cilicmVhazthKz1uW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1lW3QrK107YT0oYTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7KDAsci53YXJuKSgnQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCBuPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7bi5wdXNoKFtyLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIG59cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLG49W107bGV0IGkscyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKGk9MCxzPXIrMTtpPHM7KytpKXtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDsrK24pe3I8PD04O3IrPWFbZSsrXX1uLnB1c2goYytyKX1vPW5bcl19Zm9yKGk9MCxzPW4ubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1uW2ldLHI9bltpKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaCgoMCxyLmJ5dGVzVG9TdHJpbmcpKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrLG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3Qgbz10W2grK107bGV0IHU9bnVsbDtpZigxMj09PW8pe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtpPTB9ZWxzZSB1PWxbZV19ZWxzZSBpZigyOD09PW8pe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO2krK31lbHNlIGlmKDE0PT09byl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19dT1jW29dfWVsc2UgaWYobz49MzImJm88PTI0Nil7c1tpXT1vLTEzOTtpKyt9ZWxzZSBpZihvPj0yNDcmJm88PTI1NCl7c1tpXT1vPDI1MT8oby0yNDc8PDgpK3RbaF0rMTA4Oi0oby0yNTE8PDgpLXRbaF0tMTA4O2grKztpKyt9ZWxzZSBpZigyNTU9PT1vKXtzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7aSsrfWVsc2UgaWYoMTk9PT1vfHwyMD09PW8pe2UuaGludHMrPWk+PjE7aCs9ZS5oaW50cys3Pj4zO2klPTI7dT1jW29dfWVsc2V7aWYoMTA9PT1vfHwyOT09PW8pe2xldCB0O3Q9MTA9PT1vP2E6bjtpZighdCl7dT1jW29dOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIit1LmlkKTtyZXR1cm4hMX1sZXQgbD0zMjc2ODt0LmNvdW50PDEyNDA/bD0xMDc6dC5jb3VudDwzMzkwMCYmKGw9MTEzMSk7Y29uc3QgaD1zWy0taV0rbDtpZihoPDB8fGg+PXQuY291bnR8fGlzTmFOKGgpKXt1PWNbb107KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrdS5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGgpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09byl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09byYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7dT1jWzE0XX1lbHNlIHU9Y1tvXX1pZih1KXtpZih1LnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PW98fDIzPT09byllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PW98fDE4PT09bykpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09bz8zOjIzfX1pZigibWluImluIHUmJiFlLnVuZGVmU3RhY2smJmk8dS5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIit1LmlkKyI7IGFjdHVhbDogIitpKyIsIGV4cGVjdGVkOiAiK3UubWluKTtpZigwPT09aSl7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZ1LnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO2ktPXUubWluO2k+PTImJnUuc3RlbT9pJT0yOmk+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO2k+MCYmKGUud2lkdGg9c1tpLTFdKX1pZigic3RhY2tEZWx0YSJpbiB1KXsic3RhY2tGbiJpbiB1JiZ1LnN0YWNrRm4ocyxpKTtpKz11LnN0YWNrRGVsdGF9ZWxzZSBpZih1LnN0YWNrQ2xlYXJpbmcpaT0wO2Vsc2UgaWYodS5yZXNldFN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYodS51bmRlZlN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OmkscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG89W10sYz1bXSxsPWUuY291bnQ7Zm9yKGxldCBoPTA7aDxsO2grKyl7Y29uc3QgbD1lLmdldChoKSx1PXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGQ9ITAsZj1udWxsLGc9cztpZihuJiZpLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoaCk7aWYoLTE9PT1lKXsoMCxyLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2Q9ITF9aWYoZT49aS5sZW5ndGgpeygwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2Q9ITF9aWYoZCl7Zz1pW2VdLnByaXZhdGVEaWN0O2Y9Zy5zdWJyc0luZGV4fX1lbHNlIHQmJihmPXQpO2QmJihkPXRoaXMucGFyc2VDaGFyU3RyaW5nKHUsbCxmLGEpKTtpZihudWxsIT09dS53aWR0aCl7Y29uc3QgZT1nLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO2NbaF09ZSt1LndpZHRofWVsc2V7Y29uc3QgZT1nLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO2NbaF09ZX1udWxsIT09dS5zZWFjJiYob1toXT11LnNlYWMpO2R8fGUuc2V0KGgsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm8sd2lkdGhzOmN9fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IG49cithLGk9dGhpcy5ieXRlcy5zdWJhcnJheShyLG4pLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bztpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCBuPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChuKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9ci5VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2kmJmkubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBvPXMudHJhY2tlcnNbMF0sYz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQoYyk7Y29uc3QgbD10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW8uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO28uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7by5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2NvbnN0IHU9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7by5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZCh1KTtpZihlLmlzQ0lERm9udCl7by5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtvLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IHI9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtvXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLG4saT0iIjtmb3Iocj0wLG49dC5sZW5ndGg7cjxuOysrcil7Y29uc3QgZT10W3JdO2krPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCBuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO25bdF09ZX1uPW4uam9pbigiIik7IiI9PT1uJiYobj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykobikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IG49bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2lmKGEpe2kucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtpLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtpLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtpLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7ci5wdXNoKGUpO24uYWRkKHMpO2Uub2Zmc2V0KHQpfW49dGhpcy5jb21waWxlSW5kZXgobixyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6bn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKXtjb25zdCBpPWVbbl0scz1pLnByaXZhdGVEaWN0O2lmKCFzfHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixjPXRoaXMuY29tcGlsZURpY3QocyxvKTtsZXQgbD1hLmxlbmd0aDtvLm9mZnNldChsKTtjLmxlbmd0aHx8KGw9MCk7dFtuXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbYy5sZW5ndGgsbF0sYSk7YS5hZGQoYyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtvLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbYy5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCEobiBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbbl0scz1lLnR5cGVzW25dO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgbz0wLGM9cy5sZW5ndGg7bzxjOysrbyl7Y29uc3QgYz1zW29dLGw9aVtvXTtzd2l0Y2goYyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW25dO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke2N9YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZCgoMCxyLnN0cmluZ1RvQnl0ZXMpKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUdsb2JhbFN1YnJJbmRleCgpe2NvbnN0IGU9dGhpcy5jZmYuZ2xvYmFsU3VickluZGV4O3RoaXMub3V0LndyaXRlQnl0ZUFycmF5KHRoaXMuY29tcGlsZUluZGV4KGUpKX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0W2FdPWVbYV07cmV0dXJuIHR9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBuPVtyPj44JjI1NSwyNTUmcl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPHI7KytpKW8rPWFbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7bi5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPHIrMTtpKyspezE9PT1zP24ucHVzaCgyNTUmYyk6Mj09PXM/bi5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9uLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTpuLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2FbaV0mJihjKz1hW2ldLmxlbmd0aCl9Zm9yKGk9MDtpPHI7aSsrKXt0W2ldJiZ0W2ldLm9mZnNldChuLmxlbmd0aCk7bi5wdXNoKC4uLmFbaV0pfXJldHVybiBufX10LkNGRkNvbXBpbGVyPUNGRkNvbXBpbGVyfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMDt0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdO3QuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDA7dC5nZXRGb250VHlwZT1mdW5jdGlvbiBnZXRGb250VHlwZShlLHQsYT0hMSl7c3dpdGNoKGUpe2Nhc2UiVHlwZTEiOnJldHVybiBhP3IuRm9udFR5cGUuVFlQRTFTVEFOREFSRDoiVHlwZTFDIj09PXQ/ci5Gb250VHlwZS5UWVBFMUM6ci5Gb250VHlwZS5UWVBFMTtjYXNlIkNJREZvbnRUeXBlMCI6cmV0dXJuIkNJREZvbnRUeXBlMEMiPT09dD9yLkZvbnRUeXBlLkNJREZPTlRUWVBFMEM6ci5Gb250VHlwZS5DSURGT05UVFlQRTA7Y2FzZSJPcGVuVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuT1BFTlRZUEU7Y2FzZSJUcnVlVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuVFJVRVRZUEU7Y2FzZSJDSURGb250VHlwZTIiOnJldHVybiByLkZvbnRUeXBlLkNJREZPTlRUWVBFMjtjYXNlIk1NVHlwZTEiOnJldHVybiByLkZvbnRUeXBlLk1NVFlQRTE7Y2FzZSJUeXBlMCI6cmV0dXJuIHIuRm9udFR5cGUuVFlQRTA7ZGVmYXVsdDpyZXR1cm4gci5Gb250VHlwZS5VTktOT1dOfX07dC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5yZXBsYWNlKC9ccy9nLCIiKX07dC5yZWNvdmVyR2x5cGhOYW1lPXJlY292ZXJHbHlwaE5hbWU7dC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMsYyxsO2NvbnN0IGg9ISEoZS5mbGFncyZvLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KXtsPXQ7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7cltjXT1zPj0wP3M6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe2w9KDAsbi5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1lbHNlIGlmKGgpZm9yKGMgaW4gdClyW2NdPXRbY107ZWxzZXtsPW4uU3RhbmRhcmRFbmNvZGluZztmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1jb25zdCB1PWUuZGlmZmVyZW5jZXM7bGV0IGQ7aWYodSlmb3IoYyBpbiB1KXtjb25zdCBlPXVbY107cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtkfHwoZD0oMCxpLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGQpO3QhPT1lJiYocz1hLmluZGV4T2YodCkpfXJbY109cz49MD9zOjB9cmV0dXJuIHJ9O3ZhciByPWEoMiksbj1hKDM1KSxpPWEoMzcpLHM9YSgzOCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTt0LkZvbnRGbGFncz1vO3QuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlOygwLHIuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9fSwoZSx0LGEpPT57YS5yKHQpO2EuZCh0LHtnZXREaW5nYmF0c0dseXBoc1VuaWNvZGU6KCk9PmksZ2V0R2x5cGhzVW5pY29kZTooKT0+bn0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsci5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0Tm9ybWFsaXplZFVuaWNvZGVzOigpPT5zLGdldFVuaWNvZGVGb3JHbHlwaDooKT0+Z2V0VW5pY29kZUZvckdseXBoLGdldFVuaWNvZGVSYW5nZUZvcjooKT0+Z2V0VW5pY29kZVJhbmdlRm9yLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcyxyZXZlcnNlSWZSdGw6KCk9PnJldmVyc2VJZlJ0bH0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9uKClbZV18fGU6MTczPT09ZT80NTplfWZ1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBpPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSl7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWlbdF07aWYoZT49YS5iZWdpbiYmZTxhLmVuZClyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBzPSgwLHIuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbigpe3JldHVyblsiwqgiLCIgzIgiLCLCryIsIiDMhCIsIsK0IiwiIMyBIiwiwrUiLCLOvCIsIsK4IiwiIMynIiwixLIiLCJJSiIsIsSzIiwiaWoiLCLEvyIsIkzCtyIsIsWAIiwibMK3IiwixYkiLCLKvG4iLCLFvyIsInMiLCLHhCIsIkTFvSIsIseFIiwiRMW+Iiwix4YiLCJkxb4iLCLHhyIsIkxKIiwix4giLCJMaiIsIseJIiwibGoiLCLHiiIsIk5KIiwix4siLCJOaiIsIseMIiwibmoiLCLHsSIsIkRaIiwix7IiLCJEeiIsIsezIiwiZHoiLCLLmCIsIiDMhiIsIsuZIiwiIMyHIiwiy5oiLCIgzIoiLCLLmyIsIiDMqCIsIsucIiwiIMyDIiwiy50iLCIgzIsiLCLNuiIsIiDNhSIsIs6EIiwiIMyBIiwiz5AiLCLOsiIsIs+RIiwizrgiLCLPkiIsIs6lIiwiz5UiLCLPhiIsIs+WIiwiz4AiLCLPsCIsIs66Iiwiz7EiLCLPgSIsIs+yIiwiz4IiLCLPtCIsIs6YIiwiz7UiLCLOtSIsIs+5IiwizqMiLCLWhyIsItWl1oIiLCLZtSIsItin2bQiLCLZtiIsItmI2bQiLCLZtyIsItuH2bQiLCLZuCIsItmK2bQiLCLguLMiLCLguY3guLIiLCLgurMiLCLgu43gurIiLCLgu5wiLCLguqvgupkiLCLgu50iLCLguqvguqEiLCLgvbciLCLgvrLgvoEiLCLgvbkiLCLgvrPgvoEiLCLhupoiLCJhyr4iLCLhvr0iLCIgzJMiLCLhvr8iLCIgzJMiLCLhv4AiLCIgzYIiLCLhv74iLCIgzJQiLCLigIIiLCIgIiwi4oCDIiwiICIsIuKAhCIsIiAiLCLigIUiLCIgIiwi4oCGIiwiICIsIuKAiCIsIiAiLCLigIkiLCIgIiwi4oCKIiwiICIsIuKAlyIsIiDMsyIsIuKApCIsIi4iLCLigKUiLCIuLiIsIuKApiIsIi4uLiIsIuKAsyIsIuKAsuKAsiIsIuKAtCIsIuKAsuKAsuKAsiIsIuKAtiIsIuKAteKAtSIsIuKAtyIsIuKAteKAteKAtSIsIuKAvCIsIiEhIiwi4oC+IiwiIMyFIiwi4oGHIiwiPz8iLCLigYgiLCI/ISIsIuKBiSIsIiE/Iiwi4oGXIiwi4oCy4oCy4oCy4oCyIiwi4oGfIiwiICIsIuKCqCIsIlJzIiwi4oSAIiwiYS9jIiwi4oSBIiwiYS9zIiwi4oSDIiwiwrBDIiwi4oSFIiwiYy9vIiwi4oSGIiwiYy91Iiwi4oSHIiwixpAiLCLihIkiLCLCsEYiLCLihJYiLCJObyIsIuKEoSIsIlRFTCIsIuKEtSIsIteQIiwi4oS2Iiwi15EiLCLihLciLCLXkiIsIuKEuCIsIteTIiwi4oS7IiwiRkFYIiwi4oWgIiwiSSIsIuKFoSIsIklJIiwi4oWiIiwiSUlJIiwi4oWjIiwiSVYiLCLihaQiLCJWIiwi4oWlIiwiVkkiLCLihaYiLCJWSUkiLCLihaciLCJWSUlJIiwi4oWoIiwiSVgiLCLihakiLCJYIiwi4oWqIiwiWEkiLCLihasiLCJYSUkiLCLihawiLCJMIiwi4oWtIiwiQyIsIuKFriIsIkQiLCLiha8iLCJNIiwi4oWwIiwiaSIsIuKFsSIsImlpIiwi4oWyIiwiaWlpIiwi4oWzIiwiaXYiLCLihbQiLCJ2Iiwi4oW1IiwidmkiLCLihbYiLCJ2aWkiLCLihbciLCJ2aWlpIiwi4oW4IiwiaXgiLCLihbkiLCJ4Iiwi4oW6IiwieGkiLCLihbsiLCJ4aWkiLCLihbwiLCJsIiwi4oW9IiwiYyIsIuKFviIsImQiLCLihb8iLCJtIiwi4oisIiwi4oir4oirIiwi4oitIiwi4oir4oir4oirIiwi4oivIiwi4oiu4oiuIiwi4oiwIiwi4oiu4oiu4oiuIiwi4pG0IiwiKDEpIiwi4pG1IiwiKDIpIiwi4pG2IiwiKDMpIiwi4pG3IiwiKDQpIiwi4pG4IiwiKDUpIiwi4pG5IiwiKDYpIiwi4pG6IiwiKDcpIiwi4pG7IiwiKDgpIiwi4pG8IiwiKDkpIiwi4pG9IiwiKDEwKSIsIuKRviIsIigxMSkiLCLikb8iLCIoMTIpIiwi4pKAIiwiKDEzKSIsIuKSgSIsIigxNCkiLCLikoIiLCIoMTUpIiwi4pKDIiwiKDE2KSIsIuKShCIsIigxNykiLCLikoUiLCIoMTgpIiwi4pKGIiwiKDE5KSIsIuKShyIsIigyMCkiLCLikogiLCIxLiIsIuKSiSIsIjIuIiwi4pKKIiwiMy4iLCLikosiLCI0LiIsIuKSjCIsIjUuIiwi4pKNIiwiNi4iLCLiko4iLCI3LiIsIuKSjyIsIjguIiwi4pKQIiwiOS4iLCLikpEiLCIxMC4iLCLikpIiLCIxMS4iLCLikpMiLCIxMi4iLCLikpQiLCIxMy4iLCLikpUiLCIxNC4iLCLikpYiLCIxNS4iLCLikpciLCIxNi4iLCLikpgiLCIxNy4iLCLikpkiLCIxOC4iLCLikpoiLCIxOS4iLCLikpsiLCIyMC4iLCLikpwiLCIoYSkiLCLikp0iLCIoYikiLCLikp4iLCIoYykiLCLikp8iLCIoZCkiLCLikqAiLCIoZSkiLCLikqEiLCIoZikiLCLikqIiLCIoZykiLCLikqMiLCIoaCkiLCLikqQiLCIoaSkiLCLikqUiLCIoaikiLCLikqYiLCIoaykiLCLikqciLCIobCkiLCLikqgiLCIobSkiLCLikqkiLCIobikiLCLikqoiLCIobykiLCLikqsiLCIocCkiLCLikqwiLCIocSkiLCLikq0iLCIocikiLCLikq4iLCIocykiLCLikq8iLCIodCkiLCLikrAiLCIodSkiLCLikrEiLCIodikiLCLikrIiLCIodykiLCLikrMiLCIoeCkiLCLikrQiLCIoeSkiLCLikrUiLCIoeikiLCLiqIwiLCLiiKviiKviiKviiKsiLCLiqbQiLCI6Oj0iLCLiqbUiLCI9PSIsIuKptiIsIj09PSIsIuK6nyIsIuavjSIsIuK7syIsIum+nyIsIuK8gCIsIuS4gCIsIuK8gSIsIuS4qCIsIuK8giIsIuS4tiIsIuK8gyIsIuS4vyIsIuK8hCIsIuS5mSIsIuK8hSIsIuS6hSIsIuK8hiIsIuS6jCIsIuK8hyIsIuS6oCIsIuK8iCIsIuS6uiIsIuK8iSIsIuWEvyIsIuK8iiIsIuWFpSIsIuK8iyIsIuWFqyIsIuK8jCIsIuWGgiIsIuK8jSIsIuWGliIsIuK8jiIsIuWGqyIsIuK8jyIsIuWHoCIsIuK8kCIsIuWHtSIsIuK8kSIsIuWIgCIsIuK8kiIsIuWKmyIsIuK8kyIsIuWLuSIsIuK8lCIsIuWMlSIsIuK8lSIsIuWMmiIsIuK8liIsIuWMuCIsIuK8lyIsIuWNgSIsIuK8mCIsIuWNnCIsIuK8mSIsIuWNqSIsIuK8miIsIuWOgiIsIuK8myIsIuWOtiIsIuK8nCIsIuWPiCIsIuK8nSIsIuWPoyIsIuK8niIsIuWblyIsIuK8nyIsIuWcnyIsIuK8oCIsIuWjqyIsIuK8oSIsIuWkgiIsIuK8oiIsIuWkiiIsIuK8oyIsIuWklSIsIuK8pCIsIuWkpyIsIuK8pSIsIuWlsyIsIuK8piIsIuWtkCIsIuK8pyIsIuWugCIsIuK8qCIsIuWvuCIsIuK8qSIsIuWwjyIsIuK8qiIsIuWwoiIsIuK8qyIsIuWwuCIsIuK8rCIsIuWxriIsIuK8rSIsIuWxsSIsIuK8riIsIuW3myIsIuK8ryIsIuW3pSIsIuK8sCIsIuW3sSIsIuK8sSIsIuW3viIsIuK8siIsIuW5siIsIuK8syIsIuW5uiIsIuK8tCIsIuW5vyIsIuK8tSIsIuW7tCIsIuK8tiIsIuW7viIsIuK8tyIsIuW8iyIsIuK8uCIsIuW8kyIsIuK8uSIsIuW9kCIsIuK8uiIsIuW9oSIsIuK8uyIsIuW9syIsIuK8vCIsIuW/gyIsIuK8vSIsIuaIiCIsIuK8viIsIuaItiIsIuK8vyIsIuaJiyIsIuK9gCIsIuaUryIsIuK9gSIsIuaUtCIsIuK9giIsIuaWhyIsIuK9gyIsIuaWlyIsIuK9hCIsIuaWpCIsIuK9hSIsIuaWuSIsIuK9hiIsIuaXoCIsIuK9hyIsIuaXpSIsIuK9iCIsIuabsCIsIuK9iSIsIuaciCIsIuK9iiIsIuacqCIsIuK9iyIsIuasoCIsIuK9jCIsIuatoiIsIuK9jSIsIuatuSIsIuK9jiIsIuausyIsIuK9jyIsIuaviyIsIuK9kCIsIuavlCIsIuK9kSIsIuavmyIsIuK9kiIsIuawjyIsIuK9kyIsIuawlCIsIuK9lCIsIuawtCIsIuK9lSIsIueBqyIsIuK9liIsIueIqiIsIuK9lyIsIueItiIsIuK9mCIsIueIuyIsIuK9mSIsIueIvyIsIuK9miIsIueJhyIsIuK9myIsIueJmSIsIuK9nCIsIueJmyIsIuK9nSIsIueKrCIsIuK9niIsIueOhCIsIuK9nyIsIueOiSIsIuK9oCIsIueTnCIsIuK9oSIsIueTpiIsIuK9oiIsIueUmCIsIuK9oyIsIueUnyIsIuK9pCIsIueUqCIsIuK9pSIsIueUsCIsIuK9piIsIueWiyIsIuK9pyIsIueWkiIsIuK9qCIsIueZtiIsIuK9qSIsIueZvSIsIuK9qiIsIueariIsIuK9qyIsIueavyIsIuK9rCIsIuebriIsIuK9rSIsIuefmyIsIuK9riIsIuefoiIsIuK9ryIsIuefsyIsIuK9sCIsIuekuiIsIuK9sSIsIuemuCIsIuK9siIsIuemviIsIuK9syIsIueptCIsIuK9tCIsIueriyIsIuK9tSIsIueruSIsIuK9tiIsIuexsyIsIuK9tyIsIuezuCIsIuK9uCIsIue8tiIsIuK9uSIsIue9kSIsIuK9uiIsIue+iiIsIuK9uyIsIue+vSIsIuK9vCIsIuiAgSIsIuK9vSIsIuiAjCIsIuK9viIsIuiAkiIsIuK9vyIsIuiAsyIsIuK+gCIsIuiBvyIsIuK+gSIsIuiCiSIsIuK+giIsIuiHoyIsIuK+gyIsIuiHqiIsIuK+hCIsIuiHsyIsIuK+hSIsIuiHvCIsIuK+hiIsIuiIjCIsIuK+hyIsIuiImyIsIuK+iCIsIuiInyIsIuK+iSIsIuiJriIsIuK+iiIsIuiJsiIsIuK+iyIsIuiJuCIsIuK+jCIsIuiZjSIsIuK+jSIsIuiZqyIsIuK+jiIsIuihgCIsIuK+jyIsIuihjCIsIuK+kCIsIuihoyIsIuK+kSIsIuilviIsIuK+kiIsIuimiyIsIuK+kyIsIuinkiIsIuK+lCIsIuiogCIsIuK+lSIsIuiwtyIsIuK+liIsIuixhiIsIuK+lyIsIuixlSIsIuK+mCIsIuixuCIsIuK+mSIsIuiynSIsIuK+miIsIui1pCIsIuK+myIsIui1sCIsIuK+nCIsIui2syIsIuK+nSIsIui6qyIsIuK+niIsIui7iiIsIuK+nyIsIui+myIsIuK+oCIsIui+sCIsIuK+oSIsIui+tSIsIuK+oiIsIumCkSIsIuK+oyIsIumFiSIsIuK+pCIsIumHhiIsIuK+pSIsIumHjCIsIuK+piIsIumHkSIsIuK+pyIsIumVtyIsIuK+qCIsIumWgCIsIuK+qSIsIumYnCIsIuK+qiIsIumatiIsIuK+qyIsIumauSIsIuK+rCIsIumbqCIsIuK+rSIsIumdkSIsIuK+riIsIumdniIsIuK+ryIsIumdoiIsIuK+sCIsIumdqSIsIuK+sSIsIumfiyIsIuK+siIsIumfrSIsIuK+syIsIumfsyIsIuK+tCIsIumggSIsIuK+tSIsIumiqCIsIuK+tiIsIumjmyIsIuK+tyIsIumjnyIsIuK+uCIsIummliIsIuK+uSIsIummmSIsIuK+uiIsIummrCIsIuK+uyIsIumqqCIsIuK+vCIsIumrmCIsIuK+vSIsIumrnyIsIuK+viIsIumspSIsIuK+vyIsIumsryIsIuK/gCIsIumssiIsIuK/gSIsIumsvCIsIuK/giIsIumtmiIsIuK/gyIsIumzpSIsIuK/hCIsIum5tSIsIuK/hSIsIum5vyIsIuK/hiIsIum6pSIsIuK/hyIsIum6uyIsIuK/iCIsIum7gyIsIuK/iSIsIum7jSIsIuK/iiIsIum7kSIsIuK/iyIsIum7uSIsIuK/jCIsIum7vSIsIuK/jSIsIum8jiIsIuK/jiIsIum8kyIsIuK/jyIsIum8oCIsIuK/kCIsIum8uyIsIuK/kSIsIum9iiIsIuK/kiIsIum9kiIsIuK/kyIsIum+jSIsIuK/lCIsIum+nCIsIuK/lSIsIum+oCIsIuOAtiIsIuOAkiIsIuOAuCIsIuWNgSIsIuOAuSIsIuWNhCIsIuOAuiIsIuWNhSIsIuOCmyIsIiDjgpkiLCLjgpwiLCIg44KaIiwi44SxIiwi4YSAIiwi44SyIiwi4YSBIiwi44SzIiwi4YaqIiwi44S0Iiwi4YSCIiwi44S1Iiwi4YasIiwi44S2Iiwi4YatIiwi44S3Iiwi4YSDIiwi44S4Iiwi4YSEIiwi44S5Iiwi4YSFIiwi44S6Iiwi4YawIiwi44S7Iiwi4YaxIiwi44S8Iiwi4YayIiwi44S9Iiwi4YazIiwi44S+Iiwi4Ya0Iiwi44S/Iiwi4Ya1Iiwi44WAIiwi4YSaIiwi44WBIiwi4YSGIiwi44WCIiwi4YSHIiwi44WDIiwi4YSIIiwi44WEIiwi4YShIiwi44WFIiwi4YSJIiwi44WGIiwi4YSKIiwi44WHIiwi4YSLIiwi44WIIiwi4YSMIiwi44WJIiwi4YSNIiwi44WKIiwi4YSOIiwi44WLIiwi4YSPIiwi44WMIiwi4YSQIiwi44WNIiwi4YSRIiwi44WOIiwi4YSSIiwi44WPIiwi4YWhIiwi44WQIiwi4YWiIiwi44WRIiwi4YWjIiwi44WSIiwi4YWkIiwi44WTIiwi4YWlIiwi44WUIiwi4YWmIiwi44WVIiwi4YWnIiwi44WWIiwi4YWoIiwi44WXIiwi4YWpIiwi44WYIiwi4YWqIiwi44WZIiwi4YWrIiwi44WaIiwi4YWsIiwi44WbIiwi4YWtIiwi44WcIiwi4YWuIiwi44WdIiwi4YWvIiwi44WeIiwi4YWwIiwi44WfIiwi4YWxIiwi44WgIiwi4YWyIiwi44WhIiwi4YWzIiwi44WiIiwi4YW0Iiwi44WjIiwi4YW1Iiwi44WkIiwi4YWgIiwi44WlIiwi4YSUIiwi44WmIiwi4YSVIiwi44WnIiwi4YeHIiwi44WoIiwi4YeIIiwi44WpIiwi4YeMIiwi44WqIiwi4YeOIiwi44WrIiwi4YeTIiwi44WsIiwi4YeXIiwi44WtIiwi4YeZIiwi44WuIiwi4YScIiwi44WvIiwi4YedIiwi44WwIiwi4YefIiwi44WxIiwi4YSdIiwi44WyIiwi4YSeIiwi44WzIiwi4YSgIiwi44W0Iiwi4YSiIiwi44W1Iiwi4YSjIiwi44W2Iiwi4YSnIiwi44W3Iiwi4YSpIiwi44W4Iiwi4YSrIiwi44W5Iiwi4YSsIiwi44W6Iiwi4YStIiwi44W7Iiwi4YSuIiwi44W8Iiwi4YSvIiwi44W9Iiwi4YSyIiwi44W+Iiwi4YS2Iiwi44W/Iiwi4YWAIiwi44aAIiwi4YWHIiwi44aBIiwi4YWMIiwi44aCIiwi4YexIiwi44aDIiwi4YeyIiwi44aEIiwi4YWXIiwi44aFIiwi4YWYIiwi44aGIiwi4YWZIiwi44aHIiwi4YaEIiwi44aIIiwi4YaFIiwi44aJIiwi4YaIIiwi44aKIiwi4YaRIiwi44aLIiwi4YaSIiwi44aMIiwi4YaUIiwi44aNIiwi4YaeIiwi44aOIiwi4YahIiwi44iAIiwiKOGEgCkiLCLjiIEiLCIo4YSCKSIsIuOIgiIsIijhhIMpIiwi44iDIiwiKOGEhSkiLCLjiIQiLCIo4YSGKSIsIuOIhSIsIijhhIcpIiwi44iGIiwiKOGEiSkiLCLjiIciLCIo4YSLKSIsIuOIiCIsIijhhIwpIiwi44iJIiwiKOGEjikiLCLjiIoiLCIo4YSPKSIsIuOIiyIsIijhhJApIiwi44iMIiwiKOGEkSkiLCLjiI0iLCIo4YSSKSIsIuOIjiIsIijhhIDhhaEpIiwi44iPIiwiKOGEguGFoSkiLCLjiJAiLCIo4YSD4YWhKSIsIuOIkSIsIijhhIXhhaEpIiwi44iSIiwiKOGEhuGFoSkiLCLjiJMiLCIo4YSH4YWhKSIsIuOIlCIsIijhhInhhaEpIiwi44iVIiwiKOGEi+GFoSkiLCLjiJYiLCIo4YSM4YWhKSIsIuOIlyIsIijhhI7hhaEpIiwi44iYIiwiKOGEj+GFoSkiLCLjiJkiLCIo4YSQ4YWhKSIsIuOImiIsIijhhJHhhaEpIiwi44ibIiwiKOGEkuGFoSkiLCLjiJwiLCIo4YSM4YWuKSIsIuOInSIsIijhhIvhhanhhIzhhaXhhqspIiwi44ieIiwiKOGEi+GFqeGEkuGFrikiLCLjiKAiLCIo5LiAKSIsIuOIoSIsIijkuowpIiwi44iiIiwiKOS4iSkiLCLjiKMiLCIo5ZubKSIsIuOIpCIsIijkupQpIiwi44ilIiwiKOWFrSkiLCLjiKYiLCIo5LiDKSIsIuOIpyIsIijlhaspIiwi44ioIiwiKOS5nSkiLCLjiKkiLCIo5Y2BKSIsIuOIqiIsIijmnIgpIiwi44irIiwiKOeBqykiLCLjiKwiLCIo5rC0KSIsIuOIrSIsIijmnKgpIiwi44iuIiwiKOmHkSkiLCLjiK8iLCIo5ZyfKSIsIuOIsCIsIijml6UpIiwi44ixIiwiKOagqikiLCLjiLIiLCIo5pyJKSIsIuOIsyIsIijnpL4pIiwi44i0IiwiKOWQjSkiLCLjiLUiLCIo54m5KSIsIuOItiIsIijosqEpIiwi44i3IiwiKOelnSkiLCLjiLgiLCIo5Yq0KSIsIuOIuSIsIijku6MpIiwi44i6IiwiKOWRvCkiLCLjiLsiLCIo5a2mKSIsIuOIvCIsIijnm6MpIiwi44i9IiwiKOS8gSkiLCLjiL4iLCIo6LOHKSIsIuOIvyIsIijljZQpIiwi44mAIiwiKOelrSkiLCLjiYEiLCIo5LyRKSIsIuOJgiIsIijoh6opIiwi44mDIiwiKOiHsykiLCLji4AiLCIx5pyIIiwi44uBIiwiMuaciCIsIuOLgiIsIjPmnIgiLCLji4MiLCI05pyIIiwi44uEIiwiNeaciCIsIuOLhSIsIjbmnIgiLCLji4YiLCI35pyIIiwi44uHIiwiOOaciCIsIuOLiCIsIjnmnIgiLCLji4kiLCIxMOaciCIsIuOLiiIsIjEx5pyIIiwi44uLIiwiMTLmnIgiLCLjjZgiLCIw54K5Iiwi442ZIiwiMeeCuSIsIuONmiIsIjLngrkiLCLjjZsiLCIz54K5Iiwi442cIiwiNOeCuSIsIuONnSIsIjXngrkiLCLjjZ4iLCI254K5Iiwi442fIiwiN+eCuSIsIuONoCIsIjjngrkiLCLjjaEiLCI554K5Iiwi442iIiwiMTDngrkiLCLjjaMiLCIxMeeCuSIsIuONpCIsIjEy54K5Iiwi442lIiwiMTPngrkiLCLjjaYiLCIxNOeCuSIsIuONpyIsIjE154K5Iiwi442oIiwiMTbngrkiLCLjjakiLCIxN+eCuSIsIuONqiIsIjE454K5Iiwi442rIiwiMTnngrkiLCLjjawiLCIyMOeCuSIsIuONrSIsIjIx54K5Iiwi442uIiwiMjLngrkiLCLjja8iLCIyM+eCuSIsIuONsCIsIjI054K5Iiwi44+gIiwiMeaXpSIsIuOPoSIsIjLml6UiLCLjj6IiLCIz5pelIiwi44+jIiwiNOaXpSIsIuOPpCIsIjXml6UiLCLjj6UiLCI25pelIiwi44+mIiwiN+aXpSIsIuOPpyIsIjjml6UiLCLjj6giLCI55pelIiwi44+pIiwiMTDml6UiLCLjj6oiLCIxMeaXpSIsIuOPqyIsIjEy5pelIiwi44+sIiwiMTPml6UiLCLjj60iLCIxNOaXpSIsIuOPriIsIjE15pelIiwi44+vIiwiMTbml6UiLCLjj7AiLCIxN+aXpSIsIuOPsSIsIjE45pelIiwi44+yIiwiMTnml6UiLCLjj7MiLCIyMOaXpSIsIuOPtCIsIjIx5pelIiwi44+1IiwiMjLml6UiLCLjj7YiLCIyM+aXpSIsIuOPtyIsIjI05pelIiwi44+4IiwiMjXml6UiLCLjj7kiLCIyNuaXpSIsIuOPuiIsIjI35pelIiwi44+7IiwiMjjml6UiLCLjj7wiLCIyOeaXpSIsIuOPvSIsIjMw5pelIiwi44++IiwiMzHml6UiLCLvrIAiLCJmZiIsIu+sgSIsImZpIiwi76yCIiwiZmwiLCLvrIMiLCJmZmkiLCLvrIQiLCJmZmwiLCLvrIUiLCLFv3QiLCLvrIYiLCJzdCIsIu+skyIsItW01bYiLCLvrJQiLCLVtNWlIiwi76yVIiwi1bTVqyIsIu+sliIsItW+1bYiLCLvrJciLCLVtNWtIiwi762PIiwi15DXnCIsIu+tkCIsItmxIiwi762RIiwi2bEiLCLvrZIiLCLZuyIsIu+tkyIsItm7Iiwi762UIiwi2bsiLCLvrZUiLCLZuyIsIu+tliIsItm+Iiwi762XIiwi2b4iLCLvrZgiLCLZviIsIu+tmSIsItm+Iiwi762aIiwi2oAiLCLvrZsiLCLagCIsIu+tnCIsItqAIiwi762dIiwi2oAiLCLvrZ4iLCLZuiIsIu+tnyIsItm6Iiwi762gIiwi2boiLCLvraEiLCLZuiIsIu+toiIsItm/Iiwi762jIiwi2b8iLCLvraQiLCLZvyIsIu+tpSIsItm/Iiwi762mIiwi2bkiLCLvraciLCLZuSIsIu+tqCIsItm5Iiwi762pIiwi2bkiLCLvraoiLCLapCIsIu+tqyIsItqkIiwi762sIiwi2qQiLCLvra0iLCLapCIsIu+triIsItqmIiwi762vIiwi2qYiLCLvrbAiLCLapiIsIu+tsSIsItqmIiwi762yIiwi2oQiLCLvrbMiLCLahCIsIu+ttCIsItqEIiwi7621Iiwi2oQiLCLvrbYiLCLagyIsIu+ttyIsItqDIiwi7624Iiwi2oMiLCLvrbkiLCLagyIsIu+tuiIsItqGIiwi7627Iiwi2oYiLCLvrbwiLCLahiIsIu+tvSIsItqGIiwi762+Iiwi2ociLCLvrb8iLCLahyIsIu+ugCIsItqHIiwi766BIiwi2ociLCLvroIiLCLajSIsIu+ugyIsItqNIiwi766EIiwi2owiLCLvroUiLCLajCIsIu+uhiIsItqOIiwi766HIiwi2o4iLCLvrogiLCLaiCIsIu+uiSIsItqIIiwi766KIiwi2pgiLCLvrosiLCLamCIsIu+ujCIsItqRIiwi766NIiwi2pEiLCLvro4iLCLaqSIsIu+ujyIsItqpIiwi766QIiwi2qkiLCLvrpEiLCLaqSIsIu+ukiIsItqvIiwi766TIiwi2q8iLCLvrpQiLCLaryIsIu+ulSIsItqvIiwi766WIiwi2rMiLCLvrpciLCLasyIsIu+umCIsItqzIiwi766ZIiwi2rMiLCLvrpoiLCLasSIsIu+umyIsItqxIiwi766cIiwi2rEiLCLvrp0iLCLasSIsIu+uniIsItq6Iiwi766fIiwi2roiLCLvrqAiLCLauyIsIu+uoSIsItq7Iiwi766iIiwi2rsiLCLvrqMiLCLauyIsIu+upCIsItuAIiwi766lIiwi24AiLCLvrqYiLCLbgSIsIu+upyIsItuBIiwi766oIiwi24EiLCLvrqkiLCLbgSIsIu+uqiIsItq+Iiwi766rIiwi2r4iLCLvrqwiLCLaviIsIu+urSIsItq+Iiwi766uIiwi25IiLCLvrq8iLCLbkiIsIu+usCIsItuTIiwi766xIiwi25MiLCLvr5MiLCLarSIsIu+vlCIsItqtIiwi76+VIiwi2q0iLCLvr5YiLCLarSIsIu+vlyIsItuHIiwi76+YIiwi24ciLCLvr5kiLCLbhiIsIu+vmiIsItuGIiwi76+bIiwi24giLCLvr5wiLCLbiCIsIu+vnSIsItm3Iiwi76+eIiwi24siLCLvr58iLCLbiyIsIu+voCIsItuFIiwi76+hIiwi24UiLCLvr6IiLCLbiSIsIu+voyIsItuJIiwi76+kIiwi25AiLCLvr6UiLCLbkCIsIu+vpiIsItuQIiwi76+nIiwi25AiLCLvr6giLCLZiSIsIu+vqSIsItmJIiwi76+qIiwi2KbYpyIsIu+vqyIsItim2KciLCLvr6wiLCLYptuVIiwi76+tIiwi2KbblSIsIu+vriIsItim2YgiLCLvr68iLCLYptmIIiwi76+wIiwi2KbbhyIsIu+vsSIsItim24ciLCLvr7IiLCLYptuGIiwi76+zIiwi2KbbhiIsIu+vtCIsItim24giLCLvr7UiLCLYptuIIiwi76+2Iiwi2KbbkCIsIu+vtyIsItim25AiLCLvr7giLCLYptuQIiwi76+5Iiwi2KbZiSIsIu+vuiIsItim2YkiLCLvr7siLCLYptmJIiwi76+8Iiwi24wiLCLvr70iLCLbjCIsIu+vviIsItuMIiwi76+/Iiwi24wiLCLvsIAiLCLYptisIiwi77CBIiwi2KbYrSIsIu+wgiIsItim2YUiLCLvsIMiLCLYptmJIiwi77CEIiwi2KbZiiIsIu+whSIsItio2KwiLCLvsIYiLCLYqNitIiwi77CHIiwi2KjYriIsIu+wiCIsItio2YUiLCLvsIkiLCLYqNmJIiwi77CKIiwi2KjZiiIsIu+wiyIsItiq2KwiLCLvsIwiLCLYqtitIiwi77CNIiwi2KrYriIsIu+wjiIsItiq2YUiLCLvsI8iLCLYqtmJIiwi77CQIiwi2KrZiiIsIu+wkSIsItir2KwiLCLvsJIiLCLYq9mFIiwi77CTIiwi2KvZiSIsIu+wlCIsItir2YoiLCLvsJUiLCLYrNitIiwi77CWIiwi2KzZhSIsIu+wlyIsItit2KwiLCLvsJgiLCLYrdmFIiwi77CZIiwi2K7YrCIsIu+wmiIsItiu2K0iLCLvsJsiLCLYrtmFIiwi77CcIiwi2LPYrCIsIu+wnSIsItiz2K0iLCLvsJ4iLCLYs9iuIiwi77CfIiwi2LPZhSIsIu+woCIsIti12K0iLCLvsKEiLCLYtdmFIiwi77CiIiwi2LbYrCIsIu+woyIsIti22K0iLCLvsKQiLCLYttiuIiwi77ClIiwi2LbZhSIsIu+wpiIsIti32K0iLCLvsKciLCLYt9mFIiwi77CoIiwi2LjZhSIsIu+wqSIsIti52KwiLCLvsKoiLCLYudmFIiwi77CrIiwi2LrYrCIsIu+wrCIsIti62YUiLCLvsK0iLCLZgdisIiwi77CuIiwi2YHYrSIsIu+wryIsItmB2K4iLCLvsLAiLCLZgdmFIiwi77CxIiwi2YHZiSIsIu+wsiIsItmB2YoiLCLvsLMiLCLZgtitIiwi77C0Iiwi2YLZhSIsIu+wtSIsItmC2YkiLCLvsLYiLCLZgtmKIiwi77C3Iiwi2YPYpyIsIu+wuCIsItmD2KwiLCLvsLkiLCLZg9itIiwi77C6Iiwi2YPYriIsIu+wuyIsItmD2YQiLCLvsLwiLCLZg9mFIiwi77C9Iiwi2YPZiSIsIu+wviIsItmD2YoiLCLvsL8iLCLZhNisIiwi77GAIiwi2YTYrSIsIu+xgSIsItmE2K4iLCLvsYIiLCLZhNmFIiwi77GDIiwi2YTZiSIsIu+xhCIsItmE2YoiLCLvsYUiLCLZhdisIiwi77GGIiwi2YXYrSIsIu+xhyIsItmF2K4iLCLvsYgiLCLZhdmFIiwi77GJIiwi2YXZiSIsIu+xiiIsItmF2YoiLCLvsYsiLCLZhtisIiwi77GMIiwi2YbYrSIsIu+xjSIsItmG2K4iLCLvsY4iLCLZhtmFIiwi77GPIiwi2YbZiSIsIu+xkCIsItmG2YoiLCLvsZEiLCLZh9isIiwi77GSIiwi2YfZhSIsIu+xkyIsItmH2YkiLCLvsZQiLCLZh9mKIiwi77GVIiwi2YrYrCIsIu+xliIsItmK2K0iLCLvsZciLCLZitiuIiwi77GYIiwi2YrZhSIsIu+xmSIsItmK2YkiLCLvsZoiLCLZitmKIiwi77GbIiwi2LDZsCIsIu+xnCIsItix2bAiLCLvsZ0iLCLZidmwIiwi77GeIiwiINmM2ZEiLCLvsZ8iLCIg2Y3ZkSIsIu+xoCIsIiDZjtmRIiwi77GhIiwiINmP2ZEiLCLvsaIiLCIg2ZDZkSIsIu+xoyIsIiDZkdmwIiwi77GkIiwi2KbYsSIsIu+xpSIsItim2LIiLCLvsaYiLCLYptmFIiwi77GnIiwi2KbZhiIsIu+xqCIsItim2YkiLCLvsakiLCLYptmKIiwi77GqIiwi2KjYsSIsIu+xqyIsItio2LIiLCLvsawiLCLYqNmFIiwi77GtIiwi2KjZhiIsIu+xriIsItio2YkiLCLvsa8iLCLYqNmKIiwi77GwIiwi2KrYsSIsIu+xsSIsItiq2LIiLCLvsbIiLCLYqtmFIiwi77GzIiwi2KrZhiIsIu+xtCIsItiq2YkiLCLvsbUiLCLYqtmKIiwi77G2Iiwi2KvYsSIsIu+xtyIsItir2LIiLCLvsbgiLCLYq9mFIiwi77G5Iiwi2KvZhiIsIu+xuiIsItir2YkiLCLvsbsiLCLYq9mKIiwi77G8Iiwi2YHZiSIsIu+xvSIsItmB2YoiLCLvsb4iLCLZgtmJIiwi77G/Iiwi2YLZiiIsIu+ygCIsItmD2KciLCLvsoEiLCLZg9mEIiwi77KCIiwi2YPZhSIsIu+ygyIsItmD2YkiLCLvsoQiLCLZg9mKIiwi77KFIiwi2YTZhSIsIu+yhiIsItmE2YkiLCLvsociLCLZhNmKIiwi77KIIiwi2YXYpyIsIu+yiSIsItmF2YUiLCLvsooiLCLZhtixIiwi77KLIiwi2YbYsiIsIu+yjCIsItmG2YUiLCLvso0iLCLZhtmGIiwi77KOIiwi2YbZiSIsIu+yjyIsItmG2YoiLCLvspAiLCLZidmwIiwi77KRIiwi2YrYsSIsIu+ykiIsItmK2LIiLCLvspMiLCLZitmFIiwi77KUIiwi2YrZhiIsIu+ylSIsItmK2YkiLCLvspYiLCLZitmKIiwi77KXIiwi2KbYrCIsIu+ymCIsItim2K0iLCLvspkiLCLYptiuIiwi77KaIiwi2KbZhSIsIu+ymyIsItim2YciLCLvspwiLCLYqNisIiwi77KdIiwi2KjYrSIsIu+yniIsItio2K4iLCLvsp8iLCLYqNmFIiwi77KgIiwi2KjZhyIsIu+yoSIsItiq2KwiLCLvsqIiLCLYqtitIiwi77KjIiwi2KrYriIsIu+ypCIsItiq2YUiLCLvsqUiLCLYqtmHIiwi77KmIiwi2KvZhSIsIu+ypyIsItis2K0iLCLvsqgiLCLYrNmFIiwi77KpIiwi2K3YrCIsIu+yqiIsItit2YUiLCLvsqsiLCLYrtisIiwi77KsIiwi2K7ZhSIsIu+yrSIsItiz2KwiLCLvsq4iLCLYs9itIiwi77KvIiwi2LPYriIsIu+ysCIsItiz2YUiLCLvsrEiLCLYtditIiwi77KyIiwi2LXYriIsIu+ysyIsIti12YUiLCLvsrQiLCLYttisIiwi77K1Iiwi2LbYrSIsIu+ytiIsIti22K4iLCLvsrciLCLYttmFIiwi77K4Iiwi2LfYrSIsIu+yuSIsIti42YUiLCLvsroiLCLYudisIiwi77K7Iiwi2LnZhSIsIu+yvCIsIti62KwiLCLvsr0iLCLYutmFIiwi77K+Iiwi2YHYrCIsIu+yvyIsItmB2K0iLCLvs4AiLCLZgdiuIiwi77OBIiwi2YHZhSIsIu+zgiIsItmC2K0iLCLvs4MiLCLZgtmFIiwi77OEIiwi2YPYrCIsIu+zhSIsItmD2K0iLCLvs4YiLCLZg9iuIiwi77OHIiwi2YPZhCIsIu+ziCIsItmD2YUiLCLvs4kiLCLZhNisIiwi77OKIiwi2YTYrSIsIu+ziyIsItmE2K4iLCLvs4wiLCLZhNmFIiwi77ONIiwi2YTZhyIsIu+zjiIsItmF2KwiLCLvs48iLCLZhditIiwi77OQIiwi2YXYriIsIu+zkSIsItmF2YUiLCLvs5IiLCLZhtisIiwi77OTIiwi2YbYrSIsIu+zlCIsItmG2K4iLCLvs5UiLCLZhtmFIiwi77OWIiwi2YbZhyIsIu+zlyIsItmH2KwiLCLvs5giLCLZh9mFIiwi77OZIiwi2YfZsCIsIu+zmiIsItmK2KwiLCLvs5siLCLZititIiwi77OcIiwi2YrYriIsIu+znSIsItmK2YUiLCLvs54iLCLZitmHIiwi77OfIiwi2KbZhSIsIu+zoCIsItim2YciLCLvs6EiLCLYqNmFIiwi77OiIiwi2KjZhyIsIu+zoyIsItiq2YUiLCLvs6QiLCLYqtmHIiwi77OlIiwi2KvZhSIsIu+zpiIsItir2YciLCLvs6ciLCLYs9mFIiwi77OoIiwi2LPZhyIsIu+zqSIsIti02YUiLCLvs6oiLCLYtNmHIiwi77OrIiwi2YPZhCIsIu+zrCIsItmD2YUiLCLvs60iLCLZhNmFIiwi77OuIiwi2YbZhSIsIu+zryIsItmG2YciLCLvs7AiLCLZitmFIiwi77OxIiwi2YrZhyIsIu+zsiIsItmA2Y7ZkSIsIu+zsyIsItmA2Y/ZkSIsIu+ztCIsItmA2ZDZkSIsIu+ztSIsIti32YkiLCLvs7YiLCLYt9mKIiwi77O3Iiwi2LnZiSIsIu+zuCIsIti52YoiLCLvs7kiLCLYutmJIiwi77O6Iiwi2LrZiiIsIu+zuyIsItiz2YkiLCLvs7wiLCLYs9mKIiwi77O9Iiwi2LTZiSIsIu+zviIsIti02YoiLCLvs78iLCLYrdmJIiwi77SAIiwi2K3ZiiIsIu+0gSIsItis2YkiLCLvtIIiLCLYrNmKIiwi77SDIiwi2K7ZiSIsIu+0hCIsItiu2YoiLCLvtIUiLCLYtdmJIiwi77SGIiwi2LXZiiIsIu+0hyIsIti22YkiLCLvtIgiLCLYttmKIiwi77SJIiwi2LTYrCIsIu+0iiIsIti02K0iLCLvtIsiLCLYtNiuIiwi77SMIiwi2LTZhSIsIu+0jSIsIti02LEiLCLvtI4iLCLYs9ixIiwi77SPIiwi2LXYsSIsIu+0kCIsIti22LEiLCLvtJEiLCLYt9mJIiwi77SSIiwi2LfZiiIsIu+0kyIsIti52YkiLCLvtJQiLCLYudmKIiwi77SVIiwi2LrZiSIsIu+0liIsIti62YoiLCLvtJciLCLYs9mJIiwi77SYIiwi2LPZiiIsIu+0mSIsIti02YkiLCLvtJoiLCLYtNmKIiwi77SbIiwi2K3ZiSIsIu+0nCIsItit2YoiLCLvtJ0iLCLYrNmJIiwi77SeIiwi2KzZiiIsIu+0nyIsItiu2YkiLCLvtKAiLCLYrtmKIiwi77ShIiwi2LXZiSIsIu+0oiIsIti12YoiLCLvtKMiLCLYttmJIiwi77SkIiwi2LbZiiIsIu+0pSIsIti02KwiLCLvtKYiLCLYtNitIiwi77SnIiwi2LTYriIsIu+0qCIsIti02YUiLCLvtKkiLCLYtNixIiwi77SqIiwi2LPYsSIsIu+0qyIsIti12LEiLCLvtKwiLCLYttixIiwi77StIiwi2LTYrCIsIu+0riIsIti02K0iLCLvtK8iLCLYtNiuIiwi77SwIiwi2LTZhSIsIu+0sSIsItiz2YciLCLvtLIiLCLYtNmHIiwi77SzIiwi2LfZhSIsIu+0tCIsItiz2KwiLCLvtLUiLCLYs9itIiwi77S2Iiwi2LPYriIsIu+0tyIsIti02KwiLCLvtLgiLCLYtNitIiwi77S5Iiwi2LTYriIsIu+0uiIsIti32YUiLCLvtLsiLCLYuNmFIiwi77S8Iiwi2KfZiyIsIu+0vSIsItin2YsiLCLvtZAiLCLYqtis2YUiLCLvtZEiLCLYqtit2KwiLCLvtZIiLCLYqtit2KwiLCLvtZMiLCLYqtit2YUiLCLvtZQiLCLYqtiu2YUiLCLvtZUiLCLYqtmF2KwiLCLvtZYiLCLYqtmF2K0iLCLvtZciLCLYqtmF2K4iLCLvtZgiLCLYrNmF2K0iLCLvtZkiLCLYrNmF2K0iLCLvtZoiLCLYrdmF2YoiLCLvtZsiLCLYrdmF2YkiLCLvtZwiLCLYs9it2KwiLCLvtZ0iLCLYs9is2K0iLCLvtZ4iLCLYs9is2YkiLCLvtZ8iLCLYs9mF2K0iLCLvtaAiLCLYs9mF2K0iLCLvtaEiLCLYs9mF2KwiLCLvtaIiLCLYs9mF2YUiLCLvtaMiLCLYs9mF2YUiLCLvtaQiLCLYtdit2K0iLCLvtaUiLCLYtdit2K0iLCLvtaYiLCLYtdmF2YUiLCLvtaciLCLYtNit2YUiLCLvtagiLCLYtNit2YUiLCLvtakiLCLYtNis2YoiLCLvtaoiLCLYtNmF2K4iLCLvtasiLCLYtNmF2K4iLCLvtawiLCLYtNmF2YUiLCLvta0iLCLYtNmF2YUiLCLvta4iLCLYttit2YkiLCLvta8iLCLYttiu2YUiLCLvtbAiLCLYttiu2YUiLCLvtbEiLCLYt9mF2K0iLCLvtbIiLCLYt9mF2K0iLCLvtbMiLCLYt9mF2YUiLCLvtbQiLCLYt9mF2YoiLCLvtbUiLCLYudis2YUiLCLvtbYiLCLYudmF2YUiLCLvtbciLCLYudmF2YUiLCLvtbgiLCLYudmF2YkiLCLvtbkiLCLYutmF2YUiLCLvtboiLCLYutmF2YoiLCLvtbsiLCLYutmF2YkiLCLvtbwiLCLZgdiu2YUiLCLvtb0iLCLZgdiu2YUiLCLvtb4iLCLZgtmF2K0iLCLvtb8iLCLZgtmF2YUiLCLvtoAiLCLZhNit2YUiLCLvtoEiLCLZhNit2YoiLCLvtoIiLCLZhNit2YkiLCLvtoMiLCLZhNis2KwiLCLvtoQiLCLZhNis2KwiLCLvtoUiLCLZhNiu2YUiLCLvtoYiLCLZhNiu2YUiLCLvtociLCLZhNmF2K0iLCLvtogiLCLZhNmF2K0iLCLvtokiLCLZhdit2KwiLCLvtooiLCLZhdit2YUiLCLvtosiLCLZhdit2YoiLCLvtowiLCLZhdis2K0iLCLvto0iLCLZhdis2YUiLCLvto4iLCLZhdiu2KwiLCLvto8iLCLZhdiu2YUiLCLvtpIiLCLZhdis2K4iLCLvtpMiLCLZh9mF2KwiLCLvtpQiLCLZh9mF2YUiLCLvtpUiLCLZhtit2YUiLCLvtpYiLCLZhtit2YkiLCLvtpciLCLZhtis2YUiLCLvtpgiLCLZhtis2YUiLCLvtpkiLCLZhtis2YkiLCLvtpoiLCLZhtmF2YoiLCLvtpsiLCLZhtmF2YkiLCLvtpwiLCLZitmF2YUiLCLvtp0iLCLZitmF2YUiLCLvtp4iLCLYqNiu2YoiLCLvtp8iLCLYqtis2YoiLCLvtqAiLCLYqtis2YkiLCLvtqEiLCLYqtiu2YoiLCLvtqIiLCLYqtiu2YkiLCLvtqMiLCLYqtmF2YoiLCLvtqQiLCLYqtmF2YkiLCLvtqUiLCLYrNmF2YoiLCLvtqYiLCLYrNit2YkiLCLvtqciLCLYrNmF2YkiLCLvtqgiLCLYs9iu2YkiLCLvtqkiLCLYtdit2YoiLCLvtqoiLCLYtNit2YoiLCLvtqsiLCLYttit2YoiLCLvtqwiLCLZhNis2YoiLCLvtq0iLCLZhNmF2YoiLCLvtq4iLCLZitit2YoiLCLvtq8iLCLZitis2YoiLCLvtrAiLCLZitmF2YoiLCLvtrEiLCLZhdmF2YoiLCLvtrIiLCLZgtmF2YoiLCLvtrMiLCLZhtit2YoiLCLvtrQiLCLZgtmF2K0iLCLvtrUiLCLZhNit2YUiLCLvtrYiLCLYudmF2YoiLCLvtrciLCLZg9mF2YoiLCLvtrgiLCLZhtis2K0iLCLvtrkiLCLZhdiu2YoiLCLvtroiLCLZhNis2YUiLCLvtrsiLCLZg9mF2YUiLCLvtrwiLCLZhNis2YUiLCLvtr0iLCLZhtis2K0iLCLvtr4iLCLYrNit2YoiLCLvtr8iLCLYrdis2YoiLCLvt4AiLCLZhdis2YoiLCLvt4EiLCLZgdmF2YoiLCLvt4IiLCLYqNit2YoiLCLvt4MiLCLZg9mF2YUiLCLvt4QiLCLYudis2YUiLCLvt4UiLCLYtdmF2YUiLCLvt4YiLCLYs9iu2YoiLCLvt4ciLCLZhtis2YoiLCLvuYkiLCLigL4iLCLvuYoiLCLigL4iLCLvuYsiLCLigL4iLCLvuYwiLCLigL4iLCLvuY0iLCJfIiwi77mOIiwiXyIsIu+5jyIsIl8iLCLvuoAiLCLYoSIsIu+6gSIsItiiIiwi77qCIiwi2KIiLCLvuoMiLCLYoyIsIu+6hCIsItijIiwi77qFIiwi2KQiLCLvuoYiLCLYpCIsIu+6hyIsItilIiwi77qIIiwi2KUiLCLvuokiLCLYpiIsIu+6iiIsItimIiwi77qLIiwi2KYiLCLvuowiLCLYpiIsIu+6jSIsItinIiwi77qOIiwi2KciLCLvuo8iLCLYqCIsIu+6kCIsItioIiwi77qRIiwi2KgiLCLvupIiLCLYqCIsIu+6kyIsItipIiwi77qUIiwi2KkiLCLvupUiLCLYqiIsIu+6liIsItiqIiwi77qXIiwi2KoiLCLvupgiLCLYqiIsIu+6mSIsItirIiwi77qaIiwi2KsiLCLvupsiLCLYqyIsIu+6nCIsItirIiwi77qdIiwi2KwiLCLvup4iLCLYrCIsIu+6nyIsItisIiwi77qgIiwi2KwiLCLvuqEiLCLYrSIsIu+6oiIsItitIiwi77qjIiwi2K0iLCLvuqQiLCLYrSIsIu+6pSIsItiuIiwi77qmIiwi2K4iLCLvuqciLCLYriIsIu+6qCIsItiuIiwi77qpIiwi2K8iLCLvuqoiLCLYryIsIu+6qyIsItiwIiwi77qsIiwi2LAiLCLvuq0iLCLYsSIsIu+6riIsItixIiwi77qvIiwi2LIiLCLvurAiLCLYsiIsIu+6sSIsItizIiwi77qyIiwi2LMiLCLvurMiLCLYsyIsIu+6tCIsItizIiwi77q1Iiwi2LQiLCLvurYiLCLYtCIsIu+6tyIsIti0Iiwi77q4Iiwi2LQiLCLvurkiLCLYtSIsIu+6uiIsIti1Iiwi77q7Iiwi2LUiLCLvurwiLCLYtSIsIu+6vSIsIti2Iiwi77q+Iiwi2LYiLCLvur8iLCLYtiIsIu+7gCIsIti2Iiwi77uBIiwi2LciLCLvu4IiLCLYtyIsIu+7gyIsIti3Iiwi77uEIiwi2LciLCLvu4UiLCLYuCIsIu+7hiIsIti4Iiwi77uHIiwi2LgiLCLvu4giLCLYuCIsIu+7iSIsIti5Iiwi77uKIiwi2LkiLCLvu4siLCLYuSIsIu+7jCIsIti5Iiwi77uNIiwi2LoiLCLvu44iLCLYuiIsIu+7jyIsIti6Iiwi77uQIiwi2LoiLCLvu5EiLCLZgSIsIu+7kiIsItmBIiwi77uTIiwi2YEiLCLvu5QiLCLZgSIsIu+7lSIsItmCIiwi77uWIiwi2YIiLCLvu5ciLCLZgiIsIu+7mCIsItmCIiwi77uZIiwi2YMiLCLvu5oiLCLZgyIsIu+7myIsItmDIiwi77ucIiwi2YMiLCLvu50iLCLZhCIsIu+7niIsItmEIiwi77ufIiwi2YQiLCLvu6AiLCLZhCIsIu+7oSIsItmFIiwi77uiIiwi2YUiLCLvu6MiLCLZhSIsIu+7pCIsItmFIiwi77ulIiwi2YYiLCLvu6YiLCLZhiIsIu+7pyIsItmGIiwi77uoIiwi2YYiLCLvu6kiLCLZhyIsIu+7qiIsItmHIiwi77urIiwi2YciLCLvu6wiLCLZhyIsIu+7rSIsItmIIiwi77uuIiwi2YgiLCLvu68iLCLZiSIsIu+7sCIsItmJIiwi77uxIiwi2YoiLCLvu7IiLCLZiiIsIu+7syIsItmKIiwi77u0Iiwi2YoiLCLvu7UiLCLZhNiiIiwi77u2Iiwi2YTYoiIsIu+7tyIsItmE2KMiLCLvu7giLCLZhNijIiwi77u5Iiwi2YTYpSIsIu+7uiIsItmE2KUiLCLvu7siLCLZhNinIiwi77u8Iiwi2YTYpyJdfSkpO2Z1bmN0aW9uIHJldmVyc2VJZlJ0bChlKXtjb25zdCB0PWUubGVuZ3RoO2lmKHQ8PTF8fCFmdW5jdGlvbiBpc1JUTFJhbmdlRm9yKGUpe2xldCB0PWlbMTNdO2lmKGU+PXQuYmVnaW4mJmU8dC5lbmQpcmV0dXJuITA7dD1pWzExXTtyZXR1cm4gZT49dC5iZWdpbiYmZTx0LmVuZH0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCBhPVtdO2ZvcihsZXQgcj10LTE7cj49MDtyLS0pYS5wdXNoKGVbcl0pO3JldHVybiBhLmpvaW4oIiIpfWNvbnN0IG89bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9Yy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobykscj17aXNXaGl0ZXNwYWNlOiEoIWF8fCFhWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFhfHwhYVsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIWF8fCFhWzNdKX07Yy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtjLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoNCksbj1hKDM2KTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iRm94aXRTYW5zLnBmYiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iRm94aXRTYW5zQm9sZC5wZmIiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJGb3hpdFNhbnNCb2xkSXRhbGljLnBmYiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iRm94aXRTYW5zSXRhbGljLnBmYiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EiO2UuV2luZ2RpbmdzPSJaYXBmRGluZ2JhdHMiO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09IlphcGZEaW5nYmF0cyJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzMpLG49YSgzNiksaT1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbjtpZihhJiZhLmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAscj1hLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09ciYmKHRbcl09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBlPWlbb107bj1yLmNoYXJDb2RlT2YoZSk7dCYmdm9pZCAwIT09dFtuXSYmKG49dFtuXSk7c1tuXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtuPXIuY2hhckNvZGVPZihvKTtzW25dPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsbi50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxpKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2Rpbmcsbj1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihuW2VdPXIpfX1uLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1uKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMzMpLGk9YSgzNykscz1hKDM1KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxpPWdldFVpbnQxNihlLHQrbik7bGV0IHMsbyxjO2lmKDQ9PT1pKXtnZXRVaW50MTYoZSx0K24rMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K24rNik+PjE7bz10K24rMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtuKzEyKTtvPXQrbisxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IG4uQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6aS5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOmkudG9wRGljdC5wcml2YXRlRGljdCYmaS50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4JiZpLmdsb2JhbFN1YnJJbmRleC5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3QmJnQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8raS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8raS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTttPXAraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2I9bStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1pLnNoaWZ0KCk6Yys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO2M9aS5wb3AoKTtvPWkucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgbj1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tuLmdseXBoSWRdLHQsYSxuLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO249bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPWkubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9aS5wb3AoKTtvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1pLnNoaWZ0KCk7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKX11PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihvKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihjKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bytpLnNoaWZ0KCk7Zj1jO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4OmkucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1pLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NylpLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpaS5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpaS5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle2kucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKGkubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IG49W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsbix0KTtuLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gbn1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxpLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgbixpLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6bj1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOmk9YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihpKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsbjtpZihhKXtyPTQ7bj1nZXRVaW50MzJ9ZWxzZXtyPTI7bj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBpPVtdO2xldCBzPW4odCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9bih0LGEpO2kucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gaX0oaSxzLGMpLG4sdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8sbixlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1uO2NvbnN0IGk9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IG49bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLGk9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9uLmdldFVpbnQzMigwKToyKm4uZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9uLmdldFVpbnQzMihjKToyKm4uZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxpKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLG49bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP24uc2V0VWludDMyKDAsMCk6bi5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7aSs9ZS53cml0ZShpLHQpO2k9aSszJi00O3MrPXI7YT9uLnNldFVpbnQzMihzLGkpOm4uc2V0VWludDE2KHMsaT4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShuLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDpufSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PW59c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjpuLGluc3RydWN0aW9uczppfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1uO3RoaXMuaW5zdHJ1Y3Rpb25zPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IG49dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJm4pe2lmKDImbil7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtuXj0xfWVsc2V7aWYoMiZuKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOm4sZ2x5cGhJbmRleDppLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoNCksbj1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3Qgbj1hKnQ7cmV0dXJue3JhbmdlOm4sZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1ufX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBpPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNippO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPGk7cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxuLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxpKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGksMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPGk7cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDMzKSxuPWEoMiksaT1hKDM2KSxzPWEoNCksbz1hKDgpLGM9YSg0Nyk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNSksbj1hKDQpLGk9YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbixpLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGkpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1pO3RoaXMud2lkdGg9bjt0aGlzLnN0YWNrLnB1c2gobixpLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGs9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PWspe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PWsmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUGF0dGVybj12b2lkIDA7dC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhKXtjb25zdCBuPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyR7aX1dLmApO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLG4saSxzLG8sYyxsXX07dmFyIHI9YSgyKSxuPWEoNSksaT1hKDEyKSxzPWEoNCk7Y29uc3Qgbz0yLGM9MyxsPTQsaD01LHU9NixkPTc7dC5QYXR0ZXJuPWNsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXsoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLGksZixnKXtjb25zdCBwPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbT1wLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG0pe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocCx0LGEsZixnKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxmLGcpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK20pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2kuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm59KTsoMCxyLndhcm4pKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19O2NsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBnZXQgU01BTExfTlVNQkVSKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlNNQUxMX05VTUJFUiIsMWUtNil9Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLG4scyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89aS5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzEwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGg+PXV8fG08PTApeygwLHIuaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLHc9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgUztmb3IobGV0IGU9MDtlPD0xMDtlKyspe3dbMF09aCtlKm07cCh3LDAseSwwKTtTPW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtiLnB1c2goW2UvMTAsdF0pfWxldCB4PSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7Uz1vLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO3g9ci5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSl9aWYoIWQpe2IudW5zaGlmdChbMCx4XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFmKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgYSxuLGkscyxsO2lmKHQ9PT1vKXtuPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07cz1udWxsO2w9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09Yyl7bj1bZVswXSxlWzFdXTtpPVtlWzNdLGVbNF1dO3M9ZVsyXTtsPWVbNV07YT0icmFkaWFsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4saSxzLGxdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCByPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkocik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGEpLTE7cmV0dXJuKHQ8PDgtYXwoMjU1JmUpPj5hKT4+PjB9aWYoOD09PWUmJjA9PT1hKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDthPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPXQmKDE8PGEpLTE7cmV0dXJuIHQ+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0Km4qKHJbMV0tclswXSkrclswXSxhKm4qKHJbM10tclsyXSkrclsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGE9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgaT0wLHM9NDtpPGU7aSsrLHMrPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtuW2ldPWUqYSoocltzKzFdLXJbc10pK3Jbc119Y29uc3QgaT10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKG4sMCxpLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IoaSwwKX19Y29uc3QgZj1mdW5jdGlvbiBnZXRCQ2xvc3VyZSgpe2NvbnN0IGU9W107cmV0dXJuIGZ1bmN0aW9uKHQpe2VbdF18fChlW3RdPWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KSk7cmV0dXJuIGVbdF19fSgpO2NsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIGdldCBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMyl9c3RhdGljIGdldCBNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfXN0YXRpYyBnZXQgVFJJQU5HTEVfREVOU0lUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJUUklBTkdMRV9ERU5TSVRZIiwyMCl9Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1pLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSk7cz0xfW4ucHVzaChvKX1pLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxuPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7bi5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDpuWzEyXT1vKzM7blsxM109bys0O25bMTRdPW8rNTtuWzE1XT1vKzY7bls4XT1vKzI7blsxMV09bys3O25bNF09bysxO25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107blsxMV09byszO25bNF09aDtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzExXT1vKzM7bls0XT1uWzJdO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX1uWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblswXV1bMF0tdFtuWzE1XV1bMF0rNioodFtuWzRdXVswXSt0W25bMV1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMTNdXVswXSt0W25bN11dWzBdKSkvOSwoLTQqdFtuWzBdXVsxXS10W25bMTVdXVsxXSs2Kih0W25bNF1dWzFdK3RbblsxXV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsxM11dWzFdK3Rbbls3XV1bMV0pKS85XSk7bls2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bM11dWzBdLXRbblsxMl1dWzBdKzYqKHRbblsyXV1bMF0rdFtuWzddXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzRdXVswXSt0W25bMTRdXVswXSkpLzksKC00KnRbblszXV1bMV0tdFtuWzEyXV1bMV0rNioodFtuWzJdXVsxXSt0W25bN11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bNF1dWzFdK3RbblsxNF1dWzFdKSkvOV0pO25bOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzEyXV1bMF0tdFtuWzNdXVswXSs2Kih0W25bOF1dWzBdK3RbblsxM11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bMTFdXVswXSt0W25bMV1dWzBdKSkvOSwoLTQqdFtuWzEyXV1bMV0tdFtuWzNdXVsxXSs2Kih0W25bOF1dWzFdK3RbblsxM11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bMTFdXVsxXSt0W25bMV1dWzFdKSkvOV0pO25bMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxNV1dWzBdLXRbblswXV1bMF0rNioodFtuWzExXV1bMF0rdFtuWzE0XV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsyXV1bMF0rdFtuWzhdXVswXSkpLzksKC00KnRbblsxNV1dWzFdLXRbblswXV1bMV0rNioodFtuWzExXV1bMV0rdFtuWzE0XV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsyXV1bMV0rdFtuWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzldPW8rMTM7blsxMF09bysxNDtuWzExXT1vKzc7bls0XT1vKzE7bls1XT1vKzEyO25bNl09bysxNTtuWzddPW8rODtuWzBdPW87blsxXT1vKzExO25bMl09bysxMDtuWzNdPW8rOTtpWzJdPWMrMTtpWzNdPWMrMjtpWzBdPWM7aVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07aD1uWzEzXTt1PW5bMTRdO2Q9blsxNV07blsxMl09ZDtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPXU7bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzJdO2g9aVszXTtpWzJdPWg7aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDI6bD1uWzE1XTtoPW5bMTFdO25bMTJdPW5bM107blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzddO25bOV09bys5O25bMTBdPW8rMTA7blsxMV09byszO25bNF09aDtuWzVdPW8rODtuWzZdPW8rMTE7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVszXTtpWzJdPWlbMV07aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bMV07bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1uWzJdO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPW5bM107blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7aVsyXT1pWzBdO2lbM109YztpWzBdPWlbMV07aVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxsPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksaD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPW5bc1swXV0seD1uW3NbMV1dLGs9bltzWzJdXSxDPW5bc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStrWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK2tbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkra1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStDWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK0NbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkrQ1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bbl0qRlt0XVtjXTtyKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPW4ubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7bi5wdXNoKGMpfX1wWzBdPWlbMF07bVswXT1zWzBdO3BbdV09aVszXTttW3VdPXNbMV07cFtnKmRdPWlbMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPWlbMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgbj0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbbl1bMF0scz10aGlzLmNvb3Jkc1tuXVsxXTtlPWU+aT9pOmU7dD10PnM/czp0O2E9YTxpP2k6YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IG49dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqbi5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1uW2VdO2lbYSsrXT10WzBdO2lbYSsrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxuPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspe25bYV0qPTI7aVthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dDtsZXQgaTtpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goaVt0XSk7bys9MX1lbHNle289ZTtzPVtpW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsbi5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLG4uTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLG4uTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixuLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgbi5EaWN0KG51bGwpO2kuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7aS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtpLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLGkpO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTApLG49YSgzKSxpPWEoNTEpLHM9YSg1Miksbz1hKDUzKSxjPWEoNTQpLGw9YSg0KSxoPWEoMzYpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTt2YXIgcj1hKDMpLG49YSgyKSxpPWEoNTYpLHM9YSg1KSxvPWEoNTcpO3QuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygci5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGEpO3JldHVybiBhfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2Ygci5SZWY/dD1lOmUgaW5zdGFuY2VvZiByLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGE7ZSBpbnN0YW5jZW9mIHIuUmVmP2E9ZTplIGluc3RhbmNlb2Ygci5EaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoYT1lLmRpY3QmJmUuZGljdC5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG4gb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihuKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsbil7Zm9yKGxldCBpPTAscz1yLmxlbmd0aDtpPHM7aSsrKXJbaV0oZSx0LGEsbitpKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBpPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighaXx8IXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89aS5sZW5ndGgvMixjPXMubGVuZ3RoLzI7aT10b011bHRpQXJyYXkoaSk7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBwLG07Zm9yKG09MDttPG47bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9aVtwXVswXSxyPWlbcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxuO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0sbj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChuW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLG4pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtuK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLG4pe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKGMsMCxhLG4pfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IGM9cDtmb3Iobj0wO248dTtuKyspe2k9ZVt0K25dO2Nbbl09aTtzKz1pKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3Iobj0wO248aDtuKyspe2k9Ylt5K25dO2xldCBlPW9bMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1vWzIqbisxXTtpPmUmJihpPWUpfW1bbl09aX1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgZ2V0IE1BWF9TVEFDS19TSVpFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9TVEFDS19TSVpFIiwxMDApfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguYXRhbihvKSk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6Yz10LnBvcCgpO289dC5wb3AoKTtvPjA/dC5wdXNoKG88PGMpOnQucHVzaChvPj5jKTticmVhaztjYXNlImNlaWxpbmciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG8pKTticmVhaztjYXNlImNvcHkiOm89dC5wb3AoKTt0LmNvcHkobyk7YnJlYWs7Y2FzZSJjb3MiOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobykpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKTt0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG8pL01hdGguTE4xMCk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLG4udW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PW59dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLG49W10saT10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtuLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxuPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChuKTtjb25zdCBpPWFbMiplXSxzPWFbMiplKzFdLG89W24udG9TdHJpbmcoKV07aWYoaT50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLGksIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtjb25zdCB0PVBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdO3JldHVybiB0fHwoUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV09bmV3IFBvc3RTY3JpcHRUb2tlbihzLk9QRVJBVE9SLGUpKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsaS5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2F9YCk7cmV0dXJuIGF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT0oZSYmZS5vbmx5UmVmcyk7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBuLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBnZXQgTlVNX1BBR0VTX1RIUkVTSE9MRCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJOVU1fUEFHRVNfVEhSRVNIT0xEIiwyKX1zdGF0aWMgZ2V0IE1JTl9JTUFHRVNfVE9fQ0FDSEUoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApfXN0YXRpYyBnZXQgTUFYX0JZVEVfU0laRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfWNvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO3JldHVybiEoKGE/YS5zaXplKyhhLmhhcyh0KT8wOjEpOjEpPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkUGFnZUluZGV4KGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJhZGRQYWdlSW5kZXgiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX10Lkdsb2JhbEltYWdlQ2FjaGU9R2xvYmFsSW1hZ2VDYWNoZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UgMTc5Mjw9dCYmdDw9MjIyMCYmKGE9IkFMIik7IlIiIT09YSYmIkFMIiE9PWEmJiJBTiIhPT1hfHxkKys7b1toXT1hfWlmKDA9PT1kKXtjPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGMpfWlmKC0xPT09dClpZihkL2w8LjMmJmw+NCl7Yz0hMDt0PTB9ZWxzZXtjPSExO3Q9MX1jb25zdCBmPVtdO2ZvcihoPTA7aDxsOysraClmW2hdPXQ7Y29uc3QgZz1pc09kZCh0KT8iUiI6IkwiLHA9ZyxtPXA7bGV0IGIseT1wO2ZvcihoPTA7aDxsOysraCkiTlNNIj09PW9baF0/b1toXT15Onk9b1toXTt5PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iQUwiPT09eT8iQU4iOiJFTiI6IlIiIT09YiYmIkwiIT09YiYmIkFMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJBTCI9PT1iJiYob1toXT0iUiIpfWZvcihoPTE7aDxsLTE7KytoKXsiRVMiPT09b1toXSYmIkVOIj09PW9baC0xXSYmIkVOIj09PW9baCsxXSYmKG9baF09IkVOIik7IkNTIiE9PW9baF18fCJFTiIhPT1vW2gtMV0mJiJBTiIhPT1vW2gtMV18fG9baCsxXSE9PW9baC0xXXx8KG9baF09b1toLTFdKX1mb3IoaD0wO2g8bDsrK2gpaWYoIkVOIj09PW9baF0pe2ZvcihsZXQgZT1oLTE7ZT49MCYmIkVUIj09PW9bZV07LS1lKW9bZV09IkVOIjtmb3IobGV0IGU9aCsxO2U8bCYmIkVUIj09PW9bZV07KytlKW9bZV09IkVOIn1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiV1MiIT09YiYmIkVTIiE9PWImJiJFVCIhPT1iJiYiQ1MiIT09Ynx8KG9baF09Ik9OIil9eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkwiPT09eT8iTCI6IkVOIjoiUiIhPT1iJiYiTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpaWYoIk9OIj09PW9baF0pe2NvbnN0IGU9ZmluZFVuZXF1YWwobyxoKzEsIk9OIik7bGV0IHQ9cDtoPjAmJih0PW9baC0xXSk7bGV0IGE9bTtlKzE8bCYmKGE9b1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJnNldFZhbHVlcyhvLGgsZSx0KTtoPWUtMX1mb3IoaD0wO2g8bDsrK2gpIk9OIj09PW9baF0mJihvW2hdPWcpO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdO2lzRXZlbihmW2hdKT8iUiI9PT1iP2ZbaF0rPTE6IkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9Mik6IkwiIT09YiYmIkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9MSl9bGV0IHcsUz0tMSx4PTk5O2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKXt3PWZbaF07Uzx3JiYoUz13KTt4PncmJmlzT2RkKHcpJiYoeD13KX1mb3Iodz1TO3c+PXg7LS13KXtsZXQgZT0tMTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraClpZihmW2hdPHcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocyxlLGgpO2U9LTF9fWVsc2UgZTwwJiYoZT1oKTtlPj0wJiZyZXZlcnNlVmFsdWVzKHMsZSxmLmxlbmd0aCl9Zm9yKGg9MCx1PXMubGVuZ3RoO2g8dTsrK2gpe2NvbnN0IGU9c1toXTsiPCIhPT1lJiYiPiIhPT1lfHwoc1toXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHMuam9pbigiIiksYyl9O3ZhciByPWEoMik7Y29uc3Qgbj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsbjtmb3Iocj10LG49ZS5sZW5ndGg7cjxuOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGEscil7Zm9yKGxldCBuPXQ7bjxhOysrbillW25dPXJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsbj1hLTE7cjxuOysrciwtLW4pe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbbl07ZVtuXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IHM9W10sbz1bXX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtjb25zdCBhPShlPj4+MCkudG9TdHJpbmcoMTYpLHI9KHQ+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIGEucGFkU3RhcnQoOCwiMCIpK3IucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PcGVyYXRvckxpc3Q9dm9pZCAwO3ZhciByPWEoMik7ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGEscixuKXtsZXQgaT1lO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aT1pW2FdfHwoaVthXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46YSxpdGVyYXRlRm46cixwcm9jZXNzRm46bn19Y29uc3Qgbj1bXTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXIuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiBhW3RdPT09ci5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gYVt0XT09PXIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIscz1pLTMsbz1pLTIsYz1pLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBoPTA7Y29uc3QgdT1bXTtsZXQgZD0wLGY9MSxnPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW28rKGU8PDIpXSxhPW5bYysoZTw8MildWzBdO2lmKGYrYS53aWR0aD4xZTMpe2g9TWF0aC5tYXgoaCxmKTtnKz1kKzI7Zj0wO2Q9MH11LnB1c2goe3RyYW5zZm9ybTp0LHg6Zix5OmcsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtmKz1hLndpZHRoKzI7ZD1NYXRoLm1heChkLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGgsZikrMSxtPWcrZCsxLGI9bmV3IFVpbnQ4QXJyYXkocCptKjQpLHk9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bYysoZTw8MildWzBdLmRhdGEsYT11W2VdLnc8PDI7bGV0IHI9MCxpPXVbZV0ueCt1W2VdLnkqcDw8MjtiLnNldCh0LnN1YmFycmF5KDAsYSksaS15KTtmb3IobGV0IG49MCxzPXVbZV0uaDtuPHM7bisrKXtiLnNldCh0LnN1YmFycmF5KHIscithKSxpKTtyKz1hO2krPXl9Yi5zZXQodC5zdWJhcnJheShyLWEsciksaSk7Zm9yKDtpPj0wOyl7dFtpLTRdPXRbaV07dFtpLTNdPXRbaSsxXTt0W2ktMl09dFtpKzJdO3RbaS0xXT10W2krM107dFtpK2FdPXRbaSthLTRdO3RbaSthKzFdPXRbaSthLTNdO3RbaSthKzJdPXRbaSthLTJdO3RbaSthKzNdPXRbaSthLTFdO2ktPXl9fWEuc3BsaWNlKHMsNCpsLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFt7d2lkdGg6cCxoZWlnaHQ6bSxraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTpifSx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLHI9dGhpcy5zdGF0ZSxpPXRoaXMubWF0Y2g7aWYoIXImJiFpJiZ0KzE9PT1hJiYhbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShzLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8bilbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe3MuaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShzKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIGdldCBDSFVOS19TSVpFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9c3RhdGljIGdldCBDSFVOS19TSVpFX0FCT1VUKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkVfQUJPVVQiLHRoaXMuQ0hVTktfU0laRS01KX1jb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGEmJnQuZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19dC5PcGVyYXRvckxpc3Q9T3BlcmF0b3JMaXN0fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDYyKSxpPWEoNSkscz1hKDEyKSxvPWEoMTcpLGM9YSgyNSksbD1hKDI4KSxoPWEoMyk7ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGEscil7KGU9dCtlKmEpPDA/ZT0wOmU+ciYmKGU9cik7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPW4qaTtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvbixsPXIvaTtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkobiksbT1hO2ZvcihoPTA7aDxuO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8aTtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PG47dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEsc21hc2s6bz1udWxsLG1hc2s6Yz1udWxsLGlzTWFzazp1PSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KXt0aGlzLmltYWdlPWE7Y29uc3QgZz1hLmRpY3QscD1nLmdldCgiRiIsIkZpbHRlciIpO2xldCBtO2lmKHAgaW5zdGFuY2VvZiBoLk5hbWUpbT1wLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHApKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihwWzBdKTt0IGluc3RhbmNlb2YgaC5OYW1lJiYobT10Lm5hbWUpfXN3aXRjaChtKXtjYXNlIkpQWERlY29kZSI6Y29uc3QgZT1uZXcgbC5KcHhJbWFnZTtlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKTthLnN0cmVhbS5yZXNldCgpO2Eud2lkdGg9ZS53aWR0aDthLmhlaWdodD1lLmhlaWdodDthLmJpdHNQZXJDb21wb25lbnQ9ZS5iaXRzUGVyQ29tcG9uZW50O2EubnVtQ29tcHM9ZS5jb21wb25lbnRzQ291bnQ7YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBiPWcuZ2V0KCJXIiwiV2lkdGgiKSx5PWcuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1ifHxhLmhlaWdodCE9PXkpKXsoMCxyLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2I9YS53aWR0aDt5PWEuaGVpZ2h0fWlmKGI8MXx8eTwxKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke2J9IG9yIGhlaWdodDogJHt5fWApO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD15O3RoaXMuaW50ZXJwb2xhdGU9Zy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWcuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWcuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdz1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXcpe3c9Zy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdyl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt3PTF9fXRoaXMuYnBjPXc7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1nLmdldFJhdygiQ1MiKXx8Zy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighaSl7KDAsci5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1oLk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9aC5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0Omk9aC5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHN9dGhpcy5kZWNvZGU9Zy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHcpfHx1JiYhcy5Db2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dyktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD10aGlzLmNvbG9yU3BhY2UmJiJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3Qgbj10aGlzLmRlY29kZVthXSxpPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8oaS1uKS9lOmktbjt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9uOmUqbn19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTpuLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTpuLGludGVycG9sYXRlOml9KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8biYmIShzPT09bykpaWYobil7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihuKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOml9fXN0YXRpYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06aSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjPSEwfSl7Y29uc3QgbD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGwpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6bH07aWYoYyYmci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksaT1yLmdldENvbnRleHQoIjJkIix7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZX0pLGM9aS5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzplLGRlc3Q6Yy5kYXRhLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzfSk7aS5wdXRJbWFnZURhdGEoYywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmksaW50ZXJwb2xhdGU6b30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLndpZHRofHwwLHRoaXMubWFzayYmdGhpcy5tYXNrLndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLmhlaWdodHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxpPW5bMF0scz1uWzFdLG89blsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1pKSpyK2k7ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319Y3JlYXRlSW1hZ2VEYXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQsbj17d2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGg9cyppKmwrNz4+MztpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1sP2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1zJiZhPT09byl7bi5raW5kPWU7bi5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse30pO2lmKHRoaXMubmVlZHNEZWNvZGUpeygwLHIuYXNzZXJ0KShlPT09ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9bi5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIG59aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlPW8qaDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO24uZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIG59fX1jb25zdCB1PXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse2ludGVybmFsOiEwfSksZD0wfHUubGVuZ3RoL2gqYS9vLGY9dGhpcy5nZXRDb21wb25lbnRzKHUpO2xldCBnLHA7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtuLmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSo0KTtnPTE7cD0hMDt0aGlzLmZpbGxPcGFjaXR5KG4uZGF0YSx0LGEsZCxmKX1lbHNle24ua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7bi5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqMyk7Zz0wO3A9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2Iobi5kYXRhLHMsbyx0LGEsZCxsLGYsZyk7cCYmdGhpcy51bmRvUHJlYmxlbmQobi5kYXRhLHQsZCk7cmV0dXJuIG59ZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxzPWEqdCppKzc+PjMsbz10aGlzLmdldEltYWdlQnl0ZXMobipzLHtpbnRlcm5hbDohMH0pLGM9dGhpcy5nZXRDb21wb25lbnRzKG8pO2xldCBsLGg7aWYoMT09PWkpe2g9YSpuO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGw9MDtsPGg7KytsKWVbbF09Y1tsXS0xJjI1NTtlbHNlIGZvcihsPTA7bDxoOysrbCllW2xdPTI1NSYtY1tsXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoYyk7aD1hKm47Y29uc3QgdT0yNTUvKCgxPDxpKS0xKTtmb3IobD0wO2w8aDsrK2wpZVtsXT11KmNbbF19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDppPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFuO2NvbnN0IHM9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihpfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIHM7KDAsci5hc3NlcnQpKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24gYXBwbHlNYXNrSW1hZ2VEYXRhKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDppLGhlaWdodDpzLGludmVyc2VEZWNvZGU6bz0hMX0pe2NvbnN0IGM9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxoXT1vP1swLGNdOltjLDBdLHU9aT4+MyxkPTcmaSxmPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtuKytdPTEyOCZyP2g6bDthW24rK109NjQmcj9oOmw7YVtuKytdPTMyJnI/aDpsO2FbbisrXT0xNiZyP2g6bDthW24rK109OCZyP2g6bDthW24rK109NCZyP2g6bDthW24rK109MiZyP2g6bDthW24rK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtuKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpufX07dmFyIHI9YSgyKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6YSx4cmVmOm89bnVsbCxoYXNYZmE6bD0hMSx4ZmFEYXRhc2V0c1JlZjpoPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTp1PSExLGFjcm9Gb3JtUmVmOmQ9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpnPW51bGx9KXtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGhhc1hmYURhdGFzZXRzRW50cnk6YSxhY3JvRm9ybVJlZjpuLGFjcm9Gb3JtOm8sbmV3UmVmczpjLHhyZWY6bCx4cmVmSW5mbzpofSl7aWYobnVsbD09PWwpcmV0dXJuO2lmKCFhKXtpZighbil7KDAsci53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtyZXR1cm59Y29uc3QgZT1vLmdldCgiWEZBIiksYT1lLnNsaWNlKCk7YS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Euc3BsaWNlKDMsMCx0KTtvLnNldCgiWEZBIixhKTtjb25zdCBpPWwuZW5jcnlwdDtsZXQgcz1udWxsO2kmJihzPWkuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKSk7Y29uc3QgaD1bYCR7bi5udW19ICR7bi5nZW59IG9ialxuYF07d3JpdGVEaWN0KG8saCxzKTtoLnB1c2goIlxuIik7by5zZXQoIlhGQSIsZSk7Yy5wdXNoKHtyZWY6bixkYXRhOmguam9pbigiIil9KX1pZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6bn09ZTtpZighdCljb250aW51ZTtjb25zdCBvPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKHQpLDApO28/QXJyYXkuaXNBcnJheShuKT9vLmNoaWxkTm9kZXM9bi5tYXAoKGU9Pm5ldyBzLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOm8uY2hpbGROb2Rlcz1bbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0obC5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGMpfWNvbnN0IHU9bC5lbmNyeXB0O2lmKHUpe2U9dS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3QgZD1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7Yy5wdXNoKHtyZWY6dCxkYXRhOmR9KX0oe3hmYURhdGE6Zyx4ZmFEYXRhc2V0c1JlZjpoLGhhc1hmYURhdGFzZXRzRW50cnk6dSxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmYsbmV3UmVmczphLHhyZWY6byx4cmVmSW5mbzp0fSk7Y29uc3QgcD1uZXcgbi5EaWN0KG51bGwpLG09dC5uZXdSZWY7bGV0IGIseTtjb25zdCB3PWUuYXQoLTEpO2lmKDEwPT09d3x8MTM9PT13KXtiPVtdO3k9ZS5sZW5ndGh9ZWxzZXtiPVsiXG4iXTt5PWUubGVuZ3RoKzF9cC5zZXQoIlNpemUiLG0ubnVtKzEpO3Auc2V0KCJQcmV2Iix0LnN0YXJ0WFJlZik7cC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIlhSZWYiKSk7bnVsbCE9PXQucm9vdFJlZiYmcC5zZXQoIlJvb3QiLHQucm9vdFJlZik7bnVsbCE9PXQuaW5mb1JlZiYmcC5zZXQoIkluZm8iLHQuaW5mb1JlZik7bnVsbCE9PXQuZW5jcnlwdFJlZiYmcC5zZXQoIkVuY3J5cHQiLHQuZW5jcnlwdFJlZik7YS5wdXNoKHtyZWY6bSxkYXRhOiIifSk7YT1hLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Y29uc3QgUz1bWzAsMSw2NTUzNV1dLHg9WzAsMV07bGV0IGs9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTp0fW9mIGEpe2s9TWF0aC5tYXgoayx5KTtTLnB1c2goWzEseSxNYXRoLm1pbihlLmdlbiw2NTUzNSldKTt5Kz10Lmxlbmd0aDt4LnB1c2goZS5udW0sMSk7Yi5wdXNoKHQpfXAuc2V0KCJJbmRleCIseCk7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCldO2xldCBzPWkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtpLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpe3dyaXRlU3RyaW5nKGUsbCxvKTtsKz1lLmxlbmd0aH1yZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKCgwLGMuY2FsY3VsYXRlTUQ1KShvKSl9KHksdCk7cC5zZXQoIklEIixbdC5maWxlSWRzWzBdLGVdKX1jb25zdCBDPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoaykvOCksMl0sdj0oQ1swXStDWzFdK0NbMl0pKlMubGVuZ3RoO3Auc2V0KCJXIixDKTtwLnNldCgiTGVuZ3RoIix2KTtiLnB1c2goYCR7bS5udW19ICR7bS5nZW59IG9ialxuYCk7d3JpdGVEaWN0KHAsYixudWxsKTtiLnB1c2goIiBzdHJlYW1cbiIpO2NvbnN0IEY9Yi5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKSxPPWBcbmVuZHN0cmVhbVxuZW5kb2JqXG5zdGFydHhyZWZcbiR7eX1cbiUlRU9GXG5gLFQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrRit2K08ubGVuZ3RoKTtULnNldChlKTtsZXQgTT1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBiKXt3cml0ZVN0cmluZyhlLE0sVCk7TSs9ZS5sZW5ndGh9Zm9yKGNvbnN0W2UsdCxhXW9mIFMpe009d3JpdGVJbnQoZSxDWzBdLE0sVCk7TT13cml0ZUludCh0LENbMV0sTSxUKTtNPXdyaXRlSW50KGEsQ1syXSxNLFQpfXdyaXRlU3RyaW5nKE8sTSxUKTtyZXR1cm4gVH07dC53cml0ZURpY3Q9d3JpdGVEaWN0O3Qud3JpdGVPYmplY3Q9ZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEscil7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBuLkRpY3Q/d3JpdGVEaWN0KHQsYSxyKTp0IGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZ3cml0ZVN0cmVhbSh0LGEscik7YS5wdXNoKCJcbmVuZG9ialxuIil9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNjQpLG89YSg1KSxjPWEoNjUpO2Z1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHIpfSBgKTt3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXt3cml0ZURpY3QoZS5kaWN0LHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iKTtsZXQgcj1lLmdldFN0cmluZygpO251bGwhPT1hJiYocj1hLmVuY3J5cHRTdHJpbmcocikpO3QucHVzaChyLCJcbmVuZHN0cmVhbVxuIil9ZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpIWZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2xldCByPSEwO2Zvcihjb25zdCBuIG9mIGUpe3I/cj0hMTp0LnB1c2goIiAiKTt3cml0ZVZhbHVlKG4sdCxhKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtudWxsIT09YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIG4uRGljdD93cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/d3JpdGVTdHJlYW0oZSx0LGEpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLHIud2FybikoYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsYSxyKXtmb3IobGV0IG49dCthLTE7bj5hLTE7bi0tKXtyW25dPTI1NSZlO2U+Pj04fXJldHVybiBhK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGEpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylhW3Qrcl09MjU1JmUuY2hhckNvZGVBdChyKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2RlcyYmdGhpcy5jaGlsZE5vZGVzLmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgbj10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W2ldPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBpLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9bi5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYobi5jaGlsZE5vZGVzJiYwIT09bi5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtuLDBdKTtuPW4uY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7bj1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDY2KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsbj0wO3I8MjU2Oysrcil7Y29uc3QgaT10W3JdO249bitpK2VbciVhXSYyNTU7dFtyXT10W25dO3Rbbl09aX10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLG49ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IHM9MDtzPG47KytzKXt0PXQrMSYyNTU7Y29uc3Qgbj1yW3RdO2E9YStuJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09bjtpW3NdPWVbc11ecltuK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gaX1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixuKXtsZXQgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9bis3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxuOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109bjw8MyYyNTU7aFt1KytdPW4+PjUmMjU1O2hbdSsrXT1uPj4xMyYyNTU7aFt1KytdPW4+PjIxJjI1NTtoW3UrK109bj4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLG49aSxsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3QgaT1wLHM9bithK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtuPWl9aT1pK258MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IG49MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1uLGQ9aSxtPXMsdz1vLFM9Yyx4PWwsaz1oLEM9dTtmb3IocD0wO3A8NjQ7KytwKXt0PUMrc2lnbWFQcmltZShTKStjaChTLHgsaykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtDPWs7az14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9bj1uK3J8MDtpPWkrZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK2t8MDt1PXUrQ3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixuKXtlLmFzc2lnbih0KTtlLmFuZChhKTtuLmFzc2lnbih0KTtuLm5vdCgpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIG1haihlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24uYW5kKHIpO2UueG9yKG4pO24uYXNzaWduKGEpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLG49ITEpe2xldCBpLHMsbyxjLGwsaCx1LGQ7aWYobil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKGkpO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO2suYXNzaWduKGMpO0MuYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxDLEQpO1QuYWRkKEUpO2NoKEUsQyx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9QztrLmFkZChUKTtDPWs7az14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKGspO2wuYWRkKEMpO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKG4pe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixuO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpaVthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W2lbZV1dLHI9dGhpcy5fbWl4W2lbZSsxXV0sbj10aGlzLl9taXhbaVtlKzJdXSxzPXRoaXMuX21peFtpW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5uPj4+MTZebjw8MTZecz4+PjI0XnM8PDg7aVtlXT1hPj4+MjQmMjU1O2lbZSsxXT1hPj4xNiYyNTU7aVtlKzJdPWE+PjgmMjU1O2lbZSszXT0yNTUmYX19YT1pWzEzXTtpWzEzXT1pWzldO2lbOV09aVs1XTtpWzVdPWlbMV07aVsxXT1hO2E9aVsxNF07cj1pWzEwXTtpWzE0XT1pWzZdO2lbMTBdPWlbMl07aVs2XT1hO2lbMl09cjthPWlbMTVdO3I9aVsxMV07bj1pWzddO2lbMTVdPWlbM107aVsxMV09YTtpWzddPXI7aVszXT1uO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2lbZV1ePXRbZV19cmV0dXJuIGl9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsbixpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07aT1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1pO2k9c1syXTtuPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPWk7c1sxNF09bjtpPXNbM107bj1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPWk7c1sxMV09bjtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0sbj1zW2UrMl0saT1zW2UrM107cj10XmFebl5pO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2Febl07c1tlKzJdXj1yXnRoaXMuX21peENvbFtuXmldO3NbZSszXV49cl50aGlzLl9taXhDb2xbaV50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltuXT1lW3RdOysrbjtpZihuPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj1zO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqaS5sZW5ndGg7aWYodCl7Y29uc3QgZT1pLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7aVtpLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9aS5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChpW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjb25zdCBsPWZ1bmN0aW9uIFBERjIwQ2xvc3VyZSgpe2Z1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1yZXR1cm4gY2xhc3MgUERGMjB7aGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1jYWxjdWxhdGVQREYyMEhhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1jYWxjdWxhdGVQREYyMEhhc2goZSxuLFtdKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkoaSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO24uc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IGk9Y2FsY3VsYXRlUERGMjBIYXNoKGUsbixhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKS5kZWNyeXB0QmxvY2sociwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtjb25zdCBuPWNhbGN1bGF0ZVBERjIwSGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fX0oKTt0LlBERjIwPWw7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBoPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBoPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fDEhPT1oJiYyIT09aCYmNCE9PWgmJjUhPT1oKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWg7bGV0IHU9YS5nZXQoIkxlbmd0aCIpO2lmKCF1KWlmKGg8PTMpdT00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTt1PWEmJmEuZ2V0KCJMZW5ndGgiKXx8MTI4O3U8NDAmJih1PDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDQwfHx1JTghPTApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IGQ9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgwLDMyKSxmPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCwzMiksZz1hLmdldCgiUCIpLHA9YS5nZXQoIlIiKSxtPSg0PT09aHx8NT09PWgpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1tO2NvbnN0IGI9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgeSx3O2lmKG8pe2lmKDY9PT1wKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9eT0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1oKXc9cHJlcGFyZUtleURhdGEoYix5LGQsZixnLHAsdSxtKTtlbHNle2NvbnN0IGU9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgzMiw0MCksdD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJPIikpLnN1YmFycmF5KDQwLDQ4KSxuPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCw0OCksaT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLnN1YmFycmF5KDMyLDQwKSxzPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTt3PWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxoLHUsZCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZjtmPTY9PT1lP25ldyBsOm5ldyBQREYxNztyZXR1cm4gZi5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/Zi5nZXRVc2VyS2V5KHQsYyx1KTp0Lmxlbmd0aCYmZi5jaGVja093bmVyUGFzc3dvcmQodCxyLGksYSk/Zi5nZXRPd25lcktleSh0LG4saSxoKTpudWxsfShwLHksZCxlLHQsbixmLGkscyxvLGMpfWlmKCF3JiYhbyl0aHJvdyBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHIuUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCk7aWYoIXcmJm8pe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlVXNlclBhc3N3b3JkKHQsYSxyLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBvPTA7Y29uc3QgYz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtvPGM7KytvKWlbb109dFtvXTtsZXQgbD0wO2Zvcig7bzwzMjspaVtvKytdPWVbbCsrXTtsZXQgaD1zKGksMCxvKTtjb25zdCB1PW4+PjM7aWYocj49Mylmb3IobD0wO2w8NTA7KytsKWg9cyhoLDAsaC5sZW5ndGgpO2xldCBkLGY7aWYocj49Myl7Zj1hO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGw9MTk7bD49MDtsLS0pe2ZvcihsZXQgdD0wO3Q8dTsrK3QpZVt0XT1oW3RdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcihlKTtmPWQuZW5jcnlwdEJsb2NrKGYpfX1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoaC5zdWJhcnJheSgwLHUpKTtmPWQuZW5jcnlwdEJsb2NrKGEpfXJldHVybiBmfSh5LGQscCx1KTt3PXByZXBhcmVLZXlEYXRhKGIsdCxkLGYsZyxwLHUsbSl9aWYoIXcpdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsci5QYXNzd29yZFJlc3BvbnNlcy5JTkNPUlJFQ1RfUEFTU1dPUkQpO3RoaXMuZW5jcnlwdGlvbktleT13O2lmKGg+PTQpe2NvbnN0IGU9YS5nZXQoIkNGIik7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGUuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPWU7dGhpcy5zdG1mPWEuZ2V0KCJTdG1GIil8fHQ7dGhpcy5zdHJmPWEuZ2V0KCJTdHJGIil8fHQ7dGhpcy5lZmY9YS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYnVpbGRDaXBoZXJDb25zdHJ1Y3Rvcih0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT1idWlsZE9iamVjdEtleShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxyPWZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHIscil9fX0oKTt0LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9aH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRlY3J5cHRTdHJlYW09dm9pZCAwO3ZhciByPWEoMTcpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYXRhbG9nPXZvaWQgMDt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMykscz1hKDY4KSxvPWEoNSksYz1hKDY5KSxsPWEoMTIpLGg9YSg3MCksdT1hKDU3KSxkPWEoNzEpLGY9YSg3Mik7ZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihlKXtlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOm51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IHUuR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgaS5SZWZTZXR9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLG4ud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgaS5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxyPXRoaXMueHJlZi5mZXRjaChlLGEpO2lmKHIgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJnIuZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1yLmRpY3QuZ2V0KCJUeXBlIiksYT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsaS5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLGkuaXNOYW1lKShhLCJYTUwiKSl7Y29uc3QgZT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBpLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gbi5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1uLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG89IiI7Y29uc3QgYz1uZXcgcy5OdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgbD0iIixoPTE7Zm9yKGxldCBlPTAscz10aGlzLm51bVBhZ2VzO2U8cztlKyspe2NvbnN0IHM9Yy5nZXQoZSk7aWYodm9pZCAwIT09cyl7aWYoIShzIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocy5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJTIikpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKHMuaGFzKCJQIikpe2NvbnN0IGU9cy5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO289KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9ZWxzZSBvPSIiO2lmKHMuaGFzKCJTdCIpKXtjb25zdCBlPXMuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aD1lfWVsc2UgaD0xfXN3aXRjaChhKXtjYXNlIkQiOmw9aDticmVhaztjYXNlIlIiOmNhc2UiciI6bD0oMCxyLnRvUm9tYW5OdW1lcmFscykoaCwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PTY1LGk9OTcscz0iYSI9PT1hP2k6dCxvPWgtMTtsPVN0cmluZy5mcm9tQ2hhckNvZGUocytvJWUpLnJlcGVhdChNYXRoLmZsb29yKG8vZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtsPSIifXRbZV09bytsO2grK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXtjb25zdCByPWUuZ2V0KGEpO2xldCBzO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKHM9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KCgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocz1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYocz1yKTticmVhaztkZWZhdWx0OigwLG4ud2FybikoYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cyl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFthXT1zfWVsc2UoMCxuLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPW5ldyBpLkRpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLG4ub2JqZWN0U2l6ZSkodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IGguRmlsZVNwZWMocix0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7dHx8KHQ9bmV3IGkuRGljdCh0aGlzLnhyZWYpKTt0LnNldCgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKSxyKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtpZighKGEgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO251bGw9PT10JiYodD1uZXcgTWFwKTtyPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKTt0LnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLGEpfWNvbnN0IGE9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxyLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxuLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBhPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgciBvZiBhKWlmKHIubG9hZGVkTmFtZT09PWUpe3IuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpeygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgaS5SZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHIpO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQocik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhyKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7by5oYXMocil8fG8ucHV0KHIsMSk7Yy5oYXMocil8fGMucHV0KHIsbCk7aWYobD09PWUpcmV0dXJuW3Uscl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PXI7bGV0IHU9ci5nZXRSYXcoIkNvdW50Iik7dSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpO2lmKE51bWJlci5pc0ludGVnZXIodSkmJnU+PTApe2gmJiFvLmhhcyhoKSYmby5wdXQoaCx1KTtpZihsK3U8PWUpe2wrPXU7Y29udGludWV9fWxldCBkPXIuZ2V0UmF3KCJLaWRzIik7ZCBpbnN0YW5jZW9mIGkuUmVmJiYoZD1hd2FpdCBzLmZldGNoQXN5bmMoZCkpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYobD09PWUpcmV0dXJuW3IsbnVsbF07bCsrO2NvbnRpbnVlfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChkW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0IHQ9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgaS5SZWZTZXQscz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHMpO2NvbnN0IG89bmV3IE1hcCxjPXRoaXMueHJlZixsPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGg9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFsLmhhcyh0KSYmbC5wdXQodCxoKTtvLnNldChoKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcih0KXtpZih0IGluc3RhbmNlb2Ygci5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHQ7by5zZXQoaCsrLFt0LG51bGxdKX1mb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLHtjdXJyZW50Tm9kZTpyLHBvc0luS2lkczpzfT1lO2xldCBvPXIuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtvPWF3YWl0IGMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49by5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3QgbD1vW3NdO2xldCBoO2lmKGwgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMobCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KGwpO3RyeXtoPWF3YWl0IGMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1sO2lmKCEoaCBpbnN0YW5jZW9mIGkuRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBpLlJlZil0cnl7dT1hd2FpdCBjLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLGkuaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsbCBpbnN0YW5jZW9mIGkuUmVmP2w6bnVsbCk6dC5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gb31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLGkuaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxpLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBpLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgaS5SZWYpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxpLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2Esbl09dDtyKz1hO3JldHVybiBuZXh0KG4pfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsbi53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2YgaS5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIGkuUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBpLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIGkuRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBpLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLGkuaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsbi53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBpLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3Qgaz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjprLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLlJlZiYmay5wdXNoKGUudG9TdHJpbmcoKSk7aWYoay5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTprLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBDPXUuZ2V0KCJKUyIpO2xldCB2O0MgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1DLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQyYmKHY9Qyk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsbi5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLG4ud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoMyksbj1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtpLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxuLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLG49dC5mZXRjaElmUmVmKGlbcl0pLGM9bi5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9bjticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IGE9MCxyPWkubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3Qgbj1hK3I+PjEscz1uKygxJm4pLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDMpLG49YSgzOCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNSksaT1hKDMpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2UoL1xcXFwvZywiXFwiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cXC9nLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXRhZGF0YVBhcnNlcj12b2lkIDA7dmFyIHI9YSg2NCk7dC5NZXRhZGF0YVBhcnNlcj1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyByLlNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2UoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqYSsxKnIpfSkpLnJlcGxhY2UoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxyPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmEuY2hhckNvZGVBdChlKSthLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnIucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IityLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGE9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGEubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7dmFyIHI9YSgzKSxuPWEoMiksaT1hKDY4KTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDpuPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9bjt0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3QgYT1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuO2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxuKX1hZGROb2RlKGUsdCxhPTApe2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaSYmaS50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O249ITB9fXJldHVybiBufWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcGFnZSR7dC5wYWdlT2JqSWR9X21jaWQke3QubWNpZH1gfSk6dC50eXBlPT09YyYmci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PYmplY3RMb2FkZXI9dm9pZCAwO3ZhciByPWEoMyksbj1hKDUpLGk9YSg0KSxzPWEoMik7ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2Ygci5EaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGkgb2YgZSkoKGE9aSlpbnN0YW5jZW9mIHIuUmVmfHxhIGluc3RhbmNlb2Ygci5EaWN0fHxhIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmdC5wdXNoKGkpO3ZhciBhfXQuT2JqZWN0TG9hZGVyPWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWE7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IHIuUmVmU2V0O2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoYSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbz1lLnBvcCgpO2lmKG8gaW5zdGFuY2VvZiByLlJlZil7aWYodGhpcy5yZWZTZXQuaGFzKG8pKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQobyk7bz10aGlzLnhyZWYuZmV0Y2gobyl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpeygwLHMud2FybikoYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKG8pO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYobyBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1vLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7YS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChvKX19YWRkQ2hpbGRyZW4obyxlKX1pZihhLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoYSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNzkpLGk9YSg4NSkscz1hKDgzKSxvPWEoNzYpLGM9YSgyKSxsPWEoODYpLGg9YSg5Nik7Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgbC5YRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBuLkJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBpLkRhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3IuJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI9bmV3IHMuRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyl7ZT0oMCxvLnN0cmlwUXVvdGVzKShlKTt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IGwuWEZBUGFyc2VyKGguWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbci4kbm9kZU5hbWVdKSl7Y29uc3QgZT1oLlhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO3Q9ZX1jb25zdCBhPXRbci4kdG9IVE1MXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOml9PW47aWYoaSl7aS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3IuJHRleHRdKCl9fWNhdGNoKGUpeygwLGMud2FybikoYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX10LlhGQUZhY3Rvcnk9WEZBRmFjdG9yeX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO3ZhciByPWEoNzYpLG49YSgyKSxpPWEoNCkscz1hKDc3KSxvPWEoNzgpO2NvbnN0IGM9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1jO2NvbnN0IGw9U3ltYm9sKCk7dC4kYWRkSFRNTD1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9aDtjb25zdCB1PVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPXU7Y29uc3QgZD1TeW1ib2woKTt0LiRjbGVhbj1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kY2xlYW5QYWdlPWY7Y29uc3QgZz1TeW1ib2woKTt0LiRjbGVhbnVwPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRjbG9uZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kY29uc3VtZWQ9bTtjb25zdCBiPVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9Yjtjb25zdCB5PVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGR1bXA9dztjb25zdCBTPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1TO2NvbnN0IHg9U3ltYm9sKCk7dC4kZmluYWxpemU9eDtjb25zdCBrPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1rO2NvbnN0IEM9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Qztjb25zdCB2PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9djtjb25zdCBGPVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPUY7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Tztjb25zdCBUPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9RTtjb25zdCBEPVN5bWJvbCgpO3QuJGdldEV4dHJhPUQ7Y29uc3QgTj1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1OO2NvbnN0IFI9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPUw7Y29uc3Qgaj1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1qO2NvbnN0ICQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD0kO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0UGFyZW50PV87Y29uc3QgVT1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlkcz1xO2NvbnN0IFc9U3ltYm9sKCk7dC4kaW5kZXhPZj1XO2NvbnN0IHo9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9ejtjb25zdCBHPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9Rztjb25zdCBWPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9Vjtjb25zdCBLPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9WTtjb25zdCBKPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1KO2NvbnN0IFo9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPVo7Y29uc3QgUT1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVE7Y29uc3QgZWU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1lZTtjb25zdCB0ZT1TeW1ib2woKTt0LiRpc1VzYWJsZT10ZTtjb25zdCBhZT1TeW1ib2woKSxyZT1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPW5lO2NvbnN0IGllPVN5bWJvbCgpO3QuJG5zQXR0cmlidXRlcz1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRvbkNoaWxkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1vZTtjb25zdCBjZT1TeW1ib2woKTt0LiRvblRleHQ9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1sZTtjb25zdCBoZT1TeW1ib2woKTt0LiRwb3BQYXJhPWhlO2NvbnN0IHVlPVN5bWJvbCgpO3QuJHB1c2hQYXJhPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHJlbW92ZUNoaWxkPWRlO2NvbnN0IGZlPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9ZmU7Y29uc3QgZ2U9U3ltYm9sKCk7dC4kcmVzb2x2ZVByb3RvdHlwZXM9Z2U7Y29uc3QgcGU9U3ltYm9sKCk7dC4kc2VhcmNoTm9kZT1wZTtjb25zdCBtZT1TeW1ib2woKTt0LiRzZXRJZD1tZTtjb25zdCBiZT1TeW1ib2woKTt0LiRzZXRTZXRBdHRyaWJ1dGVzPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHNldFZhbHVlPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRhYkluZGV4PXdlO2NvbnN0IFNlPVN5bWJvbCgpO3QuJHRleHQ9U2U7Y29uc3QgeGU9U3ltYm9sKCk7dC4kdG9QYWdlcz14ZTtjb25zdCBBZT1TeW1ib2woKTt0LiR0b0hUTUw9QWU7Y29uc3Qga2U9U3ltYm9sKCk7dC4kdG9TdHJpbmc9a2U7Y29uc3QgQ2U9U3ltYm9sKCk7dC4kdG9TdHlsZT1DZTtjb25zdCB2ZT1TeW1ib2woInVpZCIpO3QuJHVpZD12ZTtjb25zdCBGZT1TeW1ib2woKSxPZT1TeW1ib2woKSxUZT1TeW1ib2woKSxJZT1TeW1ib2woIl9jaGlsZHJlbiIpLFBlPVN5bWJvbCgpLE1lPVN5bWJvbCgpLEVlPVN5bWJvbCgpLERlPVN5bWJvbCgpLE5lPVN5bWJvbCgpLEJlPVN5bWJvbCgpLFJlPVN5bWJvbCgpLExlPVN5bWJvbCgpLGplPVN5bWJvbCgpLCRlPVN5bWJvbCgicGFyZW50IiksX2U9U3ltYm9sKCksVWU9U3ltYm9sKCksWGU9U3ltYm9sKCk7bGV0IEhlPTA7Y29uc3QgcWU9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW3JlXT1lO3RoaXNbbmVdPXQ7dGhpc1tSZV09YTt0aGlzWyRlXT1udWxsO3RoaXNbSWVdPVtdO3RoaXNbdmVdPWAke3R9JHtIZSsrfWA7dGhpc1tYXT1udWxsfVtzZV0oZSl7aWYoIXRoaXNbUmVdfHwhdGhpc1tvZV0oZSkpcmV0dXJuITE7Y29uc3QgdD1lW25lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tkZV0oYSk7dGhpc1t0XT1lO3RoaXNbaF0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2hdKGUpO3JldHVybiEwfWxldCByPSIiO3RoaXMuaWQ/cj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKHI9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTsoMCxuLndhcm4pKGBYRkEgLSBub2RlICIke3RoaXNbbmVdfSIke3J9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W29lXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW25lXSkmJmVbcmVdPT09dGhpc1tyZV19W0pdKCl7cmV0dXJuITF9W2NdKCl7cmV0dXJuITF9W0ddKCl7cmV0dXJuITF9W1ZdKCl7cmV0dXJuITF9W2hlXSgpe3RoaXMucGFyYSYmdGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wb3AoKX1bdWVdKCl7dGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W21lXShlKXt0aGlzLmlkJiZ0aGlzW3JlXT09PXMuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtVXSgpe3JldHVybiB0aGlzW1hdLnRlbXBsYXRlfVtaXSgpe3JldHVybiExfVtRXSgpe3JldHVybiExfVtoXShlKXtlWyRlXT10aGlzO3RoaXNbSWVdLnB1c2goZSk7IWVbWF0mJnRoaXNbWF0mJihlW1hdPXRoaXNbWF0pfVtkZV0oZSl7Y29uc3QgdD10aGlzW0llXS5pbmRleE9mKGUpO3RoaXNbSWVdLnNwbGljZSh0LDEpfVtIXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVt5ZV0oZSl7fVtjZV0oZSl7fVt4XSgpe31bZF0oZSl7ZGVsZXRlIHRoaXNbUmVdO2lmKHRoaXNbZ10pe2UuY2xlYW4odGhpc1tnXSk7ZGVsZXRlIHRoaXNbZ119fVtXXShlKXtyZXR1cm4gdGhpc1tJZV0uaW5kZXhPZihlKX1bel0oZSx0KXt0WyRlXT10aGlzO3RoaXNbSWVdLnNwbGljZShlLDAsdCk7IXRbWF0mJnRoaXNbWF0mJih0W1hdPXRoaXNbWF0pfVtlZV0oKXtyZXR1cm4hdGhpcy5uYW1lfVthZV0oKXtyZXR1cm4iIn1bU2VdKCl7cmV0dXJuIDA9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tiXTp0aGlzW0llXS5tYXAoKGU9PmVbU2VdKCkpKS5qb2luKCIiKX1nZXRbVGVdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsVGUsZS5fYXR0cmlidXRlcyl9W1ldKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W19dKCl9cmV0dXJuITF9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVskXSgpe3JldHVybiB0aGlzW19dKCl9W1JdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0llXX1bd10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tiXSYmKGUuJGNvbnRlbnQ9dGhpc1tiXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3ddKCk6YSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2EuaXNFbXB0eSgpfHwoZVt0XT1hLmR1bXAoKSk6ZVt0XT1hKX1yZXR1cm4gZX1bQ2VdKCl7cmV0dXJuIG51bGx9W0FlXSgpe3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9KltMXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUl0oKSl5aWVsZCBlfSpbRGVdKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tMXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtuZV0pKXtjb25zdCBlPXRoaXNbRl0oKSx0PWFbQWVdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbU10uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W2tdKCl7cmV0dXJuIG51bGx9W2xdKGUsdCl7dGhpc1tTXS5jaGlsZHJlbi5wdXNoKGUpfVtGXSgpe31bdV0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tTXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tGXSgpLHQ9dGhpc1tTXS5mYWlsaW5nTm9kZVtBZV0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbU10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW1NdLmdlbmVyYXRvcj10aGlzW0RlXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW1NdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tsXSh0Lmh0bWwsdC5iYm94KX10aGlzW1NdLmdlbmVyYXRvcj1udWxsO3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9W2JlXShlKXt0aGlzW1VlXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bQmVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0sYT10aGlzW1VlXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWEuaGFzKGUpKSl9W2dlXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pYVtfZV0oZSx0KX1bX2VdKGUsdCl7Y29uc3QgYT10aGlzW05lXShlLHQpO2E/dGhpc1tGZV0oYSxlLHQpOnRoaXNbZ2VdKGUsdCl9W05lXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxzPW51bGwsYz1udWxsLGw9YTtpZihyKXtsPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKCIjc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9zPXIuc2xpY2UoIi4jc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYylpPWUuZ2V0KGMpO2Vsc2V7aT0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXsoMCxuLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYoaVtuZV0hPT10aGlzW25lXSl7KDAsbi53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW25lXX0gIT09ICR7dGhpc1tuZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXsoMCxuLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBoPWlbTmVdKGUsdCk7aCYmaVtGZV0oaCxlLHQpO2lbZ2VdKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLG4ud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tUZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG49dGhpc1tyXSxpPWVbcl07aWYobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBuW0llXSllW19lXSh0LGEpO2ZvcihsZXQgcj1uW0llXS5sZW5ndGgscz1pW0llXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW0llXVtyXVtwXSgpO2lmKCFuLnB1c2goaSkpYnJlYWs7aVskZV09dGhpczt0aGlzW0llXS5wdXNoKGkpO2lbX2VdKHQsYSl9fWVsc2UgaWYobnVsbD09PW4pe2lmKG51bGwhPT1pKXtjb25zdCBlPWlbcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW0llXS5wdXNoKGUpO2VbX2VdKHQsYSl9fWVsc2V7bltnZV0odCxhKTtpJiZuW0ZlXShpLHQsYSl9fX1zdGF0aWNbUGVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbUGVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLG4uc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtuZV19JHtIZSsrfWA7ZVtJZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbVGVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbUGVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tJZV0pe2NvbnN0IGE9dFtuZV0scj10W3BdKCk7ZVtJZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW0llXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbSWVdLmZpbHRlcigodD0+dFtuZV09PT1lKSk6dGhpc1tJZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbVGVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tJZV09W119cHVzaChlKXtpZih0aGlzW0llXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW0llXS5wdXNoKGUpO3JldHVybiEwfSgwLG4ud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtuZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbSWVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tJZV1bMF1bd10oKTp0aGlzW0llXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW0llXT10aGlzW0llXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0llXX1jbGVhcigpe3RoaXNbSWVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW25lXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtZXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtZXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbTWVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpZSkpe2NvbnN0IGU9YVtpZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tNZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tNZV09ITApKX19dGhpc1ttXT0hMX1ba2VdKGUpe2NvbnN0IHQ9dGhpc1tuZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsbi51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbTWVdJiYodGhpc1tNZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW0llXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtrZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0llXSl0W2tlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW0llXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbmVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW0llXS5maWx0ZXIoKHQ9PnRbbmVdPT09ZSkpOnRoaXNbSWVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW0NdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0llXSl5aWVsZCphW0NdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tJZV0pe3JbbmVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tNZV0/MD09PXRoaXNbSWVdLmxlbmd0aHx8dGhpc1tJZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tNZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW01lXT8wPT09dGhpc1tJZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbSWVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbSWVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW25lXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbSWVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbamVdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbamVdWzBdLHZhbGlkYXRlOmU9PnRoaXNbamVdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW2plXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixuXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6bn07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKGkubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjpufTtbYSxyLG5dPWk7cmV0dXJue3I6YSxnOnIsYjpufX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSxlLmxlbmd0aC0xKTtyZXR1cm4gZX07dmFyIHI9YSgyKTtjb25zdCBuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxpPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dD10fHwiMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zb21lKChlPT5lLm9wZXJhdG9yPT09bCkpKXJldHVybiBudWxsO2NvbnN0IHM9Zi5nZXQoblswXS5uYW1lKTtsZXQgbz0wO2lmKHMpe2U9cyhlLHQpO289MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9bi5sZW5ndGg7bzx0O28rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6c309bltvXTtpZighaXNGaW5pdGUocykpe25bb10uaW5kZXg9MDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX1sZXQgdTtzd2l0Y2goYSl7Y2FzZSBjOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBsOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBoOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpO3U9dSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/dS5jaGlsZHJlbjpbdV19aWYoMD09PXUubGVuZ3RoKXJldHVybiBjcmVhdGVOb2RlcyhlLG4uc2xpY2UobykpO2lmKCEoczx1Lmxlbmd0aCkpe25bb10uaW5kZXg9cy11Lmxlbmd0aDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX17Y29uc3QgdD11W3NdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSl7KDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH07dC5zZWFyY2hOb2RlPWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxpPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG89Zi5nZXQoc1swXS5uYW1lKTtsZXQgdSxkPTA7aWYobyl7dT0hMDtlPVtvKGUsdCldO2Q9MX1lbHNle3U9bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXMubGVuZ3RoO2Q8YTtkKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjpvLGluZGV4OmZ9PXNbZF0scD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCkpY29udGludWU7bGV0IGUscztpZihpKXtzPWcuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7Zy5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2gobyl7Y2FzZSBjOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBsOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMCk7YnJlYWs7Y2FzZSBoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmcy5zZXQobixlKX1lLmxlbmd0aD4wJiZwLnB1c2goZSl9aWYoMCE9PXAubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGYpP3AuZmlsdGVyKChlPT5mPGUubGVuZ3RoKSkubWFwKChlPT5lW2ZdKSk6cC5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9MCxsPTEsaD0yLHU9MyxkPTQsZj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxnPW5ldyBXZWFrTWFwLHA9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtuXT1yO2NvbnN0IGY9W3tuYW1lOm4sY2FjaGVOYW1lOiIuIituLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmN9XTtsZXQgZz1uLmxlbmd0aDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBtPWc7aWYoIlsiPT09ZS5jaGFyQXQoZysrKSl7cj1lLnNsaWNlKGcpLm1hdGNoKG8pO2lmKCFyKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9Zi5hdCgtMSkuaW5kZXg9IioiPT09KHA9KHA9clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQocCwxMCl8fDA7Zys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYjtzd2l0Y2goZS5jaGFyQXQoZykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7ZysrO2I9bDticmVhaztjYXNlIiMiOmcrKztiPWg7YnJlYWs7Y2FzZSJbIjppZihhKXsoMCxpLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWI9dTticmVhaztjYXNlIigiOmlmKGEpeygwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1iPWQ7YnJlYWs7ZGVmYXVsdDpiPWN9cj1lLnNsaWNlKGcpLm1hdGNoKHMpO2lmKCFyKWJyZWFrO1tuXT1yO2crPW4ubGVuZ3RoO2YucHVzaCh7bmFtZTpuLGNhY2hlTmFtZTplLnNsaWNlKG0sZyksb3BlcmF0b3I6YixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBwO3JldHVybiBmfWZ1bmN0aW9uIGNyZWF0ZU5vZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgdCl7Zm9yKGxldCB0PTAscz1pc0Zpbml0ZShpKT9pOjA7dDw9czt0Kyspe2NvbnN0IHQ9ZVtyLiRuYW1lc3BhY2VJZF09PT1wPy0xOmVbci4kbmFtZXNwYWNlSWRdO2E9bmV3IHIuWG1sT2JqZWN0KHQsbik7ZVtyLiRhcHBlbmRDaGlsZF0oYSl9ZT1hfXJldHVybiBhfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJpbmRlcj12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDgwKSxpPWEoNzgpLHM9YSg3Nyksbz1hKDIpO2NvbnN0IGM9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO2UuZGF0YXNldHMmJmUuZGF0YXNldHMuZGF0YT90aGlzLmRhdGE9ZS5kYXRhc2V0cy5kYXRhOnRoaXMuZGF0YT1uZXcgci5YbWxPYmplY3Qocy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJmUudWkmJmUudWkuY2hvaWNlTGlzdCYmIm11bHRpU2VsZWN0Ij09PWUudWkuY2hvaWNlTGlzdC5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLG8ud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxvO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtvPWkubmV4dCgpLnZhbHVlO2lmKCFvKWJyZWFrO2lmKHQ9PT1vW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBvfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO289aS5uZXh0KCkudmFsdWU7aWYobylyZXR1cm4gbztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7bz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbyYmb1tyLiRpc0RhdGFWYWx1ZV0oKT9vOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6YSx0YXJnZXQ6cyxjb25uZWN0aW9uOmN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYoYyljb250aW51ZTtpZighYSljb250aW51ZTtjb25zdCBsPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsYSwhMSwhMSk7aWYoIWwpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWw7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGEpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCxlLHMsITEsITEpO2lmKCF1KXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0oZSkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1kW3IuJGdldFBhcmVudF0oKTtpZihkIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIG4uU2V0UHJvcGVydHkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIG4uQmluZEl0ZW1zfHxmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXMpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGc9aFtyLiR0ZXh0XSgpLHA9ZFtyLiRub2RlTmFtZV07aWYoZCBpbnN0YW5jZW9mIHIuWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtwXT1nO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltwXT10W3BdfWVsc2UgaWYoZC5oYXNPd25Qcm9wZXJ0eShyLiRjb250ZW50KSl7ZFtyLiRkYXRhXT1oO2Rbci4kY29udGVudF09ZztkW3IuJGZpbmFsaXplXSgpfWVsc2UoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtyLiRyZW1vdmVDaGlsZF0odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IG4uSXRlbXMoe30pLHM9bmV3IG4uSXRlbXMoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKGEpO2UuaXRlbXMucHVzaChhKTtlW3IuJGFwcGVuZENoaWxkXShzKTtlLml0ZW1zLnB1c2gocyk7Zm9yKGNvbnN0e3JlZjpuLGxhYmVsUmVmOmMsdmFsdWVSZWY6bCxjb25uZWN0aW9uOmh9b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKGgpY29udGludWU7aWYoIW4pY29udGludWU7Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LG4sITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWYgKCR7bn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGMsITAsITEpO2lmKCFlKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke2N9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWU7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtsfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBmPWNyZWF0ZVRleHQoaFtyLiR0ZXh0XSgpKSxnPWNyZWF0ZVRleHQoZFtyLiR0ZXh0XSgpKTthW3IuJGFwcGVuZENoaWxkXShmKTthLnRleHQucHVzaChmKTtzW3IuJGFwcGVuZENoaWxkXShnKTtzLnRleHQucHVzaChnKX1lbHNlKDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7bn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVtyLiRjbG9uZV0oKTtuW3IuJHJlbW92ZUNoaWxkXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbci4kZ2V0UGFyZW50XSgpLHM9ZVtyLiRub2RlTmFtZV0sbz1pW3IuJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9bltyLiRjbG9uZV0oKTtpW3NdLnB1c2gobCk7aVtyLiRpbnNlcnRBdF0obytlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLGMsYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLGMpO3RoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpLG49ZVtyLiRub2RlTmFtZV07aWYoIShhW25daW5zdGFuY2VvZiByLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWFbci4kaW5kZXhPZl0oZSkrMSxvPXQuaW5pdGlhbC1pO2lmKG8pe2NvbnN0IHQ9ZVtyLiRjbG9uZV0oKTt0W3IuJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7YVtuXS5wdXNoKHQpO2Fbci4kaW5zZXJ0QXRdKHMsdCk7Zm9yKGxldCBlPTE7ZTxvO2UrKyl7Y29uc3QgaT10W3IuJGNsb25lXSgpO2Fbbl0ucHVzaChpKTthW3IuJGluc2VydEF0XShzK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjphfT1lO2lmKCFhfHwhdClyZXR1cm5bMSwxXTtjb25zdCByPS0xPT09YS5tYXg/MS8wOmEubWF4O3JldHVyblthLm1pbixyXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGE9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IG4gb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl7aWYobltyLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bci4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtyLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWM/LTE6dFtyLiRuYW1lc3BhY2VJZF0sYT1uW3IuJGRhdGFdPW5ldyByLlhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W3IuJGFwcGVuZENoaWxkXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW3IuJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLGw9bnVsbCxoPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXsoMCxvLndhcm4pKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bci4kbm9kZU5hbWVdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9bD1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtyLiRjb250ZW50XSl9Y29uc3RbdSxkXT10aGlzLl9nZXRPY2N1ckluZm8obik7aWYobCl7aD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKG51bGw9PT1oKXtoPSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGwpO2lmKCFoKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGhbci4kY29uc3VtZWRdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaD1oLmZpbHRlcigoZT0+IWVbci4kY29uc3VtZWRdKSkpO2gubGVuZ3RoPmQ/aD1oLnNsaWNlKDAsZCk6MD09PWgubGVuZ3RoJiYoaD1udWxsKTtoJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmguZm9yRWFjaCgoZT0+e2Vbci4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGQ7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW3IuJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW3IuJGNvbnN1bWVkXT0hMDthLnB1c2goaSl9aD1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle2g9dFtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0obi5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFoKXtpZigwPT09dSl7YS5wdXNoKG4pO2NvbnRpbnVlfWNvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdO2g9bltyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxuLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTt0W3IuJGFwcGVuZENoaWxkXShoKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaFtyLiRjb25zdW1lZF09ITApO2g9W2hdfX1oP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLGgscyk6dT4wP3RoaXMuX3NldEFuZEJpbmQobix0KTphLnB1c2gobil9YS5mb3JFYWNoKChlPT5lW3IuJGdldFBhcmVudF0oKVtyLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDc3KSxpPWEoODEpLHM9YSg4Miksbz1hKDc2KSxjPWEoMiksbD1hKDgzKSxoPWEoNCksdT1hKDc4KTtjb25zdCBkPW4uTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixnPS9eSChcZCspJC8scD1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLG09W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO2UudmFsdWU9dH1lLnZhbHVlW3IuJHNldFZhbHVlXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiBlLnZhbGlkYXRlJiYiZXJyb3IiPT09ZS52YWxpZGF0ZS5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59aWYoZVtyLiR0YWJJbmRleF0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbci4kZ2V0Q2hpbGRyZW5dKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWNvbnN0IGE9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtyLiR0YWJJbmRleF09KythW3IuJHRhYkluZGV4XTtjb25zdCBuPWFbci4kc2VhcmNoTm9kZV0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtyLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3Qgbj1hLnJvbGUubWF0Y2goZyk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1hLmxheW91dCYmKGEuYXNzaXN0JiYiVEgiPT09YS5hc3Npc3Qucm9sZT90LnJvbGU9ImNvbHVtbmhlYWRlciI6dC5yb2xlPSJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW3IuJGNvbnRlbnRdP3Quc3BlYWtbci4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtyLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7aWYobnVsbD09PXRbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lO3Rbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO3Rbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtyLiRleHRyYV0pcmV0dXJuITE7ZVtyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtsZXQgYT1udWxsO2lmKGUudGFyZ2V0KXthPXRbci4kc2VhcmNoTm9kZV0oZS50YXJnZXQsZVtyLiRnZXRQYXJlbnRdKCkpO2lmKCFhKXJldHVybiExO2E9YVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6bixjdXJyZW50Q29udGVudEFyZWE6aX09dFtyLiRleHRyYV07aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7YSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoYT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3IuJGV4dHJhXS50YXJnZXQ9YXx8bjtyZXR1cm4hMH1pZihhJiZhIT09bil7ZVtyLiRleHRyYV0udGFyZ2V0PWE7cmV0dXJuITB9cmV0dXJuITF9YSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoYT1udWxsKTtjb25zdCBzPWEmJmFbci4kZ2V0UGFyZW50XSgpO2xldCBvLGM9cztpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKGM9bnVsbCk7bz1yLTF9ZWxzZSBvPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtvPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO2M9cz09PW4/bnVsbDpzfWVbci4kZXh0cmFdLnRhcmdldD1jO2Vbci4kZXh0cmFdLmluZGV4PW87cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IG49ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCksaT1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscz10W3IuJGdldFN1YmZvcm1QYXJlbnRdO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09KCk9PmU7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG89dFtyLiR0b0hUTUxdKGEpO2Vbci4kYWRkSFRNTF0oby5odG1sLG8uYmJveCk7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWk7dFtyLiRnZXRTdWJmb3JtUGFyZW50XT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT0oMCxvLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtyLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtyLiRjb250ZW50XT90aGlzLnRvb2xUaXBbci4kY29udGVudF06bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCI7cmV0dXJuIHR9KSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bci4kdG9TdHlsZV0oKSk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbci4kdG9TdHlsZV0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3IuJHRvU3R5bGVdKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9YS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7YS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtyLiR0b0hUTUxdKGUpe3RoaXNbci4kZXh0cmFdPXt9O3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLGgucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtyLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3Qgbj0oMCxzLmZpeFVSTCkodC51cmwpO24mJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbci4kdWlkXSxocmVmOm4sbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoKDAsby5nZXRNZWFzdXJlbWVudCkoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3IuJHNldFZhbHVlXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bci4kZ2V0RXh0cmFdKGUpe2lmKCF0aGlzW3IuJGV4dHJhXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbci4kZXh0cmFdPSgwLHMubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW3IuJGV4dHJhXX1bci4kdG9IVE1MXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oZSkuaHRtbDtpZighdCl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3IuJGdldEV4dHJhXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IG49W107InN0cmluZyI9PXR5cGVvZiB0P24ucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpuLnB1c2godCk7Y29uc3QgaT0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKX0oMCxzLnNldFBhcmEpKHRoaXMsbnVsbCx0KTt0aGlzW3IuJHBvcFBhcmFdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkoIm1hcmdpbiIpLGE9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCBuLGksYztjb25zdCBsPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxoPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW3IuJHRvSFRNTF0oKS5odG1sfHxbXSx1PXtvbjoodm9pZCAwIT09aFswXT9oWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1oWzFdP2hbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdJiZmW3IuJGRhdGFdW3IuJHVpZF18fGZbci4kdWlkXX1lbHNle249ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7cD1sW3IuJGRhdGFdJiZsW3IuJGRhdGFdW3IuJHVpZF18fGxbci4kdWlkXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDpnLGRhdGFJZDpwLHR5cGU6bixjaGVja2VkOmQseGZhT246dS5vbix4ZmFPZmY6dS5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChsKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtjJiYobS5hdHRyaWJ1dGVzLm5hbWU9Yyk7aWYoaXNSZXF1aXJlZChsKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250JiZhLmZvbnQuc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWUmJmEudmFsdWVbci4kdGV4dF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1vLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmNbZV18fG9bZV0sc3R5bGU6bn0sdmFsdWU6b1tlXX07Y1tlXT09PWgmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7aS5wdXNoKHQpfWx8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IGM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe2NbImFyaWEtcmVxdWlyZWQiXT0hMDtjLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihjLm11bHRpcGxlPSEwKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6Y31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT8oMCxvLmdldENvbG9yKShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiExfVtyLiR0b1N0eWxlXSgpe3JldHVybiB0aGlzLnZhbHVlP2MuVXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KTt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9e2xlZnQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0sYT1bInhmYUNvbnRlbnRhcmVhIl07KDAscy5pc1ByaW50T25seSkodGhpcykmJmEucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3IuJHVpZF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9KDAsby5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXSYmYVtyLiRkYXRhXVtyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4mJncuY2hpbGRyZW5bMF0/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdOncuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3IuJHRhYkluZGV4XSk7dy5hdHRyaWJ1dGVzLnN0eWxlfHwody5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBTPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT13LmNoaWxkcmVuLmxlbmd0aCYmKFtTXT13LmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHcuYXR0cmlidXRlcy5zdHlsZSxiKX1lbHNlIE9iamVjdC5hc3NpZ24oZCxiKTtwLnB1c2godyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdCl3LmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbci4kdGV4dF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtyLiRnZXRFeHRyYV0oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0JiZ0aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMmJih3LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT13LmNoaWxkcmVuWzBdLm5hbWU/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmdy5jaGlsZHJlbiYmdy5jaGlsZHJlblswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbci4kdG9TdHlsZV0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRm9udCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXNbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9KDAscy5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpOygwLHMuc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2UiKTt0aGlzLmFzcGVjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIXAuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3IuJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3IuJGNvbnRlbnRdKSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxjLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tyLiRjb250ZW50XSkpKTtpZighZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIG0paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpuP2FyaWFMYWJlbChuW3IuJGdldFBhcmVudF0oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9vLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSwxMCk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kdG9IVE1MXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSllLnB1c2godFtyLiR0ZXh0XSgpKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fXQuSXRlbXM9SXRlbXM7Y2xhc3MgS2VlcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCx0KTt0aGlzLm5leHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lIiwhMCk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtyLiR0b1N0eWxlXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKShpKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBjLGwsaCx1LGQ9IjEwMCUiLGc9IjEwMCUiO2lmKGUudzw9aSl7W2MsbCxoLHVdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07ZD1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbYyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtnPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tjLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltjLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpmLHgxOmMseTE6bCx4MjpoLHkyOnUsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOmQsaGVpZ2h0Omcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3BdfSk7cC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHApfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKSh0aGlzW3IuJGNvbnRlbnRdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9KDAsby5nZXRCQm94KShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmEmJmFbMF18fG51bGwsbGVhZGVyOm4mJm5bMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtyLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtyLiR0b1N0eWxlXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX10LlNldFByb3BlcnR5PVNldFByb3BlcnR5O2NsYXNzIFNpZ25EYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtyZXR1cm4gZT9lW3IuJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNwZWFrIik7dGhpcy5kaXNhYmxlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBjLlV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpKSk7dGhpcy5oPWUuaD8oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpOiIiO3RoaXMuaEFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0Iik7dGhpcy5taW5XPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiI7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpOmV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W3IuJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W3IuJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtyLiRpc1NwbGl0dGFibGVdKCl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYoIWVbci4kaXNTcGxpdHRhYmxlXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kdG9IVE1MXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbci4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gby5IVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW3IuJGV4dHJhXSYmdGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyk7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbci4kZXh0cmFdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKCksbD1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsaD10aGlzW3IuJGlzU3BsaXR0YWJsZV0oKTtofHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHU9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW3IuJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IGQ9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxmPVsieGZhU3ViZm9ybSJdLGc9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7ZyYmZi5wdXNoKGcpO2Euc3R5bGU9ZDthLmNsYXNzPWY7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3IuJGdldEV4dHJhXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHA9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbT1wPzI6MTtmb3IoO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQ8bTt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0Kyspe3AmJjE9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjp1LGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gZX1pZihwJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZSYmIW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdD1tO2JyZWFrfX10aGlzW3IuJHBvcFBhcmFdKCk7aHx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtuW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9bDtpZih0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PT09bSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7aHx8ZGVsZXRlIHRoaXNbci4kZXh0cmFdO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBiPTAseT0wO2lmKHRoaXMubWFyZ2luKXtiPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3k9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3Qgdz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtiLHRoaXMud3x8MCksUz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQreSx0aGlzLmh8fDApLHg9W3RoaXMueCx0aGlzLnksdyxTXTsiIj09PXRoaXMudyYmKGQud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHcpKTsiIj09PXRoaXMuaCYmKGQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShTKSk7aWYoKCIwcHgiPT09ZC53aWR0aHx8IjBweCI9PT1kLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGs9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgQz1vLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsaykseCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbci4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcj1DO3JldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIEN9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtsZXQgZT10aGlzW3IuJGdldFBhcmVudF0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbci4kY29udGVudF0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRmaW5hbGl6ZV0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbci4kdGFiSW5kZXhdPTVlM31bci4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiEwfVtyLiRzZWFyY2hOb2RlXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tyLiRpZHNdLmdldChlLnNsaWNlKDEpKV06KDAsdS5zZWFyY2hOb2RlKSh0aGlzLHQsZSwhMCwhMCl9KltyLiR0b1BhZ2VzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbci4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3IuJGNsZWFuUGFnZV0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgbj1udWxsLGk9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWsmJmUuYnJlYWsuYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbci4kc2VhcmNoTm9kZV0ocyxpW3IuJGdldFBhcmVudF0oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtuPWU7aVtyLiRleHRyYV09e319fW58fChuPXRbMF0pO25bci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfTtjb25zdCBsPW5bci4kZ2V0UGFyZW50XSgpO2xbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpsLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBoLHU9bnVsbCxkPW51bGwsZj0hMCxnPTAscD0wO2Zvcig7Oyl7aWYoZilnPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrZyl7KDAsYy53YXJuKSgiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1oPW51bGw7dGhpc1tyLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPW47Y29uc3QgdD1uW3IuJHRvSFRNTF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZih1KXt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShuW3IuJGV4dHJhXS5zcGFjZSkuaHRtbCk7dT1udWxsfWlmKGQpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZFtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTtkPW51bGx9Y29uc3QgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2Y9ITE7dGhpc1tyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtyLiRmbHVzaEhUTUxdKCk7aWYoYSl7Zj1mfHxhLmNoaWxkcmVuJiYwIT09YS5jaGlsZHJlbi5sZW5ndGg7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Y9Znx8Yy5odG1sLmNoaWxkcmVuJiYwIT09Yy5odG1sLmNoaWxkcmVuLmxlbmd0aDtzW3RdLmNoaWxkcmVuLnB1c2goYy5odG1sKX1lbHNlIWYmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYoYy5pc0JyZWFrKCkpe2NvbnN0IGU9Yy5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXt1PXRoaXNbci4kc2VhcmNoTm9kZV0oZS5sZWFkZXIsZVtyLiRnZXRQYXJlbnRdKCkpO3U9dT91WzBdOm51bGx9aWYoZS50cmFpbGVyKXtkPXRoaXNbci4kc2VhcmNoTm9kZV0oZS50cmFpbGVyLGVbci4kZ2V0UGFyZW50XSgpKTtkPWQ/ZFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtyLiRleHRyYV0udGFyZ2V0KXtoPWVbci4kZXh0cmFdLnRhcmdldDtwPWVbci4kZXh0cmFdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbci4kZXh0cmFdLmluZGV4fWVsc2UgaWYodGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZTt0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbci4kZ2V0RXh0cmFdKCksbj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKG4gaW5zdGFuY2VvZiBQYWdlQXJlYSloPW47ZWxzZSBpZihuIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKG4pO2lmKC0xIT09ZSllPnM/dD1lLTE6cD1lO2Vsc2V7aD1uW3IuJGdldFBhcmVudF0oKTtwPWguY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKX19fWVsc2UgZmx1c2godCl9dGhpc1tyLiRleHRyYV0ucGFnZU51bWJlcis9MTtoJiYoaFtyLiRpc1VzYWJsZV0oKT9oW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTpoPW51bGwpO249aHx8bltyLiRnZXROZXh0UGFnZV0oKTt5aWVsZCBudWxsfX19dC5UZW1wbGF0ZT1UZW1wbGF0ZTtjbGFzcyBUZXh0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiEwfVtyLiRvbkNoaWxkXShlKXtpZihlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnhodG1sLmlkKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtyLiRub2RlTmFtZV19LmApO3JldHVybiExfVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF1pbnN0YW5jZW9mIHIuWEZBT2JqZWN0fHxzdXBlcltyLiRvblRleHRdKGUpfVtyLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0mJih0aGlzW3IuJGNvbnRlbnRdPXRoaXNbci4kY29udGVudF0ucmVwbGFjZSgvXHJcbi9nLCJcbiIpKX1bci4kZ2V0RXh0cmFdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tyLiRjb250ZW50XVtyLiR0ZXh0XSgpfVtyLiR0b0hUTUxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdKS5odG1sO2lmKHRoaXNbci4kY29udGVudF0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW3IuJGNvbnRlbnRdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3IuJGNvbnRlbnRdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKX19dC5UZXh0PVRleHQ7Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bci4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3IuJGdldEV4dHJhXSgpe2lmKHZvaWQgMD09PXRoaXNbci4kZXh0cmFdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe3RoaXNbci4kZXh0cmFdPXQ7cmV0dXJuIHR9fXRoaXNbci4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbci4kZXh0cmFdfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W3IuJHRvSFRNTF0oZSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3IuJHNldFZhbHVlXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aSYmdC51aS5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0mJmFbci4kZXh0cmFdLmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO2NvbnN0IGM9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYTtyZXR1cm4gbytpPmMuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG8tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX07dC5mbHVzaEhUTUw9ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW3IuJGV4dHJhXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtyLiRleHRyYV0uYXR0cmlidXRlcyxjaGlsZHJlbjplW3IuJGV4dHJhXS5jaGlsZHJlbn07aWYoZVtyLiRleHRyYV0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtyLiRleHRyYV0uZmFpbGluZ05vZGVbci4kZmx1c2hIVE1MXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfWlmKDA9PT10LmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdH07dC5nZXRBdmFpbGFibGVTcGFjZT1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbci4kZXh0cmFdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW3IuJGV4dHJhXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtyLiRleHRyYV0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbci4kZXh0cmFdLmNvbHVtbldpZHRocy5zbGljZShlW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtbn07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fTt2YXIgcj1hKDc1KSxuPWEoODIpO2Z1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uP2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiOmkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gaX07dC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYodC5sYXlvdXQmJnQubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W3IuJGV4dHJhXSxuPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09bj9hLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6YS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfTt0LmZpeFRleHRJbmRlbnQ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PSgwLGkuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9KDAsaS5nZXRNZWFzdXJlbWVudCkoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In07dC5maXhVUkw9ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH07dC5pc1ByaW50T25seT1pc1ByaW50T25seTt0LmxheW91dENsYXNzPWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19O3QubGF5b3V0Tm9kZT1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwsaT0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbz0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O289ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGM9bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7Yz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGg9ZS5mb250O2lmKCFoKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2xldCBhPWVbci4kZ2V0UGFyZW50XSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2g9YS5mb250O2JyZWFrfWE9YVtyLiRnZXRQYXJlbnRdKCl9fWNvbnN0IHU9KGUud3x8dC53aWR0aCktcyxkPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbci4kY29udGVudF0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSxoLGwsYyxkLHUpO249dC53aWR0aDthPXQuaGVpZ2h0O2k9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtyLiR0ZXh0XSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGgsbCxjLGQsdSk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cyk7bnVsbD09PWF8fGUuaHx8KGErPW8pfXJldHVybnt3Om4saDphLGlzQnJva2VuOml9fTt0Lm1lYXN1cmVUb1N0cmluZz1tZWFzdXJlVG9TdHJpbmc7dC5zZXRBY2Nlc3M9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fTt0LnNldEZvbnRGYW1pbHk9ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgbj0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke259ImA7Y29uc3Qgbz1hLmZpbmQobik7aWYobyl7Y29uc3R7Zm9udEZhbWlseTphfT1vLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PW4mJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IGk9Z2V0Q3VycmVudFBhcmEodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fTt0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fTt0LnNldFBhcmE9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzJiZhLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IG49Z2V0Q3VycmVudFBhcmEoZSk7aWYobil7Y29uc3QgZT1hLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKG4udkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9bltyLiR0b1N0eWxlXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fTt0LnRvU3R5bGU9ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PWVbaV07aWYobnVsbCE9PXQpaWYoYy5oYXNPd25Qcm9wZXJ0eShpKSljW2ldKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe2NvbnN0IGU9dFtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbihhLGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHtpfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBhfTt2YXIgcj1hKDc1KSxuPWEoMiksaT1hKDc2KSxzPWEoODMpLG89YSg4NCk7ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtsZXQgbj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQmJmEubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW3IuJGV4dHJhXSxpPWUuY29sU3BhbjtsZXQgcztpZigtMT09PWkpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChuPWUudz1zKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFhfHwhYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW3IuJG5vZGVOYW1lXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bci4kdG9TdHlsZV0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxuLGkscyl7Y29uc3QgYz1uZXcgby5UZXh0TWVhc3VyZSh0LGEsbixpKTsic3RyaW5nIj09dHlwZW9mIGU/Yy5hZGRTdHJpbmcoZSk6ZVtyLiRwdXNoR2x5cGhzXShjKTtyZXR1cm4gYy5jb21wdXRlKHMpfWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZvbnRGaW5kZXI9dm9pZCAwO3QuZ2V0TWV0cmljcz1mdW5jdGlvbiBnZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUsaSl9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLHM9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbz12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnMqaSxsaW5lR2FwOm8qaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxzLW8pKml9fTt0LnNlbGVjdEZvbnQ9c2VsZWN0Rm9udDt2YXIgcj1hKDc1KSxuPWEoNzYpLGk9YSgyKTt0LkZvbnRGaW5kZXI9Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lJiZlLnBzTmFtZS5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZSYmKGUucHNOYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWUuZW5kc1dpdGgoIkl0IikpKSYmKG4rPSJpdGFsaWMiKX1ufHwobj0icmVndWxhciIpO3Jbbl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBuPWUucmVwbGFjZShyLCIiKTthPXRoaXMuZm9udHMuZ2V0KG4pO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9bj1uLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZShyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7bj1uLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLGkud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLGkud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODMpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1uLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxhLHIpXX1wdXNoRGF0YShlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1yLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09ci5wYXJhTWFyZ2luW2VdKTtjb25zdCBuPW5ldyBGb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bi5wZGZGb250fHwobi5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKG4pfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fXQuVGV4dE1lYXN1cmU9Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxyKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCByPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLG49dC5wZGZGb250LGk9bi5saW5lSGVpZ2h0fHwxLjIscz10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixpKSphLG89aS0odm9pZCAwPT09bi5saW5lR2FwPy4yOm4ubGluZUdhcCksYz1NYXRoLm1heCgxLG8pKmEsbD1hLzFlMyxoPW4uZGVmYXVsdFdpZHRofHxuLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9bi5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqbCtyLHMsYyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsbj0wLGk9MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihpK2g+ZSl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1pO2krPWg7dD1sfWVsc2UgaWYoaStoPmUpe24rPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtpPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsaSk7aT1ofW89ITA7Yz0hMX1lbHNle2krPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsaSk7bis9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0Om4saXNCcm9rZW46b319fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDc1KTt0LkRhdGFIYW5kbGVyPWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbci4kZ2V0Q2hpbGRyZW5dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLGldPWE7aWYobisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1pWysrYVswXV0sbz1lLmdldChzW3IuJHVpZF0pO2lmKG8pc1tyLiRzZXRWYWx1ZV0obyk7ZWxzZXtjb25zdCB0PXNbci4kZ2V0QXR0cmlidXRlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbci4kdWlkXSk7aWYodCl7YVtyLiRzZXRWYWx1ZV0odCk7YnJlYWt9fX1jb25zdCBjPXNbci4kZ2V0Q2hpbGRyZW5dKCk7Yy5sZW5ndGg+MCYmdC5wdXNoKFstMSxjXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbci4kZ2V0Q2hpbGRyZW5dKCkpImRhdGEiIT09ZVtyLiRub2RlTmFtZV0mJmVbci4kdG9TdHJpbmddKGEpO3RoaXMuZGF0YVtyLiR0b1N0cmluZ10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNjQpLGk9YSg4Nykscz1hKDIpO2NsYXNzIFhGQVBhcnNlciBleHRlbmRzIG4uWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCk7bnx8KG49W10pO24ucHVzaCh7cHJlZml4OmUsdmFsdWU6Y30pfWVsc2V7Y29uc3QgZT1vLmluZGV4T2YoIjoiKTtpZigtMT09PWUpaVtvXT1jO2Vsc2V7bGV0IHQ9aVtyLiRuc0F0dHJpYnV0ZXNdO3R8fCh0PWlbci4kbnNBdHRyaWJ1dGVzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFthLG5dPVtvLnNsaWNlKDAsZSksby5zbGljZShlKzEpXTtsZXQgcz10W2FdO3N8fChzPXRbYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7c1tuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CdWlsZGVyPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpLGk9YSg4OCkscz1hKDgwKSxvPWEoOTcpLGM9YSgyKTtjbGFzcyBSb290IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpzLHByZWZpeGVzOm99KXtjb25zdCBjPW51bGwhPT1zO2lmKGMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocyl9byYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KG8pO2lmKGEuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9YVtuLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6bn07YnJlYWt9fXI/YVtuLiRuc0F0dHJpYnV0ZXNdPXI6ZGVsZXRlIGFbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBsPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLGg9bCYmbFtyLiRidWlsZFhGQU9iamVjdF0odCxhKXx8bmV3IEVtcHR5O2hbbi4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoY3x8b3x8aFtuLiRpc05zQWdub3N0aWNdKCkpJiYoaFtuLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmMscHJlZml4ZXM6byxuc0Fnbm9zdGljOmhbbi4kaXNOc0Fnbm9zdGljXSgpfSk7cmV0dXJuIGh9aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXMoci5OYW1lc3BhY2VJZHMpKWlmKG4oZSkpe3Q9aS5OYW1lc3BhY2VTZXRVcFthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQmJnQubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDg5KSxuPWEoOTApLGk9YSg5MSkscz1hKDkyKSxvPWEoOTMpLGM9YSg5NCksbD1hKDgwKSxoPWEoOTUpLHU9YSg5Nik7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSksaT1hKDc2KSxzPWEoMik7Y29uc3Qgbz1yLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgbi5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbWQiKX19Y2xhc3MgQXJlYSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFyZWEiKTt0aGlzLmxldmVsPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmVoYXZpb3JPdmVycmlkZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBuLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIG4uSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVtYmVkIil9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHQiKX19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybigwLHMuc2hhZG93KSh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIEZvbnRJbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhY2tldHMiKX1bbi4kZmluYWxpemVdKCl7IioiIT09dGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VPZmZzZXQiKTt0aGlzLng9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VSYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tuLiRjb250ZW50XT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVjb3JkIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW24uJGNvbnRlbnRdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW24uJGNvbnRlbnRdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWxldmFudCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmFtZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpOyh0aGlzW24uJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbi4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcGxlIik7dGhpcy5tb2RlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0YWdnZWQiKX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidXJpIil9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aW5kb3ciKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW24uJGNvbnRlbnRdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tuLiRjb250ZW50XT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRjIiwhMCk7dGhpcy51cmk9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBGb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPUNvbmZpZ05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFVyaSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT1Db25uZWN0aW9uU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3Nyk7Y29uc3QgaT1uLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBEYXRhIGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiZGF0YSIsZSl9W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W3IuJG9uQ2hpbGRdKGUpe2NvbnN0IHQ9ZVtyLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aXx8IlNpZ25hdHVyZSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1EYXRhc2V0c05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsZVNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KSxpPWEoNzYpO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBuLlhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIExvY2FsZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBuLlhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgbi5YRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9TG9jYWxlU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIFNpZ25hdHVyZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9fXQuU2lnbmF0dXJlTmFtZXNwYWNlPVNpZ25hdHVyZU5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX10LlN0eWxlc2hlZXROYW1lc3BhY2U9U3R5bGVzaGVldE5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnhkcC5pZDtjbGFzcyBYZHAgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtuLiRvbkNoaWxkQ2hlY2tdKGUpe2NvbnN0IHQ9ci5OYW1lc3BhY2VJZHNbZVtuLiRub2RlTmFtZV1dO3JldHVybiB0JiZlW24uJG5hbWVzcGFjZUlkXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX19dC5YZHBOYW1lc3BhY2U9WGRwTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDgyKSxzPWEoNzYpO2NvbnN0IG89bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQsYz1TeW1ib2woKSxsPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksaD1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT57ZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpO3JldHVybigwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLHU9L1xzKy9nLGQ9L1tcclxuXSsvZyxmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgbz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1oLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsbykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09YCR7blt0XX0gJHtyfWA6bi50cmFuc2Zvcm09cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1yfW4uZm9udEZhbWlseSYmKDAsaS5zZXRGb250RmFtaWx5KSh7dHlwZWZhY2U6bi5mb250RmFtaWx5LHdlaWdodDpuLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6bi5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6by5mb250U2l6ZXx8MH0sdCx0W3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsbik7aWYoYSYmbi52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PW4udmVydGljYWxBbGlnbiYmbi5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4uZm9udFNpemUpO24uZm9udFNpemU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKGEqZSk7bi52ZXJ0aWNhbEFsaWduPSgwLGkubWVhc3VyZVRvU3RyaW5nKShNYXRoLnNpZ24oKDAscy5nZXRNZWFzdXJlbWVudCkobi52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZuLmZvbnRTaXplJiYobi5mb250U2l6ZT1gY2FsYygke24uZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTsoMCxpLmZpeFRleHRJbmRlbnQpKG4pO3JldHVybiBufWNvbnN0IGc9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihvLHQpO3RoaXNbY109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtyLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gbC5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIWcuaGFzKHRoaXNbci4kbm9kZU5hbWVdKX1bci4kb25UZXh0XShlLHQ9ITEpe2lmKHQpdGhpc1tjXT0hMDtlbHNle2U9ZS5yZXBsYWNlKGQsIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlKHUsIiAiKSl9ZSYmKHRoaXNbci4kY29udGVudF0rPWUpfVtyLiRwdXNoR2x5cGhzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKSh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT4oMCxzLmdldE1lYXN1cmVtZW50KShlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOm4udG9wPW4uYm90dG9tPW4ubGVmdD1uLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOm4udG9wPW4uYm90dG9tPWVbMF07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6bi50b3A9ZVswXTtuLmJvdHRvbT1lWzJdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0Om4udG9wPWVbMF07bi5sZWZ0PWVbMV07bi5ib3R0b209ZVsyXTtuLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpuLnRvcD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOm4uYm90dG9tPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOm4ubGVmdD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6bi5yaWdodD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpfWUucHVzaERhdGEoYSxuLGkpO2lmKHRoaXNbci4kY29udGVudF0pZS5hZGRTdHJpbmcodGhpc1tyLiRjb250ZW50XSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW3IuJGdldENoaWxkcmVuXSgpKSIjdGV4dCIhPT10W3IuJG5vZGVOYW1lXT90W3IuJHB1c2hHbHlwaHNdKGUpOmUuYWRkU3RyaW5nKHRbci4kY29udGVudF0pO3QmJmUucG9wRm9udCgpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW3IuJGNvbnRlbnRdKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2NdP3RoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlKGYsIlxuIik6dm9pZCAwOnRoaXNbci4kY29udGVudF18fHZvaWQgMDtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tyLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbY10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9KDAsaS5maXhVUkwpKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtyLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbci4kcHVzaEdseXBoc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltyLiR0b0hUTUxdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3IuJHRleHRdKCl7cmV0dXJuIlxuIn1bci4kcHVzaEdseXBoc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjp0fTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tyLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bci4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bci4kcHVzaEdseXBoc10oZSl7c3VwZXJbci4kcHVzaEdseXBoc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3IuJHRleHRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbci4kdGV4dF0oKTpzdXBlcltyLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fXQuWGh0bWxOYW1lc3BhY2U9WGh0bWxOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtyZXR1cm4gbmV3IG4uWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19dC5Vbmtub3duTmFtZXNwYWNlPVVua25vd25OYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0UmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoNjQpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGEmJiJ2YWx1ZSI9PT1hLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoMTUpLG89YSg1KSxjPWEoNjUpO3QuWFJlZj1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy54cmVmc3Rtcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IG4uUmVmU2V0O3RoaXMuc3RhdHM9bmV3IGkuRG9jU3RhdHModC5tc2dIYW5kbGVyKTt0aGlzLl9uZXdSZWZOdW09bnVsbH1nZXROZXdSZWYoKXtudWxsPT09dGhpcy5fbmV3UmVmTnVtJiYodGhpcy5fbmV3UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBuLlJlZi5nZXQodGhpcy5fbmV3UmVmTnVtKyssMCl9cmVzZXROZXdSZWYoKXt0aGlzLl9uZXdSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxzO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lJiZlLmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGEscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtzPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYocyBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYocy5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PXM7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHQ9L1xiZW5kb2JqW1xiXHNdJC8sYT0vXHMrKFxkK1xzK1xkK1xzK29ialtcYlxzPF0pJC8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbMTExLDk4LDEwNl0pLGg9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCB1PXRoaXMuc3RyZWFtO3UucG9zPTA7Y29uc3QgZD11LmdldEJ5dGVzKCksZj1kLmxlbmd0aDtsZXQgZz11LnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPWRbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249ZFtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4oZCxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKGQsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKGQsZyxjKX1lbHNlIGlmKHk9ZS5leGVjKGIpKXtjb25zdCBlPTB8eVsxXSxuPTB8eVsyXTtsZXQgbyxjPWcrYi5sZW5ndGgsZj0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUubWFrZVN1YlN0cmVhbShjKSl9KS5nZXRPYmooKTtmPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBpLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmY9ITB9fWVsc2UgZj0hMDtmJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6Zy11LnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2Zvcig7YzxkLmxlbmd0aDspe2NvbnN0IGU9Yytza2lwVW50aWwoZCxjLGwpKzQ7bz1lLWc7Y29uc3Qgbj1NYXRoLm1heChlLTI1LGMpLGk9KDAsci5ieXRlc1RvU3RyaW5nKShkLnN1YmFycmF5KG4sZSkpO2lmKHQudGVzdChpKSlicmVhazt7Y29uc3QgZT1hLmV4ZWMoaSk7aWYoZSYmZVsxXSl7KDAsci53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCBuZXcgIm9iaiIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpO28tPWVbMV0ubGVuZ3RoO2JyZWFrfX1jPWV9Y29uc3QgcD1kLnN1YmFycmF5KGcsZytvKSx3PXNraXBVbnRpbChwLDAsaCk7aWYodzxvJiZwW3crNV08NjQpe20ucHVzaChnLXUuc3RhcnQpO3RoaXMueHJlZnN0bXNbZy11LnN0YXJ0XT0xfWcrPW99ZWxzZSBpZihiLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbN10pKSl7cC5wdXNoKGcpO2crPXNraXBVbnRpbChkLGcsYyl9ZWxzZSBnKz1iLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIG0pe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1sZXQgYix5O2Zvcihjb25zdCBlIG9mWy4uLnAsImdlbmVyYXRpb25GYWxsYmFjayIsLi4ucF0pe2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siPT09ZSl7aWYoIXkpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfXUucG9zPWU7Y29uc3QgdD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7bGV0IGk9ITE7dHJ5e2NvbnN0IGU9ci5nZXQoIlJvb3QiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IHQ9ZS5nZXQoIlBhZ2VzIik7aWYoISh0IGluc3RhbmNlb2Ygbi5EaWN0KSljb250aW51ZTtjb25zdCBhPXQuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIoYSkmJihpPSEwKX1jYXRjaChlKXt5PWU7Y29udGludWV9aWYoaSYmci5oYXMoIklEIikpcmV0dXJuIHI7Yj1yfWlmKGIpcmV0dXJuIGI7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7dGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O3RyeXtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgaT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPWkuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShpKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkpe2NvbnN0IGU9bDtpZighKGUgaW4gdGhpcy54cmVmc3Rtcykpe3RoaXMueHJlZnN0bXNbZV09MTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSl9fX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpLmdldE9iaigpKSYmKDAsbi5pc0NtZCkoaS5nZXRPYmooKSwib2JqIikmJihsPWkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1yZXR1cm4gdGhpcy50b3BEaWN0fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSk7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBzPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2Fybikocyk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgaS5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBjPXQub2Zmc2V0LGw9dGhpcy5mZXRjaChuLlJlZi5nZXQoYywwKSk7aWYoIShsIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBoPWwuZGljdC5nZXQoIkZpcnN0IiksdT1sLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBmPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7KytlKXtjb25zdCB0PWQuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7ZltlXT10O2dbZV09YX1jb25zdCBwPShsLnN0YXJ0fHwwKStoLG09bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZTx1LTE/Z1tlKzFdLWdbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7ZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwubWFrZVN1YlN0cmVhbShwK2dbZV0sdCxsLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1kLmdldE9iaigpO21bZV09YTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IG49ZltlXSxpPXRoaXMuZW50cmllc1tuXTtpJiZpLm9mZnNldD09PWMmJmkuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSl9aWYodm9pZCAwPT09KHQ9bVt0Lmdlbl0pKXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLlJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmlzTm9kZUpTPXZvaWQgMDtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWF9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIHI9YSgyKTtjb25zdCBuPTEsaT0yLHM9MSxvPTIsYz0zLGw9NCxoPTUsdT02LGQ9NyxmPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLHIudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgci5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLk1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fXQuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPWU9Pntjb25zdCB0PWUuZGF0YTtpZih0LnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKHQuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsodCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEsbil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsYz10aGlzLnRhcmdldE5hbWUsbD10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3Qgcz0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDppLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uaXNDbG9zZWQ9ITA7bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxzdHJlYW06cyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfV9jcmVhdGVTdHJlYW1TaW5rKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLHM9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZShlLHM9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1pLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OigwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O3Uuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3UucmVhZHk9dS5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09dTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChvKGUuZGF0YSx1KSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGwmJnAub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIGw6KDAsci5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgYzooMCxyLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgaDooMCxyLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyx0KTticmVhaztjYXNlIG86ZS5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgczppZighcClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChwLm9uQ2FuY2VsJiZwLm9uQ2FuY2VsKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbCYmZS5zdGFydENhbGwucHJvbWlzZSxlLnB1bGxDYWxsJiZlLnB1bGxDYWxsLnByb21pc2UsZS5jYW5jZWxDYWxsJiZlLmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBERldvcmtlclN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTt0LlBERldvcmtlclN0cmVhbT1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpeygwLHIuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciYmdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIuY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fTtjbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19fV0sdD17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKGEpe3ZhciByPXRbYV07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBuPXRbYV09e2V4cG9ydHM6e319O2VbYV0obixuLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk7cmV0dXJuIG4uZXhwb3J0c31fX3dfcGRmanNfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClfX3dfcGRmanNfcmVxdWlyZV9fLm8odCxhKSYmIV9fd19wZGZqc19yZXF1aXJlX18ubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9O19fd19wZGZqc19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7X193X3BkZmpzX3JlcXVpcmVfXy5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgYT17fTsoKCk9Pnt2YXIgZT1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiV29ya2VyTWVzc2FnZUhhbmRsZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lldvcmtlck1lc3NhZ2VIYW5kbGVyfX0pO3ZhciB0PV9fd19wZGZqc19yZXF1aXJlX18oMSl9KSgpO3JldHVybiBhfSkoKSkpOw==",R2e="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz1bLCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwO2UuYXJyYXlCeXRlTGVuZ3RoPWFycmF5Qnl0ZUxlbmd0aDtlLmFycmF5c1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlzVG9CeXRlcyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2xldCBzPTA7Zm9yKGxldCBpPTA7aTxlO2krKylzKz1hcnJheUJ5dGVMZW5ndGgodFtpXSk7bGV0IGk9MDtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBlPXRbc107ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KGUpKTtjb25zdCByPWUuYnl0ZUxlbmd0aDtuLnNldChlLGkpO2krPXJ9cmV0dXJuIG59O2UuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydCh0LGUpe3R8fHVucmVhY2hhYmxlKGUpfTtlLmJ5dGVzVG9TdHJpbmc9ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ2b2lkIDAhPT10Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLHM9ODE5MjtpZihlPHMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgbj0wO248ZTtuKz1zKXtjb25zdCByPU1hdGgubWluKG4rcyxlKSxhPXQuc3ViYXJyYXkobixyKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX07ZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZT0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0dGxlZCIse2dldDooKT0+ZX0pO3QucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxpKXt0LnJlc29sdmU9ZnVuY3Rpb24odCl7ZT0hMDtzKHQpfTt0LnJlamVjdD1mdW5jdGlvbih0KXtlPSEwO2kodCl9fSkpO3JldHVybiB0fTtlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LGU9bnVsbCxzPW51bGwpe2lmKCF0KXJldHVybiBudWxsO3RyeXtpZihzJiYic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMuYWRkRGVmYXVsdFByb3RvY29sJiZ0LnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgZT10Lm1hdGNoKC9cLi9nKTtlJiZlLmxlbmd0aD49MiYmKHQ9YGh0dHA6Ly8ke3R9YCl9aWYocy50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e3Q9c3RyaW5nVG9VVEY4U3RyaW5nKHQpfWNhdGNoKHQpe319Y29uc3QgaT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO2lmKGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2wodCl7aWYoIXQpcmV0dXJuITE7c3dpdGNoKHQucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2godCl7fXJldHVybiBudWxsfTtlLmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcodCl7cmV0dXJuIHQucmVwbGFjZSgvKFsoKVxcXG5ccl0pL2csKHQ9PiJcbiI9PT10PyJcXG4iOiJcciI9PT10PyJcXHIiOmBcXCR7dH1gKSl9O2UuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKHQ9bmV3IERhdGUpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwodC5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gaX07ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7aT49cy5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKylpZih0W3NdIT09ZVtzXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkodCl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KHQpfTtlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3MsaV1vZiB0KWVbc109aTtyZXR1cm4gZX07ZS5vYmplY3RTaXplPWZ1bmN0aW9uIG9iamVjdFNpemUodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aH07ZS5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbCh0KXtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoaT10KX07ZS5zaGFkb3c9c2hhZG93O2Uuc3RyaW5nMzI9ZnVuY3Rpb24gc3RyaW5nMzIodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9O2Uuc3RyaW5nVG9CeXRlcz1zdHJpbmdUb0J5dGVzO2Uuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcodCl7aWYodFswXT49IsOvIil7bGV0IGU7IsO+Ij09PXRbMF0mJiLDvyI9PT10WzFdP2U9InV0Zi0xNmJlIjoiw78iPT09dFswXSYmIsO+Ij09PXRbMV0/ZT0idXRmLTE2bGUiOiLDryI9PT10WzBdJiYiwrsiPT09dFsxXSYmIsK/Ij09PXRbMl0mJihlPSJ1dGYtOCIpO2lmKGUpdHJ5e2NvbnN0IHM9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksaT1zdHJpbmdUb0J5dGVzKHQpO3JldHVybiBzLmRlY29kZShpKX1jYXRjaCh0KXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7dH0iLmApfX1jb25zdCBlPVtdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT1hW3QuY2hhckNvZGVBdChzKV07ZS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTp0LmNoYXJBdChzKSl9cmV0dXJuIGUuam9pbigiIil9O2Uuc3RyaW5nVG9VVEYxNkJFU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZCRVN0cmluZyh0KXtjb25zdCBlPVsiw77DvyJdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT10LmNoYXJDb2RlQXQocyk7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmkpKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO2UuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTtlLkxJTkVfRkFDVE9SPTEuMzU7ZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTtlLkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjtlLkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX07ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfTtlLlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O2UuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07ZS5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTtlLkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9O2UuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn07ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifTtlLkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifTtlLkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfTtlLkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9O2UuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX07ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifTtlLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifTtlLlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifTtlLlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifTtlLkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O2NvbnN0IHM9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1zO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn07ZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTtsZXQgaT1zLldBUk5JTkdTO2Z1bmN0aW9uIHdhcm4odCl7aT49cy5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7dH1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZSh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gc2hhZG93KHQsZSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpzLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIHN9Y29uc3Qgbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPXQ7dGhpcy5uYW1lPWV9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtlLkJhc2VFeGNlcHRpb249bjtlLlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPWV9fTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPWV9fTtlLkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O2UuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz1lfX07ZS5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiRm9ybWF0RXJyb3IiKX19O2UuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSlzW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIHN9ZnVuY3Rpb24gYXJyYXlCeXRlTGVuZ3RoKHQpe2lmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZih2b2lkIDAhPT10LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDt1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaCh0KXtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9fTtjb25zdCByPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IodCxlLHMpe3JldHVybmAjJHtyW3RdfSR7cltlXX0ke3Jbc119YH1zdGF0aWMgc2NhbGVNaW5NYXgodCxlKXtsZXQgcztpZih0WzBdKXtpZih0WzBdPDApe3M9ZVswXTtlWzBdPWVbMV07ZVsxXT1zfWVbMF0qPXRbMF07ZVsxXSo9dFswXTtpZih0WzNdPDApe3M9ZVsyXTtlWzJdPWVbM107ZVszXT1zfWVbMl0qPXRbM107ZVszXSo9dFszXX1lbHNle3M9ZVswXTtlWzBdPWVbMl07ZVsyXT1zO3M9ZVsxXTtlWzFdPWVbM107ZVszXT1zO2lmKHRbMV08MCl7cz1lWzJdO2VbMl09ZVszXTtlWzNdPXN9ZVsyXSo9dFsxXTtlWzNdKj10WzFdO2lmKHRbMl08MCl7cz1lWzBdO2VbMF09ZVsxXTtlWzFdPXN9ZVswXSo9dFsyXTtlWzFdKj10WzJdfWVbMF0rPXRbNF07ZVsxXSs9dFs0XTtlWzJdKz10WzVdO2VbM10rPXRbNV19c3RhdGljIHRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzJdK2VbNF0sdFswXSplWzFdK3RbMV0qZVszXStlWzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsZSl7Y29uc3Qgcz1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVyblsodFswXSplWzNdLXRbMV0qZVsyXStlWzJdKmVbNV0tZVs0XSplWzNdKS9zLCgtdFswXSplWzFdK3RbMV0qZVswXStlWzRdKmVbMV0tZVs1XSplWzBdKS9zXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxlKXtjb25zdCBzPVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxlKSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLGUpLG49VXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxlKSxyPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0sZSk7cmV0dXJuW01hdGgubWluKHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWluKHNbMV0saVsxXSxuWzFdLHJbMV0pLE1hdGgubWF4KHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWF4KHNbMV0saVsxXSxuWzFdLHJbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybSh0KXtjb25zdCBlPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuW3RbM10vZSwtdFsxXS9lLC10WzJdL2UsdFswXS9lLCh0WzJdKnRbNV0tdFs0XSp0WzNdKS9lLCh0WzRdKnRbMV0tdFs1XSp0WzBdKS9lXX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodCl7Y29uc3QgZT1bdFswXSx0WzJdLHRbMV0sdFszXV0scz10WzBdKmVbMF0rdFsxXSplWzJdLGk9dFswXSplWzFdK3RbMV0qZVszXSxuPXRbMl0qZVswXSt0WzNdKmVbMl0scj10WzJdKmVbMV0rdFszXSplWzNdLGE9KHMrcikvMixvPU1hdGguc3FydCgocytyKSoqMi00KihzKnItbippKSkvMixsPWErb3x8MSxjPWEtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QodCl7Y29uc3QgZT10LnNsaWNlKDApO2lmKHRbMF0+dFsyXSl7ZVswXT10WzJdO2VbMl09dFswXX1pZih0WzFdPnRbM10pe2VbMV09dFszXTtlWzNdPXRbMV19cmV0dXJuIGV9c3RhdGljIGludGVyc2VjdCh0LGUpe2NvbnN0IHM9TWF0aC5tYXgoTWF0aC5taW4odFswXSx0WzJdKSxNYXRoLm1pbihlWzBdLGVbMl0pKSxpPU1hdGgubWluKE1hdGgubWF4KHRbMF0sdFsyXSksTWF0aC5tYXgoZVswXSxlWzJdKSk7aWYocz5pKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4odFsxXSx0WzNdKSxNYXRoLm1pbihlWzFdLGVbM10pKSxyPU1hdGgubWluKE1hdGgubWF4KHRbMV0sdFszXSksTWF0aC5tYXgoZVsxXSxlWzNdKSk7cmV0dXJuIG4+cj9udWxsOltzLG4saSxyXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPVtdLGM9W1tdLFtdXTtsZXQgaCxkLHUscCxnLG0sZixiO2ZvcihsZXQgYz0wO2M8MjsrK2Mpe2lmKDA9PT1jKXtkPTYqdC0xMipzKzYqbjtoPS0zKnQrOSpzLTkqbiszKmE7dT0zKnMtMyp0fWVsc2V7ZD02KmUtMTIqaSs2KnI7aD0tMyplKzkqaS05KnIrMypvO3U9MyppLTMqZX1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnMoZCk8MWUtMTIpY29udGludWU7cD0tdS9kOzA8cCYmcDwxJiZsLnB1c2gocCl9ZWxzZXtmPWQqZC00KnUqaDtiPU1hdGguc3FydChmKTtpZighKGY8MCkpe2c9KC1kK2IpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyk7bT0oLWQtYikvKDIqaCk7MDxtJiZtPDEmJmwucHVzaChtKX19fWxldCBBLF89bC5sZW5ndGg7Y29uc3Qgdj1fO2Zvcig7Xy0tOyl7cD1sW19dO0E9MS1wO2NbMF1bX109QSpBKkEqdCszKkEqQSpwKnMrMypBKnAqcCpuK3AqcCpwKmE7Y1sxXVtfXT1BKkEqQSplKzMqQSpBKnAqaSszKkEqcCpwKnIrcCpwKnAqb31jWzBdW3ZdPXQ7Y1sxXVt2XT1lO2NbMF1bdisxXT1hO2NbMV1bdisxXT1vO2NbMF0ubGVuZ3RoPWNbMV0ubGVuZ3RoPXYrMjtyZXR1cm5bTWF0aC5taW4oLi4uY1swXSksTWF0aC5taW4oLi4uY1sxXSksTWF0aC5tYXgoLi4uY1swXSksTWF0aC5tYXgoLi4uY1sxXSldfX1lLlV0aWw9VXRpbDtjb25zdCBhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZXhwb3J0cy5idWlsZD1leHBvcnRzLlJlbmRlclRhc2s9ZXhwb3J0cy5QREZXb3JrZXJVdGlsPWV4cG9ydHMuUERGV29ya2VyPWV4cG9ydHMuUERGUGFnZVByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1leHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2s9ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZXhwb3J0cy5Mb29wYmFja1BvcnQ9ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7ZXhwb3J0cy5nZXREb2N1bWVudD1nZXREb2N1bWVudDtleHBvcnRzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5PXNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5O2V4cG9ydHMudmVyc2lvbj12b2lkIDA7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDMpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oNiksX2ZvbnRfbG9hZGVyPV9fd19wZGZqc19yZXF1aXJlX18oOSksX2NhbnZhcz1fX3dfcGRmanNfcmVxdWlyZV9fKDEwKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygxMiksX21lc3NhZ2VfaGFuZGxlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNiksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTcpLF90cmFuc3BvcnRfc3RyZWFtPV9fd19wZGZqc19yZXF1aXJlX18oMTgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5KTtjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMDtsZXQgRGVmYXVsdENhbnZhc0ZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ2FudmFzRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5PURlZmF1bHRDYW52YXNGYWN0b3J5O2xldCBEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2xldCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnksY3JlYXRlUERGTmV0d29ya1N0cmVhbTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aWYoX2lzX25vZGUuaXNOb2RlSlMpe2NvbnN0e05vZGVDYW52YXNGYWN0b3J5OnQsTm9kZUNNYXBSZWFkZXJGYWN0b3J5OmUsTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5OnN9PV9fd19wZGZqc19yZXF1aXJlX18oMjApO2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk9dDtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9ZTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9c31mdW5jdGlvbiBzZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSh0KXtjcmVhdGVQREZOZXR3b3JrU3RyZWFtPXR9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCl7Y29uc3QgZT1uZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaztsZXQgcztpZigic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBVUkwpcz17dXJsOnR9O2Vsc2UgaWYoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkpcz17ZGF0YTp0fTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQpcz17cmFuZ2U6dH07ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgc3RyaW5nLCBVUkwsIFR5cGVkQXJyYXksIG9yIHBhcmFtZXRlciBvYmplY3QuIik7aWYoIXQudXJsJiYhdC5kYXRhJiYhdC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcGFyYW1ldGVyIG9iamVjdDogbmVlZCBlaXRoZXIgLmRhdGEsIC5yYW5nZSBvciAudXJsIik7cz10fWNvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj1udWxsLHI9bnVsbDtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07c3dpdGNoKHQpe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7aVt0XT1uZXcgVVJMKGUsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKGBDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIiR7dH0iLmApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVVJMKXtpW3RdPWUudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjpuPWU7Y29udGludWU7Y2FzZSJ3b3JrZXIiOnI9ZTtjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmZSBpbnN0YW5jZW9mIEJ1ZmZlcilpW3RdPW5ldyBVaW50OEFycmF5KGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlbdF09KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykoZSk7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHxpc05hTihlLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtpW3RdPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaVt0XT1uZXcgVWludDhBcnJheShlKX1jb250aW51ZX1pW3RdPWV9aS5DTWFwUmVhZGVyRmFjdG9yeT1pLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7aS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1pLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aS5pZ25vcmVFcnJvcnM9ITAhPT1pLnN0b3BBdEVycm9ycztpLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1pLmZvbnRFeHRyYVByb3BlcnRpZXM7aS5wZGZCdWc9ITA9PT1pLnBkZkJ1ZztpLmVuYWJsZVhmYT0hMD09PWkuZW5hYmxlWGZhOyghTnVtYmVyLmlzSW50ZWdlcihpLnJhbmdlQ2h1bmtTaXplKXx8aS5yYW5nZUNodW5rU2l6ZTwxKSYmKGkucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKTsoInN0cmluZyIhPXR5cGVvZiBpLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkoaS5kb2NCYXNlVXJsKSkmJihpLmRvY0Jhc2VVcmw9bnVsbCk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkubWF4SW1hZ2VTaXplKXx8aS5tYXhJbWFnZVNpemU8LTEpJiYoaS5tYXhJbWFnZVNpemU9LTEpOyJzdHJpbmciIT10eXBlb2YgaS5jTWFwVXJsJiYoaS5jTWFwVXJsPW51bGwpOyJzdHJpbmciIT10eXBlb2YgaS5zdGFuZGFyZEZvbnREYXRhVXJsJiYoaS5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlV29ya2VyRmV0Y2gmJihpLnVzZVdvcmtlckZldGNoPWkuQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmaS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzRXZhbFN1cHBvcnRlZCYmKGkuaXNFdmFsU3VwcG9ydGVkPSEwKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUZvbnRGYWNlJiYoaS5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlU3lzdGVtRm9udHMmJihpLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIWkuZGlzYWJsZUZvbnRGYWNlKTsib2JqZWN0Ij09dHlwZW9mIGkub3duZXJEb2N1bWVudCYmbnVsbCE9PWkub3duZXJEb2N1bWVudHx8KGkub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVSYW5nZSYmKGkuZGlzYWJsZVJhbmdlPSExKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVTdHJlYW0mJihpLmRpc2FibGVTdHJlYW09ITEpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUF1dG9GZXRjaCYmKGkuZGlzYWJsZUF1dG9GZXRjaD0hMSk7KDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGkudmVyYm9zaXR5KTtpZighcil7Y29uc3QgdD17dmVyYm9zaXR5OmkudmVyYm9zaXR5LHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07cj10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPXJ9Y29uc3QgYT1lLmRvY0lkO3IucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7Y29uc3QgdD1fZmV0Y2hEb2N1bWVudChyLGksbixhKSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtuP2U9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDppLmxlbmd0aCxpbml0aWFsRGF0YTppLmluaXRpYWxEYXRhLHByb2dyZXNzaXZlRG9uZTppLnByb2dyZXNzaXZlRG9uZSxjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTppLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lLGRpc2FibGVSYW5nZTppLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOmkuZGlzYWJsZVN0cmVhbX0sbik6aS5kYXRhfHwoZT1jcmVhdGVQREZOZXR3b3JrU3RyZWFtKHt1cmw6aS51cmwsbGVuZ3RoOmkubGVuZ3RoLGh0dHBIZWFkZXJzOmkuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmkud2l0aENyZWRlbnRpYWxzLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOmkuZGlzYWJsZVJhbmdlLGRpc2FibGVTdHJlYW06aS5kaXNhYmxlU3RyZWFtfSkpO3QoZSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt0LHNdKS50aGVuKChmdW5jdGlvbihbdCxzXSl7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBuPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKGEsdCxyLnBvcnQpLG89bmV3IFdvcmtlclRyYW5zcG9ydChuLGUscyxpKTtlLl90cmFuc3BvcnQ9bztuLnNlbmQoIlJlYWR5IixudWxsKX0pKX0pKS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCxlLHMsaSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2lmKHMpe2UubGVuZ3RoPXMubGVuZ3RoO2UuaW5pdGlhbERhdGE9cy5pbml0aWFsRGF0YTtlLnByb2dyZXNzaXZlRG9uZT1zLnByb2dyZXNzaXZlRG9uZTtlLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV9Y29uc3Qgbj1hd2FpdCB0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4wLjI3OSIsZGF0YTplLmRhdGEscGFzc3dvcmQ6ZS5wYXNzd29yZCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplLGxlbmd0aDplLmxlbmd0aCxkb2NCYXNlVXJsOmUuZG9jQmFzZVVybCxlbmFibGVYZmE6ZS5lbmFibGVYZmEsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOmUubWF4SW1hZ2VTaXplLGRpc2FibGVGb250RmFjZTplLmRpc2FibGVGb250RmFjZSxpZ25vcmVFcnJvcnM6ZS5pZ25vcmVFcnJvcnMsaXNFdmFsU3VwcG9ydGVkOmUuaXNFdmFsU3VwcG9ydGVkLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsZm9udEV4dHJhUHJvcGVydGllczplLmZvbnRFeHRyYVByb3BlcnRpZXMsdXNlU3lzdGVtRm9udHM6ZS51c2VTeXN0ZW1Gb250cyxjTWFwVXJsOmUudXNlV29ya2VyRmV0Y2g/ZS5jTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDplLnVzZVdvcmtlckZldGNoP2Uuc3RhbmRhcmRGb250RGF0YVVybDpudWxsfX0pO2UuZGF0YSYmKGUuZGF0YT1udWxsKTtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIik7cmV0dXJuIG59Y2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFza3tzdGF0aWMjdD0wO2NvbnN0cnVjdG9yKCl7dGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiN0Kys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5vblVuc3VwcG9ydGVkRmVhdHVyZT1udWxsfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1hc3luYyBkZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITA7YXdhaXQodGhpcy5fdHJhbnNwb3J0Py5kZXN0cm95KCkpO3RoaXMuX3RyYW5zcG9ydD1udWxsO2lmKHRoaXMuX3dvcmtlcil7dGhpcy5fd29ya2VyLmRlc3Ryb3koKTt0aGlzLl93b3JrZXI9bnVsbH19fWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1QREZEb2N1bWVudExvYWRpbmdUYXNrO2NsYXNzIFBERkRhdGFSYW5nZVRyYW5zcG9ydHtjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPXM7dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfWFkZFJhbmdlTGlzdGVuZXIodCl7dGhpcy5fcmFuZ2VMaXN0ZW5lcnMucHVzaCh0KX1hZGRQcm9ncmVzc0xpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzLnB1c2godCl9b25EYXRhUmFuZ2UodCxlKXtmb3IoY29uc3QgcyBvZiB0aGlzLl9yYW5nZUxpc3RlbmVycylzKHQsZSl9b25EYXRhUHJvZ3Jlc3ModCxlKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCBzIG9mIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzKXModCxlKX0pKX1vbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgZSBvZiB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMpZSh0KX0pKX1vbkRhdGFQcm9ncmVzc2l2ZURvbmUoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyl0KCl9KSl9dHJhbnNwb3J0UmVhZHkoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpfXJlcXVlc3REYXRhUmFuZ2UodCxlKXsoMCxfdXRpbC51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSIpfWFib3J0KCl7fX1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7Y2xhc3MgUERGRG9jdW1lbnRQcm94eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BkZkluZm89dDt0aGlzLl90cmFuc3BvcnQ9ZX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLl9wZGZJbmZvLm51bVBhZ2VzfWdldCBmaW5nZXJwcmludHMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHN9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGF0c31nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmF9Z2V0IGFsbFhmYUh0bWwoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhfWdldFBhZ2UodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VJbmRleCh0KX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxhYmVscygpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYXlvdXQoKX1nZXRQYWdlTW9kZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRPcGVuQWN0aW9uKCl9Z2V0QXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpfWdldEpTQWN0aW9ucygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RG9jSlNBY3Rpb25zKCl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBlcm1pc3Npb25zKCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCl9Z2V0TWFya0luZm8oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1hcmtJbmZvKCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGF0YSgpfXNhdmVEb2N1bWVudCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCl9Z2V0RG93bmxvYWRJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2V9Y2xlYW51cCh0PSExKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCh0fHx0aGlzLmlzUHVyZVhmYSl9ZGVzdHJveSgpe3JldHVybiB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKX1nZXQgbG9hZGluZ1BhcmFtcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1BhcmFtc31nZXQgbG9hZGluZ1Rhc2soKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrfWdldEZpZWxkT2JqZWN0cygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RmllbGRPYmplY3RzKCl9aGFzSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5oYXNKU0FjdGlvbnMoKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl9fWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1QREZEb2N1bWVudFByb3h5O2NsYXNzIFBERlBhZ2VQcm94eXtjb25zdHJ1Y3Rvcih0LGUscyxpLG49ITEpe3RoaXMuX3BhZ2VJbmRleD10O3RoaXMuX3BhZ2VJbmZvPWU7dGhpcy5fb3duZXJEb2N1bWVudD1pO3RoaXMuX3RyYW5zcG9ydD1zO3RoaXMuX3N0YXRzPW4/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsO3RoaXMuX3BkZkJ1Zz1uO3RoaXMuY29tbW9uT2Jqcz1zLmNvbW1vbk9ianM7dGhpcy5vYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuX2JpdG1hcHM9bmV3IFNldDt0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLnBlbmRpbmdDbGVhbnVwPSExO3RoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcz1uZXcgTWFwO3RoaXMuZGVzdHJveWVkPSExfWdldCBwYWdlTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfWdldCByb3RhdGUoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfWdldCByZWYoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfWdldCB1c2VyVW5pdCgpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH1nZXQgdmlldygpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fWdldFZpZXdwb3J0KHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpzPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpzLG9mZnNldFk6aSxkb250RmxpcDpufSl9Z2V0QW5ub3RhdGlvbnMoe2ludGVudDp0PSJkaXNwbGF5In09e30pe2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0KTtsZXQgcz10aGlzLl9hbm5vdGF0aW9uUHJvbWlzZXMuZ2V0KGUuY2FjaGVLZXkpO2lmKCFzKXtzPXRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsZS5yZW5kZXJpbmdJbnRlbnQpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5zZXQoZS5jYWNoZUtleSxzKX1yZXR1cm4gc31nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fanNBY3Rpb25zUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCl9YXN5bmMgZ2V0WGZhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYT8uY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XXx8bnVsbH1yZW5kZXIoe2NhbnZhc0NvbnRleHQ6dCx2aWV3cG9ydDplLGludGVudDpzPSJkaXNwbGF5Iixhbm5vdGF0aW9uTW9kZTppPV91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSx0cmFuc2Zvcm06bj1udWxsLGNhbnZhc0ZhY3Rvcnk6cj1udWxsLGJhY2tncm91bmQ6YT1udWxsLG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6bz1udWxsLGFubm90YXRpb25DYW52YXNNYXA6bD1udWxsLHBhZ2VDb2xvcnM6Yz1udWxsLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6aD1udWxsfSl7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyxpLGgpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7b3x8KG89dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTtsZXQgdT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO2lmKCF1KXt1PU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW50ZW50U3RhdGVzLnNldChkLmNhY2hlS2V5LHUpfWlmKHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCl7Y2xlYXJUaW1lb3V0KHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCk7dS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9Y29uc3QgcD1yfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLGc9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3Uub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH07dGhpcy5fc3RhdHM/LnRpbWUoIlBhZ2UgUmVxdWVzdCIpO3RoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCl9Y29uc3QgY29tcGxldGU9dD0+e3UucmVuZGVyVGFza3MuZGVsZXRlKG0pOyh0aGlzLmNsZWFudXBBZnRlclJlbmRlcnx8ZykmJih0aGlzLnBlbmRpbmdDbGVhbnVwPSEwKTt0aGlzLl90cnlDbGVhbnVwKCk7aWYodCl7bS5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBtLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxtPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDp0LHZpZXdwb3J0OmUsdHJhbnNmb3JtOm4sYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpwLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohZyxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKG0pO2NvbnN0IGY9bS50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigoKFt0LGVdKT0+e2lmKHRoaXMucGVuZGluZ0NsZWFudXApY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTttLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KTttLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBmfWdldE9wZXJhdG9yTGlzdCh7aW50ZW50OnQ9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOmU9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsfT17fSl7Y29uc3QgaT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQsZSxzLCEwKTtsZXQgbixyPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoaS5jYWNoZUtleSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGkuY2FjaGVLZXkscil9aWYoIXIub3BMaXN0UmVhZENhcGFiaWxpdHkpe249T2JqZWN0LmNyZWF0ZShudWxsKTtuLm9wZXJhdG9yTGlzdENoYW5nZWQ9ZnVuY3Rpb24gb3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHIub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7ci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHIub3BlcmF0b3JMaXN0KTtyLnJlbmRlclRhc2tzLmRlbGV0ZShuKX19O3Iub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7KHIucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQobik7ci5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KHtkaXNhYmxlQ29tYmluZVRleHRJdGVtczp0PSExLGluY2x1ZGVNYXJrZWRDb250ZW50OmU9ITF9PXt9KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRUZXh0Q29udGVudCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY29tYmluZVRleHRJdGVtczohMCE9PXQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KHQ9e30pe2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscyl7Y29uc3QgaT1lLmdldFJlYWRlcigpLG49e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6c30pe2lmKHMpdChuKTtlbHNle09iamVjdC5hc3NpZ24obi5zdHlsZXMsZS5zdHlsZXMpO24uaXRlbXMucHVzaCguLi5lLml0ZW1zKTtwdW1wKCl9fSkscyl9KCl9KSl9Z2V0U3RydWN0VHJlZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRTdHJ1Y3RUcmVlKHRoaXMuX3BhZ2VJbmRleCl9X2Rlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSl7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm5ldyBFcnJvcigiUGFnZSB3YXMgZGVzdHJveWVkLiIpLGZvcmNlOiEwfSk7aWYoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpZm9yKGNvbnN0IHMgb2YgZS5yZW5kZXJUYXNrcyl7dC5wdXNoKHMuY29tcGxldGVkKTtzLmNhbmNlbCgpfX10aGlzLm9ianMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9iaXRtYXBzKXQuY2xvc2UoKTt0aGlzLl9iaXRtYXBzLmNsZWFyKCk7dGhpcy5fYW5ub3RhdGlvblByb21pc2VzLmNsZWFyKCk7dGhpcy5fanNBY3Rpb25zUHJvbWlzZT1udWxsO3RoaXMuX3N0cnVjdFRyZWVQcm9taXNlPW51bGw7dGhpcy5wZW5kaW5nQ2xlYW51cD0hMTtyZXR1cm4gUHJvbWlzZS5hbGwodCl9Y2xlYW51cCh0PSExKXt0aGlzLnBlbmRpbmdDbGVhbnVwPSEwO3JldHVybiB0aGlzLl90cnlDbGVhbnVwKHQpfV90cnlDbGVhbnVwKHQ9ITEpe2lmKCF0aGlzLnBlbmRpbmdDbGVhbnVwKXJldHVybiExO2Zvcihjb25zdHtyZW5kZXJUYXNrczp0LG9wZXJhdG9yTGlzdDplfW9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSlpZih0LnNpemU+MHx8IWUubGFzdENodW5rKXJldHVybiExO3RoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO3RoaXMub2Jqcy5jbGVhcigpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5jbGVhcigpO3RoaXMuX2pzQWN0aW9uc1Byb21pc2U9bnVsbDt0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZT1udWxsO3QmJnRoaXMuX3N0YXRzJiYodGhpcy5fc3RhdHM9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fYml0bWFwcyl0LmNsb3NlKCk7dGhpcy5fYml0bWFwcy5jbGVhcigpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7cmV0dXJuITB9X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihzKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7cy5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cysrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W3NdKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtzXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy5fdHJ5Q2xlYW51cCgpfV9wdW1wT3BlcmF0b3JMaXN0KHtyZW5kZXJpbmdJbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlTWFwOnN9KXtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlOnN9KS5nZXRSZWFkZXIoKSxuPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoZSk7bi5zdHJlYW1SZWFkZXI9aTtjb25zdCBwdW1wPSgpPT57aS5yZWFkKCkudGhlbigoKHt2YWx1ZTp0LGRvbmU6ZX0pPT57aWYoZSluLnN0cmVhbVJlYWRlcj1udWxsO2Vsc2UgaWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe3RoaXMuX3JlbmRlclBhZ2VDaHVuayh0LG4pO3B1bXAoKX19KSwodD0+e24uc3RyZWFtUmVhZGVyPW51bGw7aWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe2lmKG4ub3BlcmF0b3JMaXN0KXtuLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bms9ITA7Zm9yKGNvbnN0IHQgb2Ygbi5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0aGlzLl90cnlDbGVhbnVwKCl9aWYobi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW4uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighbi5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O24ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOnQscmVhc29uOmUsZm9yY2U6cz0hMX0pe2lmKHQuc3RyZWFtUmVhZGVyKXtpZighcyl7aWYodC5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe3Quc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTp0LHJlYXNvbjplLGZvcmNlOiEwfSk7dC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9KSxSRU5ERVJJTkdfQ0FOQ0VMTEVEX1RJTUVPVVQpO3JldHVybn19dC5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7dC5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W2Usc11vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYocz09PXQpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUoZSk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2U9W107I3M9UHJvbWlzZS5yZXNvbHZlKCk7cG9zdE1lc3NhZ2UodCxlKXtjb25zdCBzPXtkYXRhOnN0cnVjdHVyZWRDbG9uZSh0LGUpfTt0aGlzLiNzLnRoZW4oKCgpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy4jZSl0LmNhbGwodGhpcyxzKX0pKX1hZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jZS5wdXNoKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtjb25zdCBzPXRoaXMuI2UuaW5kZXhPZihlKTt0aGlzLiNlLnNwbGljZShzLDEpfXRlcm1pbmF0ZSgpe3RoaXMuI2UubGVuZ3RoPTB9fWV4cG9ydHMuTG9vcGJhY2tQb3J0PUxvb3BiYWNrUG9ydDtjb25zdCBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2V4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7UERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkPSEwO1BERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9Ii4vcGRmLndvcmtlci5qcyJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50KXtjb25zdCB0PWRvY3VtZW50Py5jdXJyZW50U2NyaXB0Py5zcmM7dCYmKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9dC5yZXBsYWNlKC8oXC4oPzptaW5cLik/anMpKFw/LiopPyQvaSwiLndvcmtlciQxJDIiKSl9UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW49ZnVuY3Rpb24odCxlKXtsZXQgczt0cnl7cz1uZXcgVVJMKHQpO2lmKCFzLm9yaWdpbnx8Im51bGwiPT09cy5vcmlnaW4pcmV0dXJuITF9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1uZXcgVVJMKGUscyk7cmV0dXJuIHMub3JpZ2luPT09aS5vcmlnaW59O1BERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXtjb25zdCBlPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKX07Y2xhc3MgUERGV29ya2Vye3N0YXRpYyNpPW5ldyBXZWFrTWFwO2NvbnN0cnVjdG9yKHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6cz0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09e30pe2lmKGUmJlBERldvcmtlci4jaS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3BvcnQ9bnVsbDt0aGlzLl93ZWJXb3JrZXI9bnVsbDt0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsO2lmKGUpe1BERldvcmtlci4jaS5zZXQoZSx0aGlzKTt0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSl9ZWxzZSB0aGlzLl9pbml0aWFsaXplKCl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2V9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fcG9ydH1nZXQgbWVzc2FnZUhhbmRsZXIoKXtyZXR1cm4gdGhpcy5fbWVzc2FnZUhhbmRsZXJ9X2luaXRpYWxpemVGcm9tUG9ydCh0KXt0aGlzLl9wb3J0PXQ7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLHQpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLm9uKCJyZWFkeSIsKGZ1bmN0aW9uKCl7fSkpO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7dGhpcy5fbWVzc2FnZUhhbmRsZXIuc2VuZCgiY29uZmlndXJlIix7dmVyYm9zaXR5OnRoaXMudmVyYm9zaXR5fSl9X2luaXRpYWxpemUoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe2xldHt3b3JrZXJTcmM6dH09UERGV29ya2VyO3RyeXtQREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbih3aW5kb3cubG9jYXRpb24uaHJlZix0KXx8KHQ9UERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCx3aW5kb3cubG9jYXRpb24pLmhyZWYpKTtjb25zdCBlPW5ldyBXb3JrZXIodCkscz1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsZSksdGVybWluYXRlRWFybHk9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtzLmRlc3Ryb3koKTtlLnRlcm1pbmF0ZSgpO3RoaXMuZGVzdHJveWVkP3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTp0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX0sb25Xb3JrZXJFcnJvcj0oKT0+e3RoaXMuX3dlYldvcmtlcnx8dGVybWluYXRlRWFybHkoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7cy5vbigidGVzdCIsKHQ9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtpZih0aGlzLmRlc3Ryb3llZCl0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYodCl7dGhpcy5fbWVzc2FnZUhhbmRsZXI9czt0aGlzLl9wb3J0PWU7dGhpcy5fd2ViV29ya2VyPWU7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtzLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfWVsc2V7dGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7cy5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKX19KSk7cy5vbigicmVhZHkiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeXtzZW5kVGVzdCgpfWNhdGNoKHQpe3RoaXMuX3NldHVwRmFrZVdvcmtlcigpfX0pKTtjb25zdCBzZW5kVGVzdD0oKT0+e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXk7cy5zZW5kKCJ0ZXN0Iix0LFt0LmJ1ZmZlcl0pfTtzZW5kVGVzdCgpO3JldHVybn1jYXRjaCh0KXsoMCxfdXRpbC5pbmZvKSgiVGhlIHdvcmtlciBoYXMgYmVlbiBkaXNhYmxlZC4iKX19dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9X3NldHVwRmFrZVdvcmtlcigpe2lmKCFQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQpeygwLF91dGlsLndhcm4pKCJTZXR0aW5nIHVwIGZha2Ugd29ya2VyLiIpO1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMH1QREZXb3JrZXIuX3NldHVwRmFrZVdvcmtlckdsb2JhbC50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtyZXR1cm59Y29uc3QgZT1uZXcgTG9vcGJhY2tQb3J0O3RoaXMuX3BvcnQ9ZTtjb25zdCBzPSJmYWtlIitQREZXb3JrZXJVdGlsLmZha2VXb3JrZXJJZCsrLGk9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIocysiX3dvcmtlciIscyxlKTt0LnNldHVwKGksZSk7Y29uc3Qgbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihzLHMrIl93b3JrZXIiLGUpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfSkpLmNhdGNoKCh0PT57dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoYFNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJHt0Lm1lc3NhZ2V9Ii5gKSl9KSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2lmKHRoaXMuX3dlYldvcmtlcil7dGhpcy5fd2ViV29ya2VyLnRlcm1pbmF0ZSgpO3RoaXMuX3dlYldvcmtlcj1udWxsfVBERldvcmtlci4jaS5kZWxldGUodGhpcy5fcG9ydCk7dGhpcy5fcG9ydD1udWxsO2lmKHRoaXMuX21lc3NhZ2VIYW5kbGVyKXt0aGlzLl9tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbH19c3RhdGljIGZyb21Qb3J0KHQpe2lmKCF0Py5wb3J0KXRocm93IG5ldyBFcnJvcigiUERGV29ya2VyLmZyb21Qb3J0IC0gaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlLiIpO3JldHVybiB0aGlzLiNpLmhhcyh0LnBvcnQpP3RoaXMuI2kuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX1zdGF0aWMgZ2V0IHdvcmtlclNyYygpe2lmKF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYylyZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO2lmKG51bGwhPT1QREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKXtfaXNfbm9kZS5pc05vZGVKU3x8KDAsX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpO3JldHVybiBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjfXRocm93IG5ldyBFcnJvcignTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyl9c3RhdGljIGdldCBfbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKCl7dHJ5e3JldHVybiBnbG9iYWxUaGlzLnBkZmpzV29ya2VyPy5Xb3JrZXJNZXNzYWdlSGFuZGxlcnx8bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19c3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCl7Y29uc3QgbG9hZGVyPWFzeW5jKCk9Pntjb25zdCBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI9dGhpcy5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcilyZXR1cm4gbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7Y29uc3Qgd29ya2VyPWV2YWwoInJlcXVpcmUiKSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn1hd2FpdCgwLF9kaXNwbGF5X3V0aWxzLmxvYWRTY3JpcHQpKHRoaXMud29ya2VyU3JjKTtyZXR1cm4gd2luZG93LnBkZmpzV29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyfTtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsIl9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGxvYWRlcigpKX19ZXhwb3J0cy5QREZXb3JrZXI9UERGV29ya2VyO2NsYXNzIFdvcmtlclRyYW5zcG9ydHsjbj1udWxsOyNyPW5ldyBNYXA7I2E9bmV3IE1hcDsjbz1udWxsO2NvbnN0cnVjdG9yKHQsZSxzLGkpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnRoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlLmJpbmQodGhpcyksb3duZXJEb2N1bWVudDppLm93bmVyRG9jdW1lbnQsc3R5bGVFbGVtZW50Omkuc3R5bGVFbGVtZW50fSk7dGhpcy5fcGFyYW1zPWk7aWYoIWkudXNlV29ya2VyRmV0Y2gpe3RoaXMuQ01hcFJlYWRlckZhY3Rvcnk9bmV3IGkuQ01hcFJlYWRlckZhY3Rvcnkoe2Jhc2VVcmw6aS5jTWFwVXJsLGlzQ29tcHJlc3NlZDppLmNNYXBQYWNrZWR9KTt0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5PW5ldyBpLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5KHtiYXNlVXJsOmkuc3RhbmRhcmRGb250RGF0YVVybH0pfXRoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPXM7dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuI259Z2V0UmVuZGVyaW5nSW50ZW50KHQsZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscz1udWxsLGk9ITEpe2xldCBuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxyPW51bGw7c3dpdGNoKHQpe2Nhc2UiYW55IjpuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6bj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6bis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOm4rPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtyPShuJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJnMgaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/czp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpuLGNhY2hlS2V5OmAke259XyR7X2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKHIpfWAsYW5ub3RhdGlvblN0b3JhZ2VNYXA6cn19ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eSYmdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrIikpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy4jci52YWx1ZXMoKSl0LnB1c2goZS5fZGVzdHJveSgpKTt0aGlzLiNyLmNsZWFyKCk7dGhpcy4jYS5jbGVhcigpO3RoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO2NvbnN0IGU9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlRlcm1pbmF0ZSIsbnVsbCk7dC5wdXNoKGUpO1Byb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGw7dGhpcy5fbmV0d29ya1N0cmVhbSYmdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7aWYodGhpcy5tZXNzYWdlSGFuZGxlcil7dGhpcy5tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5tZXNzYWdlSGFuZGxlcj1udWxsfXRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpfSksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5yZWplY3QpO3JldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2V9c2V0dXBNZXNzYWdlSGFuZGxlcigpe2NvbnN0e21lc3NhZ2VIYW5kbGVyOnQsbG9hZGluZ1Rhc2s6ZX09dGhpczt0Lm9uKCJHZXRSZWFkZXIiLCgodCxlKT0+eygwLF91dGlsLmFzc2VydCkodGhpcy5fbmV0d29ya1N0cmVhbSwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt0aGlzLl9mdWxsUmVhZGVyPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlcigpO3RoaXMuX2Z1bGxSZWFkZXIub25Qcm9ncmVzcz10PT57dGhpcy5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH19O2Uub25QdWxsPSgpPT57dGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oe3ZhbHVlOnQsZG9uZTpzfSl7aWYocyllLmNsb3NlKCk7ZWxzZXsoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodCksMSxbdF0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IHM9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10aGlzLl9mdWxsUmVhZGVyO2kuaGVhZGVyc1JlYWR5LnRoZW4oKCgpPT57aWYoIWkuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fCFpLmlzUmFuZ2VTdXBwb3J0ZWQpe3RoaXMuX2xhc3RQcm9ncmVzcyYmZS5vblByb2dyZXNzPy4odGhpcy5fbGFzdFByb2dyZXNzKTtpLm9uUHJvZ3Jlc3M9dD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfX1zLnJlc29sdmUoe2lzU3RyZWFtaW5nU3VwcG9ydGVkOmkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsaXNSYW5nZVN1cHBvcnRlZDppLmlzUmFuZ2VTdXBwb3J0ZWQsY29udGVudExlbmd0aDppLmNvbnRlbnRMZW5ndGh9KX0pLHMucmVqZWN0KTtyZXR1cm4gcy5wcm9taXNlfSkpO3Qub24oIkdldFJhbmdlUmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTtjb25zdCBzPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIodC5iZWdpbix0LmVuZCk7aWYocyl7ZS5vblB1bGw9KCk9PntzLnJlYWQoKS50aGVuKChmdW5jdGlvbih7dmFsdWU6dCxkb25lOnN9KXtpZihzKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCksIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHQpLDEsW3RdKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntzLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKCh7cGRmSW5mbzp0fSk9Pnt0aGlzLl9udW1QYWdlcz10Lm51bVBhZ2VzO3RoaXMuX2h0bWxGb3JYZmE9dC5odG1sRm9yWGZhO2RlbGV0ZSB0Lmh0bWxGb3JYZmE7ZS5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KHQsdGhpcykpfSkpO3Qub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe2xldCBzO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnM9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpzPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfWUuX2NhcGFiaWxpdHkucmVqZWN0KHMpfSkpO3Qub24oIlBhc3N3b3JkUmVxdWVzdCIsKHQ9Pnt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7aWYoZS5vblBhc3N3b3JkKXtjb25zdCB1cGRhdGVQYXNzd29yZD10PT57dCBpbnN0YW5jZW9mIEVycm9yP3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCk6dGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCl9fWVsc2UgdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSkpO3JldHVybiB0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI3IuZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKChbZSxzLGldKT0+e2lmKCF0aGlzLmRlc3Ryb3llZCYmIXRoaXMuY29tbW9uT2Jqcy5oYXMoZSkpc3dpdGNoKHMpe2Nhc2UiRm9udCI6Y29uc3Qgbj10aGlzLl9wYXJhbXM7aWYoImVycm9yImluIGkpe2NvbnN0IHQ9aS5lcnJvcjsoMCxfdXRpbC53YXJuKShgRXJyb3IgZHVyaW5nIGZvbnQgbG9hZGluZzogJHt0fWApO3RoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsdCk7YnJlYWt9bGV0IHI9bnVsbDtuLnBkZkJ1ZyYmZ2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yPy5lbmFibGVkJiYocj17cmVnaXN0ZXJGb250KHQsZSl7Z2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yLmZvbnRBZGRlZCh0LGUpfX0pO2NvbnN0IGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChpLHtpc0V2YWxTdXBwb3J0ZWQ6bi5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOm4uZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpuLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpLGZvbnRSZWdpc3RyeTpyfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKHM9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDplfSkpKS5maW5hbGx5KCgoKT0+eyFuLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShlLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOnRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEdvdCB1bmtub3duIGNvbW1vbiBvYmplY3QgdHlwZSAke3N9YCl9fSkpO3Qub24oIm9iaiIsKChbdCxlLHMsaV0pPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy4jci5nZXQoZSk7aWYoIW4ub2Jqcy5oYXModCkpc3dpdGNoKHMpe2Nhc2UiSW1hZ2UiOm4ub2Jqcy5yZXNvbHZlKHQsaSk7Y29uc3QgZT04ZTY7aWYoaSl7bGV0IHQ7aWYoaS5iaXRtYXApe2NvbnN0e2JpdG1hcDplLHdpZHRoOnMsaGVpZ2h0OnJ9PWk7dD1zKnIqNDtuLl9iaXRtYXBzLmFkZChlKX1lbHNlIHQ9aS5kYXRhPy5sZW5ndGh8fDA7dD5lJiYobi5jbGVhbnVwQWZ0ZXJSZW5kZXI9ITApfWJyZWFrO2Nhc2UiUGF0dGVybiI6bi5vYmpzLnJlc29sdmUodCxpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gb2JqZWN0IHR5cGUgJHtzfWApfX0pKTt0Lm9uKCJEb2NQcm9ncmVzcyIsKHQ9Pnt0aGlzLmRlc3Ryb3llZHx8ZS5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9KSk7dC5vbigiRG9jU3RhdHMiLCh0PT57dGhpcy5kZXN0cm95ZWR8fCh0aGlzLiNuPU9iamVjdC5mcmVlemUoe3N0cmVhbVR5cGVzOk9iamVjdC5mcmVlemUodC5zdHJlYW1UeXBlcyksZm9udFR5cGVzOk9iamVjdC5mcmVlemUodC5mb250VHlwZXMpfSkpfSkpO3Qub24oIlVuc3VwcG9ydGVkRmVhdHVyZSIsdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSk7dC5vbigiRmV0Y2hCdWlsdEluQ01hcCIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuQ01hcFJlYWRlckZhY3Rvcnk/dGhpcy5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKTt0Lm9uKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLCh0PT50aGlzLmRlc3Ryb3llZD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkLiIpKTp0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5P3RoaXMuU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuIikpKSl9X29uVW5zdXBwb3J0ZWRGZWF0dXJlKHtmZWF0dXJlSWQ6dH0pe3RoaXMuZGVzdHJveWVkfHx0aGlzLmxvYWRpbmdUYXNrLm9uVW5zdXBwb3J0ZWRGZWF0dXJlPy4odCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9c2F2ZURvY3VtZW50KCl7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zaXplPD0wJiYoMCxfdXRpbC53YXJuKSgic2F2ZURvY3VtZW50IGNhbGxlZCB3aGlsZSBgYW5ub3RhdGlvblN0b3JhZ2VgIGlzIGVtcHR5LCBwbGVhc2UgdXNlIHRoZSBnZXREYXRhLW1ldGhvZCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTp0aGlzLl9mdWxsUmVhZGVyPy5maWxlbmFtZT8/bnVsbH0pLmZpbmFsbHkoKCgpPT57dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5yZXNldE1vZGlmaWVkKCl9KSl9Z2V0UGFnZSh0KXtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7Y29uc3QgZT10LTEscz10aGlzLiNhLmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6ZX0pLnRoZW4oKHQ9PntpZih0aGlzLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zcG9ydCBkZXN0cm95ZWQiKTtjb25zdCBzPW5ldyBQREZQYWdlUHJveHkoZSx0LHRoaXMsdGhpcy5fcGFyYW1zLm93bmVyRG9jdW1lbnQsdGhpcy5fcGFyYW1zLnBkZkJ1Zyk7dGhpcy4jci5zZXQoZSxzKTtyZXR1cm4gc30pKTt0aGlzLiNhLnNldChlLGkpO3JldHVybiBpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10fHwhTnVtYmVyLmlzSW50ZWdlcih0Lm51bSl8fHQubnVtPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKHQuZ2VuKXx8dC5nZW48MD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgcGFnZUluZGV4IHJlcXVlc3QuIikpOnRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSW5kZXgiLHtudW06dC5udW0sZ2VuOnQuZ2VufSl9Z2V0QW5ub3RhdGlvbnModCxlKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEFubm90YXRpb25zIix7cGFnZUluZGV4OnQsaW50ZW50OmV9KX1nZXRGaWVsZE9iamVjdHMoKXtyZXR1cm4gdGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZXx8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRGaWVsZE9iamVjdHMiLG51bGwpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlfHw9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkhhc0pTQWN0aW9ucyIsbnVsbCl9Z2V0Q2FsY3VsYXRpb25PcmRlcklkcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREZXN0aW5hdGlvbnMiLG51bGwpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgZGVzdGluYXRpb24gcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9uIix7aWQ6dH0pfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYWJlbHMiLG51bGwpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYXlvdXQiLG51bGwpfWdldFBhZ2VNb2RlKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlTW9kZSIsbnVsbCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFZpZXdlclByZWZlcmVuY2VzIixudWxsKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcGVuQWN0aW9uIixudWxsKX1nZXRBdHRhY2htZW50cygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QXR0YWNobWVudHMiLG51bGwpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEphdmFTY3JpcHQiLG51bGwpfWdldERvY0pTQWN0aW9ucygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jSlNBY3Rpb25zIixudWxsKX1nZXRQYWdlSlNBY3Rpb25zKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUpTQWN0aW9ucyIse3BhZ2VJbmRleDp0fSl9Z2V0U3RydWN0VHJlZSh0KXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFN0cnVjdFRyZWUiLHtwYWdlSW5kZXg6dH0pfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE91dGxpbmUiLG51bGwpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKS50aGVuKCh0PT5uZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSkpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQZXJtaXNzaW9ucyIsbnVsbCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy4jb3x8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRNZXRhZGF0YSIsbnVsbCkudGhlbigodD0+KHtpbmZvOnRbMF0sbWV0YWRhdGE6dFsxXT9uZXcgX21ldGFkYXRhLk1ldGFkYXRhKHRbMV0pOm51bGwsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6dGhpcy5fZnVsbFJlYWRlcj8uZmlsZW5hbWU/P251bGwsY29udGVudExlbmd0aDp0aGlzLl9mdWxsUmVhZGVyPy5jb250ZW50TGVuZ3RoPz9udWxsfSkpKX1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCh0PSExKXtpZighdGhpcy5kZXN0cm95ZWQpe2F3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJDbGVhbnVwIixudWxsKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNyLnZhbHVlcygpKXtpZighdC5jbGVhbnVwKCkpdGhyb3cgbmV3IEVycm9yKGBzdGFydENsZWFudXA6IFBhZ2UgJHt0LnBhZ2VOdW1iZXJ9IGlzIGN1cnJlbnRseSByZW5kZXJpbmcuYCl9dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dHx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGx9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3QgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fWNsYXNzIFBERk9iamVjdHN7I2w9T2JqZWN0LmNyZWF0ZShudWxsKTsjYyh0KXtjb25zdCBlPXRoaXMuI2xbdF07cmV0dXJuIGV8fCh0aGlzLiNsW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfWdldCh0LGU9bnVsbCl7aWYoZSl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKHMuZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBzPXRoaXMuI2xbdF07aWYoIXM/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIHMuZGF0YX1oYXModCl7cmV0dXJuIHRoaXMuI2xbdF0/LmNhcGFiaWxpdHkuc2V0dGxlZHx8ITF9cmVzb2x2ZSh0LGU9bnVsbCl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuZGF0YT1lO3MuY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXt0aGlzLiNsPU9iamVjdC5jcmVhdGUobnVsbCl9fWNsYXNzIFJlbmRlclRhc2t7I2g9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLiNoPXQ7dGhpcy5vbkNvbnRpbnVlPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy4jaC5jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy4jaC5jYW5jZWwoKX1nZXQgc2VwYXJhdGVBbm5vdHMoKXtjb25zdHtzZXBhcmF0ZUFubm90czp0fT10aGlzLiNoLm9wZXJhdG9yTGlzdDtpZighdClyZXR1cm4hMTtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmV9PXRoaXMuI2g7cmV0dXJuIHQuZm9ybXx8dC5jYW52YXMmJmU/LnNpemU+MH19ZXhwb3J0cy5SZW5kZXJUYXNrPVJlbmRlclRhc2s7Y2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNre3N0YXRpYyNkPW5ldyBXZWFrU2V0O2NvbnN0cnVjdG9yKHtjYWxsYmFjazp0LHBhcmFtczplLG9ianM6cyxjb21tb25PYmpzOmksYW5ub3RhdGlvbkNhbnZhc01hcDpuLG9wZXJhdG9yTGlzdDpyLHBhZ2VJbmRleDphLGNhbnZhc0ZhY3Rvcnk6byx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bD0hMSxwZGZCdWc6Yz0hMSxwYWdlQ29sb3JzOmg9bnVsbH0pe3RoaXMuY2FsbGJhY2s9dDt0aGlzLnBhcmFtcz1lO3RoaXMub2Jqcz1zO3RoaXMuY29tbW9uT2Jqcz1pO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcD1uO3RoaXMub3BlcmF0b3JMaXN0SWR4PW51bGw7dGhpcy5vcGVyYXRvckxpc3Q9cjt0aGlzLl9wYWdlSW5kZXg9YTt0aGlzLmNhbnZhc0ZhY3Rvcnk9bzt0aGlzLl9wZGZCdWc9Yzt0aGlzLnBhZ2VDb2xvcnM9aDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9bnVsbDt0aGlzLmdyYXBoaWNzUmVhZHk9ITE7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPSEwPT09bCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c7dGhpcy5jYW5jZWxsZWQ9ITE7dGhpcy5jYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMudGFzaz1uZXcgUmVuZGVyVGFzayh0aGlzKTt0aGlzLl9jYW5jZWxCb3VuZD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpO3RoaXMuX2NvbnRpbnVlQm91bmQ9dGhpcy5fY29udGludWUuYmluZCh0aGlzKTt0aGlzLl9zY2hlZHVsZU5leHRCb3VuZD10aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTt0aGlzLl9uZXh0Qm91bmQ9dGhpcy5fbmV4dC5iaW5kKHRoaXMpO3RoaXMuX2NhbnZhcz1lLmNhbnZhc0NvbnRleHQuY2FudmFzfWdldCBjb21wbGV0ZWQoKXtyZXR1cm4gdGhpcy5jYXBhYmlsaXR5LnByb21pc2UuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfWluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQ9ITEsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KXtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2QuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jZC5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDpzLHZpZXdwb3J0OmksdHJhbnNmb3JtOm4sYmFja2dyb3VuZDpyfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhzLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LGUsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyk7dGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06bix2aWV3cG9ydDppLHRyYW5zcGFyZW5jeTp0LGJhY2tncm91bmQ6cn0pO3RoaXMub3BlcmF0b3JMaXN0SWR4PTA7dGhpcy5ncmFwaGljc1JlYWR5PSEwO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPy4oKX1jYW5jZWwodD1udWxsKXt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jZC5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLCJjYW52YXMiKSl9b3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuZ3JhcGhpY3NSZWFkeSl7dGhpcy5zdGVwcGVyPy51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpO3RoaXMucnVubmluZ3x8dGhpcy5fY29udGludWUoKX1lbHNlIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9X2NvbnRpbnVlKCl7dGhpcy5ydW5uaW5nPSEwO3RoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX1fc2NoZWR1bGVOZXh0KCl7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fbmV4dEJvdW5kKCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5fbmV4dEJvdW5kKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCl9YXN5bmMgX25leHQoKXtpZighdGhpcy5jYW5jZWxsZWQpe3RoaXMub3BlcmF0b3JMaXN0SWR4PXRoaXMuZ2Z4LmV4ZWN1dGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QsdGhpcy5vcGVyYXRvckxpc3RJZHgsdGhpcy5fY29udGludWVCb3VuZCx0aGlzLnN0ZXBwZXIpO2lmKHRoaXMub3BlcmF0b3JMaXN0SWR4PT09dGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCl7dGhpcy5ydW5uaW5nPSExO2lmKHRoaXMub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7dGhpcy5nZnguZW5kRHJhd2luZygpO3RoaXMuX2NhbnZhcyYmSW50ZXJuYWxSZW5kZXJUYXNrLiNkLmRlbGV0ZSh0aGlzLl9jYW52YXMpO3RoaXMuY2FsbGJhY2soKX19fX19Y29uc3QgdmVyc2lvbj0iMy4wLjI3OSI7ZXhwb3J0cy52ZXJzaW9uPXZlcnNpb247Y29uc3QgYnVpbGQ9ImQwODIzMDY2YyI7ZXhwb3J0cy5idWlsZD1idWlsZH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7dmFyIGk9cygxKSxuPXMoNCkscj1zKDgpO2NsYXNzIEFubm90YXRpb25TdG9yYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmFnZT1uZXcgTWFwO3RoaXMuX21vZGlmaWVkPSExO3RoaXMub25TZXRNb2RpZmllZD1udWxsO3RoaXMub25SZXNldE1vZGlmaWVkPW51bGw7dGhpcy5vbkFubm90YXRpb25FZGl0b3I9bnVsbH1nZXRWYWx1ZSh0LGUpe2NvbnN0IHM9dGhpcy5fc3RvcmFnZS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXM/ZTpPYmplY3QuYXNzaWduKGUscyl9Z2V0UmF3VmFsdWUodCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0KHQpfXJlbW92ZSh0KXt0aGlzLl9zdG9yYWdlLmRlbGV0ZSh0KTswPT09dGhpcy5fc3RvcmFnZS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0b3JhZ2UudmFsdWVzKCkpaWYodCBpbnN0YW5jZW9mIG4uQW5ub3RhdGlvbkVkaXRvcilyZXR1cm47dGhpcy5vbkFubm90YXRpb25FZGl0b3IobnVsbCl9fXNldFZhbHVlKHQsZSl7Y29uc3Qgcz10aGlzLl9zdG9yYWdlLmdldCh0KTtsZXQgaT0hMTtpZih2b2lkIDAhPT1zKXtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKHNbdF0hPT1uKXtpPSEwO3NbdF09bn19ZWxzZXtpPSEwO3RoaXMuX3N0b3JhZ2Uuc2V0KHQsZSl9aSYmdGhpcy4jdSgpO2UgaW5zdGFuY2VvZiBuLkFubm90YXRpb25FZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQW5ub3RhdGlvbkVkaXRvciYmdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSl9aGFzKHQpe3JldHVybiB0aGlzLl9zdG9yYWdlLmhhcyh0KX1nZXRBbGwoKXtyZXR1cm4gdGhpcy5fc3RvcmFnZS5zaXplPjA/KDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLl9zdG9yYWdlKTpudWxsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2l6ZX0jdSgpe2lmKCF0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITE7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25SZXNldE1vZGlmaWVkJiZ0aGlzLm9uUmVzZXRNb2RpZmllZCgpfX1nZXQgcHJpbnQoKXtyZXR1cm4gbmV3IFByaW50QW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9Z2V0IHNlcmlhbGl6YWJsZSgpe2lmKDA9PT10aGlzLl9zdG9yYWdlLnNpemUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtlLHNdb2YgdGhpcy5fc3RvcmFnZSl7Y29uc3QgaT1zIGluc3RhbmNlb2Ygbi5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCk6cztpJiZ0LnNldChlLGkpfXJldHVybiB0fXN0YXRpYyBnZXRIYXNoKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IGU9bmV3IHIuTXVybXVySGFzaDNfNjQ7Zm9yKGNvbnN0W3MsaV1vZiB0KWUudXBkYXRlKGAke3N9OiR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7cmV0dXJuIGUuaGV4ZGlnZXN0KCl9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNwPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLiNwPXN0cnVjdHVyZWRDbG9uZSh0LnNlcmlhbGl6YWJsZSl9Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNwfX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpO2NsYXNzIEFubm90YXRpb25FZGl0b3J7I2c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I209dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNmPSExOyNiPSExOyNBPSExOyNfPUFubm90YXRpb25FZGl0b3IuX3pJbmRleCsrO3N0YXRpYyBfY29sb3JNYW5hZ2VyPW5ldyBpLkNvbG9yTWFuYWdlcjtzdGF0aWMgX3pJbmRleD0xO2NvbnN0cnVjdG9yKHQpe3RoaXMuY29uc3RydWN0b3I9PT1Bbm5vdGF0aW9uRWRpdG9yJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci4iKTt0aGlzLnBhcmVudD10LnBhcmVudDt0aGlzLmlkPXQuaWQ7dGhpcy53aWR0aD10aGlzLmhlaWdodD1udWxsO3RoaXMucGFnZUluZGV4PXQucGFyZW50LnBhZ2VJbmRleDt0aGlzLm5hbWU9dC5uYW1lO3RoaXMuZGl2PW51bGw7Y29uc3RbZSxzXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMueD10LngvZTt0aGlzLnk9dC55L3M7dGhpcy5yb3RhdGlvbj10aGlzLnBhcmVudC52aWV3cG9ydC5yb3RhdGlvbjt0aGlzLmlzQXR0YWNoZWRUb0RPTT0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zZXRJbkJhY2tncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9MH1zZXRJbkZvcmVncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9dGhpcy4jX31mb2N1c2luKHQpe3RoaXMuI2Y/dGhpcy4jZj0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2lmKCF0LnJlbGF0ZWRUYXJnZXQ/LmNsb3Nlc3QoYCMke3RoaXMuaWR9YCkpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLnBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9ufHx0aGlzLmNvbW1pdE9yUmVtb3ZlKCl9fWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy5pc0VtcHR5KCk/dGhpcy5yZW1vdmUoKTp0aGlzLmNvbW1pdCgpfWNvbW1pdCgpe3RoaXMucGFyZW50LmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9ZHJhZ3N0YXJ0KHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RhcnRYPXQuY2xpZW50WC1lLng7dGhpcy5zdGFydFk9dC5jbGllbnRZLWUueTt0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0aGlzLmlkKTt0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIn1zZXRBdCh0LGUscyxpKXtjb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7W3MsaV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihzLGkpO3RoaXMueD0odCtzKS9uO3RoaXMueT0oZStpKS9yO3RoaXMuZGl2LnN0eWxlLmxlZnQ9MTAwKnRoaXMueCsiJSI7dGhpcy5kaXYuc3R5bGUudG9wPTEwMCp0aGlzLnkrIiUifXRyYW5zbGF0ZSh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztbdCxlXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSk7dGhpcy54Kz10L3M7dGhpcy55Kz1lL2k7dGhpcy5kaXYuc3R5bGUubGVmdD0xMDAqdGhpcy54KyIlIjt0aGlzLmRpdi5zdHlsZS50b3A9MTAwKnRoaXMueSsiJSJ9c2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCxlKXtjb25zdHtyb3RhdGlvbjpzfT10aGlzLnBhcmVudC52aWV3cG9ydDtzd2l0Y2gocyl7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19c2V0RGltcyh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD0xMDAqdC9zKyIlIjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9MTAwKmUvaSsiJSJ9Zml4RGltcygpe2NvbnN0e3N0eWxlOnR9PXRoaXMuZGl2LHtoZWlnaHQ6ZSx3aWR0aDpzfT10LGk9cy5lbmRzV2l0aCgiJSIpLG49ZS5lbmRzV2l0aCgiJSIpO2lmKGkmJm4pcmV0dXJuO2NvbnN0W3IsYV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztpfHwodC53aWR0aD0xMDAqcGFyc2VGbG9hdChzKS9yKyIlIik7bnx8KHQuaGVpZ2h0PTEwMCpwYXJzZUZsb2F0KGUpL2ErIiUiKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bMCwwXX1yZW5kZXIoKXt0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImRhdGEtZWRpdG9yLXJvdGF0aW9uIiwoMzYwLXRoaXMucm90YXRpb24pJTM2MCk7dGhpcy5kaXYuY2xhc3NOYW1lPXRoaXMubmFtZTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmlkKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwwKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNtKTtjb25zdFt0LGVdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7dGhpcy50cmFuc2xhdGUodCxlKTsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKTtyZXR1cm4gdGhpcy5kaXZ9cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt0LmN0cmxLZXkmJiFlfHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXkmJmU/dGhpcy5wYXJlbnQudG9nZ2xlU2VsZWN0ZWQodGhpcyk6dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy4jZj0hMH19Z2V0UmVjdCh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxbbixyXT10aGlzLnBhcmVudC5wYWdlRGltZW5zaW9ucyxhPW4qdC9zLG89ciplL2ksbD10aGlzLngqbixjPXRoaXMueSpyLGg9dGhpcy53aWR0aCpuLGQ9dGhpcy5oZWlnaHQqcjtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltsK2Esci1jLW8tZCxsK2EraCxyLWMtb107Y2FzZSA5MDpyZXR1cm5bbCtvLHItYythLGwrbytkLHItYythK2hdO2Nhc2UgMTgwOnJldHVybltsLWEtaCxyLWMrbyxsLWEsci1jK28rZF07Y2FzZSAyNzA6cmV0dXJuW2wtby1kLHItYy1hLWgsbC1vLHItYy1hXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQsZSl7Y29uc3RbcyxpLG4scl09dCxhPW4tcyxvPXItaTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltzLGUtcixhLG9dO2Nhc2UgOTA6cmV0dXJuW3MsZS1pLG8sYV07Y2FzZSAxODA6cmV0dXJuW24sZS1pLGEsb107Y2FzZSAyNzA6cmV0dXJuW24sZS1yLG8sYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19b25jZUFkZGVkKCl7fWlzRW1wdHkoKXtyZXR1cm4hMX1lbmFibGVFZGl0TW9kZSgpe3RoaXMuI0E9ITB9ZGlzYWJsZUVkaXRNb2RlKCl7dGhpcy4jQT0hMX1pc0luRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy4jQX1zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpe3JldHVybiExfW5lZWRzVG9CZVJlYnVpbHQoKXtyZXR1cm4gdGhpcy5kaXYmJiF0aGlzLmlzQXR0YWNoZWRUb0RPTX1yZWJ1aWxkKCl7dGhpcy5kaXY/LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpfXNlcmlhbGl6ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKX0pO3Mucm90YXRpb249dC5yb3RhdGlvbjtjb25zdFtpLG5dPWUucGFnZURpbWVuc2lvbnMsW3IsYSxvLGxdPXMuZ2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LnJlY3Qsbik7cy54PXIvaTtzLnk9YS9uO3Mud2lkdGg9by9pO3MuaGVpZ2h0PWwvbjtyZXR1cm4gc31yZW1vdmUoKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiNnKTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy4jbSk7dGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCk7dGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpfXNlbGVjdCgpe3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIil9dXBkYXRlUGFyYW1zKHQsZSl7fWRpc2FibGVFZGl0aW5nKCl7fWVuYWJsZUVkaXRpbmcoKXt9Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybnt9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZGl2fWdldCBpc0VkaXRpbmcoKXtyZXR1cm4gdGhpcy4jYn1zZXQgaXNFZGl0aW5nKHQpe3RoaXMuI2I9dDtpZih0KXt0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKTt0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IodGhpcyl9ZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCl9fWUuQW5ub3RhdGlvbkVkaXRvcj1Bbm5vdGF0aW9uRWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMDtlLmJpbmRFdmVudHM9ZnVuY3Rpb24gYmluZEV2ZW50cyh0LGUscyl7Zm9yKGNvbnN0IGkgb2YgcyllLmFkZEV2ZW50TGlzdGVuZXIoaSx0W2ldLmJpbmQodCkpfTtlLm9wYWNpdHlUb0hleD1mdW5jdGlvbiBvcGFjaXR5VG9IZXgodCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMjU1LE1hdGgubWF4KDEsMjU1KnQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX07dmFyIGk9cygxKSxuPXMoNik7Y2xhc3MgSWRNYW5hZ2VyeyN2PTA7Z2V0SWQoKXtyZXR1cm5gJHtpLkFubm90YXRpb25FZGl0b3JQcmVmaXh9JHt0aGlzLiN2Kyt9YH19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I3k9W107I1M9ITE7I3g7I0U9LTE7Y29uc3RydWN0b3IodD0xMjgpe3RoaXMuI3g9dH1hZGQoe2NtZDp0LHVuZG86ZSxtdXN0RXhlYzpzLHR5cGU6aT1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpuPSExLGtlZXBVbmRvOnI9ITF9KXtzJiZ0KCk7aWYodGhpcy4jUylyZXR1cm47Y29uc3QgYT17Y21kOnQsdW5kbzplLHR5cGU6aX07aWYoLTE9PT10aGlzLiNFKXt0aGlzLiN5Lmxlbmd0aD4wJiYodGhpcy4jeS5sZW5ndGg9MCk7dGhpcy4jRT0wO3RoaXMuI3kucHVzaChhKTtyZXR1cm59aWYobiYmdGhpcy4jeVt0aGlzLiNFXS50eXBlPT09aSl7ciYmKGEudW5kbz10aGlzLiN5W3RoaXMuI0VdLnVuZG8pO3RoaXMuI3lbdGhpcy4jRV09YTtyZXR1cm59Y29uc3Qgbz10aGlzLiNFKzE7aWYobz09PXRoaXMuI3gpdGhpcy4jeS5zcGxpY2UoMCwxKTtlbHNle3RoaXMuI0U9bztvPHRoaXMuI3kubGVuZ3RoJiZ0aGlzLiN5LnNwbGljZShvKX10aGlzLiN5LnB1c2goYSl9dW5kbygpe2lmKC0xIT09dGhpcy4jRSl7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLnVuZG8oKTt0aGlzLiNTPSExO3RoaXMuI0UtPTF9fXJlZG8oKXtpZih0aGlzLiNFPHRoaXMuI3kubGVuZ3RoLTEpe3RoaXMuI0UrPTE7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLmNtZCgpO3RoaXMuI1M9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jRX1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jRTx0aGlzLiN5Lmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiN5PW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3QgZT1LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7Zm9yKGNvbnN0W3MsaV1vZiB0KWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IHM9dC5zdGFydHNXaXRoKCJtYWMrIik7aWYoZSYmcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQuc2xpY2UoNCksaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX1lbHNlIGlmKCFlJiYhcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQsaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX19fXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5wbGF0Zm9ybToiIjtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGxhdGZvcm0iLHtpc1dpbjp0LmluY2x1ZGVzKCJXaW4iKSxpc01hYzp0LmluY2x1ZGVzKCJNYWMiKX0pfSNDKHQpe3QuYWx0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJhbHQiKTt0LmN0cmxLZXkmJnRoaXMuYnVmZmVyLnB1c2goImN0cmwiKTt0Lm1ldGFLZXkmJnRoaXMuYnVmZmVyLnB1c2goIm1ldGEiKTt0LnNoaWZ0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJzaGlmdCIpO3RoaXMuYnVmZmVyLnB1c2godC5rZXkpO2NvbnN0IGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3RoaXMuYnVmZmVyLmxlbmd0aD0wO3JldHVybiBlfWV4ZWModCxlKXtpZighdGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpcmV0dXJuO2NvbnN0IHM9dGhpcy5jYWxsYmFja3MuZ2V0KHRoaXMuI0MoZSkpO2lmKHMpe3MuYmluZCh0KSgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19ZS5LZXlib2FyZE1hbmFnZXI9S2V5Ym9hcmRNYW5hZ2VyO2NsYXNzIENvbG9yTWFuYWdlcntzdGF0aWMgX2NvbG9yc01hcHBpbmc9bmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKTtnZXQgX2NvbG9ycygpe2NvbnN0IHQ9bmV3IE1hcChbWyJDYW52YXNUZXh0IixudWxsXSxbIkNhbnZhcyIsbnVsbF1dKTsoMCxuLmdldENvbG9yVmFsdWVzKSh0KTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbG9ycyIsdCl9Y29udmVydCh0KXtjb25zdCBlPSgwLG4uZ2V0UkdCKSh0KTtpZighd2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcylyZXR1cm4gZTtmb3IoY29uc3RbdCxzXW9mIHRoaXMuX2NvbG9ycylpZihzLmV2ZXJ5KCgodCxzKT0+dD09PWVbc10pKSlyZXR1cm4gQ29sb3JNYW5hZ2VyLl9jb2xvcnNNYXBwaW5nLmdldCh0KTtyZXR1cm4gZX1nZXRIZXhDb2RlKHQpe2NvbnN0IGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yKC4uLmUpOnR9fWUuQ29sb3JNYW5hZ2VyPUNvbG9yTWFuYWdlcjtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyeyNQPW51bGw7I1Q9bmV3IE1hcDsjdz1uZXcgTWFwOyNrPW5ldyBDb21tYW5kTWFuYWdlcjsjRj0wOyNNPW51bGw7I1I9bnVsbDsjRD1uZXcgSWRNYW5hZ2VyOyNJPSExOyNPPWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORTsjTD1uZXcgU2V0OyNOPXRoaXMuY29weS5iaW5kKHRoaXMpOyNCPXRoaXMuY3V0LmJpbmQodGhpcyk7I2o9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNVPXRoaXMua2V5ZG93bi5iaW5kKHRoaXMpOyNxPXRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcyk7I1c9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyNHPXtpc0VkaXRpbmc6ITEsaXNFbXB0eTohMCxoYXNTb21ldGhpbmdUb1VuZG86ITEsaGFzU29tZXRoaW5nVG9SZWRvOiExLGhhc1NlbGVjdGVkRWRpdG9yOiExfTsjSD1udWxsO3N0YXRpYyBfa2V5Ym9hcmRNYW5hZ2VyPW5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5zZWxlY3RBbGxdLFtbImN0cmwreiIsIm1hYyttZXRhK3oiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bmRvXSxbWyJjdHJsK3kiLCJjdHJsK3NoaWZ0K1oiLCJtYWMrbWV0YStzaGlmdCtaIl0sQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5kZWxldGVdLFtbIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bnNlbGVjdEFsbF1dKTtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuI0g9dDt0aGlzLiNSPWU7dGhpcy4jUi5fb24oImVkaXRpbmdhY3Rpb24iLHRoaXMuI3EpO3RoaXMuI1IuX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI1cpfWRlc3Ryb3koKXt0aGlzLiN6KCk7dGhpcy4jUi5fb2ZmKCJlZGl0aW5nYWN0aW9uIix0aGlzLiNxKTt0aGlzLiNSLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jVyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jdy52YWx1ZXMoKSl0LmRlc3Ryb3koKTt0aGlzLiN3LmNsZWFyKCk7dGhpcy4jVC5jbGVhcigpO3RoaXMuI1A9bnVsbDt0aGlzLiNMLmNsZWFyKCk7dGhpcy4jay5kZXN0cm95KCl9b25QYWdlQ2hhbmdpbmcoe3BhZ2VOdW1iZXI6dH0pe3RoaXMuI0Y9dC0xfWZvY3VzTWFpbkNvbnRhaW5lcigpe3RoaXMuI0guZm9jdXMoKX0jVigpe3RoaXMuI0guYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy4jVSl9I3ooKXt0aGlzLiNILnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI1UpfSNYKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jTik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0Iix0aGlzLiNCKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsdGhpcy4jail9IyQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5Iix0aGlzLiNOKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXQiLHRoaXMuI0IpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNqKX1jb3B5KHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNQJiZ0aGlzLiNQLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuI0wpdC5pc0VtcHR5KCl8fGUucHVzaCh0LnNlcmlhbGl6ZSgpKTswIT09ZS5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkoZSkpfWN1dCh0KXt0aGlzLmNvcHkodCk7dGhpcy5kZWxldGUoKX1wYXN0ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7bGV0IGU9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYoIWUpcmV0dXJuO3RyeXtlPUpTT04ucGFyc2UoZSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApO3JldHVybn1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47dGhpcy51bnNlbGVjdEFsbCgpO2NvbnN0IHM9dGhpcy4jdy5nZXQodGhpcy4jRik7dHJ5e2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1zLmRlc2VyaWFsaXplKGkpO2lmKCFlKXJldHVybjt0LnB1c2goZSl9Y29uc3QgY21kPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpO3RoaXMuI0sodCl9LHVuZG89KCk9Pntmb3IoY29uc3QgZSBvZiB0KWUucmVtb3ZlKCl9O3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpjbWQsdW5kbzp1bmRvLG11c3RFeGVjOiEwfSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApfX1rZXlkb3duKHQpe3RoaXMuZ2V0QWN0aXZlKCk/LnNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl8fEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9b25FZGl0aW5nQWN0aW9uKHQpe1sidW5kbyIsInJlZG8iLCJkZWxldGUiLCJzZWxlY3RBbGwiXS5pbmNsdWRlcyh0Lm5hbWUpJiZ0aGlzW3QubmFtZV0oKX0jSih0KXtPYmplY3QuZW50cmllcyh0KS5zb21lKCgoW3QsZV0pPT50aGlzLiNHW3RdIT09ZSkpJiZ0aGlzLiNSLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbih0aGlzLiNHLHQpfSl9I1EodCl7dGhpcy4jUi5kaXNwYXRjaCgiYW5ub3RhdGlvbmVkaXRvcnBhcmFtc2NoYW5nZWQiLHtzb3VyY2U6dGhpcyxkZXRhaWxzOnR9KX1zZXRFZGl0aW5nU3RhdGUodCl7aWYodCl7dGhpcy4jVigpO3RoaXMuI1goKTt0aGlzLiNKKHtpc0VkaXRpbmc6dGhpcy4jTyE9PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSxpc0VtcHR5OnRoaXMuI1ooKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jeigpO3RoaXMuIyQoKTt0aGlzLiNKKHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jTSl7dGhpcy4jTT10O2Zvcihjb25zdCB0IG9mIHRoaXMuI00pdGhpcy4jUSh0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpfX1nZXRJZCgpe3JldHVybiB0aGlzLiNELmdldElkKCl9YWRkTGF5ZXIodCl7dGhpcy4jdy5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jST90LmVuYWJsZSgpOnQuZGlzYWJsZSgpfXJlbW92ZUxheWVyKHQpe3RoaXMuI3cuZGVsZXRlKHQucGFnZUluZGV4KX11cGRhdGVNb2RlKHQpe3RoaXMuI089dDtpZih0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FKXt0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy4jdHQoKX1lbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNldCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI3cudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpfX11cGRhdGVUb29sYmFyKHQpe3QhPT10aGlzLiNPJiZ0aGlzLiNSLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI00pe2Zvcihjb25zdCBzIG9mIHRoaXMuI0wpcy51cGRhdGVQYXJhbXModCxlKTtmb3IoY29uc3QgcyBvZiB0aGlzLiNNKXMudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfX0jZXQoKXtpZighdGhpcy4jSSl7dGhpcy4jST0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiN3LnZhbHVlcygpKXQuZW5hYmxlKCl9fSN0dCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNJKXt0aGlzLiNJPSExO2Zvcihjb25zdCB0IG9mIHRoaXMuI3cudmFsdWVzKCkpdC5kaXNhYmxlKCl9fWdldEVkaXRvcnModCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0aGlzLiNULnZhbHVlcygpKXMucGFnZUluZGV4PT09dCYmZS5wdXNoKHMpO3JldHVybiBlfWdldEVkaXRvcih0KXtyZXR1cm4gdGhpcy4jVC5nZXQodCl9YWRkRWRpdG9yKHQpe3RoaXMuI1Quc2V0KHQuaWQsdCl9cmVtb3ZlRWRpdG9yKHQpe3RoaXMuI1QuZGVsZXRlKHQuaWQpO3RoaXMudW5zZWxlY3QodCl9I1kodCl7Y29uc3QgZT10aGlzLiN3LmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jUCE9PXQpe3RoaXMuI1A9dDt0JiZ0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKX19dG9nZ2xlU2VsZWN0ZWQodCl7aWYodGhpcy4jTC5oYXModCkpe3RoaXMuI0wuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfWVsc2V7dGhpcy4jTC5hZGQodCk7dC5zZWxlY3QoKTt0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjohMH0pfX1zZXRTZWxlY3RlZCh0KXtmb3IoY29uc3QgZSBvZiB0aGlzLiNMKWUhPT10JiZlLnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0wuYWRkKHQpO3Quc2VsZWN0KCk7dGhpcy4jUSh0LnByb3BlcnRpZXNUb1VwZGF0ZSk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNMLmhhcyh0KX11bnNlbGVjdCh0KXt0LnVuc2VsZWN0KCk7dGhpcy4jTC5kZWxldGUodCk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNMLnNpemV9dW5kbygpe3RoaXMuI2sudW5kbygpO3RoaXMuI0ooe2hhc1NvbWV0aGluZ1RvVW5kbzp0aGlzLiNrLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OnRoaXMuI1ooKX0pfXJlZG8oKXt0aGlzLiNrLnJlZG8oKTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOnRoaXMuI2suaGFzU29tZXRoaW5nVG9SZWRvKCksaXNFbXB0eTp0aGlzLiNaKCl9KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNrLmFkZCh0KTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jWigpfSl9I1ooKXtpZigwPT09dGhpcy4jVC5zaXplKXJldHVybiEwO2lmKDE9PT10aGlzLiNULnNpemUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jVC52YWx1ZXMoKSlyZXR1cm4gdC5pc0VtcHR5KCk7cmV0dXJuITF9ZGVsZXRlKCl7dGhpcy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgdD1bLi4udGhpcy4jTF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpfSxtdXN0RXhlYzohMH0pfWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy4jUD8uY29tbWl0T3JSZW1vdmUoKX0jSyh0KXt0aGlzLiNMLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdClpZighZS5pc0VtcHR5KCkpe3RoaXMuI0wuYWRkKGUpO2Uuc2VsZWN0KCl9dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNMKXQuY29tbWl0KCk7dGhpcy4jSyh0aGlzLiNULnZhbHVlcygpKX11bnNlbGVjdEFsbCgpe2lmKHRoaXMuI1ApdGhpcy4jUC5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PXRoaXMuI0wuc2l6ZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jTCl0LnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0ooe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fWlzQWN0aXZlKHQpe3JldHVybiB0aGlzLiNQPT09dH1nZXRBY3RpdmUoKXtyZXR1cm4gdGhpcy4jUH1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuI099fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhdFRpbWVyPWUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uPWUuUGl4ZWxzUGVySW5jaD1lLlBhZ2VWaWV3cG9ydD1lLlBERkRhdGVTdHJpbmc9ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1lLkRPTVNWR0ZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBzIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPXM7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChzLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6cyxjOmksZDpuLGU6cixmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpzLGM6aSxkOm4sZTpyLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIjIikscz10LmluZGV4T2YoIj8iKSxpPU1hdGgubWluKGU+MD9lOnQubGVuZ3RoLHM+MD9zOnQubGVuZ3RoKTtyZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIsaSkrMSxpKX07ZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0UGRmRmlsZW5hbWVGcm9tVXJsKHQsZT0iZG9jdW1lbnQucGRmIil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsbi53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgcz0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcj1zLmV4ZWMoaVsxXSl8fHMuZXhlYyhpWzJdKXx8cy5leGVjKGlbM10pO2lmKHIpe3I9clswXTtpZihyLmluY2x1ZGVzKCIlIikpdHJ5e3I9cy5leGVjKGRlY29kZVVSSUNvbXBvbmVudChyKSlbMF19Y2F0Y2godCl7fX1yZXR1cm4gcnx8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LHtzY2FsZTplPTEscm90YXRpb246cz0wfSl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6bn09dC5hdHRyaWJ1dGVzLnN0eWxlLHI9WzAsMCxwYXJzZUludChpKSxwYXJzZUludChuKV07cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6cixzY2FsZTplLHJvdGF0aW9uOnN9KX07ZS5pc0RhdGFTY2hlbWU9aXNEYXRhU2NoZW1lO2UuaXNQZGZGaWxlPWZ1bmN0aW9uIGlzUGRmRmlsZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9cLnBkZiQvaS50ZXN0KHQpfTtlLmlzVmFsaWRGZXRjaFVybD1pc1ZhbGlkRmV0Y2hVcmw7ZS5sb2FkU2NyaXB0PWZ1bmN0aW9uIGxvYWRTY3JpcHQodCxlPSExKXtyZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz10O24ub25sb2FkPWZ1bmN0aW9uKHQpe2UmJm4ucmVtb3ZlKCk7cyh0KX07bi5vbmVycm9yPWZ1bmN0aW9uKCl7aShuZXcgRXJyb3IoYENhbm5vdCBsb2FkIHNjcmlwdCBhdDogJHtuLnNyY31gKSl9Oyhkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZChuKX0pKX07dmFyIGk9cyg3KSxuPXMoMSk7ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO2NsYXNzIFBpeGVsc1BlckluY2h7c3RhdGljIENTUz05NjtzdGF0aWMgUERGPTcyO3N0YXRpYyBQREZfVE9fQ1NTX1VOSVRTPXRoaXMuQ1NTL3RoaXMuUERGfWUuUGl4ZWxzUGVySW5jaD1QaXhlbHNQZXJJbmNoO2NsYXNzIERPTUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e2NvbnN0cnVjdG9yKHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09e30pe3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPXQ7cy5oZWlnaHQ9ZTtyZXR1cm4gc319ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQsZT0hMSl7aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IHM9YXdhaXQgZmV0Y2godCk7aWYoIXMub2spdGhyb3cgbmV3IEVycm9yKHMuc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgcy5hcnJheUJ1ZmZlcigpKTooMCxuLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IHMudGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKCJHRVQiLHQsITApO2UmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHIucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXIuc3RhdHVzfHwwPT09ci5zdGF0dXMpe2xldCB0O2UmJnIucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShyLnJlc3BvbnNlKTohZSYmci5yZXNwb25zZVRleHQmJih0PSgwLG4uc3RyaW5nVG9CeXRlcykoci5yZXNwb25zZVRleHQpKTtpZih0KXtzKHQpO3JldHVybn19aShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9fTtyLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3Ioe3ZpZXdCb3g6dCxzY2FsZTplLHJvdGF0aW9uOnMsb2Zmc2V0WDppPTAsb2Zmc2V0WTpuPTAsZG9udEZsaXA6cj0hMX0pe3RoaXMudmlld0JveD10O3RoaXMuc2NhbGU9ZTt0aGlzLnJvdGF0aW9uPXM7dGhpcy5vZmZzZXRYPWk7dGhpcy5vZmZzZXRZPW47Y29uc3QgYT0odFsyXSt0WzBdKS8yLG89KHRbM10rdFsxXSkvMjtsZXQgbCxjLGgsZCx1LHAsZyxtOyhzJT0zNjApPDAmJihzKz0zNjApO3N3aXRjaChzKXtjYXNlIDE4MDpsPS0xO2M9MDtoPTA7ZD0xO2JyZWFrO2Nhc2UgOTA6bD0wO2M9MTtoPTE7ZD0wO2JyZWFrO2Nhc2UgMjcwOmw9MDtjPS0xO2g9LTE7ZD0wO2JyZWFrO2Nhc2UgMDpsPTE7Yz0wO2g9MDtkPS0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLiIpfWlmKHIpe2g9LWg7ZD0tZH1pZigwPT09bCl7dT1NYXRoLmFicyhvLXRbMV0pKmUraTtwPU1hdGguYWJzKGEtdFswXSkqZStuO2c9TWF0aC5hYnModFszXS10WzFdKSplO209TWF0aC5hYnModFsyXS10WzBdKSplfWVsc2V7dT1NYXRoLmFicyhhLXRbMF0pKmUraTtwPU1hdGguYWJzKG8tdFsxXSkqZStuO2c9TWF0aC5hYnModFsyXS10WzBdKSplO209TWF0aC5hYnModFszXS10WzFdKSplfXRoaXMudHJhbnNmb3JtPVtsKmUsYyplLGgqZSxkKmUsdS1sKmUqYS1oKmUqbyxwLWMqZSphLWQqZSpvXTt0aGlzLndpZHRoPWc7dGhpcy5oZWlnaHQ9bX1jbG9uZSh7c2NhbGU6dD10aGlzLnNjYWxlLHJvdGF0aW9uOmU9dGhpcy5yb3RhdGlvbixvZmZzZXRYOnM9dGhpcy5vZmZzZXRYLG9mZnNldFk6aT10aGlzLm9mZnNldFksZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlld0JveC5zbGljZSgpLHNjYWxlOnQscm90YXRpb246ZSxvZmZzZXRYOnMsb2Zmc2V0WTppLGRvbnRGbGlwOm59KX1jb252ZXJ0VG9WaWV3cG9ydFBvaW50KHQsZSl7cmV0dXJuIG4uVXRpbC5hcHBseVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9Y29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUodCl7Y29uc3QgZT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFsxXV0sdGhpcy50cmFuc2Zvcm0pLHM9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbM11dLHRoaXMudHJhbnNmb3JtKTtyZXR1cm5bZVswXSxlWzFdLHNbMF0sc1sxXV19Y29udmVydFRvUGRmUG9pbnQodCxlKXtyZXR1cm4gbi5VdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9fWUuUGFnZVZpZXdwb3J0PVBhZ2VWaWV3cG9ydDtjbGFzcyBSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24gZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLnR5cGU9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGUmJiIiPT09dFtzXS50cmltKCk7KXMrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocyxzKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFydGVkPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy50aW1lcz1bXX10aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxuLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxuLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy50aW1lcyl7Y29uc3Qgcz10Lm5hbWU7cy5sZW5ndGg+ZSYmKGU9cy5sZW5ndGgpfWZvcihjb25zdCBzIG9mIHRoaXMudGltZXMpe2NvbnN0IGk9cy5lbmQtcy5zdGFydDt0LnB1c2goYCR7cy5uYW1lLnBhZEVuZChlKX0gJHtpfW1zXG5gKX1yZXR1cm4gdC5qb2luKCIiKX19O2Z1bmN0aW9uIGlzVmFsaWRGZXRjaFVybCh0LGUpe3RyeXtjb25zdHtwcm90b2NvbDpzfT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1zfHwiaHR0cHM6Ij09PXN9Y2F0Y2godCl7cmV0dXJuITF9fWxldCByO2UuUERGRGF0ZVN0cmluZz1jbGFzcyBQREZEYXRlU3RyaW5ne3N0YXRpYyB0b0RhdGVPYmplY3QodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtyfHwocj1uZXcgUmVnRXhwKCJeRDooXFxkezR9KShcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhbWnwrfC1dKT8oXFxkezJ9KT8nPyhcXGR7Mn0pPyc/IikpO2NvbnN0IGU9ci5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9cGFyc2VJbnQoZVsxXSwxMCk7bGV0IGk9cGFyc2VJbnQoZVsyXSwxMCk7aT1pPj0xJiZpPD0xMj9pLTE6MDtsZXQgbj1wYXJzZUludChlWzNdLDEwKTtuPW4+PTEmJm48PTMxP246MTtsZXQgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDtsZXQgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDtsZXQgbD1wYXJzZUludChlWzZdLDEwKTtsPWw+PTAmJmw8PTU5P2w6MDtjb25zdCBjPWVbN118fCJaIjtsZXQgaD1wYXJzZUludChlWzhdLDEwKTtoPWg+PTAmJmg8PTIzP2g6MDtsZXQgZD1wYXJzZUludChlWzldLDEwKXx8MDtkPWQ+PTAmJmQ8PTU5P2Q6MDtpZigiLSI9PT1jKXthKz1oO28rPWR9ZWxzZSBpZigiKyI9PT1jKXthLT1oO28tPWR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHMsaSxuLGEsbyxsKSl9fTtmdW5jdGlvbiBnZXRSR0IodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe2NvbnN0IGU9cGFyc2VJbnQodC5zbGljZSgxKSwxNik7cmV0dXJuWygxNjcxMTY4MCZlKT4+MTYsKDY1MjgwJmUpPj44LDI1NSZlXX1pZih0LnN0YXJ0c1dpdGgoInJnYigiKSlyZXR1cm4gdC5zbGljZSg0LC0xKS5zcGxpdCgiLCIpLm1hcCgodD0+cGFyc2VJbnQodCkpKTtpZih0LnN0YXJ0c1dpdGgoInJnYmEoIikpcmV0dXJuIHQuc2xpY2UoNSwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSkuc2xpY2UoMCwzKTsoMCxuLndhcm4pKGBOb3QgYSB2YWxpZCBjb2xvciBmb3JtYXQ6ICIke3R9ImApO3JldHVyblswLDAsMF19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuQmFzZVNWR0ZhY3Rvcnk9ZS5CYXNlQ2FudmFzRmFjdG9yeT1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7dmFyIGk9cygxKTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgcz10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOnMsY29udGV4dDpzLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxzKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fHM8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9c31kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbCxpc0NvbXByZXNzZWQ6ZT0hMX0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ01hcFJlYWRlckZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlQ01hcFJlYWRlckZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXQ7dGhpcy5pc0NvbXByZXNzZWQ9ZX1hc3luYyBmZXRjaCh7bmFtZTp0fSl7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDTWFwICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAiY01hcFVybCIgYW5kICJjTWFwUGFja2VkIiBBUEkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuJyk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDTWFwIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3QgZT10aGlzLmJhc2VVcmwrdCsodGhpcy5pc0NvbXByZXNzZWQ/Ii5iY21hcCI6IiIpLHM9dGhpcy5pc0NvbXByZXNzZWQ/aS5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWTppLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUscykuY2F0Y2goKHQ9Pnt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkICR7dGhpcy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIifUNNYXAgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQsZSl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT1CYXNlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbH0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXR9YXN5bmMgZmV0Y2goe2ZpbGVuYW1lOnR9KXtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJzdGFuZGFyZEZvbnREYXRhVXJsIiBBUEkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiRm9udCBmaWxlbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBlPWAke3RoaXMuYmFzZVVybH0ke3R9YDtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUpLmNhdGNoKCh0PT57dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmb250IGRhdGEgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9mZXRjaERhdGFgIGNhbGxlZC4iKX19ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9QmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIEJhc2VTVkdGYWN0b3J5e2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTVkdGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9Y3JlYXRlKHQsZSxzPSExKXtpZih0PD0wfHxlPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZGltZW5zaW9ucyIpO2NvbnN0IGk9dGhpcy5fY3JlYXRlU1ZHKCJzdmc6c3ZnIik7aS5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKTtpZighcyl7aS5zZXRBdHRyaWJ1dGUoIndpZHRoIixgJHt0fXB4YCk7aS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYCR7ZX1weGApfWkuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwibm9uZSIpO2kuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixgMCAwICR7dH0gJHtlfWApO3JldHVybiBpfWNyZWF0ZUVsZW1lbnQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX1fY3JlYXRlU1ZHKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19ZS5CYXNlU1ZHRmFjdG9yeT1CYXNlU1ZHRmFjdG9yeX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgaT1zKDEpO2NvbnN0IG49MzI4NTM3NzUyMCxyPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6bjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om59dXBkYXRlKHQpe2xldCBlLHM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO3M9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGkpO2lmKG48PTI1NSllW3MrK109bjtlbHNle2VbcysrXT1uPj4+ODtlW3MrK109MjU1Jm59fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO3M9ZS5ieXRlTGVuZ3RofWNvbnN0IG49cz4+MixvPXMtNCpuLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsbik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcsbT0xMTYwMSxmPTEzNzE1O2ZvcihsZXQgdD0wO3Q8bjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmcnxjKm0mYTtjPWM8PDE1fGM+Pj4xNztjPWMqZyZyfGMqZiZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZyfGgqbSZhO2g9aDw8MTV8aD4+PjE3O2g9aCpnJnJ8aCpmJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpuKzJdPDwxNjtjYXNlIDI6Y149ZVs0Km4rMV08PDg7Y2FzZSAxOmNePWVbNCpuXTtjPWMqcCZyfGMqbSZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypnJnJ8YypmJmE7MSZuP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnJ8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnJ8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnJ8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnJ8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTtjb25zdCBzPSh0Pj4+MCkudG9TdHJpbmcoMTYpLGk9KGU+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIHMucGFkU3RhcnQoOCwiMCIpK2kucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Gb250TG9hZGVyPWUuRm9udEZhY2VPYmplY3Q9dm9pZCAwO3ZhciBpPXMoMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7Y29uc3RydWN0b3Ioe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnQsc3R5bGVFbGVtZW50OnM9bnVsbH0pe3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1bXTt0aGlzLnN0eWxlRWxlbWVudD1udWxsO3RoaXMubG9hZGluZ1JlcXVlc3RzPVtdO3RoaXMubG9hZFRlc3RGb250SWQ9MH1hZGROYXRpdmVGb250RmFjZSh0KXt0aGlzLm5hdGl2ZUZvbnRGYWNlcy5wdXNoKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmFkZCh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmxlbmd0aD0wO2lmKHRoaXMuc3R5bGVFbGVtZW50KXt0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTt0aGlzLnN0eWxlRWxlbWVudD1udWxsfX1hc3luYyBiaW5kKHQpe2lmKHQuYXR0YWNoZWR8fHQubWlzc2luZ0ZpbGUpcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChzKXt0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOmkuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZE5hdGl2ZX0pOygwLGkud2FybikoYEZhaWxlZCB0byBsb2FkIGZvbnQgJyR7ZS5mYW1pbHl9JzogJyR7c30nLmApO3QuZGlzYWJsZUZvbnRGYWNlPSEwO3Rocm93IHN9fXJldHVybn1jb25zdCBlPXQuY3JlYXRlRm9udEZhY2VSdWxlKCk7aWYoZSl7dGhpcy5pbnNlcnRSdWxlKGUpO2lmKHRoaXMuaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKChlPT57Y29uc3Qgcz10aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTt0aGlzLl9wcmVwYXJlRm9udExvYWRFdmVudCh0LHMpfSkpfX1nZXQgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCgpe2NvbnN0IHQ9ISF0aGlzLl9kb2N1bWVudD8uZm9udHM7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLHQpfWdldCBpc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCgpe2xldCB0PSExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yKXQ9ITA7ZWxzZXsvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk/LlsxXT49MTQmJih0PSEwKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfV9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KXtjb25zdHtsb2FkaW5nUmVxdWVzdHM6ZX09dGhpcyxzPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlUmVxdWVzdCgpeygwLGkuYXNzZXJ0KSghcy5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3MuZG9uZT0hMDtmb3IoO2UubGVuZ3RoPjAmJmVbMF0uZG9uZTspe2NvbnN0IHQ9ZS5zaGlmdCgpO3NldFRpbWVvdXQodC5jYWxsYmFjaywwKX19LGNhbGxiYWNrOnR9O2UucHVzaChzKTtyZXR1cm4gc31nZXQgX2xvYWRUZXN0Rm9udCgpe2NvbnN0IHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9X3ByZXBhcmVGb250TG9hZEV2ZW50KHQsZSl7ZnVuY3Rpb24gaW50MzIodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpPDwyNHx0LmNoYXJDb2RlQXQoZSsxKTw8MTZ8dC5jaGFyQ29kZUF0KGUrMik8PDh8MjU1JnQuY2hhckNvZGVBdChlKzMpfWZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LGUscyxpKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStpK3Quc3Vic3RyaW5nKGUrcyl9bGV0IHMsbjtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Iud2lkdGg9MTtyLmhlaWdodD0xO2NvbnN0IGE9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBvPTA7Y29uc3QgbD1gbHQke0RhdGUubm93KCl9JHt0aGlzLmxvYWRUZXN0Rm9udElkKyt9YDtsZXQgYz10aGlzLl9sb2FkVGVzdEZvbnQ7Yz1zcGxpY2VTdHJpbmcoYyw5NzYsbC5sZW5ndGgsbCk7Y29uc3QgaD0xNDgyMTg0NzkyO2xldCBkPWludDMyKGMsMTYpO2ZvcihzPTAsbj1sLmxlbmd0aC0zO3M8bjtzKz00KWQ9ZC1oK2ludDMyKGwscyl8MDtzPGwubGVuZ3RoJiYoZD1kLWgraW50MzIobCsiWFhYIixzKXwwKTtjPXNwbGljZVN0cmluZyhjLDE2LDQsKDAsaS5zdHJpbmczMikoZCkpO2NvbnN0IHU9YEBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiIke2x9IjtzcmM6JHtgdXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsJHtidG9hKGMpfSk7YH19YDt0aGlzLmluc2VydFJ1bGUodSk7Y29uc3QgcD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7cC5zdHlsZS53aWR0aD1wLnN0eWxlLmhlaWdodD0iMTBweCI7cC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Auc3R5bGUudG9wPXAuc3R5bGUubGVmdD0iMHB4Ijtmb3IoY29uc3QgZSBvZlt0LmxvYWRlZE5hbWUsbF0pe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9IkhpIjt0LnN0eWxlLmZvbnRGYW1pbHk9ZTtwLmFwcGVuZCh0KX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTshZnVuY3Rpb24gaXNGb250UmVhZHkodCxlKXtpZigrK28+MzApeygwLGkud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKTtlKCk7cmV0dXJufWEuZm9udD0iMzBweCAiK3Q7YS5maWxsVGV4dCgiLiIsMCwyMCk7YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXT4wP2UoKTpzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCx0LGUpKX0obCwoKCk9PntwLnJlbW92ZSgpO2UuY29tcGxldGUoKX0pKX19O2UuRm9udEZhY2VPYmplY3Q9Y2xhc3MgRm9udEZhY2VPYmplY3R7Y29uc3RydWN0b3IodCx7aXNFdmFsU3VwcG9ydGVkOmU9ITAsZGlzYWJsZUZvbnRGYWNlOnM9ITEsaWdub3JlRXJyb3JzOmk9ITEsb25VbnN1cHBvcnRlZEZlYXR1cmU6bixmb250UmVnaXN0cnk6cj1udWxsfSl7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHQpdGhpc1tlXT10W2VdO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09ZTt0aGlzLmRpc2FibGVGb250RmFjZT0hMD09PXM7dGhpcy5pZ25vcmVFcnJvcnM9ITA9PT1pO3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPW47dGhpcy5mb250UmVnaXN0cnk9cn1jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5mb250UmVnaXN0cnk/LnJlZ2lzdGVyRm9udCh0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBzO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7cz1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBzPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuZm9udFJlZ2lzdHJ5Py5yZWdpc3RlckZvbnQodGhpcyxlKTtyZXR1cm4gc31nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgczt0cnl7cz10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDppLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEdldFBhdGh9KTsoMCxpLndhcm4pKGBnZXRQYXRoR2VuZXJhdG9yIC0gaWdub3JpbmcgY2hhcmFjdGVyOiAiJHt0fSIuYCk7cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXt9fWlmKHRoaXMuaXNFdmFsU3VwcG9ydGVkJiZpLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBzPXZvaWQgMCE9PWUuYXJncz9lLmFyZ3Muam9pbigiLCIpOiIiO3QucHVzaCgiYy4iLGUuY21kLCIoIixzLCIpO1xuIil9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09bmV3IEZ1bmN0aW9uKCJjIiwic2l6ZSIsdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgaSBvZiBzKXsic2NhbGUiPT09aS5jbWQmJihpLmFyZ3M9W2UsLWVdKTt0W2kuY21kXS5hcHBseSh0LGkuYXJncyl9fX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpLHI9cygxMSksYT1zKDEzKSxvPXMoMTIpO2NvbnN0IGw9NDA5NixjPW8uaXNOb2RlSlMmJiJ1bmRlZmluZWQiPT10eXBlb2YgUGF0aDJEPy0xOjFlMyxoPTE2O2NsYXNzIENhY2hlZENhbnZhc2Vze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FudmFzRmFjdG9yeT10O3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRDYW52YXModCxlLHMpe2xldCBpO2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVbdF0pe2k9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkucmVzZXQoaSxlLHMpfWVsc2V7aT10aGlzLmNhbnZhc0ZhY3RvcnkuY3JlYXRlKGUscyk7dGhpcy5jYWNoZVt0XT1pfXJldHVybiBpfWRlbGV0ZSh0KXtkZWxldGUgdGhpcy5jYWNoZVt0XX1jbGVhcigpe2Zvcihjb25zdCB0IGluIHRoaXMuY2FjaGUpe2NvbnN0IGU9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkuZGVzdHJveShlKTtkZWxldGUgdGhpcy5jYWNoZVt0XX19fWZ1bmN0aW9uIGRyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh0LGUscyxpLHIsYSxvLGwsYyxoKXtjb25zdFtkLHUscCxnLG0sZl09KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtpZigwPT09dSYmMD09PXApe2NvbnN0IG49bypkK20sYj1NYXRoLnJvdW5kKG4pLEE9bCpnK2YsXz1NYXRoLnJvdW5kKEEpLHY9KG8rYykqZCttLHk9TWF0aC5hYnMoTWF0aC5yb3VuZCh2KS1iKXx8MSxTPShsK2gpKmcrZix4PU1hdGguYWJzKE1hdGgucm91bmQoUyktXyl8fDE7dC5zZXRUcmFuc2Zvcm0oTWF0aC5zaWduKGQpLDAsMCxNYXRoLnNpZ24oZyksYixfKTt0LmRyYXdJbWFnZShlLHMsaSxyLGEsMCwwLHkseCk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZyxtLGYpO3JldHVyblt5LHhdfWlmKDA9PT1kJiYwPT09Zyl7Y29uc3Qgbj1sKnArbSxiPU1hdGgucm91bmQobiksQT1vKnUrZixfPU1hdGgucm91bmQoQSksdj0obCtoKSpwK20seT1NYXRoLmFicyhNYXRoLnJvdW5kKHYpLWIpfHwxLFM9KG8rYykqdStmLHg9TWF0aC5hYnMoTWF0aC5yb3VuZChTKS1fKXx8MTt0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbih1KSxNYXRoLnNpZ24ocCksMCxiLF8pO3QuZHJhd0ltYWdlKGUscyxpLHIsYSwwLDAseCx5KTt0LnNldFRyYW5zZm9ybShkLHUscCxnLG0sZik7cmV0dXJuW3gseV19dC5kcmF3SW1hZ2UoZSxzLGkscixhLG8sbCxjLGgpO3JldHVybltNYXRoLmh5cG90KGQsdSkqYyxNYXRoLmh5cG90KHAsZykqaF19Y2xhc3MgQ2FudmFzRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYWxwaGFJc1NoYXBlPSExO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmZvbnRNYXRyaXg9aS5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLmxlYWRpbmc9MDt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPSIjMDAwMDAwIjt0aGlzLnN0cm9rZUNvbG9yPSIjMDAwMDAwIjt0aGlzLnBhdHRlcm5GaWxsPSExO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5hY3RpdmVTTWFzaz1udWxsO3RoaXMudHJhbnNmZXJNYXBzPW51bGw7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLHMpe1tlLHNdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblkscyk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHMpfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBzPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLG49aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxzWzBdLG5bMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksc1sxXSxuWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHNbMF0sblswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxzWzFdLG5bMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLHMsbixyLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLG4scixhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe2NvbnN0IHM9W3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV07aWYodD09PXIuUGF0aFR5cGUuU1RST0tFKXtlfHwoMCxpLnVucmVhY2hhYmxlKSgiU3Ryb2tlIGJvdW5kaW5nIGJveCBtdXN0IGluY2x1ZGUgdHJhbnNmb3JtLiIpO2NvbnN0IHQ9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG49dFswXSp0aGlzLmxpbmVXaWR0aC8yLHI9dFsxXSp0aGlzLmxpbmVXaWR0aC8yO3NbMF0tPW47c1sxXS09cjtzWzJdKz1uO3NbM10rPXJ9cmV0dXJuIHN9dXBkYXRlQ2xpcEZyb21QYXRoKCl7Y29uc3QgdD1pLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godHx8WzAsMCwwLDBdKX1pc0VtcHR5Q2xpcCgpe3JldHVybiB0aGlzLm1pblg9PT0xLzB9c3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KXt0aGlzLmNsaXBCb3g9dDt0aGlzLm1pblg9MS8wO3RoaXMubWluWT0xLzA7dGhpcy5tYXhYPTA7dGhpcy5tYXhZPTB9Z2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe3JldHVybiBpLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCh0LGUpKX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsZSxzPW51bGwpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXt0LnB1dEltYWdlRGF0YShlLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQscj1lLndpZHRoLGE9biVoLG89KG4tYSkvaCxsPTA9PT1hP286bysxLGM9dC5jcmVhdGVJbWFnZURhdGEocixoKTtsZXQgZCx1PTA7Y29uc3QgcD1lLmRhdGEsZz1jLmRhdGE7bGV0IG0sZixiLEEsXyx2LHksUztpZihzKXN3aXRjaChzLmxlbmd0aCl7Y2FzZSAxOl89c1swXTt2PXNbMF07eT1zWzBdO1M9c1swXTticmVhaztjYXNlIDQ6Xz1zWzBdO3Y9c1sxXTt5PXNbMl07Uz1zWzNdfWlmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXAuYnl0ZUxlbmd0aCxzPW5ldyBVaW50MzJBcnJheShnLmJ1ZmZlciwwLGcuYnl0ZUxlbmd0aD4+Miksbj1zLmxlbmd0aCxBPXIrNz4+MztsZXQgXz00Mjk0OTY3Mjk1LHY9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtTJiYyNTU9PT1TWzBdJiYwPT09U1syNTVdJiYoW18sdl09W3YsX10pO2ZvcihtPTA7bTxsO20rKyl7Yj1tPG8/aDphO2Q9MDtmb3IoZj0wO2Y8YjtmKyspe2NvbnN0IHQ9ZS11O2xldCBpPTA7Y29uc3Qgbj10PkE/cjo4KnQtNyxhPS04Jm47bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD1wW3UrK107c1tkKytdPTEyOCZsP186djtzW2QrK109NjQmbD9fOnY7c1tkKytdPTMyJmw/Xzp2O3NbZCsrXT0xNiZsP186djtzW2QrK109OCZsP186djtzW2QrK109NCZsP186djtzW2QrK109MiZsP186djtzW2QrK109MSZsP186dn1mb3IoO2k8bjtpKyspe2lmKDA9PT1vKXtsPXBbdSsrXTtvPTEyOH1zW2QrK109bCZvP186djtvPj49MX19Zm9yKDtkPG47KXNbZCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxtKmgpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2NvbnN0IGU9ISEoX3x8dnx8eSk7Zj0wO0E9cipoKjQ7Zm9yKG09MDttPG87bSsrKXtnLnNldChwLnN1YmFycmF5KHUsdStBKSk7dSs9QTtpZihlKWZvcihsZXQgdD0wO3Q8QTt0Kz00KXtfJiYoZ1t0KzBdPV9bZ1t0KzBdXSk7diYmKGdbdCsxXT12W2dbdCsxXV0pO3kmJihnW3QrMl09eVtnW3QrMl1dKX10LnB1dEltYWdlRGF0YShjLDAsZik7Zis9aH1pZihtPGwpe0E9ciphKjQ7Zy5zZXQocC5zdWJhcnJheSh1LHUrQSkpO2lmKGUpZm9yKGxldCB0PTA7dDxBO3QrPTQpe18mJihnW3QrMF09X1tnW3QrMF1dKTt2JiYoZ1t0KzFdPXZbZ1t0KzFdXSk7eSYmKGdbdCsyXT15W2dbdCsyXV0pfXQucHV0SW1hZ2VEYXRhKGMsMCxmKX19ZWxzZXtpZihlLmtpbmQhPT1pLkltYWdlS2luZC5SR0JfMjRCUFApdGhyb3cgbmV3IEVycm9yKGBiYWQgaW1hZ2Uga2luZDogJHtlLmtpbmR9YCk7e2NvbnN0IGU9ISEoX3x8dnx8eSk7Yj1oO0E9cipiO2ZvcihtPTA7bTxsO20rKyl7aWYobT49byl7Yj1hO0E9cipifWQ9MDtmb3IoZj1BO2YtLTspe2dbZCsrXT1wW3UrK107Z1tkKytdPXBbdSsrXTtnW2QrK109cFt1KytdO2dbZCsrXT0yNTV9aWYoZSlmb3IobGV0IHQ9MDt0PGQ7dCs9NCl7XyYmKGdbdCswXT1fW2dbdCswXV0pO3YmJihnW3QrMV09dltnW3QrMV1dKTt5JiYoZ1t0KzJdPXlbZ1t0KzJdXSl9dC5wdXRJbWFnZURhdGEoYywwLG0qaCl9fX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IHM9ZS5oZWlnaHQsaT1lLndpZHRoLG49cyVoLHI9KHMtbikvaCxvPTA9PT1uP3I6cisxLGw9dC5jcmVhdGVJbWFnZURhdGEoaSxoKTtsZXQgYz0wO2NvbnN0IGQ9ZS5kYXRhLHU9bC5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHM9ZTxyP2g6bjsoe3NyY1BvczpjfT0oMCxhLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzpkLHNyY1BvczpjLGRlc3Q6dSx3aWR0aDppLGhlaWdodDpzfSkpO3QucHV0SW1hZ2VEYXRhKGwsMCxlKmgpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBzPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtmb3IoY29uc3QgaSBvZiBzKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQsZSl7dC5zdHJva2VTdHlsZT10LmZpbGxTdHlsZT1lfHwiIzAwMDAwMCI7dC5maWxsUnVsZT0ibm9uemVybyI7dC5nbG9iYWxBbHBoYT0xO3QubGluZVdpZHRoPTE7dC5saW5lQ2FwPSJidXR0Ijt0LmxpbmVKb2luPSJtaXRlciI7dC5taXRlckxpbWl0PTEwO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5mb250PSIxMHB4IHNhbnMtc2VyaWYiO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3Quc2V0TGluZURhc2goW10pO3QubGluZURhc2hPZmZzZXQ9MH19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQmFja2Ryb3AodCxlLHMsaSl7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IHI9MztyPG47cis9NCl7Y29uc3Qgbj10W3JdO2lmKDA9PT1uKXt0W3ItM109ZTt0W3ItMl09czt0W3ItMV09aX1lbHNlIGlmKG48MjU1KXtjb25zdCBhPTI1NS1uO3Rbci0zXT10W3ItM10qbitlKmE+Pjg7dFtyLTJdPXRbci0yXSpuK3MqYT4+ODt0W3ItMV09dFtyLTFdKm4raSphPj44fX19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQWxwaGEodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9cz9zW3Rbbl1dOnRbbl07ZVtuXT1lW25dKmkqLjAwMzkyMTU2ODYyNzQ1MDk4fDB9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9NzcqdFtuLTNdKzE1Mip0W24tMl0rMjgqdFtuLTFdO2Vbbl09cz9lW25dKnNbaT4+OF0+Pjg6ZVtuXSppPj4xNn19ZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsZSxzLGkpe2NvbnN0IG49aVswXSxyPWlbMV0sYT1pWzJdLW4sbz1pWzNdLXI7aWYoMCE9PWEmJjAhPT1vKXshZnVuY3Rpb24gZ2VuZXJpY0NvbXBvc2VTTWFzayh0LGUscyxpLG4scixhLG8sbCxjLGgpe2NvbnN0IGQ9ISFyLHU9ZD9yWzBdOjAscD1kP3JbMV06MCxnPWQ/clsyXTowO2xldCBtO209Ikx1bWlub3NpdHkiPT09bj9jb21wb3NlU01hc2tMdW1pbm9zaXR5OmNvbXBvc2VTTWFza0FscGhhO2NvbnN0IGY9TWF0aC5taW4oaSxNYXRoLmNlaWwoMTA0ODU3Ni9zKSk7Zm9yKGxldCBuPTA7bjxpO24rPWYpe2NvbnN0IHI9TWF0aC5taW4oZixpLW4pLGI9dC5nZXRJbWFnZURhdGEoby1jLG4rKGwtaCkscyxyKSxBPWUuZ2V0SW1hZ2VEYXRhKG8sbitsLHMscik7ZCYmY29tcG9zZVNNYXNrQmFja2Ryb3AoYi5kYXRhLHUscCxnKTttKGIuZGF0YSxBLmRhdGEsYSk7ZS5wdXRJbWFnZURhdGEoQSxvLG4rbCl9fShlLmNvbnRleHQscyxhLG8sZS5zdWJ0eXBlLGUuYmFja2Ryb3AsZS50cmFuc2Zlck1hcCxuLHIsZS5vZmZzZXRYLGUub2Zmc2V0WSk7dC5zYXZlKCk7dC5nbG9iYWxBbHBoYT0xO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3QuZHJhd0ltYWdlKHMuY2FudmFzLDAsMCk7dC5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdldEltYWdlU21vb3RoaW5nRW5hYmxlZCh0LGUpe2NvbnN0IHM9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpO3NbMF09TWF0aC5mcm91bmQoc1swXSk7c1sxXT1NYXRoLmZyb3VuZChzWzFdKTtjb25zdCByPU1hdGguZnJvdW5kKChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpKm4uUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKTtyZXR1cm4gdm9pZCAwIT09ZT9lOnNbMF08PXJ8fHNbMV08PXJ9Y29uc3QgZD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLHU9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxwPXt9LGc9e307Y2xhc3MgQ2FudmFzR3JhcGhpY3N7Y29uc3RydWN0b3IodCxlLHMsaSxuLHIsYSl7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1zO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPVtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPW47dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPXI7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMuYmFja2dyb3VuZENvbG9yPWE/LmJhY2tncm91bmR8fG51bGw7dGhpcy5mb3JlZ3JvdW5kQ29sb3I9YT8uZm9yZWdyb3VuZHx8bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXA9bmV3IE1hcH1nZXRPYmplY3QodCxlPW51bGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06dCx2aWV3cG9ydDplLHRyYW5zcGFyZW5jeTpzPSExLGJhY2tncm91bmQ6aT1udWxsfSl7Y29uc3Qgcj10aGlzLmN0eC5jYW52YXMud2lkdGgsYT10aGlzLmN0eC5jYW52YXMuaGVpZ2h0LG89aXx8IiNmZmZmZmYiO3RoaXMuY3R4LnNhdmUoKTtpZih0aGlzLmZvcmVncm91bmRDb2xvciYmdGhpcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmZvcmVncm91bmRDb2xvcjtjb25zdCB0PXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3I7Y29uc3QgZT10aGlzLmJhY2tncm91bmRDb2xvcj10aGlzLmN0eC5maWxsU3R5bGU7bGV0IHM9ITAsaT1vO3RoaXMuY3R4LmZpbGxTdHlsZT1vO2k9dGhpcy5jdHguZmlsbFN0eWxlO3M9InN0cmluZyI9PXR5cGVvZiBpJiYvXiNbMC05QS1GYS1mXXs2fSQvLnRlc3QoaSk7aWYoIiMwMDAwMDAiPT09dCYmIiNmZmZmZmYiPT09ZXx8dD09PWV8fCFzKXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7ZWxzZXtjb25zdFtzLHIsYV09KDAsbi5nZXRSR0IpKGkpLG5ld0NvbXA9dD0+KHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOigodCsuMDU1KS8xLjA1NSkqKjIuNCxvPU1hdGgucm91bmQoLjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKHIpKy4wNzIyKm5ld0NvbXAoYSkpO3RoaXMuc2VsZWN0Q29sb3I9KHMsaSxuKT0+e2NvbnN0IHI9LjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKGkpKy4wNzIyKm5ld0NvbXAobik7cmV0dXJuIE1hdGgucm91bmQocik9PT1vP2U6dH19fXRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8bzt0aGlzLmN0eC5maWxsUmVjdCgwLDAscixhKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYocyl7Y29uc3QgdD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLHIsYSk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHg7dGhpcy50cmFuc3BhcmVudENhbnZhcz10LmNhbnZhczt0aGlzLmN0eD10LmNvbnRleHQ7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY29tcG9zaXRlQ3R4KSl9dGhpcy5jdHguc2F2ZSgpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTtpZih0KXt0aGlzLmN0eC50cmFuc2Zvcm0oLi4udCk7dGhpcy5vdXRwdXRTY2FsZVg9dFswXTt0aGlzLm91dHB1dFNjYWxlWT10WzBdfXRoaXMuY3R4LnRyYW5zZm9ybSguLi5lLnRyYW5zZm9ybSk7dGhpcy52aWV3cG9ydFNjYWxlPWUuc2NhbGU7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpfWV4ZWN1dGVPcGVyYXRvckxpc3QodCxlLHMsbil7Y29uc3Qgcj10LmFyZ3NBcnJheSxhPXQuZm5BcnJheTtsZXQgbz1lfHwwO2NvbnN0IGw9ci5sZW5ndGg7aWYobD09PW8pcmV0dXJuIG87Y29uc3QgYz1sLW8+MTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLGg9Yz9EYXRlLm5vdygpKzE1OjA7bGV0IGQ9MDtjb25zdCB1PXRoaXMuY29tbW9uT2JqcyxwPXRoaXMub2JqcztsZXQgZztmb3IoOzspe2lmKHZvaWQgMCE9PW4mJm89PT1uLm5leHRCcmVha1BvaW50KXtuLmJyZWFrSXQobyxzKTtyZXR1cm4gb31nPWFbb107aWYoZyE9PWkuT1BTLmRlcGVuZGVuY3kpdGhpc1tnXS5hcHBseSh0aGlzLHJbb10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgcltvXSl7Y29uc3QgZT10LnN0YXJ0c1dpdGgoImdfIik/dTpwO2lmKCFlLmhhcyh0KSl7ZS5nZXQodCxzKTtyZXR1cm4gb319bysrO2lmKG89PT1sKXJldHVybiBvO2lmKGMmJisrZD4xMCl7aWYoRGF0ZS5ub3coKT5oKXtzKCk7cmV0dXJuIG99ZD0wfX19I3N0KCl7Zm9yKDt0aGlzLnN0YXRlU3RhY2subGVuZ3RofHx0aGlzLmluU01hc2tNb2RlOyl0aGlzLnJlc3RvcmUoKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYodGhpcy50cmFuc3BhcmVudENhbnZhcyl7dGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHg7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKTt0aGlzLmN0eC5yZXN0b3JlKCk7dGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsfX1lbmREcmF3aW5nKCl7dGhpcy4jc3QoKTt0aGlzLmNhY2hlZENhbnZhc2VzLmNsZWFyKCk7dGhpcy5jYWNoZWRQYXR0ZXJucy5jbGVhcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50JiYoZS53aWR0aD1lLmhlaWdodD0wKTt0LmNsZWFyKCl9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5jbGVhcigpfV9zY2FsZUltYWdlKHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQ7bGV0IG4scixhPU1hdGgubWF4KE1hdGguaHlwb3QoZVswXSxlWzFdKSwxKSxvPU1hdGgubWF4KE1hdGguaHlwb3QoZVsyXSxlWzNdKSwxKSxsPXMsYz1pLGg9InByZXNjYWxlMSI7Zm9yKDthPjImJmw+MXx8bz4yJiZjPjE7KXtsZXQgZT1sLHM9YztpZihhPjImJmw+MSl7ZT1NYXRoLmNlaWwobC8yKTthLz1sL2V9aWYobz4yJiZjPjEpe3M9TWF0aC5jZWlsKGMvMik7by89Yy9zfW49dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoaCxlLHMpO3I9bi5jb250ZXh0O3IuY2xlYXJSZWN0KDAsMCxlLHMpO3IuZHJhd0ltYWdlKHQsMCwwLGwsYywwLDAsZSxzKTt0PW4uY2FudmFzO2w9ZTtjPXM7aD0icHJlc2NhbGUxIj09PWg/InByZXNjYWxlMiI6InByZXNjYWxlMSJ9cmV0dXJue2ltZzp0LHBhaW50V2lkdGg6bCxwYWludEhlaWdodDpjfX1fY3JlYXRlTWFza0NhbnZhcyh0KXtjb25zdCBlPXRoaXMuY3R4LHt3aWR0aDpzLGhlaWdodDphfT10LG89dGhpcy5jdXJyZW50LmZpbGxDb2xvcixsPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7bGV0IGgsZCx1LHA7aWYoKHQuYml0bWFwfHx0LmRhdGEpJiZ0LmNvdW50PjEpe2NvbnN0IGU9dC5iaXRtYXB8fHQuZGF0YS5idWZmZXI7ZD1KU09OLnN0cmluZ2lmeShsP2M6W2Muc2xpY2UoMCw0KSxvXSk7aD10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldChlKTtpZighaCl7aD1uZXcgTWFwO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXAuc2V0KGUsaCl9Y29uc3Qgcz1oLmdldChkKTtpZihzJiYhbCl7cmV0dXJue2NhbnZhczpzLG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihjWzBdLGNbMl0pK2NbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLGNbM10pK2NbNV0pfX11PXN9aWYoIXUpe3A9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoIm1hc2tDYW52YXMiLHMsYSk7cHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCx0KX1sZXQgZz1pLlV0aWwudHJhbnNmb3JtKGMsWzEvcywwLDAsLTEvYSwwLDBdKTtnPWkuVXRpbC50cmFuc2Zvcm0oZyxbMSwwLDAsMSwwLC1hXSk7Y29uc3QgbT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sZyksZj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsYV0sZyksYj1pLlV0aWwubm9ybWFsaXplUmVjdChbbVswXSxtWzFdLGZbMF0sZlsxXV0pLEE9TWF0aC5yb3VuZChiWzJdLWJbMF0pfHwxLF89TWF0aC5yb3VuZChiWzNdLWJbMV0pfHwxLHY9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImZpbGxDYW52YXMiLEEsXykseT12LmNvbnRleHQsUz1NYXRoLm1pbihtWzBdLGZbMF0pLHg9TWF0aC5taW4obVsxXSxmWzFdKTt5LnRyYW5zbGF0ZSgtUywteCk7eS50cmFuc2Zvcm0oLi4uZyk7aWYoIXUpe3U9dGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKSh5KSk7dT11LmltZztoJiZsJiZoLnNldChkLHUpfXkuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh5LHUsMCwwLHUud2lkdGgsdS5oZWlnaHQsMCwwLHMsYSk7eS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7Y29uc3QgRT1pLlV0aWwudHJhbnNmb3JtKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHkpLFsxLDAsMCwxLC1TLC14XSk7eS5maWxsU3R5bGU9bD9vLmdldFBhdHRlcm4oZSx0aGlzLEUsci5QYXRoVHlwZS5GSUxMKTpvO3kuZmlsbFJlY3QoMCwwLHMsYSk7aWYoaCYmIWwpe3RoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIik7aC5zZXQoZCx2LmNhbnZhcyl9cmV0dXJue2NhbnZhczp2LmNhbnZhcyxvZmZzZXRYOk1hdGgucm91bmQoUyksb2Zmc2V0WTpNYXRoLnJvdW5kKHgpfX1zZXRMaW5lV2lkdGgodCl7dCE9PXRoaXMuY3VycmVudC5saW5lV2lkdGgmJih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwpO3RoaXMuY3VycmVudC5saW5lV2lkdGg9dDt0aGlzLmN0eC5saW5lV2lkdGg9dH1zZXRMaW5lQ2FwKHQpe3RoaXMuY3R4LmxpbmVDYXA9ZFt0XX1zZXRMaW5lSm9pbih0KXt0aGlzLmN0eC5saW5lSm9pbj11W3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdHgubWl0ZXJMaW1pdD10fXNldERhc2godCxlKXtjb25zdCBzPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXMuc2V0TGluZURhc2gpe3Muc2V0TGluZURhc2godCk7cy5saW5lRGFzaE9mZnNldD1lfX1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usc11vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChzKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAocyk7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihzKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQocyk7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goc1swXSxzWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChzKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKHMpO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJDQSI6dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhPXM7YnJlYWs7Y2FzZSJjYSI6dGhpcy5jdXJyZW50LmZpbGxBbHBoYT1zO3RoaXMuY3R4Lmdsb2JhbEFscGhhPXM7YnJlYWs7Y2FzZSJCTSI6dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXM7YnJlYWs7Y2FzZSJTTWFzayI6dGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPXM/dGhpcy50ZW1wU01hc2s6bnVsbDt0aGlzLnRlbXBTTWFzaz1udWxsO3RoaXMuY2hlY2tTTWFza1N0YXRlKCk7YnJlYWs7Y2FzZSJUUiI6dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz1zfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscz0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhzLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHI9dGhpcy5jdHg7ci5zZXRUcmFuc2Zvcm0oLi4uKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxyKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQscyl7ZS50cmFuc2xhdGUodCxzKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxzKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LHMpe2Uuc2NhbGUodCxzKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LHMpfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxzLGksbixyLGEpe2UudHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpe2Uuc2V0VHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQscyl7ZS5tb3ZlVG8odCxzKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxzKX07dC5saW5lVG89ZnVuY3Rpb24odCxzKXtlLmxpbmVUbyh0LHMpO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LHMpfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxzLGksbixyLGEpe2UuYmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSl9O3QucmVjdD1mdW5jdGlvbih0LHMsaSxuKXtlLnJlY3QodCxzLGksbik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LHMsaSxuKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShyLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfX10cmFuc2Zvcm0odCxlLHMsaSxuLHIpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscyxpLG4scik7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH1jb25zdHJ1Y3RQYXRoKHQsZSxzKXtjb25zdCByPXRoaXMuY3R4LGE9dGhpcy5jdXJyZW50O2xldCBvLGwsYz1hLngsaD1hLnk7Y29uc3QgZD0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHIpLHU9MD09PWRbMF0mJjA9PT1kWzNdfHwwPT09ZFsxXSYmMD09PWRbMl0scD11P3Muc2xpY2UoMCk6bnVsbDtmb3IobGV0IHM9MCxuPTAsZz10Lmxlbmd0aDtzPGc7cysrKXN3aXRjaCgwfHRbc10pe2Nhc2UgaS5PUFMucmVjdGFuZ2xlOmM9ZVtuKytdO2g9ZVtuKytdO2NvbnN0IHQ9ZVtuKytdLHM9ZVtuKytdLGc9Yyt0LG09aCtzO3IubW92ZVRvKGMsaCk7aWYoMD09PXR8fDA9PT1zKXIubGluZVRvKGcsbSk7ZWxzZXtyLmxpbmVUbyhnLGgpO3IubGluZVRvKGcsbSk7ci5saW5lVG8oYyxtKX11fHxhLnVwZGF0ZVJlY3RNaW5NYXgoZCxbYyxoLGcsbV0pO3IuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBpLk9QUy5tb3ZlVG86Yz1lW24rK107aD1lW24rK107ci5tb3ZlVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMubGluZVRvOmM9ZVtuKytdO2g9ZVtuKytdO3IubGluZVRvKGMsaCk7dXx8YS51cGRhdGVQYXRoTWluTWF4KGQsYyxoKTticmVhaztjYXNlIGkuT1BTLmN1cnZlVG86bz1jO2w9aDtjPWVbbis0XTtoPWVbbis1XTtyLmJlemllckN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10sYyxoLHApO24rPTY7YnJlYWs7Y2FzZSBpLk9QUy5jdXJ2ZVRvMjpvPWM7bD1oO3IuYmV6aWVyQ3VydmVUbyhjLGgsZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsYyxoLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10scCk7Yz1lW24rMl07aD1lW24rM107bis9NDticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8zOm89YztsPWg7Yz1lW24rMl07aD1lW24rM107ci5iZXppZXJDdXJ2ZVRvKGVbbl0sZVtuKzFdLGMsaCxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGMsaCxjLGgscCk7bis9NDticmVhaztjYXNlIGkuT1BTLmNsb3NlUGF0aDpyLmNsb3NlUGF0aCgpfXUmJmEudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoZCxwKTthLnNldEN1cnJlbnRQb2ludChjLGgpfWNsb3NlUGF0aCgpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfXN0cm9rZSh0KXt0PXZvaWQgMD09PXR8fHQ7Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKWlmKCJvYmplY3QiPT10eXBlb2YgcyYmcz8uZ2V0UGF0dGVybil7ZS5zYXZlKCk7ZS5zdHJva2VTdHlsZT1zLmdldFBhdHRlcm4oZSx0aGlzLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLHIuUGF0aFR5cGUuU1RST0tFKTt0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO2UucmVzdG9yZSgpfWVsc2UgdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKTt0JiZ0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LmZpbGxBbHBoYX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1maWxsKHQpe3Q9dm9pZCAwPT09dHx8dDtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LmZpbGxDb2xvcjtsZXQgaT0hMTtpZih0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwpe2Uuc2F2ZSgpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTtpPSEwfWNvbnN0IGE9dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09YSlpZih0aGlzLnBlbmRpbmdFT0ZpbGwpe2UuZmlsbCgiZXZlbm9kZCIpO3RoaXMucGVuZGluZ0VPRmlsbD0hMX1lbHNlIGUuZmlsbCgpO2kmJmUucmVzdG9yZSgpO3QmJnRoaXMuY29uc3VtZVBhdGgoYSl9ZW9GaWxsKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbCgpfWZpbGxTdHJva2UoKXt0aGlzLmZpbGwoITEpO3RoaXMuc3Ryb2tlKCExKTt0aGlzLmNvbnN1bWVQYXRoKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1lbmRQYXRoKCl7dGhpcy5jb25zdW1lUGF0aCgpfWNsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXB9ZW9DbGlwKCl7dGhpcy5wZW5kaW5nQ2xpcD1nfWJlZ2luVGV4dCgpe3RoaXMuY3VycmVudC50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKTtlLmJlZ2luUGF0aCgpO2Zvcihjb25zdCBzIG9mIHQpe2Uuc2V0VHJhbnNmb3JtKC4uLnMudHJhbnNmb3JtKTtlLnRyYW5zbGF0ZShzLngscy55KTtzLmFkZFRvUGF0aChlLHMuZm9udFNpemUpfWUucmVzdG9yZSgpO2UuY2xpcCgpO2UuYmVnaW5QYXRoKCk7ZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRoc31lbHNlIGUuYmVnaW5QYXRoKCl9c2V0Q2hhclNwYWNpbmcodCl7dGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nPXR9c2V0V29yZFNwYWNpbmcodCl7dGhpcy5jdXJyZW50LndvcmRTcGFjaW5nPXR9c2V0SFNjYWxlKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfXNldExlYWRpbmcodCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9c2V0Rm9udCh0LGUpe2NvbnN0IHM9dGhpcy5jb21tb25PYmpzLmdldCh0KSxuPXRoaXMuY3VycmVudDtpZighcyl0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgZm9udCBmb3IgJHt0fWApO24uZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVg7MCE9PW4uZm9udE1hdHJpeFswXSYmMCE9PW4uZm9udE1hdHJpeFszXXx8KDAsaS53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpO2lmKGU8MCl7ZT0tZTtuLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBuLmZvbnREaXJlY3Rpb249MTt0aGlzLmN1cnJlbnQuZm9udD1zO3RoaXMuY3VycmVudC5mb250U2l6ZT1lO2lmKHMuaXNUeXBlM0ZvbnQpcmV0dXJuO2NvbnN0IHI9cy5sb2FkZWROYW1lfHwic2Fucy1zZXJpZiI7bGV0IGE9Im5vcm1hbCI7cy5ibGFjaz9hPSI5MDAiOnMuYm9sZCYmKGE9ImJvbGQiKTtjb25zdCBvPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiLGw9YCIke3J9IiwgJHtzLmZhbGxiYWNrTmFtZX1gO2xldCBjPWU7ZTwxNj9jPTE2OmU+MTAwJiYoYz0xMDApO3RoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvYzt0aGlzLmN0eC5mb250PWAke299ICR7YX0gJHtjfXB4ICR7bH1gfXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fW1vdmVUZXh0KHQsZSl7dGhpcy5jdXJyZW50Lng9dGhpcy5jdXJyZW50LmxpbmVYKz10O3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWSs9ZX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1zZXRUZXh0TWF0cml4KHQsZSxzLGksbixyKXt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeD1bdCxlLHMsaSxuLHJdO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1wYWludENoYXIodCxlLHMscil7Y29uc3QgYT10aGlzLmN0eCxvPXRoaXMuY3VycmVudCxsPW8uZm9udCxjPW8udGV4dFJlbmRlcmluZ01vZGUsaD1vLmZvbnRTaXplL28uZm9udFNpemVTY2FsZSxkPWMmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLLHU9ISEoYyZpLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpLHA9by5wYXR0ZXJuRmlsbCYmIWwubWlzc2luZ0ZpbGU7bGV0IGc7KGwuZGlzYWJsZUZvbnRGYWNlfHx1fHxwKSYmKGc9bC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2Jqcyx0KSk7aWYobC5kaXNhYmxlRm9udEZhY2V8fHApe2Euc2F2ZSgpO2EudHJhbnNsYXRlKGUscyk7YS5iZWdpblBhdGgoKTtnKGEsaCk7ciYmYS5zZXRUcmFuc2Zvcm0oLi4ucik7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbCgpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlKCk7YS5yZXN0b3JlKCl9ZWxzZXtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5maWxsVGV4dCh0LGUscyk7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5zdHJva2VUZXh0KHQsZSxzKX1pZih1KXsodGhpcy5wZW5kaW5nVGV4dFBhdGhzfHwodGhpcy5wZW5kaW5nVGV4dFBhdGhzPVtdKSkucHVzaCh7dHJhbnNmb3JtOigwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoYSkseDplLHk6cyxmb250U2l6ZTpoLGFkZFRvUGF0aDpnfSl9fWdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpe2NvbnN0e2NvbnRleHQ6dH09dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIiwxMCwxMCk7dC5zY2FsZSgxLjUsMSk7dC5maWxsVGV4dCgiSSIsMCwxMCk7Y29uc3QgZT10LmdldEltYWdlRGF0YSgwLDAsMTAsMTApLmRhdGE7bGV0IHM9ITE7Zm9yKGxldCB0PTM7dDxlLmxlbmd0aDt0Kz00KWlmKGVbdF0+MCYmZVt0XTwyNTUpe3M9ITA7YnJlYWt9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIixzKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxzPWUuZm9udDtpZihzLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7Y29uc3QgYT1lLmZvbnRTaXplO2lmKDA9PT1hKXJldHVybjtjb25zdCBvPXRoaXMuY3R4LGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPXQubGVuZ3RoLGc9cy52ZXJ0aWNhbCxtPWc/MTotMSxmPXMuZGVmYXVsdFZNZXRyaWNzLGI9YSplLmZvbnRNYXRyaXhbMF0sQT1lLnRleHRSZW5kZXJpbmdNb2RlPT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiYhcy5kaXNhYmxlRm9udEZhY2UmJiFlLnBhdHRlcm5GaWxsO28uc2F2ZSgpO28udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7by50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKTtkPjA/by5zY2FsZSh1LC0xKTpvLnNjYWxlKHUsMSk7bGV0IF87aWYoZS5wYXR0ZXJuRmlsbCl7by5zYXZlKCk7Y29uc3QgdD1lLmZpbGxDb2xvci5nZXRQYXR0ZXJuKG8sdGhpcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShvKSxyLlBhdGhUeXBlLkZJTEwpO189KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShvKTtvLnJlc3RvcmUoKTtvLmZpbGxTdHlsZT10fWxldCB2PWUubGluZVdpZHRoO2NvbnN0IHk9ZS50ZXh0TWF0cml4U2NhbGU7aWYoMD09PXl8fDA9PT12KXtjb25zdCB0PWUudGV4dFJlbmRlcmluZ01vZGUmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO3QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmdCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fCh2PXRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpKX1lbHNlIHYvPXk7aWYoMSE9PWwpe28uc2NhbGUobCxsKTt2Lz1sfW8ubGluZVdpZHRoPXY7bGV0IFMseD0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7eCs9bSplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IG49KGUuaXNTcGFjZT9oOjApK2Mscj1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsdix5LEU9ZS53aWR0aDtpZihnKXtjb25zdCB0PWUudm1ldHJpY3x8ZixzPS0oZS52bWV0cmljP3RbMV06LjUqRSkqYixpPXRbMl0qYjtFPXQ/LXRbMF06RTtwPXMvbDt2PSh4K2kpL2x9ZWxzZXtwPXgvbDt2PTB9aWYocy5yZW1lYXN1cmUmJkU+MCl7Y29uc3QgdD0xZTMqby5tZWFzdXJlVGV4dChyKS53aWR0aC9hKmw7aWYoRTx0JiZ0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKXtjb25zdCBlPUUvdDtpPSEwO28uc2F2ZSgpO28uc2NhbGUoZSwxKTtwLz1lfWVsc2UgRSE9PXQmJihwKz0oRS10KS8yZTMqYS9sKX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlJiYoZS5pc0luRm9udHx8cy5taXNzaW5nRmlsZSkpaWYoQSYmIXUpby5maWxsVGV4dChyLHAsdik7ZWxzZXt0aGlzLnBhaW50Q2hhcihyLHAsdixfKTtpZih1KXtjb25zdCB0PXArYSp1Lm9mZnNldC54L2wsZT12LWEqdS5vZmZzZXQueS9sO3RoaXMucGFpbnRDaGFyKHUuZm9udENoYXIsdCxlLF8pfX15PWc/RSpiLW4qZDpFKmIrbipkO3grPXk7aSYmby5yZXN0b3JlKCl9Zz9lLnktPXg6ZS54Kz14KnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LG49cy5mb250LHI9cy5mb250U2l6ZSxhPXMuZm9udERpcmVjdGlvbixvPW4udmVydGljYWw/MTotMSxsPXMuY2hhclNwYWNpbmcsYz1zLndvcmRTcGFjaW5nLGg9cy50ZXh0SFNjYWxlKmEsZD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxnLG0sZjtpZighKHMudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1yKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO2Uuc2F2ZSgpO2UudHJhbnNmb3JtKC4uLnMudGV4dE1hdHJpeCk7ZS50cmFuc2xhdGUocy54LHMueSk7ZS5zY2FsZShoLGEpO2ZvcihwPTA7cDx1OysrcCl7Zz10W3BdO2lmKCJudW1iZXIiPT10eXBlb2YgZyl7Zj1vKmcqci8xZTM7dGhpcy5jdHgudHJhbnNsYXRlKGYsMCk7cy54Kz1mKmg7Y29udGludWV9Y29uc3QgYT0oZy5pc1NwYWNlP2M6MCkrbCx1PW4uY2hhclByb2NPcGVyYXRvckxpc3RbZy5vcGVyYXRvckxpc3RJZF07aWYoIXUpeygwLGkud2FybikoYFR5cGUzIGNoYXJhY3RlciAiJHtnLm9wZXJhdG9yTGlzdElkfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb250aW51ZX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0aGlzLnByb2Nlc3NpbmdUeXBlMz1nO3RoaXMuc2F2ZSgpO2Uuc2NhbGUocixyKTtlLnRyYW5zZm9ybSguLi5kKTt0aGlzLmV4ZWN1dGVPcGVyYXRvckxpc3QodSk7dGhpcy5yZXN0b3JlKCl9bT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2cud2lkdGgsMF0sZClbMF0qcithO2UudHJhbnNsYXRlKG0sMCk7cy54Kz1tKmh9ZS5yZXN0b3JlKCk7dGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19c2V0Q2hhcldpZHRoKHQsZSl7fXNldENoYXJXaWR0aEFuZEJvdW5kcyh0LGUscyxpLG4scil7dGhpcy5jdHgucmVjdChzLGksbi1zLHItaSk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfWdldENvbG9yTl9QYXR0ZXJuKHQpe2xldCBlO2lmKCJUaWxpbmdQYXR0ZXJuIj09PXRbMF0pe2NvbnN0IHM9dFsxXSxpPXRoaXMuYmFzZVRyYW5zZm9ybXx8KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksYT17Y3JlYXRlQ2FudmFzR3JhcGhpY3M6dD0+bmV3IENhbnZhc0dyYXBoaWNzKHQsdGhpcy5jb21tb25PYmpzLHRoaXMub2Jqcyx0aGlzLmNhbnZhc0ZhY3RvcnkpfTtlPW5ldyByLlRpbGluZ1BhdHRlcm4odCxzLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9bjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9bn1zZXRGaWxsUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguZmlsbFN0eWxlPW47dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1uO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0LGU9bnVsbCl7bGV0IHM7aWYodGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCkpcz10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTtlbHNle3M9KDAsci5nZXRTaGFkaW5nUGF0dGVybikodGhpcy5vYmpzLmdldCh0KSk7dGhpcy5jYWNoZWRQYXR0ZXJucy5zZXQodCxzKX1lJiYocy5tYXRyaXg9ZSk7cmV0dXJuIHN9c2hhZGluZ0ZpbGwodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dGhpcy5jdHg7dGhpcy5zYXZlKCk7Y29uc3Qgcz10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5TSEFESU5HKTtjb25zdCBhPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO2lmKGEpe2NvbnN0IHQ9ZS5jYW52YXMscz10LndpZHRoLG49dC5oZWlnaHQscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sYSksbz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsbl0sYSksbD1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsMF0sYSksYz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3Msbl0sYSksaD1NYXRoLm1pbihyWzBdLG9bMF0sbFswXSxjWzBdKSxkPU1hdGgubWluKHJbMV0sb1sxXSxsWzFdLGNbMV0pLHU9TWF0aC5tYXgoclswXSxvWzBdLGxbMF0sY1swXSkscD1NYXRoLm1heChyWzFdLG9bMV0sbFsxXSxjWzFdKTt0aGlzLmN0eC5maWxsUmVjdChoLGQsdS1oLHAtZCl9ZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwtMWUxMCwyZTEwLDJlMTApO3RoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnJlc3RvcmUoKX1iZWdpbklubGluZUltYWdlKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9YmVnaW5JbWFnZURhdGEoKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCk7dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pO0FycmF5LmlzQXJyYXkodCkmJjY9PT10Lmxlbmd0aCYmdGhpcy50cmFuc2Zvcm0oLi4udCk7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO2lmKGUpe2NvbnN0IHQ9ZVsyXS1lWzBdLHM9ZVszXS1lWzFdO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHQscyk7dGhpcy5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksZSk7dGhpcy5jbGlwKCk7dGhpcy5lbmRQYXRoKCl9fX1wYWludEZvcm1YT2JqZWN0RW5kKCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5yZXN0b3JlKCk7dGhpcy5iYXNlVHJhbnNmb3JtPXRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpfX1iZWdpbkdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLnNhdmUoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLmVuZFNNYXNrTW9kZSgpO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzaz1udWxsfWNvbnN0IGU9dGhpcy5jdHg7dC5pc29sYXRlZHx8KDAsaS5pbmZvKSgiVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLiIpO3Qua25vY2tvdXQmJigwLGkud2FybikoIktub2Nrb3V0IGdyb3VwcyBub3Qgc3VwcG9ydGVkLiIpO2NvbnN0IHM9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTt0Lm1hdHJpeCYmZS50cmFuc2Zvcm0oLi4udC5tYXRyaXgpO2lmKCF0LmJib3gpdGhyb3cgbmV3IEVycm9yKCJCb3VuZGluZyBib3ggaXMgcmVxdWlyZWQuIik7bGV0IHI9aS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQuYmJveCwoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtjb25zdCBhPVswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XTtyPWkuVXRpbC5pbnRlcnNlY3QocixhKXx8WzAsMCwwLDBdO2NvbnN0IG89TWF0aC5mbG9vcihyWzBdKSxjPU1hdGguZmxvb3IoclsxXSk7bGV0IGg9TWF0aC5tYXgoTWF0aC5jZWlsKHJbMl0pLW8sMSksZD1NYXRoLm1heChNYXRoLmNlaWwoclszXSktYywxKSx1PTEscD0xO2lmKGg+bCl7dT1oL2w7aD1sfWlmKGQ+bCl7cD1kL2w7ZD1sfXRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsaCxkXSk7bGV0IGc9Imdyb3VwQXQiK3RoaXMuZ3JvdXBMZXZlbDt0LnNtYXNrJiYoZys9Il9zbWFza18iK3RoaXMuc21hc2tDb3VudGVyKyslMik7Y29uc3QgbT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhnLGgsZCksZj1tLmNvbnRleHQ7Zi5zY2FsZSgxL3UsMS9wKTtmLnRyYW5zbGF0ZSgtbywtYyk7Zi50cmFuc2Zvcm0oLi4ucyk7aWYodC5zbWFzayl0aGlzLnNtYXNrU3RhY2sucHVzaCh7Y2FudmFzOm0uY2FudmFzLGNvbnRleHQ6ZixvZmZzZXRYOm8sb2Zmc2V0WTpjLHNjYWxlWDp1LHNjYWxlWTpwLHN1YnR5cGU6dC5zbWFzay5zdWJ0eXBlLGJhY2tkcm9wOnQuc21hc2suYmFja2Ryb3AsdHJhbnNmZXJNYXA6dC5zbWFzay50cmFuc2Zlck1hcHx8bnVsbCxzdGFydFRyYW5zZm9ybUludmVyc2U6bnVsbH0pO2Vsc2V7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UudHJhbnNsYXRlKG8sYyk7ZS5zY2FsZSh1LHApO2Uuc2F2ZSgpfWNvcHlDdHhTdGF0ZShlLGYpO3RoaXMuY3R4PWY7dGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSk7dGhpcy5ncm91cFN0YWNrLnB1c2goZSk7dGhpcy5ncm91cExldmVsKyt9ZW5kR3JvdXAodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO3RoaXMuZ3JvdXBMZXZlbC0tO2NvbnN0IGU9dGhpcy5jdHgscz10aGlzLmdyb3VwU3RhY2sucG9wKCk7dGhpcy5jdHg9czt0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7aWYodC5zbWFzayl7dGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpO3RoaXMucmVzdG9yZSgpfWVsc2V7dGhpcy5jdHgucmVzdG9yZSgpO2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7dGhpcy5yZXN0b3JlKCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50KTtjb25zdCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF0sdCk7dGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMuY29tcG9zZShzKX19YmVnaW5Bbm5vdGF0aW9uKHQsZSxzLHIsYSl7dGhpcy4jc3QoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvcik7dGhpcy5jdHguc2F2ZSgpO3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybSYmdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnRoaXMuYmFzZVRyYW5zZm9ybSk7aWYoQXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoKXtjb25zdCByPWVbMl0tZVswXSxvPWVbM10tZVsxXTtpZihhJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhzPXMuc2xpY2UoKSlbNF0tPWVbMF07c1s1XS09ZVsxXTsoZT1lLnNsaWNlKCkpWzBdPWVbMV09MDtlWzJdPXI7ZVszXT1vO2NvbnN0W2EsbF09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSx7dmlld3BvcnRTY2FsZTpjfT10aGlzLGg9TWF0aC5jZWlsKHIqdGhpcy5vdXRwdXRTY2FsZVgqYyksZD1NYXRoLmNlaWwobyp0aGlzLm91dHB1dFNjYWxlWSpjKTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLGQpO2NvbnN0e2NhbnZhczp1LGNvbnRleHQ6cH09dGhpcy5hbm5vdGF0aW9uQ2FudmFzO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCx1KTt0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9cDt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oYSwwLDAsLWwsMCxvKmwpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKX1lbHNle3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSxyLG8pO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX19dGhpcy5jdXJyZW50PW5ldyBDYW52YXNFeHRyYVN0YXRlKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTt0aGlzLnRyYW5zZm9ybSguLi5zKTt0aGlzLnRyYW5zZm9ybSguLi5yKX1lbmRBbm5vdGF0aW9uKCl7aWYodGhpcy5hbm5vdGF0aW9uQ2FudmFzKXt0aGlzLmN0eD10aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7ZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzfX1wYWludEltYWdlTWFza1hPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC5jb3VudDsodD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCkpLmNvdW50PWU7Y29uc3Qgcz10aGlzLmN0eCxpPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKGkpe3ZvaWQgMD09PWkuY29tcGlsZWQmJihpLmNvbXBpbGVkPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnN9PXQ7aWYoZT5jfHxzPmMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxuPWUrMTtsZXQgcixhLG8sbD1uZXcgVWludDhBcnJheShuKihzKzEpKTtjb25zdCBoPWUrNyYtODtsZXQgZD1uZXcgVWludDhBcnJheShoKnMpLHU9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2RbdSsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCBwPTA7dT0wO2lmKDAhPT1kW3VdKXtsWzBdPTE7KytwfWZvcihhPTE7YTxlO2ErKyl7aWYoZFt1XSE9PWRbdSsxXSl7bFthXT1kW3VdPzI6MTsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW2FdPTI7KytwfWZvcihyPTE7cjxzO3IrKyl7dT1yKmg7bz1yKm47aWYoZFt1LWhdIT09ZFt1XSl7bFtvXT1kW3VdPzE6ODsrK3B9bGV0IHQ9KGRbdV0/NDowKSsoZFt1LWhdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoZFt1KzFdPzQ6MCkrKGRbdS1oKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07KytwfXUrK31pZihkW3UtaF0hPT1kW3VdKXtsW28rYV09ZFt1XT8yOjQ7KytwfWlmKHA+MWUzKXJldHVybiBudWxsfXU9aCoocy0xKTtvPXIqbjtpZigwIT09ZFt1XSl7bFtvXT04OysrcH1mb3IoYT0xO2E8ZTthKyspe2lmKGRbdV0hPT1kW3UrMV0pe2xbbythXT1kW3VdPzQ6ODsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW28rYV09NDsrK3B9aWYocD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZz1uZXcgSW50MzJBcnJheShbMCxuLC0xLDAsLW4sMCwwLDAsMV0pLG09bmV3IFBhdGgyRDtmb3Iocj0wO3AmJnI8PXM7cisrKXtsZXQgdD1yKm47Y29uc3Qgcz10K2U7Zm9yKDt0PHMmJiFsW3RdOyl0Kys7aWYodD09PXMpY29udGludWU7bS5tb3ZlVG8odCVuLHIpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9Z1thXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBzPWxbdF07aWYoNSE9PXMmJjEwIT09cyl7YT1zO2xbdF09MH1lbHNle2E9cyY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1tLmxpbmVUbyh0JW4sdC9ufDApO2xbdF18fC0tcH13aGlsZShpIT09dCk7LS1yfWQ9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL3MpO3QudHJhbnNsYXRlKDAsLXMpO3QuZmlsbChtKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQocyk7cmV0dXJufX1jb25zdCBuPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscj1uLmNhbnZhcztzLnNhdmUoKTtzLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7cy5kcmF3SW1hZ2UocixuLm9mZnNldFgsbi5vZmZzZXRZKTtzLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlLHM9MCxyPTAsYSxvKXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxzLHIsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCs9Mil7Y29uc3Qgbj1pLlV0aWwudHJhbnNmb3JtKGMsW2UscyxyLGEsb1t0XSxvW3QrMV1dKSxbZCx1XT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbik7bC5kcmF3SW1hZ2UoaC5jYW52YXMsZCx1KX1sLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5maWxsQ29sb3IsaT10aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3R7ZGF0YTp0LHdpZHRoOm8saGVpZ2h0OmwsdHJhbnNmb3JtOmN9PWEsaD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsbyxsKSxkPWguY29udGV4dDtkLnNhdmUoKTtwdXRCaW5hcnlJbWFnZU1hc2soZCx0aGlzLmdldE9iamVjdCh0LGEpKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIjtkLmZpbGxTdHlsZT1pP3MuZ2V0UGF0dGVybihkLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTpzO2QuZmlsbFJlY3QoMCwwLG8sbCk7ZC5yZXN0b3JlKCk7ZS5zYXZlKCk7ZS50cmFuc2Zvcm0oLi4uYyk7ZS5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSxoLmNhbnZhcywwLDAsbyxsLDAsLTEsMSwxKTtlLnJlc3RvcmUoKX10aGlzLmNvbXBvc2UoKX1wYWludEltYWdlWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsaS53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfXBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsZSxzLG4pe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCByPXRoaXMuZ2V0T2JqZWN0KHQpO2lmKCFyKXsoMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iik7cmV0dXJufWNvbnN0IGE9ci53aWR0aCxvPXIuaGVpZ2h0LGw9W107Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCs9MilsLnB1c2goe3RyYW5zZm9ybTpbZSwwLDAscyxuW3RdLG5bdCsxXV0seDowLHk6MCx3OmEsaDpvfSk7dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHIsbCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC53aWR0aCxzPXQuaGVpZ2h0LGk9dGhpcy5jdHg7dGhpcy5zYXZlKCk7aS5zY2FsZSgxL2UsLTEvcyk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpcj10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUscyk7cHV0QmluYXJ5SW1hZ2VEYXRhKGkuY29udGV4dCx0LHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpO3I9aS5jYW52YXN9Y29uc3QgYT10aGlzLl9zY2FsZUltYWdlKHIsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoaSkpO2kuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhpLGEuaW1nLDAsMCxhLnBhaW50V2lkdGgsYS5wYWludEhlaWdodCwwLC1zLGUscyk7dGhpcy5jb21wb3NlKCk7dGhpcy5yZXN0b3JlKCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LGUpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBzPXRoaXMuY3R4LGk9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixpLG4pO3B1dEJpbmFyeUltYWdlRGF0YShyLmNvbnRleHQsdCx0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzKTtmb3IoY29uc3QgdCBvZiBlKXtzLnNhdmUoKTtzLnRyYW5zZm9ybSguLi50LnRyYW5zZm9ybSk7cy5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMocyxyLmNhbnZhcyx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO3MucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgcz10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWc/cy5jbGlwKCJldmVub2RkIik6cy5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7cy5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHM9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocyxpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe2NvbnN0e2xpbmVXaWR0aDp0fT10aGlzLmN1cnJlbnQsZT0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtsZXQgcyxpO2lmKDA9PT1lWzFdJiYwPT09ZVsyXSl7Y29uc3Qgbj1NYXRoLmFicyhlWzBdKSxyPU1hdGguYWJzKGVbM10pO2lmKDA9PT10KXtzPTEvbjtpPTEvcn1lbHNle2NvbnN0IGU9bip0LGE9cip0O3M9ZTwxPzEvZToxO2k9YTwxPzEvYToxfX1lbHNle2NvbnN0IG49TWF0aC5hYnMoZVswXSplWzNdLWVbMl0qZVsxXSkscj1NYXRoLmh5cG90KGVbMF0sZVsxXSksYT1NYXRoLmh5cG90KGVbMl0sZVszXSk7aWYoMD09PXQpe3M9YS9uO2k9ci9ufWVsc2V7Y29uc3QgZT10Km47cz1hPmU/YS9lOjE7aT1yPmU/ci9lOjF9fXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9W3MsaV19cmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmd9cmVzY2FsZUFuZFN0cm9rZSh0KXtjb25zdHtjdHg6ZX09dGhpcyx7bGluZVdpZHRoOnN9PXRoaXMuY3VycmVudCxbaSxyXT10aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtlLmxpbmVXaWR0aD1zfHwxO2lmKDE9PT1pJiYxPT09cil7ZS5zdHJva2UoKTtyZXR1cm59bGV0IGEsbyxsO2lmKHQpe2E9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTtvPWUuZ2V0TGluZURhc2goKS5zbGljZSgpO2w9ZS5saW5lRGFzaE9mZnNldH1lLnNjYWxlKGkscik7Y29uc3QgYz1NYXRoLm1heChpLHIpO2Uuc2V0TGluZURhc2goZS5nZXRMaW5lRGFzaCgpLm1hcCgodD0+dC9jKSkpO2UubGluZURhc2hPZmZzZXQvPWM7ZS5zdHJva2UoKTtpZih0KXtlLnNldFRyYW5zZm9ybSguLi5hKTtlLnNldExpbmVEYXNoKG8pO2UubGluZURhc2hPZmZzZXQ9bH19aXNDb250ZW50VmlzaWJsZSgpe2ZvcihsZXQgdD10aGlzLm1hcmtlZENvbnRlbnRTdGFjay5sZW5ndGgtMTt0Pj0wO3QtLSlpZighdGhpcy5tYXJrZWRDb250ZW50U3RhY2tbdF0udmlzaWJsZSlyZXR1cm4hMTtyZXR1cm4hMH19ZS5DYW52YXNHcmFwaGljcz1DYW52YXNHcmFwaGljcztmb3IoY29uc3QgdCBpbiBpLk9QUyl2b2lkIDAhPT1DYW52YXNHcmFwaGljcy5wcm90b3R5cGVbdF0mJihDYW52YXNHcmFwaGljcy5wcm90b3R5cGVbaS5PUFNbdF1dPUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTt2YXIgaT1zKDEpLG49cyg2KSxyPXMoMTIpO2NvbnN0IGE9e0ZJTEw6IkZpbGwiLFNUUk9LRToiU3Ryb2tlIixTSEFESU5HOiJTaGFkaW5nIn07ZS5QYXRoVHlwZT1hO2Z1bmN0aW9uIGFwcGx5Qm91bmRpbmdCb3godCxlKXtpZighZXx8ci5pc05vZGVKUylyZXR1cm47Y29uc3Qgcz1lWzJdLWVbMF0saT1lWzNdLWVbMV0sbj1uZXcgUGF0aDJEO24ucmVjdChlWzBdLGVbMV0scyxpKTt0LmNsaXAobil9Y2xhc3MgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nUGF0dGVybiYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1nZXRQYXR0ZXJuKCl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fdHlwZT10WzFdO3RoaXMuX2Jib3g9dFsyXTt0aGlzLl9jb2xvclN0b3BzPXRbM107dGhpcy5fcDA9dFs0XTt0aGlzLl9wMT10WzVdO3RoaXMuX3IwPXRbNl07dGhpcy5fcjE9dFs3XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVHcmFkaWVudCh0KXtsZXQgZTsiYXhpYWwiPT09dGhpcy5fdHlwZT9lPXQuY3JlYXRlTGluZWFyR3JhZGllbnQodGhpcy5fcDBbMF0sdGhpcy5fcDBbMV0sdGhpcy5fcDFbMF0sdGhpcy5fcDFbMV0pOiJyYWRpYWwiPT09dGhpcy5fdHlwZSYmKGU9dC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9yMCx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSx0aGlzLl9yMSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpZS5hZGRDb2xvclN0b3AodFswXSx0WzFdKTtyZXR1cm4gZX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2xldCBvO2lmKHI9PT1hLlNUUk9LRXx8cj09PWEuRklMTCl7Y29uc3QgYT1lLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChyLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpfHxbMCwwLDAsMF0sbD1NYXRoLmNlaWwoYVsyXS1hWzBdKXx8MSxjPU1hdGguY2VpbChhWzNdLWFbMV0pfHwxLGg9ZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInBhdHRlcm4iLGwsYywhMCksZD1oLmNvbnRleHQ7ZC5jbGVhclJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC5iZWdpblBhdGgoKTtkLnJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC50cmFuc2xhdGUoLWFbMF0sLWFbMV0pO3M9aS5VdGlsLnRyYW5zZm9ybShzLFsxLDAsMCwxLGFbMF0sYVsxXV0pO2QudHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJmQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTthcHBseUJvdW5kaW5nQm94KGQsdGhpcy5fYmJveCk7ZC5maWxsU3R5bGU9dGhpcy5fY3JlYXRlR3JhZGllbnQoZCk7ZC5maWxsKCk7bz10LmNyZWF0ZVBhdHRlcm4oaC5jYW52YXMsIm5vLXJlcGVhdCIpO2NvbnN0IHU9bmV3IERPTU1hdHJpeChzKTtvLnNldFRyYW5zZm9ybSh1KX1lbHNle2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtvPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpfXJldHVybiBvfX1mdW5jdGlvbiBkcmF3VHJpYW5nbGUodCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPWUuY29vcmRzLGM9ZS5jb2xvcnMsaD10LmRhdGEsZD00KnQud2lkdGg7bGV0IHU7aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9aWYobFtpKzFdPmxbbisxXSl7dT1pO2k9bjtuPXU7dT1hO2E9bztvPXV9aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9Y29uc3QgcD0obFtzXStlLm9mZnNldFgpKmUuc2NhbGVYLGc9KGxbcysxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KGxbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxmPShsW2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWSxiPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsQT0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVk7aWYoZz49QSlyZXR1cm47Y29uc3QgXz1jW3JdLHY9Y1tyKzFdLHk9Y1tyKzJdLFM9Y1thXSx4PWNbYSsxXSxFPWNbYSsyXSxDPWNbb10sUD1jW28rMV0sVD1jW28rMl0sdz1NYXRoLnJvdW5kKGcpLGs9TWF0aC5yb3VuZChBKTtsZXQgRixNLFIsRCxJLE8sTCxOO2ZvcihsZXQgdD13O3Q8PWs7dCsrKXtpZih0PGYpe2xldCBlO2U9dDxnPzA6KGctdCkvKGctZik7Rj1wLShwLW0pKmU7TT1fLShfLVMpKmU7Uj12LSh2LXgpKmU7RD15LSh5LUUpKmV9ZWxzZXtsZXQgZTtlPXQ+QT8xOmY9PT1BPzA6KGYtdCkvKGYtQSk7Rj1tLShtLWIpKmU7TT1TLShTLUMpKmU7Uj14LSh4LVApKmU7RD1FLShFLVQpKmV9bGV0IGU7ZT10PGc/MDp0PkE/MTooZy10KS8oZy1BKTtJPXAtKHAtYikqZTtPPV8tKF8tQykqZTtMPXYtKHYtUCkqZTtOPXktKHktVCkqZTtjb25zdCBzPU1hdGgucm91bmQoTWF0aC5taW4oRixJKSksaT1NYXRoLnJvdW5kKE1hdGgubWF4KEYsSSkpO2xldCBuPWQqdCs0KnM7Zm9yKGxldCB0PXM7dDw9aTt0Kyspe2U9KEYtdCkvKEYtSSk7ZTwwP2U9MDplPjEmJihlPTEpO2hbbisrXT1NLShNLU8pKmV8MDtoW24rK109Ui0oUi1MKSplfDA7aFtuKytdPUQtKEQtTikqZXwwO2hbbisrXT0yNTV9fX1mdW5jdGlvbiBkcmF3RmlndXJlKHQsZSxzKXtjb25zdCBpPWUuY29vcmRzLG49ZS5jb2xvcnM7bGV0IHIsYTtzd2l0Y2goZS50eXBlKXtjYXNlImxhdHRpY2UiOmNvbnN0IG89ZS52ZXJ0aWNlc1BlclJvdyxsPU1hdGguZmxvb3IoaS5sZW5ndGgvbyktMSxjPW8tMTtmb3Iocj0wO3I8bDtyKyspe2xldCBlPXIqbztmb3IobGV0IHI9MDtyPGM7cisrLGUrKyl7ZHJhd1RyaWFuZ2xlKHQscyxpW2VdLGlbZSsxXSxpW2Urb10sbltlXSxuW2UrMV0sbltlK29dKTtkcmF3VHJpYW5nbGUodCxzLGlbZStvKzFdLGlbZSsxXSxpW2Urb10sbltlK28rMV0sbltlKzFdLG5bZStvXSl9fWJyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iocj0wLGE9aS5sZW5ndGg7cjxhO3IrPTMpZHJhd1RyaWFuZ2xlKHQscyxpW3JdLGlbcisxXSxpW3IrMl0sbltyXSxuW3IrMV0sbltyKzJdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBmaWd1cmUiKX19Y2xhc3MgTWVzaFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fY29vcmRzPXRbMl07dGhpcy5fY29sb3JzPXRbM107dGhpcy5fZmlndXJlcz10WzRdO3RoaXMuX2JvdW5kcz10WzVdO3RoaXMuX2Jib3g9dFs3XTt0aGlzLl9iYWNrZ3JvdW5kPXRbOF07dGhpcy5tYXRyaXg9bnVsbH1fY3JlYXRlTWVzaENhbnZhcyh0LGUscyl7Y29uc3QgaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSkscj1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1pLGE9TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktbixvPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhyKnRbMF0qMS4xKSksM2UzKSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMV0qMS4xKSksM2UzKSxjPXIvbyxoPWEvbCxkPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotaSxvZmZzZXRZOi1uLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sdT1vKzQscD1sKzQsZz1zLmdldENhbnZhcygibWVzaCIsdSxwLCExKSxtPWcuY29udGV4dCxmPW0uY3JlYXRlSW1hZ2VEYXRhKG8sbCk7aWYoZSl7Y29uc3QgdD1mLmRhdGE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cys9NCl7dFtzXT1lWzBdO3RbcysxXT1lWzFdO3RbcysyXT1lWzJdO3RbcyszXT0yNTV9fWZvcihjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpZHJhd0ZpZ3VyZShmLHQsZCk7bS5wdXRJbWFnZURhdGEoZiwyLDIpO3JldHVybntjYW52YXM6Zy5jYW52YXMsb2Zmc2V0WDppLTIqYyxvZmZzZXRZOm4tMipoLHNjYWxlWDpjLHNjYWxlWTpofX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtsZXQgbztpZihyPT09YS5TSEFESU5HKW89aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpO2Vsc2V7bz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZS5iYXNlVHJhbnNmb3JtKTtpZih0aGlzLm1hdHJpeCl7Y29uc3QgdD1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpO289W29bMF0qdFswXSxvWzFdKnRbMV1dfX1jb25zdCBsPXRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobyxyPT09YS5TSEFESU5HP251bGw6dGhpcy5fYmFja2dyb3VuZCxlLmNhY2hlZENhbnZhc2VzKTtpZihyIT09YS5TSEFESU5HKXt0LnNldFRyYW5zZm9ybSguLi5lLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiZ0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCl9dC50cmFuc2xhdGUobC5vZmZzZXRYLGwub2Zmc2V0WSk7dC5zY2FsZShsLnNjYWxlWCxsLnNjYWxlWSk7cmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywibm8tcmVwZWF0Iil9fWNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Z2V0UGF0dGVybigpe3JldHVybiJob3RwaW5rIn19Y29uc3Qgbz0xLGw9MjtjbGFzcyBUaWxpbmdQYXR0ZXJue3N0YXRpYyBnZXQgTUFYX1BBVFRFUk5fU0laRSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJNQVhfUEFUVEVSTl9TSVpFIiwzZTMpfWNvbnN0cnVjdG9yKHQsZSxzLGksbil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9czt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1ufWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxzPXRoaXMuYmJveCxyPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPXNbMF0sdT1zWzFdLHA9c1syXSxnPXNbM10sbT1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLGY9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bbVswXSpmWzBdLG1bMV0qZlsxXV0sQT10aGlzLmdldFNpemVBbmRTY2FsZShyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSxfPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSx2PXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixBLnNpemUsXy5zaXplLCEwKSx5PXYuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoeSk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IHg9ZCxFPXUsQz1wLFA9ZztpZihkPDApe3g9MDtDKz1NYXRoLmFicyhkKX1pZih1PDApe0U9MDtQKz1NYXRoLmFicyh1KX15LnRyYW5zbGF0ZSgtQS5zY2FsZSp4LC1fLnNjYWxlKkUpO1MudHJhbnNmb3JtKEEuc2NhbGUsMCwwLF8uc2NhbGUsMCwwKTt5LnNhdmUoKTt0aGlzLmNsaXBCYm94KFMseCxFLEMsUCk7Uy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOnYuY2FudmFzLHNjYWxlWDpBLnNjYWxlLHNjYWxlWTpfLnNjYWxlLG9mZnNldFg6eCxvZmZzZXRZOkV9fWdldFNpemVBbmRTY2FsZSh0LGUscyl7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgbj1NYXRoLmNlaWwodCpzKTtuPj1pP249aTpzPW4vdDtyZXR1cm57c2NhbGU6cyxzaXplOm59fWNsaXBCYm94KHQsZSxzLGkscil7Y29uc3QgYT1pLWUsbz1yLXM7dC5jdHgucmVjdChlLHMsYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxzLGkscl0pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUscyl7Y29uc3Qgbj10LmN0eCxyPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBvOmNvbnN0IHQ9dGhpcy5jdHg7bi5maWxsU3R5bGU9dC5maWxsU3R5bGU7bi5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3IuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Iuc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIGw6Y29uc3QgYT1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtuLmZpbGxTdHlsZT1hO24uc3Ryb2tlU3R5bGU9YTtyLmZpbGxDb2xvcj1hO3Iuc3Ryb2tlQ29sb3I9YTticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLHMsbil7bGV0IHI9cztpZihuIT09YS5TSEFESU5HKXtyPWkuVXRpbC50cmFuc2Zvcm0ocixlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYocj1pLlV0aWwudHJhbnNmb3JtKHIsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KHIpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5pc05vZGVKUz12b2lkIDA7Y29uc3Qgcz0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1zfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuYXBwbHlNYXNrSW1hZ2VEYXRhPWZ1bmN0aW9uIGFwcGx5TWFza0ltYWdlRGF0YSh7c3JjOnQsc3JjUG9zOmU9MCxkZXN0OnMsZGVzdFBvczpuPTAsd2lkdGg6cixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBsPWkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsaF09bz9bMCxsXTpbbCwwXSxkPXI+PjMsdT03JnIscD10Lmxlbmd0aDtzPW5ldyBVaW50MzJBcnJheShzLmJ1ZmZlcik7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGNvbnN0IGk9ZStkO2U8aTtlKyspe2NvbnN0IGk9ZTxwP3RbZV06MjU1O3NbbisrXT0xMjgmaT9oOmM7c1tuKytdPTY0Jmk/aDpjO3NbbisrXT0zMiZpP2g6YztzW24rK109MTYmaT9oOmM7c1tuKytdPTgmaT9oOmM7c1tuKytdPTQmaT9oOmM7c1tuKytdPTImaT9oOmM7c1tuKytdPTEmaT9oOmN9aWYoMD09PXUpY29udGludWU7Y29uc3QgaT1lPHA/dFtlKytdOjI1NTtmb3IobGV0IHQ9MDt0PHU7dCsrKXNbbisrXT1pJjE8PDctdD9oOmN9cmV0dXJue3NyY1BvczplLGRlc3RQb3M6bn19O3ZhciBpPXMoMSl9LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1zO3Mud29ya2VyUG9ydD12b2lkIDA9PT1zLndvcmtlclBvcnQ/bnVsbDpzLndvcmtlclBvcnQ7cy53b3JrZXJTcmM9dm9pZCAwPT09cy53b3JrZXJTcmM/IiI6cy53b3JrZXJTcmN9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIGk9cygxKTtjb25zdCBuPTEscj0yLGE9MSxvPTIsbD0zLGM9NCxoPTUsZD02LHU9NyxwPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbih0KXt0IGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCgwLGkudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlVua25vd25FcnJvckV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQudG9TdHJpbmcoKSl9fWUuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuc291cmNlTmFtZT10O3RoaXMudGFyZ2V0TmFtZT1lO3RoaXMuY29tT2JqPXM7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPXQ9Pntjb25zdCBlPXQuZGF0YTtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQscz10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1uKXMucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtzLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgdD10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QoaShlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnQsdGFyZ2V0TmFtZTphLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTppfSl9KSwoZnVuY3Rpb24oaSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKGkpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6aShlLmRhdGEpfTtzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbih0LGUpe2NvbnN0IHM9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKHNbdF0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke3R9ImApO3NbdF09ZX1zZW5kKHQsZSxzKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOnQsZGF0YTplfSxzKX1zZW5kV2l0aFByb21pc2UodCxlLHMpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKysscj0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6bixkYXRhOmV9LHMpfWNhdGNoKHQpe3IucmVqZWN0KHQpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLHMsbil7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpzPT57Y29uc3QgYT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6cyxzdGFydENhbGw6YSxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxhY3Rpb246dCxzdHJlYW1JZDpyLGRhdGE6ZSxkZXNpcmVkU2l6ZTpzLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gYS5wcm9taXNlfSxwdWxsOnQ9Pntjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD1lO2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsc3RyZWFtOmQsc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSk7cmV0dXJuIGUucHJvbWlzZX0sY2FuY2VsOnQ9PnsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgZT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LHMpfV9jcmVhdGVTdHJlYW1TaW5rKHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxzPXRoaXMuc291cmNlTmFtZSxuPXQuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLGE9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sZD17ZW5xdWV1ZSh0LGE9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpjLHN0cmVhbUlkOmUsY2h1bms6dH0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDplfSk7ZGVsZXRlIGEuc3RyZWFtU2lua3NbZV19fSxlcnJvcih0KXsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX19LHNpbmtDYXBhYmlsaXR5OigwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O2Quc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2QucmVhZHk9ZC5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbZV09ZDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShvKHQuZGF0YSxkKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpwLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnAsc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KXtjb25zdCBlPXQuc3RyZWFtSWQscz10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV0sbT10aGlzLnN0cmVhbVNpbmtzW2VdO3N3aXRjaCh0LnN0cmVhbSl7Y2FzZSBwOnQuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIHU6dC5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIGQ6aWYoIW0pe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnUsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSk7YnJlYWt9bS5kZXNpcmVkU2l6ZTw9MCYmdC5kZXNpcmVkU2l6ZT4wJiZtLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTttLmRlc2lyZWRTaXplPXQuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobS5vblB1bGwmJm0ub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgaDooMCxpLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyxlKTticmVhaztjYXNlIG86dC5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgYTppZighbSlicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShtLm9uQ2FuY2VsJiZtLm9uQ2FuY2VsKHdyYXBSZWFzb24odC5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpO20uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTttLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKHQsZSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFt0LnN0YXJ0Q2FsbCYmdC5zdGFydENhbGwucHJvbWlzZSx0LnB1bGxDYWxsJiZ0LnB1bGxDYWxsLnByb21pc2UsdC5jYW5jZWxDYWxsJiZ0LmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1zKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I2l0OyNudDtjb25zdHJ1Y3Rvcih7cGFyc2VkRGF0YTp0LHJhd0RhdGE6ZX0pe3RoaXMuI2l0PXQ7dGhpcy4jbnQ9ZX1nZXRSYXcoKXtyZXR1cm4gdGhpcy4jbnR9Z2V0KHQpe3JldHVybiB0aGlzLiNpdC5nZXQodCk/P251bGx9Z2V0QWxsKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLiNpdCl9aGFzKHQpe3JldHVybiB0aGlzLiNpdC5oYXModCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cygxKSxuPXMoOCk7Y29uc3Qgcj1TeW1ib2woIklOVEVSTkFMIik7Y2xhc3MgT3B0aW9uYWxDb250ZW50R3JvdXB7I3J0PSEwO2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQ7dGhpcy5pbnRlbnQ9ZX1nZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNydH1fc2V0VmlzaWJsZSh0LGUpe3QhPT1yJiYoMCxpLnVucmVhY2hhYmxlKSgiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLiIpO3RoaXMuI3J0PWV9fWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPWNsYXNzIE9wdGlvbmFsQ29udGVudENvbmZpZ3sjYXQ9bnVsbDsjb3Q9bmV3IE1hcDsjbHQ9bnVsbDsjY3Q9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hbWU9bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDtpZihudWxsIT09dCl7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmNyZWF0b3I9dC5jcmVhdG9yO3RoaXMuI2N0PXQub3JkZXI7Zm9yKGNvbnN0IGUgb2YgdC5ncm91cHMpdGhpcy4jb3Quc2V0KGUuaWQsbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSxlLmludGVudCkpO2lmKCJPRkYiPT09dC5iYXNlU3RhdGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jb3QudmFsdWVzKCkpdC5fc2V0VmlzaWJsZShyLCExKTtmb3IoY29uc3QgZSBvZiB0Lm9uKXRoaXMuI290LmdldChlKS5fc2V0VmlzaWJsZShyLCEwKTtmb3IoY29uc3QgZSBvZiB0Lm9mZil0aGlzLiNvdC5nZXQoZSkuX3NldFZpc2libGUociwhMSk7dGhpcy4jbHQ9dGhpcy5nZXRIYXNoKCl9fSNodCh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4hMDtjb25zdCBzPXRbMF07Zm9yKGxldCBuPTE7bjxlO24rKyl7Y29uc3QgZT10W25dO2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSkpcj10aGlzLiNodChlKTtlbHNle2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9cj10aGlzLiNvdC5nZXQoZSkudmlzaWJsZX1zd2l0Y2gocyl7Y2FzZSJBbmQiOmlmKCFyKXJldHVybiExO2JyZWFrO2Nhc2UiT3IiOmlmKHIpcmV0dXJuITA7YnJlYWs7Y2FzZSJOb3QiOnJldHVybiFyO2RlZmF1bHQ6cmV0dXJuITB9fXJldHVybiJBbmQiPT09c31pc1Zpc2libGUodCl7aWYoMD09PXRoaXMuI290LnNpemUpcmV0dXJuITA7aWYoIXQpeygwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuIik7cmV0dXJuITB9aWYoIk9DRyI9PT10LnR5cGUpe2lmKCF0aGlzLiNvdC5oYXModC5pZCkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3QuaWR9YCk7cmV0dXJuITB9cmV0dXJuIHRoaXMuI290LmdldCh0LmlkKS52aXNpYmxlfWlmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB0aGlzLiNodCh0LmV4cHJlc3Npb24pO2lmKCF0LnBvbGljeXx8IkFueU9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZih0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMH1yZXR1cm4hMX1pZigiQWxsT24iPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jb3QuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKCF0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSAke3QucG9saWN5fS5gKTtyZXR1cm4hMH0oMCxpLndhcm4pKGBVbmtub3duIGdyb3VwIHR5cGUgJHt0LnR5cGV9LmApO3JldHVybiEwfXNldFZpc2liaWxpdHkodCxlPSEwKXtpZih0aGlzLiNvdC5oYXModCkpe3RoaXMuI290LmdldCh0KS5fc2V0VmlzaWJsZShyLCEhZSk7dGhpcy4jYXQ9bnVsbH1lbHNlKDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7dH1gKX1nZXQgaGFzSW5pdGlhbFZpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5nZXRIYXNoKCk9PT10aGlzLiNsdH1nZXRPcmRlcigpe3JldHVybiB0aGlzLiNvdC5zaXplP3RoaXMuI2N0P3RoaXMuI2N0LnNsaWNlKCk6Wy4uLnRoaXMuI290LmtleXMoKV06bnVsbH1nZXRHcm91cHMoKXtyZXR1cm4gdGhpcy4jb3Quc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jb3QpOm51bGx9Z2V0R3JvdXAodCl7cmV0dXJuIHRoaXMuI290LmdldCh0KXx8bnVsbH1nZXRIYXNoKCl7aWYobnVsbCE9PXRoaXMuI2F0KXJldHVybiB0aGlzLiNhdDtjb25zdCB0PW5ldyBuLk11cm11ckhhc2gzXzY0O2Zvcihjb25zdFtlLHNdb2YgdGhpcy4jb3QpdC51cGRhdGUoYCR7ZX06JHtzLnZpc2libGV9YCk7cmV0dXJuIHRoaXMuI2F0PXQuaGV4ZGlnZXN0KCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkRhdGFUcmFuc3BvcnRTdHJlYW09dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7KDAsaS5hc3NlcnQpKGUsJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkICJwZGZEYXRhUmFuZ2VUcmFuc3BvcnQiIGFyZ3VtZW50LicpO3RoaXMuX3F1ZXVlZENodW5rcz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmU9dC5wcm9ncmVzc2l2ZURvbmV8fCExO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXQuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV8fG51bGw7Y29uc3Qgcz10LmluaXRpYWxEYXRhO2lmKHM/Lmxlbmd0aD4wKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KHMpLmJ1ZmZlcjt0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KX10aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hdC5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IXQuZGlzYWJsZVJhbmdlO3RoaXMuX2NvbnRlbnRMZW5ndGg9dC5sZW5ndGg7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlYWRlcnM9W107dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25SZWNlaXZlRGF0YSh7YmVnaW46dCxjaHVuazplfSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25Qcm9ncmVzcyh7bG9hZGVkOnQsdG90YWw6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcigodD0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2NodW5rOnR9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIoKCgpPT57dGhpcy5fb25Qcm9ncmVzc2l2ZURvbmUoKX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKX1fb25SZWNlaXZlRGF0YSh0KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7Y29uc3Qgcz10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24ocyl7aWYocy5fYmVnaW4hPT10LmJlZ2luKXJldHVybiExO3MuX2VucXVldWUoZSk7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHMsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMuX3N0cmVhbT10O3RoaXMuX2RvbmU9c3x8ITE7dGhpcy5fZmlsZW5hbWU9KDAsbi5pc1BkZkZpbGUpKGkpP2k6bnVsbDt0aGlzLl9xdWV1ZWRDaHVua3M9ZXx8W107dGhpcy5fbG9hZGVkPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcXVldWVkQ2h1bmtzKXRoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKTt0Ll9mdWxsUmVxdWVzdFJlYWRlcj10aGlzO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KX1lbHNlIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RofX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5fY29udGVudExlbmd0aH1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfXByb2dyZXNzaXZlRG9uZSgpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9iZWdpbj1lO3RoaXMuX2VuZD1zO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fZG9uZT0hMTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMDt0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmspe2NvbnN0IHQ9dGhpcy5fcXVldWVkQ2h1bms7dGhpcy5fcXVldWVkQ2h1bms9bnVsbDtyZXR1cm57dmFsdWU6dCxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYVRleHQ9dm9pZCAwO2NsYXNzIFhmYVRleHR7c3RhdGljIHRleHRDb250ZW50KHQpe2NvbnN0IGU9W10scz17aXRlbXM6ZSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07IWZ1bmN0aW9uIHdhbGsodCl7aWYoIXQpcmV0dXJuO2xldCBzPW51bGw7Y29uc3QgaT10Lm5hbWU7aWYoIiN0ZXh0Ij09PWkpcz10LnZhbHVlO2Vsc2V7aWYoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKXJldHVybjt0Py5hdHRyaWJ1dGVzPy50ZXh0Q29udGVudD9zPXQuYXR0cmlidXRlcy50ZXh0Q29udGVudDp0LnZhbHVlJiYocz10LnZhbHVlKX1udWxsIT09cyYmZS5wdXNoKHtzdHI6c30pO2lmKHQuY2hpbGRyZW4pZm9yKGNvbnN0IGUgb2YgdC5jaGlsZHJlbil3YWxrKGUpfSh0KTtyZXR1cm4gc31zdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fWUuWGZhVGV4dD1YZmFUZXh0fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXMoNyk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUscyk9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6cyhuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnl7X2NyZWF0ZUNhbnZhcyh0LGUpe3JldHVybiByZXF1aXJlKCJjYW52YXMiKS5jcmVhdGVDYW52YXModCxlKX19ZS5Ob2RlQ2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeTtjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0KS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1Ob2RlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQpfX1lLk5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpLHI9cygyMiksYT1zKDIzKTtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXJ7I2R0OyN1dD0hMTsjcHQ9dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKTsjZ3Q9dGhpcy5wb2ludGVyZG93bi5iaW5kKHRoaXMpOyNtdD1uZXcgTWFwOyNmdD0hMTsjYnQ9ITE7I0F0O3N0YXRpYyBfaW5pdGlhbGl6ZWQ9ITE7Y29uc3RydWN0b3IodCl7aWYoIUFubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQpe0Fubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQ9ITA7ci5GcmVlVGV4dEVkaXRvci5pbml0aWFsaXplKHQubDEwbik7YS5JbmtFZGl0b3IuaW5pdGlhbGl6ZSh0LmwxMG4pfXQudWlNYW5hZ2VyLnJlZ2lzdGVyRWRpdG9yVHlwZXMoW3IuRnJlZVRleHRFZGl0b3IsYS5JbmtFZGl0b3JdKTt0aGlzLiNBdD10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25TdG9yYWdlPXQuYW5ub3RhdGlvblN0b3JhZ2U7dGhpcy5wYWdlSW5kZXg9dC5wYWdlSW5kZXg7dGhpcy5kaXY9dC5kaXY7dGhpcy4jZHQ9dC5hY2Nlc3NpYmlsaXR5TWFuYWdlcjt0aGlzLiNBdC5hZGRMYXllcih0aGlzKX11cGRhdGVUb29sYmFyKHQpe3RoaXMuI0F0LnVwZGF0ZVRvb2xiYXIodCl9dXBkYXRlTW9kZSh0PXRoaXMuI0F0LmdldE1vZGUoKSl7dGhpcy4jX3QoKTtpZih0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspe3RoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO3RoaXMuZGlzYWJsZUNsaWNrKCl9ZWxzZSB0aGlzLmVuYWJsZUNsaWNrKCk7dGhpcy4jQXQudW5zZWxlY3RBbGwoKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHQ9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJpbmtFZGl0aW5nIix0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspfWFkZElua0VkaXRvcklmTmVlZGVkKHQpe2lmKCF0JiZ0aGlzLiNBdC5nZXRNb2RlKCkhPT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSylyZXR1cm47aWYoIXQpZm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpaWYodC5pc0VtcHR5KCkpe3Quc2V0SW5CYWNrZ3JvdW5kKCk7cmV0dXJufXRoaXMuI3Z0KHtvZmZzZXRYOjAsb2Zmc2V0WTowfSkuc2V0SW5CYWNrZ3JvdW5kKCl9c2V0RWRpdGluZ1N0YXRlKHQpe3RoaXMuI0F0LnNldEVkaXRpbmdTdGF0ZSh0KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNBdC5hZGRDb21tYW5kcyh0KX1lbmFibGUoKXt0aGlzLmRpdi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIjtmb3IoY29uc3QgdCBvZiB0aGlzLiNtdC52YWx1ZXMoKSl0LmVuYWJsZUVkaXRpbmcoKX1kaXNhYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5kaXNhYmxlRWRpdGluZygpfXNldEFjdGl2ZUVkaXRvcih0KXt0aGlzLiNBdC5nZXRBY3RpdmUoKSE9PXQmJnRoaXMuI0F0LnNldEFjdGl2ZUVkaXRvcih0KX1lbmFibGVDbGljaygpe3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNndCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNwdCl9ZGlzYWJsZUNsaWNrKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2d0KTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI3B0KX1hdHRhY2godCl7dGhpcy4jbXQuc2V0KHQuaWQsdCl9ZGV0YWNoKHQpe3RoaXMuI210LmRlbGV0ZSh0LmlkKTt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdil9cmVtb3ZlKHQpe3RoaXMuI0F0LnJlbW92ZUVkaXRvcih0KTt0aGlzLmRldGFjaCh0KTt0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlbW92ZSh0LmlkKTt0LmRpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtzZXRUaW1lb3V0KCgoKT0+e3QuZGl2LnN0eWxlLmRpc3BsYXk9IiI7dC5kaXYucmVtb3ZlKCk7dC5pc0F0dGFjaGVkVG9ET009ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkmJnRoaXMuI0F0LmZvY3VzTWFpbkNvbnRhaW5lcigpfSksMCk7dGhpcy4jYnR8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfSN5dCh0KXtpZih0LnBhcmVudCE9PXRoaXMpe3RoaXMuYXR0YWNoKHQpO3QucGFnZUluZGV4PXRoaXMucGFnZUluZGV4O3QucGFyZW50Py5kZXRhY2godCk7dC5wYXJlbnQ9dGhpcztpZih0LmRpdiYmdC5pc0F0dGFjaGVkVG9ET00pe3QuZGl2LnJlbW92ZSgpO3RoaXMuZGl2LmFwcGVuZCh0LmRpdil9fX1hZGQodCl7dGhpcy4jeXQodCk7dGhpcy4jQXQuYWRkRWRpdG9yKHQpO3RoaXMuYXR0YWNoKHQpO2lmKCF0LmlzQXR0YWNoZWRUb0RPTSl7Y29uc3QgZT10LnJlbmRlcigpO3RoaXMuZGl2LmFwcGVuZChlKTt0LmlzQXR0YWNoZWRUb0RPTT0hMH10aGlzLm1vdmVFZGl0b3JJbkRPTSh0KTt0Lm9uY2VBZGRlZCgpO3RoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jZHQ/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpe3QuaXNFbXB0eSgpfHx0aGlzLmFubm90YXRpb25TdG9yYWdlLmhhcyh0LmlkKXx8dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmlkLHQpfWFkZE9yUmVidWlsZCh0KXt0Lm5lZWRzVG9CZVJlYnVpbHQoKT90LnJlYnVpbGQoKTp0aGlzLmFkZCh0KX1hZGRBTmV3RWRpdG9yKHQpe3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOigpPT57dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX1hZGRVbmRvYWJsZUVkaXRvcih0KXt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFkZE9yUmVidWlsZCh0KX0sdW5kbzooKT0+e3QucmVtb3ZlKCl9LG11c3RFeGVjOiExfSl9Z2V0TmV4dElkKCl7cmV0dXJuIHRoaXMuI0F0LmdldElkKCl9I1N0KHQpe3N3aXRjaCh0aGlzLiNBdC5nZXRNb2RlKCkpe2Nhc2Ugbi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IHIuRnJlZVRleHRFZGl0b3IodCk7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpyZXR1cm4gbmV3IGEuSW5rRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIHIuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzKTtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBhLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMpfXJldHVybiBudWxsfSN2dCh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCkscz10aGlzLiNTdCh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0pO3MmJnRoaXMuYWRkKHMpO3JldHVybiBzfXNldFNlbGVjdGVkKHQpe3RoaXMuI0F0LnNldFNlbGVjdGVkKHQpfXRvZ2dsZVNlbGVjdGVkKHQpe3RoaXMuI0F0LnRvZ2dsZVNlbGVjdGVkKHQpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuI0F0LmlzU2VsZWN0ZWQodCl9dW5zZWxlY3QodCl7dGhpcy4jQXQudW5zZWxlY3QodCl9cG9pbnRlcnVwKHQpe2NvbnN0IGU9aS5LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7aWYoISgwIT09dC5idXR0b258fHQuY3RybEtleSYmZSkmJnQudGFyZ2V0PT09dGhpcy5kaXYmJnRoaXMuI2Z0KXt0aGlzLiNmdD0hMTt0aGlzLiN1dD90aGlzLiN2dCh0KTp0aGlzLiN1dD0hMH19cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jZnQ9ITA7Y29uc3Qgcz10aGlzLiNBdC5nZXRBY3RpdmUoKTt0aGlzLiN1dD0hc3x8cy5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxzPXRoaXMuI0F0LmdldEVkaXRvcihlKTtpZighcylyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI3l0KHMpO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtaS54LHI9dC5jbGllbnRZLWkueTtzLnRyYW5zbGF0ZShuLXMuc3RhcnRYLHItcy5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKHMpO3MuZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNBdC5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jQXQuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI210LnZhbHVlcygpKXt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCk7dC5wYXJlbnQ9bnVsbH10aGlzLmRpdj1udWxsO3RoaXMuI210LmNsZWFyKCk7dGhpcy4jQXQucmVtb3ZlTGF5ZXIodGhpcyl9I190KCl7dGhpcy4jYnQ9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5pc0VtcHR5KCkmJnQucmVtb3ZlKCk7dGhpcy4jYnQ9ITF9cmVuZGVyKHQpe3RoaXMudmlld3BvcnQ9dC52aWV3cG9ydDsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dGhpcy5zZXREaW1lbnNpb25zKCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQXQuZ2V0RWRpdG9ycyh0aGlzLnBhZ2VJbmRleCkpdGhpcy5hZGQodCk7dGhpcy51cGRhdGVNb2RlKCl9dXBkYXRlKHQpe3RoaXMuI0F0LmNvbW1pdE9yUmVtb3ZlKCk7dGhpcy52aWV3cG9ydD10LnZpZXdwb3J0O3RoaXMuc2V0RGltZW5zaW9ucygpO3RoaXMudXBkYXRlTW9kZSgpfWdldCBzY2FsZUZhY3Rvcigpe3JldHVybiB0aGlzLnZpZXdwb3J0LnNjYWxlfWdldCBwYWdlRGltZW5zaW9ucygpe2NvbnN0W3QsZSxzLGldPXRoaXMudmlld3BvcnQudmlld0JveDtyZXR1cm5bcy10LGktZV19Z2V0IHZpZXdwb3J0QmFzZURpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQ7cmV0dXJuIHMlMTgwPT0wP1t0LGVdOltlLHRdfXNldERpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQsaT1zJTE4MCE9MCxuPU1hdGguZmxvb3IodCkrInB4IixyPU1hdGguZmxvb3IoZSkrInB4Ijt0aGlzLmRpdi5zdHlsZS53aWR0aD1pP3I6bjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9aT9uOnI7dGhpcy5kaXYuc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLHMpfX1lLkFubm90YXRpb25FZGl0b3JMYXllcj1Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNSkscj1zKDQpO2NsYXNzIEZyZWVUZXh0RWRpdG9yIGV4dGVuZHMgci5Bbm5vdGF0aW9uRWRpdG9yeyN4dD10aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKTsjRXQ9dGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpOyNDdD10aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcyk7I1B0PXRoaXMuZWRpdG9yRGl2S2V5ZG93bi5iaW5kKHRoaXMpOyNUdDsjd3Q9IiI7I2t0PWAke3RoaXMuaWR9LWVkaXRvcmA7I0Z0PSExOyNNdDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIF9rZXlib2FyZE1hbmFnZXI9bmV3IG4uS2V5Ym9hcmRNYW5hZ2VyKFtbWyJjdHJsK0VudGVyIiwibWFjK21ldGErRW50ZXIiLCJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLmNvbW1pdE9yUmVtb3ZlXV0pO3N0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1R0PXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiNNdD10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1J0KGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNEdChlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI010XSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNUdF1dfSNSdCh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik7dGhpcy4jTXQ9dDt0aGlzLiNJdCgpfSxlPXRoaXMuI010O3RoaXMucGFyZW50LmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRGb250c2l6ZSh0KX0sdW5kbzooKT0+e3NldEZvbnRzaXplKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy4jVHQ7dGhpcy5wYXJlbnQuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1R0PXQ7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9dH0sdW5kbzooKT0+e3RoaXMuI1R0PWU7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9ZX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bLUZyZWVUZXh0RWRpdG9yLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnQuc2NhbGVGYWN0b3IsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcl19cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtudWxsIT09dGhpcy5kaXYmJih0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMucGFyZW50LnVwZGF0ZVRvb2xiYXIoaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCk7c3VwZXIuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZSgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KX19ZGlzYWJsZUVkaXRNb2RlKCl7aWYodGhpcy5pc0luRWRpdE1vZGUoKSl7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LmFkZCgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdGhpcy4ja3QpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KTt0aGlzLmRpdi5mb2N1cygpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3QudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9b25jZUFkZGVkKCl7aWYoIXRoaXMud2lkdGgpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLmVkaXRvckRpdi5mb2N1cygpfX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9cmVtb3ZlKCl7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIik7c3VwZXIucmVtb3ZlKCl9I090KCl7Y29uc3QgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCB0PXMuZmlyc3RDaGlsZDsiI3RleHQiPT09dD8ubm9kZU5hbWU/ZS5wdXNoKHQuZGF0YSk6ZS5wdXNoKCIiKX1yZXR1cm4gZS5qb2luKCJcbiIpfSNJdCgpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxzPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9cy53aWR0aC90O3RoaXMuaGVpZ2h0PXMuaGVpZ2h0L2V9Y29tbWl0KCl7c3VwZXIuY29tbWl0KCk7aWYoIXRoaXMuI0Z0KXt0aGlzLiNGdD0hMDt0aGlzLnBhcmVudC5hZGRVbmRvYWJsZUVkaXRvcih0aGlzKX10aGlzLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuI3d0PXRoaXMuI090KCkudHJpbUVuZCgpO3RoaXMuI0l0KCl9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4gdGhpcy5pc0luRWRpdE1vZGUoKX1kYmxjbGljayh0KXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1rZXlkb3duKHQpe2lmKHQudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fWVkaXRvckRpdktleWRvd24odCl7RnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9ZWRpdG9yRGl2Rm9jdXModCl7dGhpcy5pc0VkaXRpbmc9ITB9ZWRpdG9yRGl2Qmx1cih0KXt0aGlzLmlzRWRpdGluZz0hMX1lZGl0b3JEaXZJbnB1dCh0KXt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgiZnJlZVRleHRFZGl0aW5nIix0aGlzLmlzRW1wdHkoKSl9ZGlzYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dGhpcy5lZGl0b3JEaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIpfWVuYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZXh0Ym94Iik7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIsITApfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO3RoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuI2t0KTt0aGlzLmVuYWJsZUVkaXRpbmcoKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5lZGl0b3JEaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtY29udGVudCIsdCkpKTt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITA7Y29uc3R7c3R5bGU6c309dGhpcy5lZGl0b3JEaXY7cy5mb250U2l6ZT1gY2FsYygke3RoaXMuI010fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3MuY29sb3I9dGhpcy4jVHQ7dGhpcy5kaXYuYXBwZW5kKHRoaXMuZWRpdG9yRGl2KTt0aGlzLm92ZXJsYXlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoIm92ZXJsYXkiLCJlbmFibGVkIik7dGhpcy5kaXYuYXBwZW5kKHRoaXMub3ZlcmxheURpdik7KDAsbi5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZGJsY2xpY2siLCJrZXlkb3duIl0pO2lmKHRoaXMud2lkdGgpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLnNldEF0KHQqcyxlKmksdGhpcy53aWR0aCpzLHRoaXMuaGVpZ2h0KmkpO2Zvcihjb25zdCB0IG9mIHRoaXMuI3d0LnNwbGl0KCJcbiIpKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuYXBwZW5kKHQ/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7dGhpcy5lZGl0b3JEaXYuYXBwZW5kKGUpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZXt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwfXJldHVybiB0aGlzLmRpdn1nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmVkaXRvckRpdn1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPXN1cGVyLmRlc2VyaWFsaXplKHQsZSk7cy4jTXQ9dC5mb250U2l6ZTtzLiNUdD1pLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO3MuI3d0PXQudmFsdWU7cmV0dXJuIHN9c2VyaWFsaXplKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIG51bGw7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50LnNjYWxlRmFjdG9yLGU9dGhpcy5nZXRSZWN0KHQsdCkscz1yLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpzLGZvbnRTaXplOnRoaXMuI010LHZhbHVlOnRoaXMuI3d0LHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLkZyZWVUZXh0RWRpdG9yPUZyZWVUZXh0RWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuSW5rRWRpdG9yPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZml0Q3VydmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpdEN1cnZlfX0pO3ZhciBpPXMoMSksbj1zKDQpLHI9cygyNCksYT1zKDUpO2NvbnN0IG89MTY7Y2xhc3MgSW5rRWRpdG9yIGV4dGVuZHMgbi5Bbm5vdGF0aW9uRWRpdG9yeyNMdD0wOyNOdD0wOyNCdD0wOyNqdD10aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcyk7I1V0PXRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcyk7I3F0PXRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcyk7I1d0PXRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKTsjR3Q9ITE7I0h0PSExOyN6dD1udWxsOyNWdD1udWxsOyNYdD0wOyMkdD0wOyNZdD1udWxsO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0T3BhY2l0eT0xO3N0YXRpYyBfZGVmYXVsdFRoaWNrbmVzcz0xO3N0YXRpYyBfbDEwblByb21pc2U7c3RhdGljIF90eXBlPSJpbmsiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6Imlua0VkaXRvciJ9KTt0aGlzLmNvbG9yPXQuY29sb3J8fG51bGw7dGhpcy50aGlja25lc3M9dC50aGlja25lc3N8fG51bGw7dGhpcy5vcGFjaXR5PXQub3BhY2l0eXx8bnVsbDt0aGlzLnBhdGhzPVtdO3RoaXMuYmV6aWVyUGF0aDJEPVtdO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy5zY2FsZUZhY3Rvcj0xO3RoaXMudHJhbnNsYXRpb25YPXRoaXMudHJhbnNsYXRpb25ZPTA7dGhpcy54PTA7dGhpcy55PTB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jS3QoZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNEdChlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jSnQoZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxuLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jS3QodCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy50aGlja25lc3M9dDt0aGlzLiNRdCgpfSx1bmRvOigpPT57dGhpcy50aGlja25lc3M9ZTt0aGlzLiNRdCgpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy5jb2xvcjt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5jb2xvcj10O3RoaXMuI1p0KCl9LHVuZG86KCk9Pnt0aGlzLmNvbG9yPWU7dGhpcy4jWnQoKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0p0KHQpe3QvPTEwMDtjb25zdCBlPXRoaXMub3BhY2l0eTt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jWnQoKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1p0KCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4jdGUoKTt0aGlzLiNlZSgpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI3NlKCl9dGhpcy4jUXQoKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI1Z0LmRpc2Nvbm5lY3QoKTt0aGlzLiNWdD1udWxsO3N1cGVyLnJlbW92ZSgpfX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiNHdCYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jV3QpO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jcXQpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNXdCk7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNxdCl9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNpZSgpe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmUscm90YXRpb246c309dGhpcy5wYXJlbnQudmlld3BvcnQ7c3dpdGNoKHMpe2Nhc2UgOTA6cmV0dXJuWzAsdCx0LGVdO2Nhc2UgMTgwOnJldHVyblt0LGUsdCxlXTtjYXNlIDI3MDpyZXR1cm5bZSwwLHQsZV07ZGVmYXVsdDpyZXR1cm5bMCwwLHQsZV19fSNuZSgpe3RoaXMuY3R4LmxpbmVXaWR0aD10aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvci90aGlzLnNjYWxlRmFjdG9yO3RoaXMuY3R4LmxpbmVDYXA9InJvdW5kIjt0aGlzLmN0eC5saW5lSm9pbj0icm91bmQiO3RoaXMuY3R4Lm1pdGVyTGltaXQ9MTA7dGhpcy5jdHguc3Ryb2tlU3R5bGU9YCR7dGhpcy5jb2xvcn0keygwLGEub3BhY2l0eVRvSGV4KSh0aGlzLm9wYWNpdHkpfWB9I3JlKHQsZSl7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0h0KXt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN6dD1udWxsO3RoaXMuI25lKCk7dGhpcy5jdHguYmVnaW5QYXRoKCk7dGhpcy5jdHgubW92ZVRvKHQsZSk7dGhpcy4jWXQ9KCk9PntpZih0aGlzLiNZdCl7aWYodGhpcy4jenQpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KX1lbHNlIHRoaXMuI1p0KCk7dGhpcy5jdHgubGluZVRvKC4uLnRoaXMuI3p0KTt0aGlzLiN6dD1udWxsO3RoaXMuY3R4LnN0cm9rZSgpfXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jWXQpfX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiNZdCl9I2FlKHQsZSl7Y29uc3RbcyxpXT10aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtpZih0IT09c3x8ZSE9PWkpe3RoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSk7dGhpcy4jenQ9W3QsZV19fSNvZSh0LGUpe3RoaXMuY3R4LmNsb3NlUGF0aCgpO3RoaXMuI1l0PW51bGw7dD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKTtlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTtjb25zdFtzLGldPXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3Q9PT1zJiZlPT09aXx8dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTtsZXQgbjtpZigxIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpbj0oMCxyLmZpdEN1cnZlKSh0aGlzLmN1cnJlbnRQYXRoLDMwLG51bGwpO2Vsc2V7Y29uc3Qgcz1bdCxlXTtuPVtbcyxzLnNsaWNlKCkscy5zbGljZSgpLHNdXX1jb25zdCBhPUlua0VkaXRvci4jbGUobik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MDt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goYSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLnBhdGhzLnBvcCgpO3RoaXMuYmV6aWVyUGF0aDJELnBvcCgpO2lmKDA9PT10aGlzLnBhdGhzLmxlbmd0aCl0aGlzLnJlbW92ZSgpO2Vsc2V7aWYoIXRoaXMuY2FudmFzKXt0aGlzLiN0ZSgpO3RoaXMuI2VlKCl9dGhpcy4jUXQoKX19LG11c3RFeGVjOiEwfSl9I1p0KCl7aWYodGhpcy5pc0VtcHR5KCkpe3RoaXMuI2NlKCk7cmV0dXJufXRoaXMuI25lKCk7Y29uc3R7Y2FudmFzOnQsY3R4OmV9PXRoaXM7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KTt0aGlzLiNjZSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKWUuc3Ryb2tlKHQpfWNvbW1pdCgpe2lmKCF0aGlzLiNHdCl7c3VwZXIuY29tbWl0KCk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuI0d0PSEwO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIik7dGhpcy4jUXQoITApO3RoaXMucGFyZW50LmFkZElua0VkaXRvcklmTmVlZGVkKCEwKTt0aGlzLnBhcmVudC5tb3ZlRWRpdG9ySW5ET00odGhpcyk7dGhpcy5kaXYuZm9jdXMoKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3RoaXMuZW5hYmxlRWRpdE1vZGUoKX1jYW52YXNQb2ludGVyZG93bih0KXtpZigwPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiF0aGlzLiNHdCl7dGhpcy5zZXRJbkZvcmVncm91bmQoKTsibW91c2UiIT09dC50eXBlJiZ0aGlzLmRpdi5mb2N1cygpO3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix0aGlzLiNVdCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuI2p0KTt0aGlzLiNyZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX19Y2FudmFzUG9pbnRlcm1vdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLiNhZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX1jYW52YXNQb2ludGVydXAodCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYwIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy4jaGUodCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX19Y2FudmFzUG9pbnRlcmxlYXZlKHQpe3RoaXMuI2hlKHQpO3RoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9I2hlKHQpe3RoaXMuI29lKHQub2Zmc2V0WCx0Lm9mZnNldFkpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jVXQpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNqdCk7dGhpcy5wYXJlbnQuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0aGlzKX0jdGUoKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jZWUoKXtsZXQgdD1udWxsO3RoaXMuI1Z0PW5ldyBSZXNpemVPYnNlcnZlcigoZT0+e2NvbnN0IHM9ZVswXS5jb250ZW50UmVjdDtpZihzLndpZHRoJiZzLmhlaWdodCl7bnVsbCE9PXQmJmNsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5maXhEaW1zKCk7dD1udWxsfSksMTAwKTt0aGlzLnNldERpbWVuc2lvbnMocy53aWR0aCxzLmhlaWdodCl9fSkpO3RoaXMuI1Z0Lm9ic2VydmUodGhpcy5kaXYpfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtzLGksbixyXT10aGlzLiNpZSgpO3RoaXMuc2V0QXQocyxpLDAsMCk7dGhpcy5zZXREaW1zKG4scik7dGhpcy4jdGUoKTtpZih0aGlzLndpZHRoKXtjb25zdFtzLGldPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy5zZXRBdCh0KnMsZSppLHRoaXMud2lkdGgqcyx0aGlzLmhlaWdodCppKTt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMuc2V0RGltcyh0aGlzLndpZHRoKnMsdGhpcy5oZWlnaHQqaSk7dGhpcy4jWnQoKTt0aGlzLiNkZSgpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI2VlKCk7cmV0dXJuIHRoaXMuZGl2fSNzZSgpe2lmKCF0aGlzLiNIdClyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMuY2FudmFzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKnQpO3RoaXMuY2FudmFzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQqZSk7dGhpcy4jY2UoKX1zZXREaW1lbnNpb25zKHQsZSl7Y29uc3Qgcz1NYXRoLnJvdW5kKHQpLGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLiNYdD09PXMmJnRoaXMuIyR0PT09aSlyZXR1cm47dGhpcy4jWHQ9czt0aGlzLiMkdD1pO3RoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7aWYodGhpcy4jTHQmJk1hdGguYWJzKHRoaXMuI0x0LXQvZSk+LjAxKXtlPU1hdGguY2VpbCh0L3RoaXMuI0x0KTt0aGlzLnNldERpbXModCxlKX1jb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy53aWR0aD10L247dGhpcy5oZWlnaHQ9ZS9yO3RoaXMuI0d0JiZ0aGlzLiN1ZSh0LGUpO3RoaXMuI3NlKCk7dGhpcy4jWnQoKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn0jdWUodCxlKXtjb25zdCBzPXRoaXMuI3BlKCksaT0odC1zKS90aGlzLiNCdCxuPShlLXMpL3RoaXMuI050O3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxuKX0jY2UoKXtjb25zdCB0PXRoaXMuI3BlKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjbGUodCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3RbaSxuLHIsYV09dFtzXTswPT09cyYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKG5bMF0sblsxXSxyWzBdLHJbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX0jZ2UodCxlLHMsaSl7Y29uc3Qgbj1bXSxyPXRoaXMudGhpY2tuZXNzLzI7bGV0IGEsbztmb3IoY29uc3QgbCBvZiB0aGlzLnBhdGhzKXthPVtdO289W107Zm9yKGxldCBuPTAsYz1sLmxlbmd0aDtuPGM7bisrKXtjb25zdFtjLGgsZCx1XT1sW25dLHA9dCooY1swXStlKStyLGc9aS10KihjWzFdK3MpLXIsbT10KihoWzBdK2UpK3IsZj1pLXQqKGhbMV0rcyktcixiPXQqKGRbMF0rZSkrcixBPWktdCooZFsxXStzKS1yLF89dCoodVswXStlKStyLHY9aS10Kih1WzFdK3MpLXI7aWYoMD09PW4pe2EucHVzaChwLGcpO28ucHVzaChwLGcpfWEucHVzaChtLGYsYixBLF8sdik7dGhpcy4jbWUocCxnLG0sZixiLEEsXyx2LDQsbyl9bi5wdXNoKHtiZXppZXI6YSxwb2ludHM6b30pfXJldHVybiBufSNtZSh0LGUscyxpLG4scixhLG8sbCxjKXtpZih0aGlzLiNmZSh0LGUscyxpLG4scixhLG8pKWMucHVzaChhLG8pO2Vsc2V7Zm9yKGxldCBoPTE7aDxsLTE7aCsrKXtjb25zdCBkPWgvbCx1PTEtZDtsZXQgcD1kKnQrdSpzLGc9ZCplK3UqaSxtPWQqcyt1Km4sZj1kKmkrdSpyO3A9ZCpwK3UqbTtnPWQqZyt1KmY7bT1kKm0rdSooZCpuK3UqYSk7Zj1kKmYrdSooZCpyK3Uqbyk7cD1kKnArdSptO2c9ZCpnK3UqZjtjLnB1c2gocCxnKX1jLnB1c2goYSxvKX19I2ZlKHQsZSxzLGksbixyLGEsbyl7Y29uc3QgbD0oMypzLTIqdC1hKSoqMixjPSgzKmktMiplLW8pKioyLGg9KDMqbi10LTIqYSkqKjIsZD0oMypyLWUtMipvKSoqMjtyZXR1cm4gTWF0aC5tYXgobCxoKStNYXRoLm1heChjLGQpPD0xMH0jYmUoKXtsZXQgdD0xLzAsZT0tMS8wLHM9MS8wLG49LTEvMDtmb3IoY29uc3QgciBvZiB0aGlzLnBhdGhzKWZvcihjb25zdFthLG8sbCxjXW9mIHIpe2NvbnN0IHI9aS5VdGlsLmJlemllckJvdW5kaW5nQm94KC4uLmEsLi4ubywuLi5sLC4uLmMpO3Q9TWF0aC5taW4odCxyWzBdKTtzPU1hdGgubWluKHMsclsxXSk7ZT1NYXRoLm1heChlLHJbMl0pO249TWF0aC5tYXgobixyWzNdKX1yZXR1cm5bdCxzLGUsbl19I3BlKCl7cmV0dXJuIHRoaXMuI0d0P01hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik6MH0jUXQodD0hMSl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuO2lmKCF0aGlzLiNHdCl7dGhpcy4jWnQoKTtyZXR1cm59Y29uc3QgZT10aGlzLiNiZSgpLHM9dGhpcy4jcGUoKTt0aGlzLiNCdD1NYXRoLm1heChvLGVbMl0tZVswXSk7dGhpcy4jTnQ9TWF0aC5tYXgobyxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKHMrdGhpcy4jQnQqdGhpcy5zY2FsZUZhY3Rvciksbj1NYXRoLmNlaWwocyt0aGlzLiNOdCp0aGlzLnNjYWxlRmFjdG9yKSxbcixhXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMud2lkdGg9aS9yO3RoaXMuaGVpZ2h0PW4vYTt0aGlzLiNMdD1pL247dGhpcy4jZGUoKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jc2UoKTt0aGlzLiNadCgpO3RoaXMuI1h0PWk7dGhpcy4jJHQ9bjt0aGlzLnNldERpbXMoaSxuKTtjb25zdCBoPXQ/cy90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX0jZGUoKXtjb25zdHtzdHlsZTp0fT10aGlzLmRpdjtpZih0aGlzLiNMdD49MSl7dC5taW5IZWlnaHQ9IjE2cHgiO3QubWluV2lkdGg9YCR7TWF0aC5yb3VuZCh0aGlzLiNMdCpvKX1weGB9ZWxzZXt0Lm1pbldpZHRoPSIxNnB4Ijt0Lm1pbkhlaWdodD1gJHtNYXRoLnJvdW5kKG8vdGhpcy4jTHQpfXB4YH19c3RhdGljIGRlc2VyaWFsaXplKHQsZSl7Y29uc3Qgcz1zdXBlci5kZXNlcmlhbGl6ZSh0LGUpO3MudGhpY2tuZXNzPXQudGhpY2tuZXNzO3MuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W24scl09ZS5wYWdlRGltZW5zaW9ucyxhPXMud2lkdGgqbixsPXMuaGVpZ2h0KnIsYz1lLnNjYWxlRmFjdG9yLGg9dC50aGlja25lc3MvMjtzLiNMdD1hL2w7cy4jR3Q9ITA7cy4jWHQ9TWF0aC5yb3VuZChhKTtzLiMkdD1NYXRoLnJvdW5kKGwpO2Zvcihjb25zdHtiZXppZXI6ZX1vZiB0LnBhdGhzKXtjb25zdCB0PVtdO3MucGF0aHMucHVzaCh0KTtsZXQgaT1jKihlWzBdLWgpLG49YyoobC1lWzFdLWgpO2ZvcihsZXQgcz0yLHI9ZS5sZW5ndGg7czxyO3MrPTYpe2NvbnN0IHI9YyooZVtzXS1oKSxhPWMqKGwtZVtzKzFdLWgpLG89YyooZVtzKzJdLWgpLGQ9YyoobC1lW3MrM10taCksdT1jKihlW3MrNF0taCkscD1jKihsLWVbcys1XS1oKTt0LnB1c2goW1tpLG5dLFtyLGFdLFtvLGRdLFt1LHBdXSk7aT11O249cH1jb25zdCByPXRoaXMuI2xlKHQpO3MuYmV6aWVyUGF0aDJELnB1c2gocil9Y29uc3QgZD1zLiNiZSgpO3MuI0J0PU1hdGgubWF4KG8sZFsyXS1kWzBdKTtzLiNOdD1NYXRoLm1heChvLGRbM10tZFsxXSk7cy4jdWUoYSxsKTtyZXR1cm4gc31zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9dGhpcy5yb3RhdGlvbiUxODA9PTA/dFszXS10WzFdOnRbMl0tdFswXSxzPW4uQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyxjb2xvcjpzLHRoaWNrbmVzczp0aGlzLnRoaWNrbmVzcyxvcGFjaXR5OnRoaXMub3BhY2l0eSxwYXRoczp0aGlzLiNnZSh0aGlzLnNjYWxlRmFjdG9yL3RoaXMucGFyZW50LnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5maXRDdXJ2ZT12b2lkIDA7Y29uc3QgaT1zKDI1KTtlLmZpdEN1cnZlPWl9LHQ9PntmdW5jdGlvbiBmaXRDdWJpYyh0LGUscyxpLG4pe3ZhciByLGEsbyxsLGMsaCxkLHUscCxnLG0sZixiO2lmKDI9PT10Lmxlbmd0aCl7Zj1tYXRocy52ZWN0b3JMZW4obWF0aHMuc3VidHJhY3QodFswXSx0WzFdKSkvMztyZXR1cm5bcj1bdFswXSxtYXRocy5hZGRBcnJheXModFswXSxtYXRocy5tdWxJdGVtcyhlLGYpKSxtYXRocy5hZGRBcnJheXModFsxXSxtYXRocy5tdWxJdGVtcyhzLGYpKSx0WzFdXV19YT1mdW5jdGlvbiBjaG9yZExlbmd0aFBhcmFtZXRlcml6ZSh0KXt2YXIgZSxzLGksbj1bXTt0LmZvckVhY2goKCh0LHIpPT57ZT1yP3MrbWF0aHMudmVjdG9yTGVuKG1hdGhzLnN1YnRyYWN0KHQsaSkpOjA7bi5wdXNoKGUpO3M9ZTtpPXR9KSk7cmV0dXJuIG49bi5tYXAoKHQ9PnQvcykpfSh0KTtbcixsLGhdPWdlbmVyYXRlQW5kUmVwb3J0KHQsYSxhLGUscyxuKTtpZigwPT09bHx8bDxpKXJldHVybltyXTtpZihsPGkqaSl7bz1hO2M9bDtkPWg7Zm9yKGI9MDtiPDIwO2IrKyl7bz1yZXBhcmFtZXRlcml6ZShyLHQsbyk7W3IsbCxoXT1nZW5lcmF0ZUFuZFJlcG9ydCh0LGEsbyxlLHMsbik7aWYobDxpKXJldHVybltyXTtpZihoPT09ZCl7bGV0IHQ9bC9jO2lmKHQ+Ljk5OTkmJnQ8MS4wMDAxKWJyZWFrfWM9bDtkPWh9fW09W107aWYoKHU9bWF0aHMuc3VidHJhY3QodFtoLTFdLHRbaCsxXSkpLmV2ZXJ5KCh0PT4wPT09dCkpKXt1PW1hdGhzLnN1YnRyYWN0KHRbaC0xXSx0W2hdKTtbdVswXSx1WzFdXT1bLXVbMV0sdVswXV19cD1tYXRocy5ub3JtYWxpemUodSk7Zz1tYXRocy5tdWxJdGVtcyhwLC0xKTtyZXR1cm4gbT0obT1tLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKDAsaCsxKSxlLHAsaSxuKSkpLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKGgpLGcscyxpLG4pKX1mdW5jdGlvbiBnZW5lcmF0ZUFuZFJlcG9ydCh0LGUscyxpLG4scil7dmFyIGEsbyxsO2E9ZnVuY3Rpb24gZ2VuZXJhdGVCZXppZXIodCxlLHMsaSl7dmFyIG4scixhLG8sbCxjLGgsZCx1LHAsZyxtLGYsYixBLF8sdix5PXRbMF0sUz10W3QubGVuZ3RoLTFdO249W3ksbnVsbCxudWxsLFNdO3I9bWF0aHMuemVyb3NfWHgyeDIoZS5sZW5ndGgpO2ZvcihmPTAsYj1lLmxlbmd0aDtmPGI7ZisrKXt2PTEtKF89ZVtmXSk7KGE9cltmXSlbMF09bWF0aHMubXVsSXRlbXMocywzKl8qKHYqdikpO2FbMV09bWF0aHMubXVsSXRlbXMoaSwzKnYqKF8qXykpfW89W1swLDBdLFswLDBdXTtsPVswLDBdO2ZvcihmPTAsYj10Lmxlbmd0aDtmPGI7ZisrKXtfPWVbZl07YT1yW2ZdO29bMF1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMF0pO29bMF1bMV0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMV0rPW1hdGhzLmRvdChhWzFdLGFbMV0pO0E9bWF0aHMuc3VidHJhY3QodFtmXSxiZXppZXIucShbeSx5LFMsU10sXykpO2xbMF0rPW1hdGhzLmRvdChhWzBdLEEpO2xbMV0rPW1hdGhzLmRvdChhWzFdLEEpfWM9b1swXVswXSpvWzFdWzFdLW9bMV1bMF0qb1swXVsxXTtoPW9bMF1bMF0qbFsxXS1vWzFdWzBdKmxbMF07ZD1sWzBdKm9bMV1bMV0tbFsxXSpvWzBdWzFdO3U9MD09PWM/MDpkL2M7cD0wPT09Yz8wOmgvYzttPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdCh5LFMpKTtpZih1PChnPTFlLTYqbSl8fHA8Zyl7blsxXT1tYXRocy5hZGRBcnJheXMoeSxtYXRocy5tdWxJdGVtcyhzLG0vMykpO25bMl09bWF0aHMuYWRkQXJyYXlzKFMsbWF0aHMubXVsSXRlbXMoaSxtLzMpKX1lbHNle25bMV09bWF0aHMuYWRkQXJyYXlzKHksbWF0aHMubXVsSXRlbXMocyx1KSk7blsyXT1tYXRocy5hZGRBcnJheXMoUyxtYXRocy5tdWxJdGVtcyhpLHApKX1yZXR1cm4gbn0odCxzLGksbik7W28sbF09ZnVuY3Rpb24gY29tcHV0ZU1heEVycm9yKHQsZSxzKXt2YXIgaSxuLHIsYSxvLGwsYyxoO249MDtyPU1hdGguZmxvb3IodC5sZW5ndGgvMik7Y29uc3QgZD1tYXBUdG9SZWxhdGl2ZURpc3RhbmNlcyhlLDEwKTtmb3Iobz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Yz10W29dO2g9ZmluZF90KGUsc1tvXSxkLDEwKTtpZigoaT0oYT1tYXRocy5zdWJ0cmFjdChiZXppZXIucShlLGgpLGMpKVswXSphWzBdK2FbMV0qYVsxXSk+bil7bj1pO3I9b319cmV0dXJuW24scl19KHQsYSxlKTtyJiZyKHtiZXo6YSxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6byxtYXhQb2ludDpsfSk7cmV0dXJuW2EsbyxsXX1mdW5jdGlvbiByZXBhcmFtZXRlcml6ZSh0LGUscyl7cmV0dXJuIHMubWFwKCgocyxpKT0+bmV3dG9uUmFwaHNvblJvb3RGaW5kKHQsZVtpXSxzKSkpfWZ1bmN0aW9uIG5ld3RvblJhcGhzb25Sb290RmluZCh0LGUscyl7dmFyIGk9bWF0aHMuc3VidHJhY3QoYmV6aWVyLnEodCxzKSxlKSxuPWJlemllci5xcHJpbWUodCxzKSxyPW1hdGhzLm11bE1hdHJpeChpLG4pLGE9bWF0aHMuc3VtKG1hdGhzLnNxdWFyZUl0ZW1zKG4pKSsyKm1hdGhzLm11bE1hdHJpeChpLGJlemllci5xcHJpbWVwcmltZSh0LHMpKTtyZXR1cm4gMD09PWE/czpzLXIvYX12YXIgbWFwVHRvUmVsYXRpdmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHMsaT1bMF0sbj10WzBdLHI9MCxhPTE7YTw9ZTthKyspe3M9YmV6aWVyLnEodCxhL2UpO3IrPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdChzLG4pKTtpLnB1c2gocik7bj1zfXJldHVybiBpPWkubWFwKCh0PT50L3IpKX07ZnVuY3Rpb24gZmluZF90KHQsZSxzLGkpe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBuLHIsYSxvLGw9MTtsPD1pO2wrKylpZihlPD1zW2xdKXthPShsLTEpL2k7cj1sL2k7bz0oZS0obj1zW2wtMV0pKS8oc1tsXS1uKSooci1hKSthO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIGNyZWF0ZVRhbmdlbnQodCxlKXtyZXR1cm4gbWF0aHMubm9ybWFsaXplKG1hdGhzLnN1YnRyYWN0KHQsZSkpfWNsYXNzIG1hdGhze3N0YXRpYyB6ZXJvc19YeDJ4Mih0KXtmb3IodmFyIGU9W107dC0tOyllLnB1c2goWzAsMF0pO3JldHVybiBlfXN0YXRpYyBtdWxJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dCplKSl9c3RhdGljIG11bE1hdHJpeCh0LGUpe3JldHVybiB0LnJlZHVjZSgoKHQscyxpKT0+dCtzKmVbaV0pLDApfXN0YXRpYyBzdWJ0cmFjdCh0LGUpe3JldHVybiB0Lm1hcCgoKHQscyk9PnQtZVtzXSkpfXN0YXRpYyBhZGRBcnJheXModCxlKXtyZXR1cm4gdC5tYXAoKCh0LHMpPT50K2Vbc10pKX1zdGF0aWMgYWRkSXRlbXModCxlKXtyZXR1cm4gdC5tYXAoKHQ9PnQrZSkpfXN0YXRpYyBzdW0odCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+dCtlKSl9c3RhdGljIGRvdCh0LGUpe3JldHVybiBtYXRocy5tdWxNYXRyaXgodCxlKX1zdGF0aWMgdmVjdG9yTGVuKHQpe3JldHVybiBNYXRoLmh5cG90KC4uLnQpfXN0YXRpYyBkaXZJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dC9lKSl9c3RhdGljIHNxdWFyZUl0ZW1zKHQpe3JldHVybiB0Lm1hcCgodD0+dCp0KSl9c3RhdGljIG5vcm1hbGl6ZSh0KXtyZXR1cm4gdGhpcy5kaXZJdGVtcyh0LHRoaXMudmVjdG9yTGVuKHQpKX19Y2xhc3MgYmV6aWVye3N0YXRpYyBxKHQsZSl7dmFyIHM9MS1lLGk9bWF0aHMubXVsSXRlbXModFswXSxzKnMqcyksbj1tYXRocy5tdWxJdGVtcyh0WzFdLDMqcypzKmUpLHI9bWF0aHMubXVsSXRlbXModFsyXSwzKnMqZSplKSxhPW1hdGhzLm11bEl0ZW1zKHRbM10sZSplKmUpO3JldHVybiBtYXRocy5hZGRBcnJheXMobWF0aHMuYWRkQXJyYXlzKGksbiksbWF0aHMuYWRkQXJyYXlzKHIsYSkpfXN0YXRpYyBxcHJpbWUodCxlKXt2YXIgcz0xLWUsaT1tYXRocy5tdWxJdGVtcyhtYXRocy5zdWJ0cmFjdCh0WzFdLHRbMF0pLDMqcypzKSxuPW1hdGhzLm11bEl0ZW1zKG1hdGhzLnN1YnRyYWN0KHRbMl0sdFsxXSksNipzKmUpLHI9bWF0aHMubXVsSXRlbXMobWF0aHMuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIG1hdGhzLmFkZEFycmF5cyhtYXRocy5hZGRBcnJheXMoaSxuKSxyKX1zdGF0aWMgcXByaW1lcHJpbWUodCxlKXtyZXR1cm4gbWF0aHMuYWRkQXJyYXlzKG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzJdLG1hdGhzLm11bEl0ZW1zKHRbMV0sMikpLHRbMF0pLDYqKDEtZSkpLG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzNdLG1hdGhzLm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX10LmV4cG9ydHM9ZnVuY3Rpb24gZml0Q3VydmUodCxlLHMpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3QuZm9yRWFjaCgoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLnNvbWUoKHQ9PiJudW1iZXIiIT10eXBlb2YgdCkpfHxlLmxlbmd0aCE9PXRbMF0ubGVuZ3RoKXRocm93IEVycm9yKCJFYWNoIHBvaW50IHNob3VsZCBiZSBhbiBhcnJheSBvZiBudW1iZXJzLiBFYWNoIHBvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBudW1iZXJzLiIpfSkpO2lmKCh0PXQuZmlsdGVyKCgoZSxzKT0+MD09PXN8fCFlLmV2ZXJ5KCgoZSxpKT0+ZT09PXRbcy0xXVtpXSkpKSkpLmxlbmd0aDwyKXJldHVybltdO2NvbnN0IGk9dC5sZW5ndGgsbj1jcmVhdGVUYW5nZW50KHRbMV0sdFswXSkscj1jcmVhdGVUYW5nZW50KHRbaS0yXSx0W2ktMV0pO3JldHVybiBmaXRDdWJpYyh0LG4scixlLHMpfTt0LmV4cG9ydHMuZml0Q3ViaWM9Zml0Q3ViaWM7dC5leHBvcnRzLmNyZWF0ZVRhbmdlbnQ9Y3JlYXRlVGFuZ2VudH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25MYXllcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNikscj1zKDMpLGE9cygyNyksbz1zKDI4KTtjb25zdCBsPTFlMyxjPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIGdldFJlY3REaW1zKHQpe3JldHVybnt3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5e3N0YXRpYyBjcmVhdGUodCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlRFWFQ6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLldJREdFVDpzd2l0Y2godC5kYXRhLmZpZWxkVHlwZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk6dC5kYXRhLmNoZWNrQm94P25ldyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpOm5ldyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KX1yZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkZSRUVURVhUOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuTElORTpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNJUkNMRTpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNBUkVUOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuSU5LOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlBPTFlHT046cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RBTVA6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbkVsZW1lbnQodCk7ZGVmYXVsdDpyZXR1cm4gbmV3IEFubm90YXRpb25FbGVtZW50KHQpfX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCx7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOnM9ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09e30pe3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5wYWdlPXQucGFnZTt0aGlzLnZpZXdwb3J0PXQudmlld3BvcnQ7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5fbW91c2VTdGF0ZT10Lm1vdXNlU3RhdGU7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihzKSk7aSYmKHRoaXMucXVhZHJpbGF0ZXJhbHM9dGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMocykpfV9jcmVhdGVDb250YWluZXIodD0hMSl7Y29uc3QgZT10aGlzLmRhdGEscz10aGlzLnBhZ2Usbj10aGlzLnZpZXdwb3J0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpLHt3aWR0aDphLGhlaWdodDpvfT1nZXRSZWN0RGltcyhlLnJlY3QpLFtsLGMsaCxkXT1uLnZpZXdCb3gsdT1oLWwscD1kLWM7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYW5ub3RhdGlvbi1pZCIsZS5pZCk7Y29uc3QgZz1pLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLHMudmlld1szXS1lLnJlY3RbMV0rcy52aWV3WzFdLGUucmVjdFsyXSxzLnZpZXdbM10tZS5yZWN0WzNdK3Mudmlld1sxXV0pO2lmKCF0JiZlLmJvcmRlclN0eWxlLndpZHRoPjApe3Iuc3R5bGUuYm9yZGVyV2lkdGg9YCR7ZS5ib3JkZXJTdHlsZS53aWR0aH1weGA7Y29uc3QgdD1lLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMscz1lLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO2lmKHQ+MHx8cz4wKXtjb25zdCBlPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke3N9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9ZX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KXtjb25zdCB0PWBjYWxjKCR7YX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke299cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9dH1zd2l0Y2goZS5ib3JkZXJTdHlsZS5zdHlsZSl7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ6ci5zdHlsZS5ib3JkZXJTdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpyLnN0eWxlLmJvcmRlclN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGJldmVsZWQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDooMCxpLndhcm4pKCJVbmltcGxlbWVudGVkIGJvcmRlciBzdHlsZTogaW5zZXQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkU6ci5zdHlsZS5ib3JkZXJCb3R0b21TdHlsZT0ic29saWQifWNvbnN0IG49ZS5ib3JkZXJDb2xvcnx8bnVsbDtuP3Iuc3R5bGUuYm9yZGVyQ29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvcigwfG5bMF0sMHxuWzFdLDB8blsyXSk6ci5zdHlsZS5ib3JkZXJXaWR0aD0wfXIuc3R5bGUubGVmdD0xMDAqKGdbMF0tbCkvdSsiJSI7ci5zdHlsZS50b3A9MTAwKihnWzFdLWMpL3ArIiUiO2NvbnN0e3JvdGF0aW9uOm19PWU7aWYoZS5oYXNPd25DYW52YXN8fDA9PT1tKXtyLnN0eWxlLndpZHRoPTEwMCphL3UrIiUiO3Iuc3R5bGUuaGVpZ2h0PTEwMCpvL3ArIiUifWVsc2UgdGhpcy5zZXRSb3RhdGlvbihtLHIpO3JldHVybiByfXNldFJvdGF0aW9uKHQsZT10aGlzLmNvbnRhaW5lcil7Y29uc3RbcyxpLG4scl09dGhpcy52aWV3cG9ydC52aWV3Qm94LGE9bi1zLG89ci1pLHt3aWR0aDpsLGhlaWdodDpjfT1nZXRSZWN0RGltcyh0aGlzLmRhdGEucmVjdCk7bGV0IGgsZDtpZih0JTE4MD09MCl7aD0xMDAqbC9hO2Q9MTAwKmMvb31lbHNle2g9MTAwKmMvYTtkPTEwMCpsL299ZS5zdHlsZS53aWR0aD1gJHtofSVgO2Uuc3R5bGUuaGVpZ2h0PWAke2R9JWA7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfWdldCBfY29tbW9uQWN0aW9ucygpe2NvbnN0IHNldENvbG9yPSh0LGUscyk9Pntjb25zdCBpPXMuZGV0YWlsW3RdO3MudGFyZ2V0LnN0eWxlW2VdPWEuQ29sb3JDb252ZXJ0ZXJzW2Ake2lbMF19X0hUTUxgXShpLnNsaWNlKDEpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9jb21tb25BY3Rpb25zIix7ZGlzcGxheTp0PT57Y29uc3QgZT10LmRldGFpbC5kaXNwbGF5JTI9PTE7dGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1lPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOmUscHJpbnQ6MD09PXQuZGV0YWlsLmRpc3BsYXl8fDM9PT10LmRldGFpbC5kaXNwbGF5fSl9LHByaW50OnQ9Pnt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7cHJpbnQ6dC5kZXRhaWwucHJpbnR9KX0saGlkZGVuOnQ9Pnt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXQuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSI7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse2hpZGRlbjp0LmRldGFpbC5oaWRkZW59KX0sZm9jdXM6dD0+e3NldFRpbWVvdXQoKCgpPT50LnRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMX0pKSwwKX0sdXNlck5hbWU6dD0+e3QudGFyZ2V0LnRpdGxlPXQuZGV0YWlsLnVzZXJOYW1lfSxyZWFkb25seTp0PT57dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6dD0+e3RoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LHQuZGV0YWlsLnJlcXVpcmVkKX0sYmdDb2xvcjp0PT57c2V0Q29sb3IoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6dD0+e3NldENvbG9yKCJmaWxsQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmZ0NvbG9yOnQ9PntzZXRDb2xvcigiZmdDb2xvciIsImNvbG9yIix0KX0sdGV4dENvbG9yOnQ9PntzZXRDb2xvcigidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjp0PT57c2V0Q29sb3IoImJvcmRlckNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxzdHJva2VDb2xvcjp0PT57c2V0Q29sb3IoInN0cm9rZUNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxyb3RhdGlvbjp0PT57Y29uc3QgZT10LmRldGFpbC5yb3RhdGlvbjt0aGlzLnNldFJvdGF0aW9uKGUpO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtyb3RhdGlvbjplfSl9fSl9X2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh0LGUpe2NvbnN0IHM9dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlLmRldGFpbCkpeyh0W2ldfHxzW2ldKT8uKGUpfX1fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCl7aWYoIXRoaXMuZW5hYmxlU2NyaXB0aW5nKXJldHVybjtjb25zdCBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZighZSlyZXR1cm47Y29uc3Qgcz10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdFtpLG5db2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IHI9c1tpXTtpZihyKXtyKHtkZXRhaWw6e1tpXTpufSx0YXJnZXQ6dH0pO2RlbGV0ZSBlW2ldfX19X2NyZWF0ZVF1YWRyaWxhdGVyYWxzKHQ9ITEpe2lmKCF0aGlzLmRhdGEucXVhZFBvaW50cylyZXR1cm4gbnVsbDtjb25zdCBlPVtdLHM9dGhpcy5kYXRhLnJlY3Q7Zm9yKGNvbnN0IHMgb2YgdGhpcy5kYXRhLnF1YWRQb2ludHMpe3RoaXMuZGF0YS5yZWN0PVtzWzJdLngsc1syXS55LHNbMV0ueCxzWzFdLnldO2UucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfXRoaXMuZGF0YS5yZWN0PXM7cmV0dXJuIGV9X2NyZWF0ZVBvcHVwKHQsZSl7bGV0IHM9dGhpcy5jb250YWluZXI7aWYodGhpcy5xdWFkcmlsYXRlcmFscyl7dD10fHx0aGlzLnF1YWRyaWxhdGVyYWxzO3M9dGhpcy5xdWFkcmlsYXRlcmFsc1swXX1pZighdCl7KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7cy5hcHBlbmQodCl9Y29uc3QgaT1uZXcgUG9wdXBFbGVtZW50KHtjb250YWluZXI6cyx0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO2kuc3R5bGUubGVmdD0iMTAwJSI7cy5hcHBlbmQoaSl9X3JlbmRlclF1YWRyaWxhdGVyYWxzKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMucXVhZHJpbGF0ZXJhbHMpZS5jbGFzc05hbWU9dDtyZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc31yZW5kZXIoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfV9nZXRFbGVtZW50c0J5TmFtZSh0LGU9bnVsbCl7Y29uc3Qgcz1bXTtpZih0aGlzLl9maWVsZE9iamVjdHMpe2NvbnN0IG49dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKG4pZm9yKGNvbnN0e3BhZ2U6dCxpZDpyLGV4cG9ydFZhbHVlczphfW9mIG4pe2lmKC0xPT09dCljb250aW51ZTtpZihyPT09ZSljb250aW51ZTtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgYT9hOm51bGwsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke3J9Il1gKTshb3x8Yy5oYXMobyk/cy5wdXNoKHtpZDpyLGV4cG9ydFZhbHVlOm4sZG9tRWxlbWVudDpvfSk6KDAsaS53YXJuKShgX2dldEVsZW1lbnRzQnlOYW1lIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtyfWApfXJldHVybiBzfWZvcihjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKXtjb25zdHtleHBvcnRWYWx1ZTp0fT1pLG49aS5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO24hPT1lJiYoYy5oYXMoaSkmJnMucHVzaCh7aWQ6bixleHBvcnRWYWx1ZTp0LGRvbUVsZW1lbnQ6aX0pKX1yZXR1cm4gc31zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IucGxhdGZvcm06IiI7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBsYXRmb3JtIix7aXNXaW46dC5pbmNsdWRlcygiV2luIiksaXNNYWM6dC5pbmNsdWRlcygiTWFjIil9KX19Y2xhc3MgTGlua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCxlPW51bGwpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMocyx0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24ocyx0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQocyx0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNBZShzLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKHMsdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKHMsdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihzLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsocywiIik7aT0hMH19aWYodGhpcy5xdWFkcmlsYXRlcmFscylyZXR1cm4gdGhpcy5fcmVuZGVyUXVhZHJpbGF0ZXJhbHMoImxpbmtBbm5vdGF0aW9uIikubWFwKCgodCxlKT0+e2NvbnN0IGk9MD09PWU/czpzLmNsb25lTm9kZSgpO3QuYXBwZW5kKGkpO3JldHVybiB0fSkpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ibGlua0Fubm90YXRpb24iO2kmJnRoaXMuY29udGFpbmVyLmFwcGVuZChzKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmKHQuY2xhc3NOYW1lPSJpbnRlcm5hbExpbmsiKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRBdHRhY2htZW50KHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLGUuY29udGVudCxlLmZpbGVuYW1lKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9I0FlKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgcz1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IG49cy5nZXQoaSk7biYmKHRbbl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIn1fYmluZFJlc2V0Rm9ybUFjdGlvbih0LGUpe2NvbnN0IHM9dC5vbmNsaWNrO3N8fCh0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIjtpZih0aGlzLl9maWVsZE9iamVjdHMpdC5vbmNsaWNrPSgpPT57cz8uKCk7Y29uc3R7ZmllbGRzOnQscmVmczpuLGluY2x1ZGU6cn09ZSxhPVtdO2lmKDAhPT10Lmxlbmd0aHx8MCE9PW4ubGVuZ3RoKXtjb25zdCBlPW5ldyBTZXQobik7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgdD10aGlzLl9maWVsZE9iamVjdHNbc118fFtdO2Zvcihjb25zdHtpZDpzfW9mIHQpZS5hZGQocyl9Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWZvcihjb25zdCBzIG9mIHQpZS5oYXMocy5pZCk9PT1yJiZhLnB1c2gocyl9ZWxzZSBmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpYS5wdXNoKC4uLnQpO2NvbnN0IG89dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0e2lkOmV9PXQ7bC5wdXNoKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6e2NvbnN0IHM9dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6c30pO2JyZWFrfWNhc2UiY2hlY2tib3giOmNhc2UicmFkaW9idXR0b24iOntjb25zdCBzPXQuZGVmYXVsdFZhbHVlPT09dC5leHBvcnRWYWx1ZXM7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9Y2FzZSJjb21ib2JveCI6Y2FzZSJsaXN0Ym94Ijp7Y29uc3Qgcz10LmRlZmF1bHRWYWx1ZXx8IiI7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9ZGVmYXVsdDpjb250aW51ZX1jb25zdCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWVsZW1lbnQtaWQ9IiR7ZX0iXWApO3MmJihjLmhhcyhzKT9zLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsaS53YXJuKShgX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAke2V9YCkpfXRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ImFwcCIsaWRzOmwsbmFtZToiUmVzZXRGb3JtIn19KTtyZXR1cm4hMX07ZWxzZXsoMCxpLndhcm4pKCdfYmluZFJlc2V0Rm9ybUFjdGlvbiAtICJyZXNldEZvcm0iIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO3N8fCh0Lm9uY2xpY2s9KCk9PiExKX19fWNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKHQsdGhpcy5kYXRhKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e3JlbmRlcigpe3RoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2dldEtleU1vZGlmaWVyKHQpe2NvbnN0e2lzV2luOmUsaXNNYWM6c309QW5ub3RhdGlvbkVsZW1lbnQucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8cyYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxzLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUscyl7Zm9yKGNvbnN0W2ksbl1vZiBlKSgiQWN0aW9uIj09PW58fHRoaXMuZGF0YS5hY3Rpb25zPy5bbl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxuLHMpfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxyPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKm4pKXx8MSk7YT1NYXRoLm1pbihuLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKG4scm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9ci5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihyLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLHMsaSl7Y29uc3Qgbj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCByIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7ci5kb21FbGVtZW50JiYoci5kb21FbGVtZW50W2VdPXMpO24uc2V0VmFsdWUoci5pZCx7W2ldOnN9KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idGV4dFdpZGdldEFubm90YXRpb24iO2xldCBzPW51bGw7aWYodGhpcy5yZW5kZXJGb3Jtcyl7Y29uc3QgaT10LmdldFZhbHVlKGUse3ZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfSk7bGV0IG49aS5mb3JtYXR0ZWRWYWx1ZXx8aS52YWx1ZXx8IiI7Y29uc3Qgcj10LmdldFZhbHVlKGUse2NoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVufSkuY2hhckxpbWl0O3ImJm4ubGVuZ3RoPnImJihuPW4uc2xpY2UoMCxyKSk7Y29uc3QgYT17dXNlclZhbHVlOm4sZm9ybWF0dGVkVmFsdWU6bnVsbCx2YWx1ZU9uRm9jdXM6IiJ9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtzLnRleHRDb250ZW50PW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYocy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpfWVsc2V7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3MudHlwZT0idGV4dCI7cy5zZXRBdHRyaWJ1dGUoInZhbHVlIixuKTt0aGlzLmRhdGEuZG9Ob3RTY3JvbGwmJihzLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIil9Yy5hZGQocyk7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7cy5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7cy5uYW1lPXRoaXMuZGF0YS5maWVsZE5hbWU7cy50YWJJbmRleD1sO3RoaXMuX3NldFJlcXVpcmVkKHMsdGhpcy5kYXRhLnJlcXVpcmVkKTtyJiYocy5tYXhMZW5ndGg9cik7cy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGk9Pnt0LnNldFZhbHVlKGUse3ZhbHVlOmkudGFyZ2V0LnZhbHVlfSk7dGhpcy5zZXRQcm9wZXJ0eU9uU2libGluZ3MocywidmFsdWUiLGkudGFyZ2V0LnZhbHVlLCJ2YWx1ZSIpfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPz8iIjtzLnZhbHVlPWEudXNlclZhbHVlPWU7YS5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO2xldCBibHVyTGlzdGVuZXI9dD0+e2NvbnN0e2Zvcm1hdHRlZFZhbHVlOmV9PWE7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpO3QudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwodD0+e2EudXNlclZhbHVlJiYodC50YXJnZXQudmFsdWU9YS51c2VyVmFsdWUpO2EudmFsdWVPbkZvY3VzPXQudGFyZ2V0LnZhbHVlfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChzPT57Y29uc3QgaT17dmFsdWUocyl7YS51c2VyVmFsdWU9cy5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6YS51c2VyVmFsdWUudG9TdHJpbmcoKX0pO3MudGFyZ2V0LnZhbHVlPWEudXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShzKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1zLmRldGFpbDthLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmcy50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYocy50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0OnM9Pntjb25zdHtjaGFyTGltaXQ6aX09cy5kZXRhaWwse3RhcmdldDpufT1zO2lmKDA9PT1pKXtuLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufW4uc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCByPWEudXNlclZhbHVlO2lmKHImJiEoci5sZW5ndGg8PWkpKXtyPXIuc2xpY2UoMCxpKTtuLnZhbHVlPWEudXNlclZhbHVlPXI7dC5zZXRWYWx1ZShlLHt2YWx1ZTpyfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpyLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6bi5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6bi5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscyl9KSk7cy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e2xldCBzPS0xOyJFc2NhcGUiPT09dC5rZXk/cz0wOiJFbnRlciIhPT10LmtleXx8dGhpcy5kYXRhLm11bHRpTGluZT8iVGFiIj09PXQua2V5JiYocz0zKTpzPTI7aWYoLTE9PT1zKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihhLnZhbHVlT25Gb2N1cyE9PWkpe2EudXNlclZhbHVlPWk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OnMsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KX19KSk7Y29uc3QgaT1ibHVyTGlzdGVuZXI7Ymx1ckxpc3RlbmVyPW51bGw7cy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwodD0+e2NvbnN0e3ZhbHVlOnN9PXQudGFyZ2V0O2EudXNlclZhbHVlPXM7dGhpcy5fbW91c2VTdGF0ZS5pc0Rvd24mJmEudmFsdWVPbkZvY3VzIT09cyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KTtpKHQpfSkpO3RoaXMuZGF0YS5hY3Rpb25zPy5LZXlzdHJva2UmJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCh0PT57Y29uc3R7ZGF0YTpzLHRhcmdldDppfT10LHt2YWx1ZTpuLHNlbGVjdGlvblN0YXJ0OnIsc2VsZWN0aW9uRW5kOmF9PWk7bGV0IG89cixsPWE7c3dpdGNoKHQuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcoMCxyKS5tYXRjaCgvXHcqW15cd10qJC8pO3QmJihvLT10WzBdLmxlbmd0aCk7YnJlYWt9Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcocikubWF0Y2goL15bXlx3XSpcdyovKTt0JiYobCs9dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpyPT09YSYmKG8tPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOnI9PT1hJiYobCs9MSl9dC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2U6c3x8IiIsd2lsbENvbW1pdDohMSxzZWxTdGFydDpvLHNlbEVuZDpsfX0pfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHMsW1siZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1ibHVyTGlzdGVuZXImJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYmx1ckxpc3RlbmVyKTtpZih0aGlzLmRhdGEuY29tYil7Y29uc3QgdD0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL3I7cy5jbGFzc0xpc3QuYWRkKCJjb21iIik7cy5zdHlsZS5sZXR0ZXJTcGFjaW5nPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpYH19ZWxzZXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWU7cy5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiO3Muc3R5bGUuZGlzcGxheT0idGFibGUtY2VsbCJ9dGhpcy5fc2V0VGV4dFN0eWxlKHMpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihzKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQocyk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXtjb25zdCB0PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsZT10aGlzLmRhdGEscz1lLmlkO2xldCBpPXQuZ2V0VmFsdWUocyx7dmFsdWU6ZS5leHBvcnRWYWx1ZT09PWUuZmllbGRWYWx1ZX0pLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aT0iT2ZmIiE9PWk7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIGNoZWNrQm94Ijtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscyk7bi5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKG4sdGhpcy5kYXRhLnJlcXVpcmVkKTtuLnR5cGU9ImNoZWNrYm94IjtuLm5hbWU9ZS5maWVsZE5hbWU7aSYmbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtuLnNldEF0dHJpYnV0ZSgiZXhwb3J0VmFsdWUiLGUuZXhwb3J0VmFsdWUpO24udGFiSW5kZXg9bDtuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGk9Pntjb25zdHtuYW1lOm4sY2hlY2tlZDpyfT1pLnRhcmdldDtmb3IoY29uc3QgaSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShuLHMpKXtjb25zdCBzPXImJmkuZXhwb3J0VmFsdWU9PT1lLmV4cG9ydFZhbHVlO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPXMpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6c30pfXQuc2V0VmFsdWUocyx7dmFsdWU6cn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZXx8Ik9mZiI7dC50YXJnZXQuY2hlY2tlZD1zPT09ZS5leHBvcnRWYWx1ZX0pKTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3QgaT17dmFsdWUoZSl7ZS50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PWUuZGV0YWlsLnZhbHVlO3Quc2V0VmFsdWUocyx7dmFsdWU6ZS50YXJnZXQuY2hlY2tlZH0pfX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKG4pO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKG4pO3RoaXMuY29udGFpbmVyLmFwcGVuZChuKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiByYWRpb0J1dHRvbiI7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLHM9ZS5pZDtsZXQgaT10LmdldFZhbHVlKHMse3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2MuYWRkKG4pO24uc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO24uZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7bi50eXBlPSJyYWRpbyI7bi5uYW1lPWUuZmllbGROYW1lO2kmJm4uc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCk7bi50YWJJbmRleD1sO24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZT0+e2NvbnN0e25hbWU6aSxjaGVja2VkOm59PWUudGFyZ2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGkscykpdC5zZXRWYWx1ZShlLmlkLHt2YWx1ZTohMX0pO3Quc2V0VmFsdWUocyx7dmFsdWU6bn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPXMmJnM9PT1lLmJ1dHRvblZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7Y29uc3QgaT1lLmJ1dHRvblZhbHVlO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3Qgbj17dmFsdWU6ZT0+e2NvbnN0IG49aT09PWUuZGV0YWlsLnZhbHVlO2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGUudGFyZ2V0Lm5hbWUpKXtjb25zdCBlPW4mJmkuaWQ9PT1zO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPWUpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6ZX0pfX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLGUpfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKG4sW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQuY2hlY2tlZCkpfXRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBMaW5rQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aWdub3JlQm9yZGVyOnQuZGF0YS5oYXNBcHBlYXJhbmNlfSl9cmVuZGVyKCl7Y29uc3QgdD1zdXBlci5yZW5kZXIoKTt0LmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBwdXNoQnV0dG9uIjt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNob2ljZVdpZGdldEFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YS5pZCxzPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2MuYWRkKGkpO2kuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLGUpO2kuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKTtpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWw7bGV0IG49dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKHMudmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO249ITF9aS5hcHBlbmQoZSl9bGV0IHI9bnVsbDtpZihuKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cj0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscik7cj1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKX1jb25zdCBnZXRWYWx1ZT0odCxlKT0+e2NvbnN0IHM9ZT8idmFsdWUiOiJ0ZXh0Q29udGVudCIsaT10LnRhcmdldC5vcHRpb25zO3JldHVybiB0LnRhcmdldC5tdWx0aXBsZT9BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoaSwodD0+dC5zZWxlY3RlZCkpLm1hcCgodD0+dFtzXSkpOi0xPT09aS5zZWxlY3RlZEluZGV4P251bGw6aVtpLnNlbGVjdGVkSW5kZXhdW3NdfSxnZXRJdGVtcz10PT57Y29uc3QgZT10LnRhcmdldC5vcHRpb25zO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwodD0+KHtkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfSkpKX07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtpLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94Iiwocz0+e2NvbnN0IG49e3ZhbHVlKHMpe3I/LigpO2NvbnN0IG49cy5kZXRhaWwudmFsdWUsYT1uZXcgU2V0KEFycmF5LmlzQXJyYXkobik/bjpbbl0pO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPWEuaGFzKHQudmFsdWUpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUocywhMCl9KX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKHMpe2NvbnN0IG49aS5vcHRpb25zLHI9cy5kZXRhaWwucmVtb3ZlO25bcl0uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocik7aWYobi5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwodD0+dC5zZWxlY3RlZCkpJiYoblswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxjbGVhcihzKXtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpudWxsLGl0ZW1zOltdfSl9LGluc2VydChzKXtjb25zdHtpbmRleDpuLGRpc3BsYXlWYWx1ZTpyLGV4cG9ydFZhbHVlOmF9PXMuZGV0YWlsLmluc2VydCxvPWkuY2hpbGRyZW5bbl0sbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtsLnRleHRDb250ZW50PXI7bC52YWx1ZT1hO28/by5iZWZvcmUobCk6aS5hcHBlbmQobCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxpdGVtcyhzKXtjb25zdHtpdGVtczpufT1zLmRldGFpbDtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3R7ZGlzcGxheVZhbHVlOmUsZXhwb3J0VmFsdWU6c309dCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO24udGV4dENvbnRlbnQ9ZTtuLnZhbHVlPXM7aS5hcHBlbmQobil9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApLGl0ZW1zOmdldEl0ZW1zKHMpfSl9LGluZGljZXMocyl7Y29uc3QgaT1uZXcgU2V0KHMuZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIHMudGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApfSl9LGVkaXRhYmxlKHQpe3QudGFyZ2V0LmRpc2FibGVkPSF0LmRldGFpbC5lZGl0YWJsZX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLHMpfSkpO2kuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChzPT57Y29uc3QgaT1nZXRWYWx1ZShzLCEwKSxuPWdldFZhbHVlKHMsITEpO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2VFeDppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9ZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24ocyl7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7c3RhdGljIElHTk9SRV9UWVBFUz1uZXcgU2V0KFsiTGluZSIsIlNxdWFyZSIsIkNpcmNsZSIsIlBvbHlMaW5lIiwiUG9seWdvbiIsIkluayJdKTtjb25zdHJ1Y3Rvcih0KXtjb25zdHtkYXRhOmV9PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiFQb3B1cEFubm90YXRpb25FbGVtZW50LklHTk9SRV9UWVBFUy5oYXMoZS5wYXJlbnRUeXBlKSYmISEoZS50aXRsZU9iaj8uc3RyfHxlLmNvbnRlbnRzT2JqPy5zdHJ8fGUucmljaFRleHQ/LnN0cil9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmxheWVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7dGhpcy5kYXRhLnBhcmVudElkfSJdYCk7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmNvbnRhaW5lcjtjb25zdCBlPW5ldyBQb3B1cEVsZW1lbnQoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxzPXRoaXMucGFnZSxuPWkuVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxzLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rcy52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHMudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStzLnZpZXdbMV1dKSxyPW5bMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sYT1uWzFdLFtvLGwsYyxoXT10aGlzLnZpZXdwb3J0LnZpZXdCb3gsZD1jLW8sdT1oLWw7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0xMDAqKHItbykvZCsiJSI7dGhpcy5jb250YWluZXIuc3R5bGUudG9wPTEwMCooYS1sKS91KyIlIjt0aGlzLmNvbnRhaW5lci5hcHBlbmQoZS5yZW5kZXIoKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7Y29uc3RydWN0b3IodCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXI7dGhpcy50cmlnZ2VyPXQudHJpZ2dlcjt0aGlzLmNvbG9yPXQuY29sb3I7dGhpcy50aXRsZU9iaj10LnRpdGxlT2JqO3RoaXMubW9kaWZpY2F0aW9uRGF0ZT10Lm1vZGlmaWNhdGlvbkRhdGU7dGhpcy5jb250ZW50c09iaj10LmNvbnRlbnRzT2JqO3RoaXMucmljaFRleHQ9dC5yaWNoVGV4dDt0aGlzLmhpZGVXcmFwcGVyPXQuaGlkZVdyYXBwZXJ8fCExO3RoaXMucGlubmVkPSExfXJlbmRlcigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InBvcHVwV3JhcHBlciI7dGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3Q6dGhpcy5jb250YWluZXI7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0icG9wdXAiO2NvbnN0IHM9dGhpcy5jb2xvcjtpZihzKXtjb25zdCB0PS43KigyNTUtc1swXSkrc1swXSxuPS43KigyNTUtc1sxXSkrc1sxXSxyPS43KigyNTUtc1syXSkrc1syXTtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8dCwwfG4sMHxyKX1jb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7ci5kaXI9dGhpcy50aXRsZU9iai5kaXI7ci50ZXh0Q29udGVudD10aGlzLnRpdGxlT2JqLnN0cjtlLmFwcGVuZChyKTtjb25zdCBhPW4uUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QodGhpcy5tb2RpZmljYXRpb25EYXRlKTtpZihhKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTmFtZT0icG9wdXBEYXRlIjt0LnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iO3QuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciO3QuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTphLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6YS50b0xvY2FsZVRpbWVTdHJpbmcoKX0pO2UuYXBwZW5kKHQpfWlmKCF0aGlzLnJpY2hUZXh0Py5zdHJ8fHRoaXMuY29udGVudHNPYmo/LnN0ciYmdGhpcy5jb250ZW50c09iai5zdHIhPT10aGlzLnJpY2hUZXh0LnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTtlLmFwcGVuZCh0KX1lbHNle28uWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6ZX0pO2UubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50In1BcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO2Zvcihjb25zdCB0IG9mIHRoaXMudHJpZ2dlcil7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fdG9nZ2xlLmJpbmQodGhpcykpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9zaG93LmJpbmQodGhpcywhMSkpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSl9ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITApKTt0LmFwcGVuZChlKTtyZXR1cm4gdH1fZm9ybWF0Q29udGVudHMoe3N0cjp0LGRpcjplfSl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cy5jbGFzc05hbWU9InBvcHVwQ29udGVudCI7cy5kaXI9ZTtjb25zdCBpPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS8pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlOysrdCl7Y29uc3Qgbj1pW3RdO3MuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKTt0PGUtMSYmcy5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIHN9X3RvZ2dsZSgpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfV9zaG93KHQ9ITEpe3QmJih0aGlzLnBpbm5lZD0hMCk7aWYodGhpcy5oaWRlRWxlbWVudC5oaWRkZW4pe3RoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExO3RoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlM319X2hpZGUodD0hMCl7dCYmKHRoaXMucGlubmVkPSExKTtpZighdGhpcy5oaWRlRWxlbWVudC5oaWRkZW4mJiF0aGlzLnBpbm5lZCl7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzfX19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMudGV4dENvbnRlbnQ9dC5kYXRhLnRleHRDb250ZW50fXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iZnJlZVRleHRBbm5vdGF0aW9uIjtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJhbm5vdGF0aW9uVGV4dENvbnRlbnQiO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO2Zvcihjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MudGV4dENvbnRlbnQ9ZTt0LmFwcGVuZChzKX10aGlzLmNvbnRhaW5lci5hcHBlbmQodCl9dGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKSxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6bGluZSIpO24uc2V0QXR0cmlidXRlKCJ4MSIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzBdKTtuLnNldEF0dHJpYnV0ZSgieTEiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1sxXSk7bi5zZXRBdHRyaWJ1dGUoIngyIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMl0pO24uc2V0QXR0cmlidXRlKCJ5MiIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzNdKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LmJvcmRlclN0eWxlLndpZHRofHwxKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtuLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQobik7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUscywhMCksbj10LmJvcmRlclN0eWxlLndpZHRoLHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7ci5zZXRBdHRyaWJ1dGUoIngiLG4vMik7ci5zZXRBdHRyaWJ1dGUoInkiLG4vMik7ci5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLW4pO3Iuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMtbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsbnx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApLG49dC5ib3JkZXJTdHlsZS53aWR0aCxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZWxsaXBzZSIpO3Iuc2V0QXR0cmlidXRlKCJjeCIsZS8yKTtyLnNldEF0dHJpYnV0ZSgiY3kiLHMvMik7ci5zZXRBdHRyaWJ1dGUoInJ4IixlLzItbi8yKTtyLnNldEF0dHJpYnV0ZSgicnkiLHMvMi1uLzIpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG58fDEpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Iuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChyKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dGhpcy5fY3JlYXRlUG9wdXAocix0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIjt0aGlzLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUifXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKTtsZXQgbj1bXTtmb3IoY29uc3QgZSBvZiB0LnZlcnRpY2VzKXtjb25zdCBzPWUueC10LnJlY3RbMF0saT10LnJlY3RbM10tZS55O24ucHVzaChzKyIsIitpKX1uPW4uam9pbigiICIpO2NvbnN0IHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUG9seWdvbkFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWdvbkFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5Z29uIn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2FyZXRBbm5vdGF0aW9uIjt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIElua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApO2Zvcihjb25zdCBlIG9mIHQuaW5rTGlzdHMpe2xldCBzPVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9aS54LXQucmVjdFswXSxuPXQucmVjdFszXS1pLnk7cy5wdXNoKGAke2V9LCR7bn1gKX1zPXMuam9pbigiICIpO2NvbnN0IG49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7bi5zZXRBdHRyaWJ1dGUoInBvaW50cyIscyk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7bi5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7aS5hcHBlbmQobil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO2lmKHRoaXMucXVhZHJpbGF0ZXJhbHMpcmV0dXJuIHRoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ1bmRlcmxpbmVBbm5vdGF0aW9uIjtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3F1aWdnbHlBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3RyaWtlb3V0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTdGFtcEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iO3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMH0pO2NvbnN0e2ZpbGVuYW1lOmUsY29udGVudDpzfT10aGlzLmRhdGEuZmlsZTt0aGlzLmZpbGVuYW1lPSgwLG4uZ2V0RmlsZW5hbWVGcm9tVXJsKShlKTt0aGlzLmNvbnRlbnQ9czt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZmlsZWF0dGFjaG1lbnRhbm5vdGF0aW9uIix7c291cmNlOnRoaXMsZmlsZW5hbWU6ZSxjb250ZW50OnN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsdGhpcy5fZG93bmxvYWQuYmluZCh0aGlzKSk7IXRoaXMuZGF0YS5oYXNQb3B1cCYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpO3RoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2Rvd25sb2FkKCl7dGhpcy5kb3dubG9hZE1hbmFnZXI/Lm9wZW5PckRvd25sb2FkRGF0YSh0aGlzLmNvbnRhaW5lcix0aGlzLmNvbnRlbnQsdGhpcy5maWxlbmFtZSl9fWNsYXNzIEFubm90YXRpb25MYXllcntzdGF0aWMjX2UodCxlLHMsaSl7Y29uc3Qgcj10LmZpcnN0Q2hpbGR8fHQ7ci5pZD1gJHtuLkFubm90YXRpb25QcmVmaXh9JHtlfWA7cy5hcHBlbmQodCk7aT8ubW92ZUVsZW1lbnRJbkRPTShzLHQsciwhMSl9c3RhdGljIHJlbmRlcih0KXtjb25zdHthbm5vdGF0aW9uczplLGRpdjpzLHZpZXdwb3J0OmEsYWNjZXNzaWJpbGl0eU1hbmFnZXI6b309dDt0aGlzLiN2ZShzLGEpO2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgZSl7aWYoYy5hbm5vdGF0aW9uVHlwZSE9PWkuQW5ub3RhdGlvblR5cGUuUE9QVVApe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmV9PWdldFJlY3REaW1zKGMucmVjdCk7aWYodDw9MHx8ZTw9MCljb250aW51ZX1jb25zdCBlPUFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUoe2RhdGE6YyxsYXllcjpzLHBhZ2U6dC5wYWdlLHZpZXdwb3J0OmEsbGlua1NlcnZpY2U6dC5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6dC5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOnQuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PXQucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgbi5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOnQuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyByLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzp0LmVuYWJsZVNjcmlwdGluZyxoYXNKU0FjdGlvbnM6dC5oYXNKU0FjdGlvbnMsZmllbGRPYmplY3RzOnQuZmllbGRPYmplY3RzLG1vdXNlU3RhdGU6dC5tb3VzZVN0YXRlfHx7aXNEb3duOiExfX0pO2lmKGUuaXNSZW5kZXJhYmxlKXtjb25zdCB0PWUucmVuZGVyKCk7Yy5oaWRkZW4mJih0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdCl7ZS5zdHlsZS56SW5kZXg9bCsrO0Fubm90YXRpb25MYXllci4jX2UoZSxjLmlkLHMsbyl9ZWxzZXt0LnN0eWxlLnpJbmRleD1sKys7ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQ/cy5wcmVwZW5kKHQpOkFubm90YXRpb25MYXllci4jX2UodCxjLmlkLHMsbyl9fX10aGlzLiN5ZShzLHQuYW5ub3RhdGlvbkNhbnZhc01hcCl9c3RhdGljIHVwZGF0ZSh0KXtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmUsZGl2OnMsdmlld3BvcnQ6aX09dDt0aGlzLiN2ZShzLGkpO3RoaXMuI3llKHMsZSk7cy5oaWRkZW49ITF9c3RhdGljI3ZlKHQse3dpZHRoOmUsaGVpZ2h0OnMscm90YXRpb246aX0pe2NvbnN0e3N0eWxlOm59PXQscj1pJTE4MCE9MCxhPU1hdGguZmxvb3IoZSkrInB4IixvPU1hdGguZmxvb3IocykrInB4IjtuLndpZHRoPXI/bzphO24uaGVpZ2h0PXI/YTpvO3Quc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLGkpfXN0YXRpYyN5ZSh0LGUpe2lmKGUpe2Zvcihjb25zdFtzLGldb2YgZSl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7c30iXWApO2lmKCFlKWNvbnRpbnVlO2NvbnN0e2ZpcnN0Q2hpbGQ6bn09ZTtuPyJDQU5WQVMiPT09bi5ub2RlTmFtZT9uLnJlcGxhY2VXaXRoKGkpOm4uYmVmb3JlKGkpOmUuYXBwZW5kKGkpfWUuY2xlYXIoKX19fWUuQW5ub3RhdGlvbkxheWVyPUFubm90YXRpb25MYXllcn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Db2xvckNvbnZlcnRlcnM9dm9pZCAwO2Z1bmN0aW9uIG1ha2VDb2xvckNvbXAodCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9ZS5Db2xvckNvbnZlcnRlcnM9Y2xhc3MgQ29sb3JDb252ZXJ0ZXJze3N0YXRpYyBDTVlLX0coW3QsZSxzLGldKXtyZXR1cm5bIkciLDEtTWF0aC5taW4oMSwuMyp0Ky41OSpzKy4xMSplK2kpXX1zdGF0aWMgR19DTVlLKFt0XSl7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLXRdfXN0YXRpYyBHX1JHQihbdF0pe3JldHVyblsiUkdCIix0LHQsdF19c3RhdGljIEdfSFRNTChbdF0pe2NvbnN0IGU9bWFrZUNvbG9yQ29tcCh0KTtyZXR1cm5gIyR7ZX0ke2V9JHtlfWB9c3RhdGljIFJHQl9HKFt0LGUsc10pe3JldHVyblsiRyIsLjMqdCsuNTkqZSsuMTEqc119c3RhdGljIFJHQl9IVE1MKFt0LGUsc10pe3JldHVybmAjJHttYWtlQ29sb3JDb21wKHQpfSR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAocyl9YH1zdGF0aWMgVF9IVE1MKCl7cmV0dXJuIiMwMDAwMDAwMCJ9c3RhdGljIENNWUtfUkdCKFt0LGUscyxpXSl7cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSx0K2kpLDEtTWF0aC5taW4oMSxzK2kpLDEtTWF0aC5taW4oMSxlK2kpXX1zdGF0aWMgQ01ZS19IVE1MKHQpe2NvbnN0IGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX1zdGF0aWMgUkdCX0NNWUsoW3QsZSxzXSl7Y29uc3QgaT0xLXQsbj0xLWUscj0xLXM7cmV0dXJuWyJDTVlLIixpLG4scixNYXRoLm1pbihpLG4scildfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5YZmFMYXllcj12b2lkIDA7dmFyIGk9cygxOSk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxzLGksbil7Y29uc3Qgcj1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gocy5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09ci52YWx1ZSYmKHQudGV4dENvbnRlbnQ9ci52YWx1ZSk7aWYoInByaW50Ij09PW4pYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXMuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09cy5hdHRyaWJ1dGVzLnR5cGUpe3IudmFsdWU9PT1zLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpyLnZhbHVlPT09cy5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09bilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1yLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIudmFsdWUpO2lmKCJwcmludCI9PT1uKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09ci52YWx1ZSlmb3IoY29uc3QgdCBvZiBzLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXIudmFsdWUmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9ITApO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57Y29uc3Qgcz10LnRhcmdldC5vcHRpb25zLG49LTE9PT1zLnNlbGVjdGVkSW5kZXg/IiI6c1tzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2kuc2V0VmFsdWUoZSx7dmFsdWU6bn0pfSkpfX1zdGF0aWMgc2V0QXR0cmlidXRlcyh7aHRtbDp0LGVsZW1lbnQ6ZSxzdG9yYWdlOnM9bnVsbCxpbnRlbnQ6aSxsaW5rU2VydmljZTpufSl7Y29uc3R7YXR0cmlidXRlczpyfT1lLGE9dCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50OyJyYWRpbyI9PT1yLnR5cGUmJihyLm5hbWU9YCR7ci5uYW1lfS0ke2l9YCk7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhyKSlpZihudWxsIT1zKXN3aXRjaChlKXtjYXNlImNsYXNzIjpzLmxlbmd0aCYmdC5zZXRBdHRyaWJ1dGUoZSxzLmpvaW4oIiAiKSk7YnJlYWs7Y2FzZSJkYXRhSWQiOmJyZWFrO2Nhc2UiaWQiOnQuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO2JyZWFrO2Nhc2Uic3R5bGUiOk9iamVjdC5hc3NpZ24odC5zdHlsZSxzKTticmVhaztjYXNlInRleHRDb250ZW50Ijp0LnRleHRDb250ZW50PXM7YnJlYWs7ZGVmYXVsdDooIWF8fCJocmVmIiE9PWUmJiJuZXdXaW5kb3ciIT09ZSkmJnQuc2V0QXR0cmlidXRlKGUscyl9YSYmbi5hZGRMaW5rQXR0cmlidXRlcyh0LHIuaHJlZixyLm5ld1dpbmRvdyk7cyYmci5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKHQsci5kYXRhSWQsZSxzKX1zdGF0aWMgcmVuZGVyKHQpe2NvbnN0IGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxzPXQubGlua1NlcnZpY2Usbj10LnhmYUh0bWwscj10LmludGVudHx8ImRpc3BsYXkiLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLm5hbWUpO24uYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmEsZWxlbWVudDpuLGludGVudDpyLGxpbmtTZXJ2aWNlOnN9KTtjb25zdCBvPVtbbiwtMSxhXV0sbD10LmRpdjtsLmFwcGVuZChhKTtpZih0LnZpZXdwb3J0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7bC5zdHlsZS50cmFuc2Zvcm09ZX0icmljaFRleHQiIT09ciYmbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwieGZhTGF5ZXIgeGZhRm9udCIpO2NvbnN0IGM9W107Zm9yKDtvLmxlbmd0aD4wOyl7Y29uc3RbdCxuLGFdPW8uYXQoLTEpO2lmKG4rMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtvLnBvcCgpO2NvbnRpbnVlfWNvbnN0IGw9dC5jaGlsZHJlblsrK28uYXQoLTEpWzFdXTtpZihudWxsPT09bCljb250aW51ZTtjb25zdHtuYW1lOmh9PWw7aWYoIiN0ZXh0Ij09PWgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7Yy5wdXNoKHQpO2EuYXBwZW5kKHQpO2NvbnRpbnVlfWxldCBkO2Q9bD8uYXR0cmlidXRlcz8ueG1sbnM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuYXR0cmlidXRlcy54bWxucyxoKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGgpO2EuYXBwZW5kKGQpO2wuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmQsZWxlbWVudDpsLHN0b3JhZ2U6ZSxpbnRlbnQ6cixsaW5rU2VydmljZTpzfSk7aWYobC5jaGlsZHJlbiYmbC5jaGlsZHJlbi5sZW5ndGg+MClvLnB1c2goW2wsLTEsZF0pO2Vsc2UgaWYobC52YWx1ZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtpLlhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGgpJiZjLnB1c2godCk7ZC5hcHBlbmQodCl9fWZvcihjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSl0LnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCEwKTtyZXR1cm57dGV4dERpdnM6Y319c3RhdGljIHVwZGF0ZSh0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7dC5kaXYuc3R5bGUudHJhbnNmb3JtPWU7dC5kaXYuaGlkZGVuPSExfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UZXh0TGF5ZXJSZW5kZXJUYXNrPXZvaWQgMDtlLnJlbmRlclRleHRMYXllcj1mdW5jdGlvbiByZW5kZXJUZXh0TGF5ZXIodCl7Y29uc3QgZT1uZXcgVGV4dExheWVyUmVuZGVyVGFzayh7dGV4dENvbnRlbnQ6dC50ZXh0Q29udGVudCx0ZXh0Q29udGVudFN0cmVhbTp0LnRleHRDb250ZW50U3RyZWFtLGNvbnRhaW5lcjp0LmNvbnRhaW5lcix2aWV3cG9ydDp0LnZpZXdwb3J0LHRleHREaXZzOnQudGV4dERpdnMsdGV4dENvbnRlbnRJdGVtc1N0cjp0LnRleHRDb250ZW50SXRlbXNTdHJ9KTtlLl9yZW5kZXIodC50aW1lb3V0KTtyZXR1cm4gZX07dmFyIGk9cygxKTtjb25zdCBuPTMwLHI9bmV3IE1hcDtmdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxzLGEpe2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGw9e2FuZ2xlOjAsY2FudmFzV2lkdGg6MCxoYXNUZXh0OiIiIT09ZS5zdHIsaGFzRU9MOmUuaGFzRU9MLGZvbnRTaXplOjB9O3QuX3RleHREaXZzLnB1c2gobyk7Y29uc3QgYz1pLlV0aWwudHJhbnNmb3JtKHQuX3ZpZXdwb3J0LnRyYW5zZm9ybSxlLnRyYW5zZm9ybSk7bGV0IGg9TWF0aC5hdGFuMihjWzFdLGNbMF0pO2NvbnN0IGQ9c1tlLmZvbnROYW1lXTtkLnZlcnRpY2FsJiYoaCs9TWF0aC5QSS8yKTtjb25zdCB1PU1hdGguaHlwb3QoY1syXSxjWzNdKSxwPXUqZnVuY3Rpb24gZ2V0QXNjZW50KHQsZSl7Y29uc3Qgcz1yLmdldCh0KTtpZihzKXJldHVybiBzO2Uuc2F2ZSgpO2UuZm9udD1gMzBweCAke3R9YDtjb25zdCBpPWUubWVhc3VyZVRleHQoIiIpO2xldCBhPWkuZm9udEJvdW5kaW5nQm94QXNjZW50LG89TWF0aC5hYnMoaS5mb250Qm91bmRpbmdCb3hEZXNjZW50KTtpZihhKXtlLnJlc3RvcmUoKTtjb25zdCBzPWEvKGErbyk7ci5zZXQodCxzKTtyZXR1cm4gc31lLnN0cm9rZVN0eWxlPSJyZWQiO2UuY2xlYXJSZWN0KDAsMCxuLG4pO2Uuc3Ryb2tlVGV4dCgiZyIsMCwwKTtsZXQgbD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO289MDtmb3IobGV0IHQ9bC5sZW5ndGgtMS0zO3Q+PTA7dC09NClpZihsW3RdPjApe289TWF0aC5jZWlsKHQvNC9uKTticmVha31lLmNsZWFyUmVjdCgwLDAsbixuKTtlLnN0cm9rZVRleHQoIkEiLDAsbik7bD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO2E9MDtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kz00KWlmKGxbdF0+MCl7YT1uLU1hdGguZmxvb3IodC80L24pO2JyZWFrfWUucmVzdG9yZSgpO2lmKGEpe2NvbnN0IGU9YS8oYStvKTtyLnNldCh0LGUpO3JldHVybiBlfXIuc2V0KHQsLjgpO3JldHVybi44fShkLmZvbnRGYW1pbHksYSk7bGV0IGcsbTtpZigwPT09aCl7Zz1jWzRdO209Y1s1XS1wfWVsc2V7Zz1jWzRdK3AqTWF0aC5zaW4oaCk7bT1jWzVdLXAqTWF0aC5jb3MoaCl9by5zdHlsZS5sZWZ0PWAke2d9cHhgO28uc3R5bGUudG9wPWAke219cHhgO28uc3R5bGUuZm9udFNpemU9YCR7dX1weGA7by5zdHlsZS5mb250RmFtaWx5PWQuZm9udEZhbWlseTtsLmZvbnRTaXplPXU7by5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtvLnRleHRDb250ZW50PWUuc3RyO28uZGlyPWUuZGlyO3QuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYoby5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpOzAhPT1oJiYobC5hbmdsZT1oKigxODAvTWF0aC5QSSkpO2xldCBmPSExO2lmKGUuc3RyLmxlbmd0aD4xKWY9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7Y29uc3QgdD1NYXRoLmFicyhlLnRyYW5zZm9ybVswXSkscz1NYXRoLmFicyhlLnRyYW5zZm9ybVszXSk7dCE9PXMmJk1hdGgubWF4KHQscykvTWF0aC5taW4odCxzKT4xLjUmJihmPSEwKX1mJiYoZC52ZXJ0aWNhbD9sLmNhbnZhc1dpZHRoPWUuaGVpZ2h0KnQuX3ZpZXdwb3J0LnNjYWxlOmwuY2FudmFzV2lkdGg9ZS53aWR0aCp0Ll92aWV3cG9ydC5zY2FsZSk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KG8sbCk7dC5fdGV4dENvbnRlbnRTdHJlYW0mJnQuX2xheW91dFRleHQobyl9ZnVuY3Rpb24gcmVuZGVyKHQpe2lmKHQuX2NhbmNlbGVkKXJldHVybjtjb25zdCBlPXQuX3RleHREaXZzLHM9dC5fY2FwYWJpbGl0eTtpZihlLmxlbmd0aD4xZTUpe3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9ZWxzZXtpZighdC5fdGV4dENvbnRlbnRTdHJlYW0pZm9yKGNvbnN0IHMgb2YgZSl0Ll9sYXlvdXRUZXh0KHMpO3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9fWNsYXNzIFRleHRMYXllclJlbmRlclRhc2t7Y29uc3RydWN0b3Ioe3RleHRDb250ZW50OnQsdGV4dENvbnRlbnRTdHJlYW06ZSxjb250YWluZXI6cyx2aWV3cG9ydDpuLHRleHREaXZzOnIsdGV4dENvbnRlbnRJdGVtc1N0cjphfSl7dGhpcy5fdGV4dENvbnRlbnQ9dDt0aGlzLl90ZXh0Q29udGVudFN0cmVhbT1lO3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2RvY3VtZW50PXMub3duZXJEb2N1bWVudDt0aGlzLl92aWV3cG9ydD1uO3RoaXMuX3RleHREaXZzPXJ8fFtdO3RoaXMuX3RleHRDb250ZW50SXRlbXNTdHI9YXx8W107dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZT1udWxsO3RoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseT1udWxsO3RoaXMuX2xheW91dFRleHRDdHg9bnVsbDt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1uZXcgV2Vha01hcDt0aGlzLl9yZW5kZXJpbmdEb25lPSExO3RoaXMuX2NhbmNlbGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsO3RoaXMuX2JvdW5kcz1bXTt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPWdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYXBhYmlsaXR5LnByb21pc2UuZmluYWxseSgoKCk9Pnt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1udWxsO2lmKHRoaXMuX2xheW91dFRleHRDdHgpe3RoaXMuX2xheW91dFRleHRDdHguY2FudmFzLndpZHRoPTA7dGhpcy5fbGF5b3V0VGV4dEN0eC5jYW52YXMuaGVpZ2h0PTA7dGhpcy5fbGF5b3V0VGV4dEN0eD1udWxsfX0pKS5jYXRjaCgoKCk9Pnt9KSl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWNhbmNlbCgpe3RoaXMuX2NhbmNlbGVkPSEwO2lmKHRoaXMuX3JlYWRlcil7dGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoKCk9Pnt9KSk7dGhpcy5fcmVhZGVyPW51bGx9aWYobnVsbCE9PXRoaXMuX3JlbmRlclRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy5fcmVuZGVyVGltZXIpO3RoaXMuX3JlbmRlclRpbWVyPW51bGx9dGhpcy5fY2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfV9wcm9jZXNzSXRlbXModCxlKXtmb3IoY29uc3QgcyBvZiB0KWlmKHZvaWQgMCE9PXMuc3RyKXt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyLnB1c2gocy5zdHIpO2FwcGVuZFRleHQodGhpcyxzLGUsdGhpcy5fbGF5b3V0VGV4dEN0eCl9ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09cy50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PXMudHlwZSl7Y29uc3QgdD10aGlzLl9jb250YWluZXI7dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFya2VkQ29udGVudCIpO251bGwhPT1zLmlkJiZ0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsYCR7cy5pZH1gKTt0LmFwcGVuZCh0aGlzLl9jb250YWluZXIpfWVsc2UiZW5kTWFya2VkQ29udGVudCI9PT1zLnR5cGUmJih0aGlzLl9jb250YWluZXI9dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUpfV9sYXlvdXRUZXh0KHQpe2NvbnN0IGU9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO2xldCBzPSIiO2lmKDAhPT1lLmNhbnZhc1dpZHRoJiZlLmhhc1RleHQpe2NvbnN0e2ZvbnRGYW1pbHk6aX09dC5zdHlsZSx7Zm9udFNpemU6bn09ZTtpZihuIT09dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZXx8aSE9PXRoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseSl7dGhpcy5fbGF5b3V0VGV4dEN0eC5mb250PWAke24qdGhpcy5fZGV2aWNlUGl4ZWxSYXRpb31weCAke2l9YDt0aGlzLl9sYXlvdXRUZXh0TGFzdEZvbnRTaXplPW47dGhpcy5fbGF5b3V0VGV4dExhc3RGb250RmFtaWx5PWl9Y29uc3R7d2lkdGg6cn09dGhpcy5fbGF5b3V0VGV4dEN0eC5tZWFzdXJlVGV4dCh0LnRleHRDb250ZW50KTtyPjAmJihzPWBzY2FsZVgoJHt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvKmUuY2FudmFzV2lkdGgvcn0pYCl9MCE9PWUuYW5nbGUmJihzPWByb3RhdGUoJHtlLmFuZ2xlfWRlZykgJHtzfWApO3MubGVuZ3RoPjAmJih0LnN0eWxlLnRyYW5zZm9ybT1zKTtlLmhhc1RleHQmJnRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7aWYoZS5oYXNFT0wpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTt0LnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodCl9fV9yZW5kZXIodD0wKXtjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7bGV0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3IuaGVpZ2h0PXIud2lkdGg9bjt0aGlzLl9sYXlvdXRUZXh0Q3R4PXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2lmKHRoaXMuX3RleHRDb250ZW50KXtjb25zdCB0PXRoaXMuX3RleHRDb250ZW50Lml0ZW1zLHM9dGhpcy5fdGV4dENvbnRlbnQuc3R5bGVzO3RoaXMuX3Byb2Nlc3NJdGVtcyh0LHMpO2UucmVzb2x2ZSgpfWVsc2V7aWYoIXRoaXMuX3RleHRDb250ZW50U3RyZWFtKXRocm93IG5ldyBFcnJvcignTmVpdGhlciAidGV4dENvbnRlbnQiIG5vciAidGV4dENvbnRlbnRTdHJlYW0iIHBhcmFtZXRlcnMgc3BlY2lmaWVkLicpO3tjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKCgoe3ZhbHVlOnQsZG9uZTppfSk9PntpZihpKWUucmVzb2x2ZSgpO2Vsc2V7T2JqZWN0LmFzc2lnbihzLHQuc3R5bGVzKTt0aGlzLl9wcm9jZXNzSXRlbXModC5pdGVtcyxzKTtwdW1wKCl9fSksZS5yZWplY3QpfTt0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTdHJlYW0uZ2V0UmVhZGVyKCk7cHVtcCgpfX1lLnByb21pc2UudGhlbigoKCk9PntzPW51bGw7dD90aGlzLl9yZW5kZXJUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3JlbmRlcih0aGlzKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsfSksdCk6cmVuZGVyKHRoaXMpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1lLlRleHRMYXllclJlbmRlclRhc2s9VGV4dExheWVyUmVuZGVyVGFza30sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1zKDYpLG49cygxKSxyPXMoMTIpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKCl7KDAsbi51bnJlYWNoYWJsZSkoIk5vdCBpbXBsZW1lbnRlZDogU1ZHR3JhcGhpY3MiKX19O2UuU1ZHR3JhcGhpY3M9YTt7Y29uc3Qgbz17Zm9udFN0eWxlOiJub3JtYWwiLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZmlsbENvbG9yOiIjMDAwMDAwIn0sbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixoPVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sZD1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0LGU9IiIscz0hMSl7aWYoVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYhcylyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbdF0se3R5cGU6ZX0pKTtjb25zdCBpPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7bGV0IG49YGRhdGE6JHtlfTtiYXNlNjQsYDtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKz0zKXtjb25zdCByPTI1NSZ0W2VdLGE9MjU1JnRbZSsxXSxvPTI1NSZ0W2UrMl07bis9aVtyPj4yXStpWygzJnIpPDw0fGE+PjRdK2lbZSsxPHM/KDE1JmEpPDwyfG8+PjY6NjRdK2lbZSsyPHM/NjMmbzo2NF19cmV0dXJuIG59LHU9ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KFsxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdKSxlPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcz10O2ZvcihsZXQgdD0wO3Q8ODt0Kyspcz0xJnM/Mzk4ODI5MjM4NF5zPj4xJjIxNDc0ODM2NDc6cz4+MSYyMTQ3NDgzNjQ3O2VbdF09c31mdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQscyxpLG4pe2xldCByPW47Y29uc3QgYT1zLmxlbmd0aDtpW3JdPWE+PjI0JjI1NTtpW3IrMV09YT4+MTYmMjU1O2lbcisyXT1hPj44JjI1NTtpW3IrM109MjU1JmE7cis9NDtpW3JdPTI1NSZ0LmNoYXJDb2RlQXQoMCk7aVtyKzFdPTI1NSZ0LmNoYXJDb2RlQXQoMSk7aVtyKzJdPTI1NSZ0LmNoYXJDb2RlQXQoMik7aVtyKzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyk7cis9NDtpLnNldChzLHIpO3IrPXMubGVuZ3RoO2NvbnN0IG89ZnVuY3Rpb24gY3JjMzIodCxzLGkpe2xldCBuPS0xO2ZvcihsZXQgcj1zO3I8aTtyKyspe2NvbnN0IHM9MjU1JihuXnRbcl0pO249bj4+PjheZVtzXX1yZXR1cm4tMV5ufShpLG4rNCxyKTtpW3JdPW8+PjI0JjI1NTtpW3IrMV09bz4+MTYmMjU1O2lbcisyXT1vPj44JjI1NTtpW3IrM109MjU1Jm99ZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl7bGV0IGU9dC5sZW5ndGg7Y29uc3Qgcz02NTUzNSxpPU1hdGguY2VpbChlL3MpLG49bmV3IFVpbnQ4QXJyYXkoMitlKzUqaSs0KTtsZXQgcj0wO25bcisrXT0xMjA7bltyKytdPTE1NjtsZXQgYT0wO2Zvcig7ZT5zOyl7bltyKytdPTA7bltyKytdPTI1NTtuW3IrK109MjU1O25bcisrXT0wO25bcisrXT0wO24uc2V0KHQuc3ViYXJyYXkoYSxhK3MpLHIpO3IrPXM7YSs9cztlLT1zfW5bcisrXT0xO25bcisrXT0yNTUmZTtuW3IrK109ZT4+OCYyNTU7bltyKytdPTI1NSZ+ZTtuW3IrK109KDY1NTM1Jn5lKT4+OCYyNTU7bi5zZXQodC5zdWJhcnJheShhKSxyKTtyKz10Lmxlbmd0aC1hO2NvbnN0IG89ZnVuY3Rpb24gYWRsZXIzMih0LGUscyl7bGV0IGk9MSxuPTA7Zm9yKGxldCByPWU7cjxzOysrcil7aT0oaSsoMjU1JnRbcl0pKSU2NTUyMTtuPShuK2kpJTY1NTIxfXJldHVybiBuPDwxNnxpfSh0LDAsdC5sZW5ndGgpO25bcisrXT1vPj4yNCYyNTU7bltyKytdPW8+PjE2JjI1NTtuW3IrK109bz4+OCYyNTU7bltyKytdPTI1NSZvO3JldHVybiBufWZ1bmN0aW9uIGVuY29kZShlLHMsaSxhKXtjb25zdCBvPWUud2lkdGgsbD1lLmhlaWdodDtsZXQgYyxoLGQ7Y29uc3QgdT1lLmRhdGE7c3dpdGNoKHMpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6aD0wO2M9MTtkPW8rNz4+MzticmVhaztjYXNlIG4uSW1hZ2VLaW5kLlJHQl8yNEJQUDpoPTI7Yz04O2Q9MypvO2JyZWFrO2Nhc2Ugbi5JbWFnZUtpbmQuUkdCQV8zMkJQUDpoPTY7Yz04O2Q9NCpvO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWNvbnN0IHA9bmV3IFVpbnQ4QXJyYXkoKDErZCkqbCk7bGV0IGc9MCxtPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7cFtnKytdPTA7cC5zZXQodS5zdWJhcnJheShtLG0rZCksZyk7bSs9ZDtnKz1kfWlmKHM9PT1uLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmYSl7Zz0wO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2crKztmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbZysrXV49MjU1fX1jb25zdCBmPW5ldyBVaW50OEFycmF5KFtvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsYyxoLDAsMCwwXSksYj1mdW5jdGlvbiBkZWZsYXRlU3luYyh0KXtpZighci5pc05vZGVKUylyZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7dHJ5e2xldCBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO2NvbnN0IHM9cmVxdWlyZSgiemxpYiIpLmRlZmxhdGVTeW5jKGUse2xldmVsOjl9KTtyZXR1cm4gcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKX1jYXRjaCh0KXsoMCxuLndhcm4pKCJOb3QgY29tcHJlc3NpbmcgUE5HIGJlY2F1c2UgemxpYi5kZWZsYXRlU3luYyBpcyB1bmF2YWlsYWJsZTogIit0KX1yZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl9KHApLEE9dC5sZW5ndGgrMzYrZi5sZW5ndGgrYi5sZW5ndGgsXz1uZXcgVWludDhBcnJheShBKTtsZXQgdj0wO18uc2V0KHQsdik7dis9dC5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUhEUiIsZixfLHYpO3YrPTEyK2YubGVuZ3RoO3dyaXRlUG5nQ2h1bmsoIklEQVRBIixiLF8sdik7dis9MTIrYi5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUVORCIsbmV3IFVpbnQ4QXJyYXkoMCksXyx2KTtyZXR1cm4gY3JlYXRlT2JqZWN0VVJMKF8sImltYWdlL3BuZyIsaSl9cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcodCxlLHMpe3JldHVybiBlbmNvZGUodCx2b2lkIDA9PT10LmtpbmQ/bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6dC5raW5kLGUscyl9fSgpO2NsYXNzIFNWR0V4dHJhU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLmZvbnRXZWlnaHQ9by5mb250V2VpZ2h0O3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1uLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW8uZmlsbENvbG9yO3RoaXMuc3Ryb2tlQ29sb3I9IiMwMDAwMDAiO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5saW5lSm9pbj0iIjt0aGlzLmxpbmVDYXA9IiI7dGhpcy5taXRlckxpbWl0PTA7dGhpcy5kYXNoQXJyYXk9W107dGhpcy5kYXNoUGhhc2U9MDt0aGlzLmRlcGVuZGVuY2llcz1bXTt0aGlzLmFjdGl2ZUNsaXBVcmw9bnVsbDt0aGlzLmNsaXBHcm91cD1udWxsO3RoaXMubWFza0lkPSIifWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9c2V0Q3VycmVudFBvaW50KHQsZSl7dGhpcy54PXQ7dGhpcy55PWV9fWZ1bmN0aW9uIG9wTGlzdFRvVHJlZSh0KXtsZXQgZT1bXTtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpaWYoInNhdmUiIT09aS5mbikicmVzdG9yZSI9PT1pLmZuP2U9cy5wb3AoKTplLnB1c2goaSk7ZWxzZXtlLnB1c2goe2ZuSWQ6OTIsZm46Imdyb3VwIixpdGVtczpbXX0pO3MucHVzaChlKTtlPWUuYXQoLTEpLml0ZW1zfXJldHVybiBlfWZ1bmN0aW9uIHBmKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTtjb25zdCBlPXQudG9GaXhlZCgxMCk7bGV0IHM9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3NdKXJldHVybiBlO2Rve3MtLX13aGlsZSgiMCI9PT1lW3NdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3NdP3M6cysxKX1mdW5jdGlvbiBwbSh0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOmBzY2FsZSgke3BmKHRbMF0pfSAke3BmKHRbM10pfSlgO2lmKHRbMF09PT10WzNdJiZ0WzFdPT09LXRbMl0pe3JldHVybmByb3RhdGUoJHtwZigxODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEkpfSlgfX1lbHNlIGlmKDE9PT10WzBdJiYwPT09dFsxXSYmMD09PXRbMl0mJjE9PT10WzNdKXJldHVybmB0cmFuc2xhdGUoJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYDtyZXR1cm5gbWF0cml4KCR7cGYodFswXSl9ICR7cGYodFsxXSl9ICR7cGYodFsyXSl9ICR7cGYodFszXSl9ICR7cGYodFs0XSl9ICR7cGYodFs1XSl9KWB9bGV0IHA9MCxnPTAsbT0wO2UuU1ZHR3JhcGhpY3M9YT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscz0hMSl7KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFzO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIG4uT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW24uT1BTW3RdXT10fWdldE9iamVjdCh0LGU9bnVsbCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMudHJhbnNmb3JtTWF0cml4KTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpO3RoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCk7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO3RoaXMudGdycD1udWxsfWdyb3VwKHQpe3RoaXMuc2F2ZSgpO3RoaXMuZXhlY3V0ZU9wVHJlZSh0KTt0aGlzLnJlc3RvcmUoKX1sb2FkRGVwZW5kZW5jaWVzKHQpe2NvbnN0IGU9dC5mbkFycmF5LHM9dC5hcmdzQXJyYXk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKGVbdF09PT1uLk9QUy5kZXBlbmRlbmN5KWZvcihjb25zdCBlIG9mIHNbdF0pe2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqczp0aGlzLm9ianMscz1uZXcgUHJvbWlzZSgocz0+e3QuZ2V0KGUscyl9KSk7dGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHMpfXJldHVybiBQcm9taXNlLmFsbCh0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzKX10cmFuc2Zvcm0odCxlLHMsaSxyLGEpe2NvbnN0IG89W3QsZSxzLGkscixhXTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLlV0aWwudHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4LG8pO3RoaXMudGdycD1udWxsfWdldFNWRyh0LGUpe3RoaXMudmlld3BvcnQ9ZTtjb25zdCBzPXRoaXMuX2luaXRpYWxpemUoZSk7cmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyh0KS50aGVuKCgoKT0+e3RoaXMudHJhbnNmb3JtTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3RoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QodCkpO3JldHVybiBzfSkpfWNvbnZlcnRPcExpc3QodCl7Y29uc3QgZT10aGlzLl9vcGVyYXRvcklkTWFwcGluZyxzPXQuYXJnc0FycmF5LGk9dC5mbkFycmF5LG49W107Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWlbdF07bi5wdXNoKHtmbklkOnIsZm46ZVtyXSxhcmdzOnNbdF19KX1yZXR1cm4gb3BMaXN0VG9UcmVlKG4pfWV4ZWN1dGVPcFRyZWUodCl7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmZuLHM9ZS5mbklkLGk9ZS5hcmdzO3N3aXRjaCgwfHMpe2Nhc2Ugbi5PUFMuYmVnaW5UZXh0OnRoaXMuYmVnaW5UZXh0KCk7YnJlYWs7Y2FzZSBuLk9QUy5kZXBlbmRlbmN5OmJyZWFrO2Nhc2Ugbi5PUFMuc2V0TGVhZGluZzp0aGlzLnNldExlYWRpbmcoaSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6dGhpcy5zZXRMZWFkaW5nTW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldEZvbnQ6dGhpcy5zZXRGb250KGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1RleHQ6Y2FzZSBuLk9QUy5zaG93U3BhY2VkVGV4dDp0aGlzLnNob3dUZXh0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp0aGlzLmVuZFRleHQoKTticmVhaztjYXNlIG4uT1BTLm1vdmVUZXh0OnRoaXMubW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldENoYXJTcGFjaW5nOnRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRXb3JkU3BhY2luZzp0aGlzLnNldFdvcmRTcGFjaW5nKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOnRoaXMuc2V0SFNjYWxlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dE1hdHJpeDp0aGlzLnNldFRleHRNYXRyaXgoaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6dGhpcy5zZXRUZXh0UmlzZShpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOnRoaXMuc2V0VGV4dFJlbmRlcmluZ01vZGUoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lV2lkdGg6dGhpcy5zZXRMaW5lV2lkdGgoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lSm9pbjp0aGlzLnNldExpbmVKb2luKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0TGluZUNhcDp0aGlzLnNldExpbmVDYXAoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRNaXRlckxpbWl0OnRoaXMuc2V0TWl0ZXJMaW1pdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxSR0JDb2xvcjp0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLGlbMV0saVsyXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VSR0JDb2xvcjp0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yTjp0aGlzLnNldFN0cm9rZUNvbG9yTihpKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46dGhpcy5zZXRGaWxsQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hhZGluZ0ZpbGw6dGhpcy5zaGFkaW5nRmlsbChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldERhc2g6dGhpcy5zZXREYXNoKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGbGF0bmVzczp0aGlzLnNldEZsYXRuZXNzKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOnRoaXMuc2V0R1N0YXRlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZmlsbDp0aGlzLmZpbGwoKTticmVhaztjYXNlIG4uT1BTLmVvRmlsbDp0aGlzLmVvRmlsbCgpO2JyZWFrO2Nhc2Ugbi5PUFMuc3Ryb2tlOnRoaXMuc3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5maWxsU3Ryb2tlOnRoaXMuZmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9GaWxsU3Ryb2tlOnRoaXMuZW9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbGlwOnRoaXMuY2xpcCgibm9uemVybyIpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9DbGlwOnRoaXMuY2xpcCgiZXZlbm9kZCIpO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOnRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludEltYWdlWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VNYXNrWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbjp0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRGb3JtWE9iamVjdEVuZDp0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDp0aGlzLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VTdHJva2U6dGhpcy5jbG9zZVN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VGaWxsU3Ryb2tlOnRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbG9zZUVPRmlsbFN0cm9rZTp0aGlzLmNsb3NlRU9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTp0aGlzLm5leHRMaW5lKCk7YnJlYWs7Y2FzZSBuLk9QUy50cmFuc2Zvcm06dGhpcy50cmFuc2Zvcm0oaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuY29uc3RydWN0UGF0aDp0aGlzLmNvbnN0cnVjdFBhdGgoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLmVuZFBhdGg6dGhpcy5lbmRQYXRoKCk7YnJlYWs7Y2FzZSA5Mjp0aGlzLmdyb3VwKGUuaXRlbXMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBvcGVyYXRvciAke3R9YCl9fX1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9c2V0VGV4dE1hdHJpeCh0LGUscyxpLG4scil7Y29uc3QgYT10aGlzLmN1cnJlbnQ7YS50ZXh0TWF0cml4PWEubGluZU1hdHJpeD1bdCxlLHMsaSxuLHJdO2EudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTthLng9YS5saW5lWD0wO2EueT1hLmxpbmVZPTA7YS54Y29vcmRzPVtdO2EueWNvb3Jkcz1bXTthLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTthLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixhLmZvbnRGYW1pbHkpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihhLmZvbnRTaXplKX1weGApO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWEueSkpO2EudHh0RWxlbWVudD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRleHQiKTthLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pfWJlZ2luVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QueD10LmxpbmVYPTA7dC55PXQubGluZVk9MDt0LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dC5saW5lTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3QudGV4dE1hdHJpeFNjYWxlPTE7dC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dC50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO3QudHh0Z3JwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3QueGNvb3Jkcz1bXTt0Lnljb29yZHM9W119bW92ZVRleHQodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtzLng9cy5saW5lWCs9dDtzLnk9cy5saW5lWSs9ZTtzLnhjb29yZHM9W107cy55Y29vcmRzPVtdO3MudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO3MudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHMuZm9udEZhbWlseSk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKHMuZm9udFNpemUpfXB4YCk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtcy55KSl9c2hvd1RleHQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz1lLmZvbnQsaT1lLmZvbnRTaXplO2lmKDA9PT1pKXJldHVybjtjb25zdCByPWUuZm9udFNpemVTY2FsZSxhPWUuY2hhclNwYWNpbmcsYz1lLndvcmRTcGFjaW5nLGg9ZS5mb250RGlyZWN0aW9uLGQ9ZS50ZXh0SFNjYWxlKmgsdT1zLnZlcnRpY2FsLHA9dT8xOi0xLGc9cy5kZWZhdWx0Vk1ldHJpY3MsbT1pKmUuZm9udE1hdHJpeFswXTtsZXQgZj0wO2Zvcihjb25zdCBuIG9mIHQpe2lmKG51bGw9PT1uKXtmKz1oKmM7Y29udGludWV9aWYoIm51bWJlciI9PXR5cGVvZiBuKXtmKz1wKm4qaS8xZTM7Y29udGludWV9Y29uc3QgdD0obi5pc1NwYWNlP2M6MCkrYSxvPW4uZm9udENoYXI7bGV0IGwsZCxiLEE9bi53aWR0aDtpZih1KXtsZXQgdDtjb25zdCBlPW4udm1ldHJpY3x8Zzt0PW4udm1ldHJpYz9lWzFdOi41KkE7dD0tdCptO2NvbnN0IHM9ZVsyXSptO0E9ZT8tZVswXTpBO2w9dC9yO2Q9KGYrcykvcn1lbHNle2w9Zi9yO2Q9MH1pZihuLmlzSW5Gb250fHxzLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrbCk7dSYmZS55Y29vcmRzLnB1c2goLWUueStkKTtlLnRzcGFuLnRleHRDb250ZW50Kz1vfWI9dT9BKm0tdCpoOkEqbSt0Kmg7Zis9Yn1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk7dT9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7dT9lLnktPWY6ZS54Kz1mKmQ7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYoZS5mb250U2l6ZSl9cHhgKTtlLmZvbnRTdHlsZSE9PW8uZm9udFN0eWxlJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc3R5bGUiLGUuZm9udFN0eWxlKTtlLmZvbnRXZWlnaHQhPT1vLmZvbnRXZWlnaHQmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCk7Y29uc3QgYj1lLnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSl7ZS5maWxsQ29sb3IhPT1vLmZpbGxDb2xvciYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIixlLmZpbGxDb2xvcik7ZS5maWxsQWxwaGE8MSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLGUuZmlsbEFscGhhKX1lbHNlIGUudGV4dFJlbmRlcmluZ01vZGU9PT1uLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsInRyYW5zcGFyZW50Iik6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO2lmKGI9PT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRXx8Yj09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0Upe2NvbnN0IHQ9MS8oZS50ZXh0TWF0cml4U2NhbGV8fDEpO3RoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXMoZS50c3Bhbix0KX1sZXQgQT1lLnRleHRNYXRyaXg7aWYoMCE9PWUudGV4dFJpc2Upe0E9QS5zbGljZSgpO0FbNV0rPWUudGV4dFJpc2V9ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsYCR7cG0oQSl9IHNjYWxlKCR7cGYoZCl9LCAtMSlgKTtlLnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobCwieG1sOnNwYWNlIiwicHJlc2VydmUiKTtlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pO2UudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9YWRkRm9udFN0eWxlKHQpe2lmKCF0LmRhdGEpdGhyb3cgbmV3IEVycm9yKCdhZGRGb250U3R5bGU6IE5vIGZvbnQgZGF0YSBhdmFpbGFibGUsIGVuc3VyZSB0aGF0IHRoZSAiZm9udEV4dHJhUHJvcGVydGllcyIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7aWYoIXRoaXMuY3NzU3R5bGUpe3RoaXMuY3NzU3R5bGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdHlsZSIpO3RoaXMuY3NzU3R5bGUuc2V0QXR0cmlidXRlTlMobnVsbCwidHlwZSIsInRleHQvY3NzIik7dGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKX1jb25zdCBlPWNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsdC5taW1ldHlwZSx0aGlzLmZvcmNlRGF0YVNjaGVtYSk7dGhpcy5jc3NTdHlsZS50ZXh0Q29udGVudCs9YEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIiR7dC5sb2FkZWROYW1lfSI7IHNyYzogdXJsKCR7ZX0pOyB9XG5gfXNldEZvbnQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz10aGlzLmNvbW1vbk9ianMuZ2V0KHRbMF0pO2xldCBpPXRbMV07ZS5mb250PXM7aWYodGhpcy5lbWJlZEZvbnRzJiYhcy5taXNzaW5nRmlsZSYmIXRoaXMuZW1iZWRkZWRGb250c1tzLmxvYWRlZE5hbWVdKXt0aGlzLmFkZEZvbnRTdHlsZShzKTt0aGlzLmVtYmVkZGVkRm9udHNbcy5sb2FkZWROYW1lXT1zfWUuZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVg7bGV0IHI9Im5vcm1hbCI7cy5ibGFjaz9yPSI5MDAiOnMuYm9sZCYmKHI9ImJvbGQiKTtjb25zdCBhPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO2lmKGk8MCl7aT0taTtlLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBlLmZvbnREaXJlY3Rpb249MTtlLmZvbnRTaXplPWk7ZS5mb250RmFtaWx5PXMubG9hZGVkTmFtZTtlLmZvbnRXZWlnaHQ9cjtlLmZvbnRTdHlsZT1hO2UudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWUueSkpO2UueGNvb3Jkcz1bXTtlLnljb29yZHM9W119ZW5kVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQudGV4dFJlbmRlcmluZ01vZGUmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHJiZ0LnR4dEVsZW1lbnQ/Lmhhc0NoaWxkTm9kZXMoKSl7dC5lbGVtZW50PXQudHh0RWxlbWVudDt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19c2V0TGluZVdpZHRoKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9c2V0TGluZUNhcCh0KXt0aGlzLmN1cnJlbnQubGluZUNhcD1oW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1kW3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH1zZXRTdHJva2VBbHBoYSh0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH1zZXRTdHJva2VSR0JDb2xvcih0LGUscyl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpfXNldEZpbGxBbHBoYSh0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9c2V0RmlsbFJHQkNvbG9yKHQsZSxzKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpO3RoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dGhpcy5jdXJyZW50Lnhjb29yZHM9W107dGhpcy5jdXJyZW50Lnljb29yZHM9W119c2V0U3Ryb2tlQ29sb3JOKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9c2V0RmlsbENvbG9yTih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zaGFkaW5nRmlsbCh0KXtjb25zdCBlPXRoaXMudmlld3BvcnQud2lkdGgscz10aGlzLnZpZXdwb3J0LmhlaWdodCxpPW4uVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxyPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxpKSxhPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCxzXSxpKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSwwXSxpKSxsPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSxpKSxjPU1hdGgubWluKHJbMF0sYVswXSxvWzBdLGxbMF0pLGg9TWF0aC5taW4oclsxXSxhWzFdLG9bMV0sbFsxXSksZD1NYXRoLm1heChyWzBdLGFbMF0sb1swXSxsWzBdKSx1PU1hdGgubWF4KHJbMV0sYVsxXSxvWzFdLGxbMV0pLHA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixjKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGgpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLGQtYyk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHUtaCk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO3RoaXMuY3VycmVudC5maWxsQWxwaGE8MSYmcC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHRoaXMuY3VycmVudC5maWxsQWxwaGEpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHApfV9tYWtlQ29sb3JOX1BhdHRlcm4odCl7cmV0dXJuIlRpbGluZ1BhdHRlcm4iPT09dFswXT90aGlzLl9tYWtlVGlsaW5nUGF0dGVybih0KTp0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCl9X21ha2VUaWxpbmdQYXR0ZXJuKHQpe2NvbnN0IGU9dFsxXSxzPXRbMl0saT10WzNdfHxuLklERU5USVRZX01BVFJJWCxbcixhLG8sbF09dFs0XSxjPXRbNV0saD10WzZdLGQ9dFs3XSx1PSJzaGFkaW5nIittKyssW3AsZyxmLGJdPW4uVXRpbC5ub3JtYWxpemVSZWN0KFsuLi5uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3IsYV0saSksLi4ubi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLGxdLGkpXSksW0EsX109bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLHY9YypBLHk9aCpfLFM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpwYXR0ZXJuIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsdSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJwYXR0ZXJuVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHYpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGAke3B9YCk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixgJHtnfWApO2NvbnN0IHg9dGhpcy5zdmcsRT10aGlzLnRyYW5zZm9ybU1hdHJpeCxDPXRoaXMuY3VycmVudC5maWxsQ29sb3IsUD10aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IsVD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGYtcCxiLWcpO3RoaXMuc3ZnPVQ7dGhpcy50cmFuc2Zvcm1NYXRyaXg9aTtpZigyPT09ZCl7Y29uc3QgdD1uLlV0aWwubWFrZUhleENvbG9yKC4uLmUpO3RoaXMuY3VycmVudC5maWxsQ29sb3I9dDt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dH10aGlzLmV4ZWN1dGVPcFRyZWUodGhpcy5jb252ZXJ0T3BMaXN0KHMpKTt0aGlzLnN2Zz14O3RoaXMudHJhbnNmb3JtTWF0cml4PUU7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1DO3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj1QO1MuYXBwZW5kKFQuY2hpbGROb2Rlc1swXSk7dGhpcy5kZWZzLmFwcGVuZChTKTtyZXR1cm5gdXJsKCMke3V9KWB9X21ha2VTaGFkaW5nUGF0dGVybih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpO3N3aXRjaCh0WzBdKXtjYXNlIlJhZGlhbEF4aWFsIjpjb25zdCBlPSJzaGFkaW5nIittKysscz10WzNdO2xldCBpO3N3aXRjaCh0WzFdKXtjYXNlImF4aWFsIjpjb25zdCBzPXRbNF0sbj10WzVdO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MSIsc1swXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MSIsc1sxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MiIsblswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MiIsblsxXSk7YnJlYWs7Y2FzZSJyYWRpYWwiOmNvbnN0IHI9dFs0XSxhPXRbNV0sbz10WzZdLGw9dFs3XTtpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmFkaWFsR3JhZGllbnQiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGFbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGFbMV0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsbCk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsclswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsclsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogJHt0WzFdfWApfWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdG9wIik7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvZmZzZXQiLHRbMF0pO2Uuc2V0QXR0cmlidXRlTlMobnVsbCwic3RvcC1jb2xvciIsdFsxXSk7aS5hcHBlbmQoZSl9dGhpcy5kZWZzLmFwcGVuZChpKTtyZXR1cm5gdXJsKCMke2V9KWA7Y2FzZSJNZXNoIjooMCxuLndhcm4pKCJVbmltcGxlbWVudGVkIHBhdHRlcm4gTWVzaCIpO3JldHVybiBudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBJUiB0eXBlOiAke3RbMF19YCl9fXNldERhc2godCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQ7dGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfWNvbnN0cnVjdFBhdGgodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtsZXQgaT1zLngscj1zLnksYT1bXSxvPTA7Zm9yKGNvbnN0IHMgb2YgdClzd2l0Y2goMHxzKXtjYXNlIG4uT1BTLnJlY3RhbmdsZTppPWVbbysrXTtyPWVbbysrXTtjb25zdCB0PWkrZVtvKytdLHM9citlW28rK107YS5wdXNoKCJNIixwZihpKSxwZihyKSwiTCIscGYodCkscGYociksIkwiLHBmKHQpLHBmKHMpLCJMIixwZihpKSxwZihzKSwiWiIpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTSIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTCIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzppPWVbbys0XTtyPWVbbys1XTthLnB1c2goIkMiLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pLHBmKGkpLHBmKHIpKTtvKz02O2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzI6YS5wdXNoKCJDIixwZihpKSxwZihyKSxwZihlW29dKSxwZihlW28rMV0pLHBmKGVbbysyXSkscGYoZVtvKzNdKSk7aT1lW28rMl07cj1lW28rM107bys9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmk9ZVtvKzJdO3I9ZVtvKzNdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihpKSxwZihyKSxwZihpKSxwZihyKSk7bys9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDphLnB1c2goIloiKX1hPWEuam9pbigiICIpO2lmKHMucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PW4uT1BTLnJlY3RhbmdsZSYmdFswXSE9PW4uT1BTLm1vdmVUbylhPXMucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrYTtlbHNle3MucGF0aD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdGgiKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChzLnBhdGgpfXMucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixhKTtzLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtzLmVsZW1lbnQ9cy5wYXRoO3Muc2V0Q3VycmVudFBvaW50KGkscil9ZW5kUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QucGF0aD1udWxsO2lmKCF0aGlzLnBlbmRpbmdDbGlwKXJldHVybjtpZighdC5lbGVtZW50KXt0aGlzLnBlbmRpbmdDbGlwPW51bGw7cmV0dXJufWNvbnN0IGU9ImNsaXBwYXRoIitwKysscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmNsaXBQYXRoIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7Y29uc3QgaT10LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTsiZXZlbm9kZCI9PT10aGlzLnBlbmRpbmdDbGlwP2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwiZXZlbm9kZCIpOmkuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwibm9uemVybyIpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDtzLmFwcGVuZChpKTt0aGlzLmRlZnMuYXBwZW5kKHMpO2lmKHQuYWN0aXZlQ2xpcFVybCl7dC5jbGlwR3JvdXA9bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLmV4dHJhU3RhY2spdC5jbGlwR3JvdXA9bnVsbDtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdC5hY3RpdmVDbGlwVXJsKX10LmFjdGl2ZUNsaXBVcmw9YHVybCgjJHtlfSlgO3RoaXMudGdycD1udWxsfWNsaXAodCl7dGhpcy5wZW5kaW5nQ2xpcD10fWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7Y29uc3QgZT1gJHt0LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwiZCIpfVpgO3QucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlKX19c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0UmVuZGVyaW5nSW50ZW50KHQpe31zZXRGbGF0bmVzcyh0KXt9c2V0R1N0YXRlKHQpe2Zvcihjb25zdFtlLHNdb2YgdClzd2l0Y2goZSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgocyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKHMpO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4ocyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KHMpO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQocyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhzKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKHMpO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKHMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICR7ZX1gKX19ZmlsbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHQuZmlsbENvbG9yKTt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0LmZpbGxBbHBoYSk7dGhpcy5lbmRQYXRoKCl9fXN0cm9rZSgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO3RoaXMuZW5kUGF0aCgpfX1fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LGU9MSl7Y29uc3Qgcz10aGlzLmN1cnJlbnQ7bGV0IGk9cy5kYXNoQXJyYXk7MSE9PWUmJmkubGVuZ3RoPjAmJihpPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSp0fSkpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIscy5zdHJva2VDb2xvcik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utb3BhY2l0eSIscy5zdHJva2VBbHBoYSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbWl0ZXJsaW1pdCIscGYocy5taXRlckxpbWl0KSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIscy5saW5lQ2FwKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIscy5saW5lSm9pbik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHBmKGUqcy5saW5lV2lkdGgpKyJweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hhcnJheSIsaS5tYXAocGYpLmpvaW4oIiAiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaG9mZnNldCIscGYoZSpzLmRhc2hQaGFzZSkrInB4Iil9ZW9GaWxsKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGwoKX1maWxsU3Ryb2tlKCl7dGhpcy5zdHJva2UoKTt0aGlzLmZpbGwoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLmN1cnJlbnQuZWxlbWVudD8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZW9GaWxsU3Ryb2tlKCl9cGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCl7Y29uc3QgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvcik7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9cGFpbnRJbWFnZVhPYmplY3QodCl7Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKShgRGVwZW5kZW50IGltYWdlIHdpdGggb2JqZWN0IElEICR7dH0gaXMgbm90IHJlYWR5IHlldGApfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQsbj11KHQsdGhpcy5mb3JjZURhdGFTY2hlbWEsISFlKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIik7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihpKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9cjt0aGlzLmNsaXAoIm5vbnplcm8iKTtjb25zdCBhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6aW1hZ2UiKTthLnNldEF0dHJpYnV0ZU5TKGMsInhsaW5rOmhyZWYiLG4pO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL3MpfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsbi53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgcz10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHI9ZS5oZWlnaHQsYT1zLmZpbGxDb2xvcjtzLm1hc2tJZD0ibWFzayIrZysrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIscy5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHIpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtzLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0scz1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihzKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChzKTt0aGlzLmRlZnM9cztjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7dmFyIGk9cygxKSxuPXMoMzIpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKSxhPXJlcXVpcmUoImh0dHAiKSxvPXJlcXVpcmUoImh0dHBzIiksbD1yZXF1aXJlKCJ1cmwiKSxjPS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy87ZS5QREZOb2RlU3RyZWFtPWNsYXNzIFBERk5vZGVTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLnVybD1mdW5jdGlvbiBwYXJzZVVybCh0KXtjb25zdCBlPWwucGFyc2UodCk7aWYoImZpbGU6Ij09PWUucHJvdG9jb2x8fGUuaG9zdClyZXR1cm4gZTtpZigvXlthLXpdOlsvXFxdL2kudGVzdCh0KSlyZXR1cm4gbC5wYXJzZShgZmlsZTovLy8ke3R9YCk7ZS5ob3N0fHwoZS5wcm90b2NvbD0iZmlsZToiKTtyZXR1cm4gZX0odC51cmwpO3RoaXMuaXNIdHRwPSJodHRwOiI9PT10aGlzLnVybC5wcm90b2NvbHx8Imh0dHBzOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmlzRnNVcmw9ImZpbGU6Ij09PXRoaXMudXJsLnByb3RvY29sO3RoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJnQuaHR0cEhlYWRlcnN8fHt9O3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTm9kZVN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzRnVsbFJlYWRlcih0aGlzKTpuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5pc0ZzVXJsP25ldyBQREZOb2RlU3RyZWFtRnNSYW5nZVJlYWRlcih0aGlzLHQsZSk6bmV3IFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIEJhc2VGdWxsUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3VybD10LnVybDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl9jb250ZW50TGVuZ3RoPWUubGVuZ3RoO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5fcmVhZGFibGVTdHJlYW09bnVsbDt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGFibGVTdHJlYW0/dGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KTp0aGlzLl9lcnJvcih0KX1fZXJyb3IodCl7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9X3NldFJlYWRhYmxlU3RyZWFtKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQ7dC5vbigicmVhZGFibGUiLCgoKT0+e3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlbmQiLCgoKT0+e3QuZGVzdHJveSgpO3RoaXMuX2RvbmU9ITA7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpO3Qub24oImVycm9yIiwodD0+e3RoaXMuX2Vycm9yKHQpfSkpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5fZXJyb3IobmV3IGkuQWJvcnRFeGNlcHRpb24oInN0cmVhbWluZyBpcyBkaXNhYmxlZCIpKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWNsYXNzIEJhc2VSYW5nZVJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtjb25zdCBlPXQuc291cmNlO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW19Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOnMsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9czt0aGlzLl9jb250ZW50TGVuZ3RoPXJ8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsbi5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDsiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sP3RoaXMuX3JlcXVlc3Q9YS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHQuaHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKTt0aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KX0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3N1cGVyKHQpO3RoaXMuX2h0dHBIZWFkZXJzPXt9O2Zvcihjb25zdCBlIGluIHQuaHR0cEhlYWRlcnMpe2NvbnN0IHM9dC5odHRwSGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYodGhpcy5faHR0cEhlYWRlcnNbZV09cyl9dGhpcy5faHR0cEhlYWRlcnMuUmFuZ2U9YGJ5dGVzPSR7ZX0tJHtzLTF9YDtjb25zdCBoYW5kbGVSZXNwb25zZT10PT57aWYoNDA0IT09dC5zdGF0dXNDb2RlKXRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHQpO2Vsc2V7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10fX07dGhpcy5fcmVxdWVzdD1udWxsOyJodHRwOiI9PT10aGlzLl91cmwucHJvdG9jb2w/dGhpcy5fcmVxdWVzdD1hLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk7dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dH0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtRnNGdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7bGV0IGU9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuX3VybC5wYXRoKTtjLnRlc3QodGhpcy5fdXJsLmhyZWYpJiYoZT1lLnJlcGxhY2UoL15cLy8sIiIpKTtyLmxzdGF0KGUsKCh0LHMpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXMuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO2MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLHtzdGFydDplLGVuZDpzLTF9KSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxuLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaCh0KXt9aWYoKDAsci5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHtnZXRSZXNwb25zZUhlYWRlcjp0LGlzSHR0cDplLHJhbmdlQ2h1bmtTaXplOnMsZGlzYWJsZVJhbmdlOml9KXtjb25zdCBuPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0scj1wYXJzZUludCh0KCJDb250ZW50LUxlbmd0aCIpLDEwKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4gbjtuLnN1Z2dlc3RlZExlbmd0aD1yO2lmKHI8PTIqcylyZXR1cm4gbjtpZihpfHwhZSlyZXR1cm4gbjtpZigiYnl0ZXMiIT09dCgiQWNjZXB0LVJhbmdlcyIpKXJldHVybiBuO2lmKCJpZGVudGl0eSIhPT0odCgiQ29udGVudC1FbmNvZGluZyIpfHwiaWRlbnRpdHkiKSlyZXR1cm4gbjtuLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMDtyZXR1cm4gbn07ZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VTdGF0dXModCl7cmV0dXJuIDIwMD09PXR8fDIwNj09PXR9O3ZhciBpPXMoMSksbj1zKDMzKSxyPXMoNil9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5nZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXI9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKHQpe2xldCBlPSEwLHM9dG9QYXJhbVJlZ0V4cCgiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihzKXtzPXNbMV07bGV0IHQ9cmZjMjYxNnVucXVvdGUocyk7dD11bmVzY2FwZSh0KTt0PXJmYzU5ODdkZWNvZGUodCk7dD1yZmMyMDQ3ZGVjb2RlKHQpO3JldHVybiBmaXh1cEVuY29kaW5nKHQpfXM9ZnVuY3Rpb24gcmZjMjIzMWdldHBhcmFtKHQpe2NvbnN0IGU9W107bGV0IHM7Y29uc3QgaT10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtmb3IoO251bGwhPT0ocz1pLmV4ZWModCkpOyl7bGV0Wyx0LGksbl09czt0PXBhcnNlSW50KHQsMTApO2lmKHQgaW4gZSl7aWYoMD09PXQpYnJlYWt9ZWxzZSBlW3RdPVtpLG5dfWNvbnN0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aCYmdCBpbiBlOysrdCl7bGV0W3MsaV09ZVt0XTtpPXJmYzI2MTZ1bnF1b3RlKGkpO2lmKHMpe2k9dW5lc2NhcGUoaSk7MD09PXQmJihpPXJmYzU5ODdkZWNvZGUoaSkpfW4ucHVzaChpKX1yZXR1cm4gbi5qb2luKCIiKX0odCk7aWYocyl7cmV0dXJuIGZpeHVwRW5jb2RpbmcocmZjMjA0N2RlY29kZShzKSl9cz10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZSIsImkiKS5leGVjKHQpO2lmKHMpe3M9c1sxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShzKTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9ZnVuY3Rpb24gdG9QYXJhbVJlZ0V4cCh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiB0ZXh0ZGVjb2RlKHQscyl7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChzKSlyZXR1cm4gczt0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPSgwLGkuc3RyaW5nVG9CeXRlcykocyk7cz1uLmRlY29kZShyKTtlPSExfWNhdGNoKHQpe319cmV0dXJuIHN9ZnVuY3Rpb24gZml4dXBFbmNvZGluZyh0KXtpZihlJiYvW1x4ODAtXHhmZl0vLnRlc3QodCkpe3Q9dGV4dGRlY29kZSgidXRmLTgiLHQpO2UmJih0PXRleHRkZWNvZGUoImlzby04ODU5LTEiLHQpKX1yZXR1cm4gdH1mdW5jdGlvbiByZmMyNjE2dW5xdW90ZSh0KXtpZih0LnN0YXJ0c1dpdGgoJyInKSl7Y29uc3QgZT10LnNsaWNlKDEpLnNwbGl0KCdcXCInKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgcz1lW3RdLmluZGV4T2YoJyInKTtpZigtMSE9PXMpe2VbdF09ZVt0XS5zbGljZSgwLHMpO2UubGVuZ3RoPXQrMX1lW3RdPWVbdF0ucmVwbGFjZSgvXFwoLikvZywiJDEiKX10PWUuam9pbignIicpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzU5ODdkZWNvZGUodCl7Y29uc3QgZT10LmluZGV4T2YoIiciKTtpZigtMT09PWUpcmV0dXJuIHQ7cmV0dXJuIHRleHRkZWNvZGUodC5zbGljZSgwLGUpLHQuc2xpY2UoZSsxKS5yZXBsYWNlKC9eW14nXSonLywiIikpfWZ1bmN0aW9uIHJmYzIwNDdkZWNvZGUodCl7cmV0dXJuIXQuc3RhcnRzV2l0aCgiPT8iKXx8L1tceDAwLVx4MTlceDgwLVx4ZmZdLy50ZXN0KHQpP3Q6dC5yZXBsYWNlKC89XD8oW1x3LV0qKVw/KFtRcUJiXSlcPygoPzpbXj9dfFw/KD8hPSkpKilcPz0vZywoZnVuY3Rpb24odCxlLHMsaSl7aWYoInEiPT09c3x8IlEiPT09cylyZXR1cm4gdGV4dGRlY29kZShlLGk9KGk9aS5yZXBsYWNlKC9fL2csIiAiKSkucmVwbGFjZSgvPShbMC05YS1mQS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpO3RyeXtpPWF0b2IoaSl9Y2F0Y2godCl7fXJldHVybiB0ZXh0ZGVjb2RlKGUsaSl9KSl9cmV0dXJuIiJ9O3ZhciBpPXMoMSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7Y2xhc3MgTmV0d29ya01hbmFnZXJ7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5nZXRYaHI9ZS5nZXRYaHJ8fGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2dldFhocigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O3RoaXMuY3VyclhocklkPTA7dGhpcy5wZW5kaW5nUmVxdWVzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXF1ZXN0UmFuZ2UodCxlLHMpe2NvbnN0IGk9e2JlZ2luOnQsZW5kOmV9O2Zvcihjb25zdCB0IGluIHMpaVt0XT1zW3RdO3JldHVybiB0aGlzLnJlcXVlc3QoaSl9cmVxdWVzdEZ1bGwodCl7cmV0dXJuIHRoaXMucmVxdWVzdCh0KX1yZXF1ZXN0KHQpe2NvbnN0IGU9dGhpcy5nZXRYaHIoKSxzPXRoaXMuY3VyclhocklkKyssaT10aGlzLnBlbmRpbmdSZXF1ZXN0c1tzXT17eGhyOmV9O2Uub3BlbigiR0VUIix0aGlzLnVybCk7ZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7Zm9yKGNvbnN0IHQgaW4gdGhpcy5odHRwSGVhZGVycyl7Y29uc3Qgcz10aGlzLmh0dHBIZWFkZXJzW3RdO3ZvaWQgMCE9PXMmJmUuc2V0UmVxdWVzdEhlYWRlcih0LHMpfWlmKHRoaXMuaXNIdHRwJiYiYmVnaW4iaW4gdCYmImVuZCJpbiB0KXtlLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIixgYnl0ZXM9JHt0LmJlZ2lufS0ke3QuZW5kLTF9YCk7aS5leHBlY3RlZFN0YXR1cz0yMDZ9ZWxzZSBpLmV4cGVjdGVkU3RhdHVzPTIwMDtlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Qub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihzKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSk7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxzKTtlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxzKTtpLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQ7aS5vbkRvbmU9dC5vbkRvbmU7aS5vbkVycm9yPXQub25FcnJvcjtpLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzO2Uuc2VuZChudWxsKTtyZXR1cm4gc31vblByb2dyZXNzKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtzJiZzLm9uUHJvZ3Jlc3M/LihlKX1vblN0YXRlQ2hhbmdlKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZighcylyZXR1cm47Y29uc3Qgbj1zLnhocjtpZihuLnJlYWR5U3RhdGU+PTImJnMub25IZWFkZXJzUmVjZWl2ZWQpe3Mub25IZWFkZXJzUmVjZWl2ZWQoKTtkZWxldGUgcy5vbkhlYWRlcnNSZWNlaXZlZH1pZig0IT09bi5yZWFkeVN0YXRlKXJldHVybjtpZighKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKXJldHVybjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoMD09PW4uc3RhdHVzJiZ0aGlzLmlzSHR0cCl7cy5vbkVycm9yPy4obi5zdGF0dXMpO3JldHVybn1jb25zdCByPW4uc3RhdHVzfHwyMDA7aWYoISgyMDA9PT1yJiYyMDY9PT1zLmV4cGVjdGVkU3RhdHVzKSYmciE9PXMuZXhwZWN0ZWRTdGF0dXMpe3Mub25FcnJvcj8uKG4uc3RhdHVzKTtyZXR1cm59Y29uc3QgYT1mdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KXtjb25zdCBlPXQucmVzcG9uc2U7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6KDAsaS5zdHJpbmdUb0J5dGVzKShlKS5idWZmZXJ9KG4pO2lmKDIwNj09PXIpe2NvbnN0IHQ9bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1SYW5nZSIpLGU9L2J5dGVzIChcZCspLShcZCspXC8oXGQrKS8uZXhlYyh0KTtzLm9uRG9uZSh7YmVnaW46cGFyc2VJbnQoZVsxXSwxMCksY2h1bms6YX0pfWVsc2UgYT9zLm9uRG9uZSh7YmVnaW46MCxjaHVuazphfSk6cy5vbkVycm9yPy4obi5zdGF0dXMpfWdldFJlcXVlc3RYaHIodCl7cmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocn1pc1BlbmRpbmdSZXF1ZXN0KHQpe3JldHVybiB0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzfWFib3J0UmVxdWVzdCh0KXtjb25zdCBlPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07ZS5hYm9ydCgpfX1lLlBERk5ldHdvcmtTdHJlYW09Y2xhc3MgUERGTmV0d29ya1N0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zb3VyY2U9dDt0aGlzLl9tYW5hZ2VyPW5ldyBOZXR3b3JrTWFuYWdlcih0LnVybCx7aHR0cEhlYWRlcnM6dC5odHRwSGVhZGVycyx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9KTt0aGlzLl9yYW5nZUNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0aGlzLl9zb3VyY2UpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2NvbnN0IHM9bmV3IFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0LGUpO3Mub25DbG9zZWQ9dGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IHM9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmw7dGhpcy5fZnVsbFJlcXVlc3RJZD10LnJlcXVlc3RGdWxsKHMpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9kaXNhYmxlUmFuZ2U9ZS5kaXNhYmxlUmFuZ2V8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2NhY2hlZENodW5rcz1bXTt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsfV9vbkhlYWRlcnNSZWNlaXZlZCgpe2NvbnN0IHQ9dGhpcy5fZnVsbFJlcXVlc3RJZCxlPXRoaXMuX21hbmFnZXIuZ2V0UmVxdWVzdFhocih0KSxnZXRSZXNwb25zZUhlYWRlcj10PT5lLmdldFJlc3BvbnNlSGVhZGVyKHQpLHthbGxvd1JhbmdlUmVxdWVzdHM6cyxzdWdnZXN0ZWRMZW5ndGg6aX09KDAsbi52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9tYW5hZ2VyLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7cyYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApO3RoaXMuX2NvbnRlbnRMZW5ndGg9aXx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKX1fb25Eb25lKHQpe2lmKHQpaWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSl9ZWxzZSB0aGlzLl9jYWNoZWRDaHVua3MucHVzaCh0LmNodW5rKTt0aGlzLl9kb25lPSEwO2lmKCEodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX1fb25FcnJvcih0KXt0aGlzLl9zdG9yZWRFcnJvcj0oMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsdGhpcy5fdXJsKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX2NhY2hlZENodW5rcy5sZW5ndGg9MH1fb25Qcm9ncmVzcyh0KXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fY2FjaGVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscyl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLHMsaSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO3RoaXMuX2Nsb3NlKCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxzKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6cy5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBzIGluIHQpe2NvbnN0IGk9dFtzXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChzLGkpfXJldHVybiBlfWUuUERGRmV0Y2hTdHJlYW09Y2xhc3MgUERGRmV0Y2hTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLmlzSHR0cD0vXmh0dHBzPzovaS50ZXN0KHQudXJsKTt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERkZldGNoU3RyZWFtUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGRmV0Y2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fc3RyZWFtPXQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbG9hZGVkPTA7dGhpcy5fZmlsZW5hbWU9bnVsbDtjb25zdCBlPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX2hlYWRlcnM9Y3JlYXRlSGVhZGVycyh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO2NvbnN0IHM9ZS51cmw7ZmV0Y2gocyxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxuLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMscyk7dGhpcy5fcmVhZGVyPXQuYm9keS5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Y29uc3QgZ2V0UmVzcG9uc2VIZWFkZXI9ZT0+dC5oZWFkZXJzLmdldChlKSx7YWxsb3dSYW5nZVJlcXVlc3RzOmUsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dGhpcy5fc3RyZWFtLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9cnx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJTdHJlYW1pbmcgaXMgZGlzYWJsZWQuIikpfSkpLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGVyPy5jYW5jZWwodCk7dGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fWNsYXNzIFBERkZldGNoU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO2NvbnN0IHI9dC5zb3VyY2U7dGhpcy5fd2l0aENyZWRlbnRpYWxzPXIud2l0aENyZWRlbnRpYWxzfHwhMTt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFyLmRpc2FibGVTdHJlYW07dGhpcy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7dGhpcy5faGVhZGVycy5hcHBlbmQoIlJhbmdlIixgYnl0ZXM9JHtlfS0ke3MtMX1gKTtjb25zdCBhPXIudXJsO2ZldGNoKGEsY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsdGhpcy5fd2l0aENyZWRlbnRpYWxzLHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4oKHQ9PntpZighKDAsbi52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGEpO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX19XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciBzPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1t0XShzLHMuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gcy5leHBvcnRzfXZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9OygoKT0+e3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFubm90YXRpb25FZGl0b3JMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25MYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTW9kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbk1vZGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNNYXBDb21wcmVzc2lvblR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkdsb2JhbFdvcmtlck9wdGlvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkdsb2JhbFdvcmtlck9wdGlvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkludmFsaWRQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkludmFsaWRQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk1pc3NpbmdQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk1pc3NpbmdQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk9QUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuT1BTfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRhUmFuZ2VUcmFuc3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlBERkRhdGFSYW5nZVRyYW5zcG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0ZVN0cmluZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUERGRGF0ZVN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGV29ya2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5QREZXb3JrZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBhc3N3b3JkUmVzcG9uc2VzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QYXNzd29yZFJlc3BvbnNlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGVybWlzc2lvbkZsYWciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBlcm1pc3Npb25GbGFnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQaXhlbHNQZXJJbmNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QaXhlbHNQZXJJbmNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiU1ZHR3JhcGhpY3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLlNWR0dyYXBoaWNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVTlNVUFBPUlRFRF9GRUFUVVJFUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVU5TVVBQT1JURURfRkVBVFVSRVN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVdGlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VdGlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJWZXJib3NpdHlMZXZlbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlhmYUxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5YZmFMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYnVpbGQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1aWxkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNQZGZGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc1BkZkZpbGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRTY3JpcHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmxvYWRTY3JpcHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbmRlclRleHRMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVuZGVyVGV4dExheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMudmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLHM9X193X3BkZmpzX3JlcXVpcmVfXygyKSxpPV9fd19wZGZqc19yZXF1aXJlX18oNiksbj1fX3dfcGRmanNfcmVxdWlyZV9fKDIxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oNSksYT1fX3dfcGRmanNfcmVxdWlyZV9fKDI2KSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTQpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxMiksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDI5KSxoPV9fd19wZGZqc19yZXF1aXJlX18oMzApLGQ9X193X3BkZmpzX3JlcXVpcmVfXygyOCk7aWYobC5pc05vZGVKUyl7Y29uc3R7UERGTm9kZVN0cmVhbTp0fT1fX3dfcGRmanNfcmVxdWlyZV9fKDMxKTsoMCxzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5KSgoZT0+bmV3IHQoZSkpKX1lbHNle2NvbnN0e1BERk5ldHdvcmtTdHJlYW06dH09X193X3BkZmpzX3JlcXVpcmVfXygzNCkse1BERkZldGNoU3RyZWFtOmV9PV9fd19wZGZqc19yZXF1aXJlX18oMzUpOygwLHMuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChzPT4oMCxpLmlzVmFsaWRGZXRjaFVybCkocy51cmwpP25ldyBlKHMpOm5ldyB0KHMpKSl9fSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=",T2e=`data:text/javascript;base64,${R2e}`,x2e=`data:text/javascript;base64,${L2e}`,C2e=He({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"}},emits:["rendered","error"],setup(n,{emit:e}){let t=null;const i=Ne([]),l=Ne(0);function a(){return HZe(T2e).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=x2e})}function o(){return window.pdfjsLib?Promise.resolve():a()}function r(){if(!n.src){l.value=0;return}window.pdfjsLib.getDocument({url:_S(n.src),cMapUrl:`${n.staticFileUrl.endsWith("/")?n.staticFileUrl:n.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0}).promise.then(b=>{t=b,l.value=t.numPages,f(1)}).catch(b=>{e("error",b)})}function f(v){t.getPage(v).then(b=>{const Z=b.getViewport({scale:window.devicePixelRatio}),p=i.value[v-1];p.width=Z.width,p.height=Z.height,Z.width>document.documentElement.clientWidth?p.style.width="100%":p.style.width=Math.floor(Z.width)+"px";const y=p.getContext("2d");b.render({canvasContext:y,viewport:Z}).promise.then(()=>{l.value>v?f(v+1):e("rendered")}).catch(m=>{e("error",m)})}).catch(b=>{e("error",b)})}return Kt(()=>{n.src&&o().then(r)}),rt(()=>n.src,()=>{o().then(r)}),{rootRef:i,numPages:l}}}),S2e={class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"}},z2e={key:0,class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function k2e(n,e,t,i,l,a){return kl(),rc("div",S2e,[n.numPages?(kl(),rc("div",z2e,[(kl(!0),rc(ln,null,QU(n.numPages,o=>(kl(),rc("canvas",{ref_for:!0,ref:"rootRef",key:o,style:{width:"100%"}}))),128))])):Lb("",!0)],512)}const mm=$u(C2e,[["render",k2e]]);mm.install=function(n){n.component(mm.name,mm)};const F2e={__name:"PdfDemo",setup(n){return(e,t)=>(kl(),Vo(KX,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf"},{default:pa(i=>[D(mi(mm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},J2e={__name:"App",setup(n){const e=Ne("DOCX");return Kt(()=>{}),(t,i)=>{const l=ls("a-tab-pane"),a=ls("a-tabs");return kl(),Vo(a,{activeKey:e.value,"onUpdate:activeKey":i[0]||(i[0]=o=>e.value=o)},{default:pa(()=>[D(l,{key:"DOCX",tab:"docx文件预览"},{default:pa(()=>[D(ype)]),_:1}),D(l,{key:"EXCEL",tab:"excel文件预览"},{default:pa(()=>[D(V2e)]),_:1}),D(l,{key:"PDF",tab:"pdf文件预览"},{default:pa(()=>[D(F2e)]),_:1})]),_:1},8,["activeKey"])}}},D2e=$u(J2e,[["__scopeId","data-v-e7b8d128"]]),O2e=NR(D2e);O2e.use(q0e).mount("#app")});export default j2e(); +}`;var Cn=BM(function(){return ai(ze,tn+"return "+Xt).apply(t,Qe)});if(Cn.source=Xt,yy(Cn))throw Cn;return Cn}function CO(z){return ri(z).toLowerCase()}function SO(z){return ri(z).toUpperCase()}function zO(z,j,A){if(z=ri(z),z&&(A||j===t))return lN(z);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=cr(j),ze=aN(fe,Ye),Qe=rN(fe,Ye)+1;return Qo(fe,ze,Qe).join("")}function kO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.slice(0,sN(z)+1);if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=rN(fe,cr(j))+1;return Qo(fe,0,Ye).join("")}function FO(z,j,A){if(z=ri(z),z&&(A||j===t))return z.replace(ot,"");if(!z||!(j=Ya(j)))return z;var fe=cr(z),Ye=aN(fe,cr(j));return Qo(fe,Ye).join("")}function JO(z,j){var A=w,fe=C;if(Vi(j)){var Ye="separator"in j?j.separator:Ye;A="length"in j?xn(j.length):A,fe="omission"in j?Ya(j.omission):fe}z=ri(z);var ze=z.length;if(xc(z)){var Qe=cr(z);ze=Qe.length}if(A>=ze)return z;var $e=A-Cc(fe);if($e<1)return fe;var at=Qe?Qo(Qe,0,$e).join(""):z.slice(0,$e);if(Ye===t)return at+fe;if(Qe&&($e+=at.length-$e),Zy(Ye)){if(z.slice($e).search(Ye)){var vt,Wt=at;for(Ye.global||(Ye=Cp(Ye.source,ri(Pt.exec(Ye))+"g")),Ye.lastIndex=0;vt=Ye.exec(Wt);)var Xt=vt.index;at=at.slice(0,Xt===t?$e:Xt)}}else if(z.indexOf(Ya(Ye),$e)!=$e){var Jt=at.lastIndexOf(Ye);Jt>-1&&(at=at.slice(0,Jt))}return at+fe}function DO(z){return z=ri(z),z&&Ue.test(z)?z.replace(Ce,mz):z}var OO=Oc(function(z,j,A){return z+(A?" ":"")+j.toUpperCase()}),Gy=AN("toUpperCase");function QM(z,j,A){return z=ri(z),j=A?t:j,j===t?uz(z)?Zz(z):Xi(z):z.match(j)||[]}var BM=kn(function(z,j){try{return yi(z,t,j)}catch(A){return yy(A)?A:new Mn(A)}}),jO=oo(function(z,j){return Zi(j,function(A){A=zr(A),ao(z,A,my(z[A],z))}),z});function UO(z){var j=z==null?0:z.length,A=mn();return z=j?Ee(z,function(fe){if(typeof fe[1]!="function")throw new Ea(o);return[A(fe[0]),fe[1]]}):[],kn(function(fe){for(var Ye=-1;++YeY)return[];var A=U,fe=Cl(z,U);j=mn(j),z-=U;for(var Ye=jo(fe,j);++A0||j<0)?new En(A):(z<0?A=A.takeRight(-z):z&&(A=A.drop(z)),j!==t&&(j=xn(j),A=j<0?A.dropRight(-j):A.take(j-z)),A)},En.prototype.takeRightWhile=function(z){return this.reverse().takeWhile(z).reverse()},En.prototype.toArray=function(){return this.take(U)},Cr(En.prototype,function(z,j){var A=/^(?:filter|find|map|reject)|While$/.test(j),fe=/^(?:head|last)$/.test(j),Ye=Le[fe?"take"+(j=="last"?"Right":""):j],ze=fe||/^find/.test(j);Ye&&(Le.prototype[j]=function(){var Qe=this.__wrapped__,$e=fe?[1]:arguments,at=Qe instanceof En,vt=$e[0],Wt=at||Vn(Qe),Xt=function(On){var Bn=Ye.apply(Le,st([On],$e));return fe&&Jt?Bn[0]:Bn};Wt&&A&&typeof vt=="function"&&vt.length!=1&&(at=Wt=!1);var Jt=this.__chain__,tn=!!this.__actions__.length,yn=ze&&!Jt,Cn=at&&!tn;if(!ze&&Wt){Qe=Cn?Qe:new En(this);var Zn=z.apply(Qe,$e);return Zn.__actions__.push({func:Lf,args:[Xt],thisArg:t}),new Ka(Zn,Jt)}return yn&&Cn?z.apply(this,$e):(Zn=this.thru(Xt),yn?fe?Zn.value()[0]:Zn.value():Zn)})}),Zi(["pop","push","shift","sort","splice","unshift"],function(z){var j=tf[z],A=/^(?:push|sort|unshift)$/.test(z)?"tap":"thru",fe=/^(?:pop|shift)$/.test(z);Le.prototype[z]=function(){var Ye=arguments;if(fe&&!this.__chain__){var ze=this.value();return j.apply(Vn(ze)?ze:[],Ye)}return this[A](function(Qe){return j.apply(Vn(Qe)?Qe:[],Ye)})}}),Cr(En.prototype,function(z,j){var A=Le[j];if(A){var fe=A.name+"";ci.call(Fc,fe)||(Fc[fe]=[]),Fc[fe].push({name:j,func:A})}}),Fc[Nf(t,G).name]=[{name:"wrapper",func:t}],En.prototype.clone=Dz,En.prototype.reverse=Oz,En.prototype.value=jz,Le.prototype.at=yJ,Le.prototype.chain=ZJ,Le.prototype.commit=vJ,Le.prototype.next=WJ,Le.prototype.plant=XJ,Le.prototype.reverse=NJ,Le.prototype.toJSON=Le.prototype.valueOf=Le.prototype.value=MJ,Le.prototype.first=Le.prototype.head,td&&(Le.prototype[td]=GJ),Le},Sc=vz();sn?((sn.exports=Sc)._=Sc,Jn._=Sc):Lt._=Sc}).call(vn)})(G2e,Lh);const X2e=Lh;function nz(n){n=n.replace("#","");for(var e=n.match(/../g),t=0;t<3;t++)e[t]=parseInt(e[t],16);return e}function iz(n,e,t){for(var i=[n.toString(16),e.toString(16),t.toString(16)],a=0;a<3;a++)i[a].length==1&&(i[a]="0"+i[a]);return"#"+i.join("")}function N2e(n,e){for(var t=nz(n),i=0;i<3;i++)t[i]=Math.floor(t[i]*(1-e));return iz(t[0],t[1],t[2])}function M2e(n,e){for(var t=nz(n),i=0;i<3;i++)t[i]=Math.floor((255-t[i])*e+t[i]);return iz(t[0],t[1],t[2])}const qZ=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"];function XL(n,e={}){return I2e(qS(n),e)}function I2e(n,e){return fetch(n,e).then(t=>t.status!==200?Promise.reject(t):t.arrayBuffer())}function Y2e(n){try{return new rW.Workbook().xlsx.load(n)}catch(e){return Promise.reject(e)}}function w2e(n,e,t){for(let i=0;i<(n.columns||[]).length;i++)e.cols[i.toString()]={},n.columns[i].width?e.cols[i.toString()].width=n.columns[i].width*9:e.cols[i.toString()].width=100;e.cols.len=Math.max(Object.keys(e.cols).length,t.minColLength||0)}function g2e(n){let e="";if(n.value&&n.value.result)e=n.value.result;else if(n.value&&n.value.richText)for(let t in n.value.richText)e+=n.value.richText[t].text;else e=n.value;return e}function e2(n){if(typeof n=="object")return"#000000";n=n.trim().toLowerCase();let e={};try{let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e.r=parseInt(t[2],16),e.g=parseInt(t[3],16),e.b=parseInt(t[4],16),e.a=parseInt(t[1],16)/255,rn(`rgba(${e.r}, ${e.g}, ${e.b}, ${e.a})`).toHexString()}catch(t){console.warn(t)}}function t2(n,e){return n>9?"#C7C9CC":typeof e>"u"?qZ[n]:e>0?M2e(qZ[n],e):N2e(qZ[n],Math.abs(e))}function V2e(n){n.style=Lh.cloneDeep(n.style);let e=null;n.style.fill&&n.style.fill.fgColor&&(n.style.fill.fgColor.argb?e=e2(n.style.fill.fgColor.argb):n.style.fill.fgColor.hasOwnProperty("theme")?e=t2(n.style.fill.fgColor.theme,n.style.fill.fgColor.tint):e="#C7C9CC"),e&&(n.style.bgcolor=e);let t=null;if(n.style.font&&n.style.font.color&&(n.style.font.color.argb?t=e2(n.style.font.color.argb):n.style.font.color.hasOwnProperty("theme")?t=t2(n.style.font.color.theme,n.style.font.color.tint):t="#000000"),t&&(n.style.color=t),n.style.alignment&&(n.style.alignment.horizontal&&(n.style.align=n.style.alignment.horizontal),n.style.alignment.vertical&&(n.style.valign=n.style.alignment.vertical)),n.style.alignment&&n.style.alignment.wrapText&&(n.style.textwrap=!0),n.style.border){let i={};Object.keys(n.style.border).forEach(a=>{let l=n.style.border[a],o="#000000";typeof l.color=="string"?o=l.color:l.color&&(l.color.argb?o=e2(l.color.argb):l.color.hasOwnProperty("theme")&&(o=t2(l.color.theme,l.color.tint))),i[a]=[l.style||"thin",o]}),n.style.border2={...n.style.border},n.style.border=i}return n.style}function L2e(n,e){let t=[];return n.eachSheet(i=>{let a={name:i.name,styles:[],rows:{},cols:{},merges:[],media:[]},l=[];for(let o in i._merges){a.merges.push(i._merges[o].shortRange);let r={};r.startAddress=i._merges[o].tl,r.endAddress=i._merges[o].br,r.YRange=i._merges[o].model.bottom-i._merges[o].model.top,r.XRange=i._merges[o].model.right-i._merges[o].model.left,l.push(r)}w2e(i,a,e),(i._rows||[]).forEach((o,r)=>{a.rows[r]={cells:{}},o.height&&(a.rows[r].height=o.height),(o._cells||[]).forEach((f,v)=>{a.rows[r].cells[v]={};let b=X2e.find(l,function(Z){return Z.startAddress==f._address});b&&f.master.address!=b.startAddress||(b&&(a.rows[r].cells[v].merge=[b.YRange,b.XRange]),a.rows[r].cells[v].text=g2e(f),a.styles.push(V2e(f)),a.rows[r].cells[v].style=a.styles.length-1)})}),a._media&&(a.media=a._media),t.push(a)}),{workbookData:t,medias:n.media||[]}}const R2e=He({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({minColLength:20})}},emits:["rendered","error"],setup(n,{emit:e}){const t=Ne(null),i=Ne(null);let a=null;function l(o){Y2e(o).then(r=>{const{workbookData:f,medias:v}=L2e(r,n.options);a.loadData(f),e("rendered")}).catch(r=>{console.warn(r),a.loadData({}),e("error",r)})}return Kt(()=>{window.xs=a=new $S(i.value,{mode:"read",showToolbar:!1,view:{height:()=>t.value.clientHeight||300,width:()=>document.documentElement.clientWidth}}).loadData({}),n.src&&XL(n.src,n.requestOptions).then(l).catch(o=>{a.loadData({}),e("error",o)})}),rt(()=>n.src,()=>{n.src?XL(n.src).then(l).catch(o=>{a.loadData({}),e("error",o)}):a.loadData({})}),{wrapperRef:t,rootRef:i}}}),T2e={class:"vue-office-excel",ref:"wrapperRef"},x2e={class:"vue-office-excel-main",ref:"rootRef"};function C2e(n,e,t,i,a,l){return kl(),rc("div",T2e,[Du("div",x2e,null,512)],512)}const mm=$u(R2e,[["render",C2e]]);mm.install=function(n){n.component(mm.name,mm)};const S2e={__name:"ExcelDemo",setup(n){return(e,t)=>(kl(),Vo(PX,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.xlsx"},{default:pa(i=>[D(mi(mm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},z2e="LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIyIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KIWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciIsW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPXQoKTplWyJwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIiXT1lLnBkZmpzV29ya2VyPXQoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZT1bLChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNiksbz1hKDY5KSxjPWEoNjMpLGw9YSgxMDApLGg9YSgxMDEpLHU9YSgxMDIpO2NsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19dC5Xb3JrZXJUYXNrPVdvcmtlclRhc2s7Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uIHdwaFNldHVwVGVzdCh0KXtpZighYSl7YT0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KSk7ZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24gd3BoQ29uZmlndXJlKGUpeygwLHIuc2V0VmVyYm9zaXR5TGV2ZWwpKGUudmVyYm9zaXR5KX0pKTtlLm9uKCJHZXREb2NSZXF1ZXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBEb2MoZSl7cmV0dXJuIFdvcmtlck1lc3NhZ2VIYW5kbGVyLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpfSkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxkPSExLGY9bnVsbDtjb25zdCBnPVtdLHA9KDAsci5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6bSxhcGlWZXJzaW9uOmJ9PWUseT0iMy4wLjI3OSI7aWYoYiE9PXkpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Yn0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiMy4wLjI3OSIuYCk7Y29uc3Qgdz1bXTtmb3IoY29uc3QgZSBpbltdKXcucHVzaChlKTtpZih3Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit3LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVhZGFibGVTdHJlYW0pe2NvbnN0IGU9IlRoZSBicm93c2VyL2Vudmlyb25tZW50IGxhY2tzIG5hdGl2ZSBzdXBwb3J0IGZvciBjcml0aWNhbCBmdW5jdGlvbmFsaXR5IHVzZWQgYnkgdGhlIFBERi5qcyBsaWJyYXJ5IChlLmcuIGBSZWFkYWJsZVN0cmVhbWApOyAiO2lmKGwuaXNOb2RlSlMpdGhyb3cgbmV3IEVycm9yKGUrInBsZWFzZSB1c2UgYSBgbGVnYWN5YC1idWlsZCBpbnN0ZWFkLiIpO3Rocm93IG5ldyBFcnJvcihlKyJwbGVhc2UgdXBkYXRlIHRvIGEgc3VwcG9ydGVkIGJyb3dzZXIuIil9Y29uc3QgUz1tKyJfd29ya2VyIjtsZXQgeD1uZXcgaC5NZXNzYWdlSGFuZGxlcihTLG0sdCk7ZnVuY3Rpb24gZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKGQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1mdW5jdGlvbiBzdGFydFdvcmtlclRhc2soZSl7Zy5wdXNoKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtjb25zdCB0PWcuaW5kZXhPZihlKTtnLnNwbGljZSh0LDEpfWFzeW5jIGZ1bmN0aW9uIGxvYWREb2N1bWVudChlKXthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBhLmVuc3VyZURvYygicGFyc2UiLFtlXSk7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgYS5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFGb250cyIpO3N0YXJ0V29ya2VyVGFzayhlKTthd2FpdCBQcm9taXNlLmFsbChbYS5sb2FkWGZhRm9udHMoeCxlKS5jYXRjaCgoZT0+e30pKS50aGVuKCgoKT0+ZmluaXNoV29ya2VyVGFzayhlKSkpLGEubG9hZFhmYUltYWdlcygpXSl9Y29uc3RbcixuXT1hd2FpdCBQcm9taXNlLmFsbChbYS5lbnN1cmVEb2MoIm51bVBhZ2VzIiksYS5lbnN1cmVEb2MoImZpbmdlcnByaW50cyIpXSk7cmV0dXJue251bVBhZ2VzOnIsZmluZ2VycHJpbnRzOm4saHRtbEZvclhmYTp0P2F3YWl0IGEuZW5zdXJlRG9jKCJodG1sRm9yWGZhIik6bnVsbH19ZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm4sbGVuZ3RoOmksZG9jQmFzZVVybDpvLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDtpZihlKXt0cnl7ZD1uZXcgcy5Mb2NhbFBkZk1hbmFnZXIobSxlLHQseCxsLGMsbyk7aC5yZXNvbHZlKGQpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXJldHVybiBoLnByb21pc2V9bGV0IGcscD1bXTt0cnl7Zz1uZXcgdS5QREZXb3JrZXJTdHJlYW0oeCl9Y2F0Y2goZSl7aC5yZWplY3QoZSk7cmV0dXJuIGgucHJvbWlzZX1jb25zdCBiPWcuZ2V0RnVsbFJlYWRlcigpO2IuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoYi5pc1JhbmdlU3VwcG9ydGVkKXthPWF8fGIuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7ZD1uZXcgcy5OZXR3b3JrUGRmTWFuYWdlcihtLGcse21zZ0hhbmRsZXI6eCxwYXNzd29yZDp0LGxlbmd0aDpiLmNvbnRlbnRMZW5ndGgsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOm59LGwsYyxvKTtmb3IoY29uc3QgZSBvZiBwKWQuc2VuZFByb2dyZXNzaXZlRGF0YShlKTtwPVtdO2gucmVzb2x2ZShkKTtmPW51bGx9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtoLnJlamVjdChlKTtmPW51bGx9KSk7bGV0IHk9MDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtjb25zdCByZWFkQ2h1bms9ZnVuY3Rpb24oe3ZhbHVlOmUsZG9uZTpufSl7dHJ5e2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKXtkfHxmdW5jdGlvbigpe2NvbnN0IGU9KDAsci5hcnJheXNUb0J5dGVzKShwKTtpJiZlLmxlbmd0aCE9PWkmJigwLHIud2FybikoInJlcG9ydGVkIEhUVFAgbGVuZ3RoIGlzIGRpZmZlcmVudCBmcm9tIGFjdHVhbCIpO3RyeXtkPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihtLGUsdCx4LGwsYyxvKTtoLnJlc29sdmUoZCl9Y2F0Y2goZSl7aC5yZWplY3QoZSl9cD1bXX0oKTtmPW51bGw7cmV0dXJufXkrPSgwLHIuYXJyYXlCeXRlTGVuZ3RoKShlKTtiLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHx4LnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnksdG90YWw6TWF0aC5tYXgoeSxiLmNvbnRlbnRMZW5ndGh8fDApfSk7ZD9kLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk6cC5wdXNoKGUpO2IucmVhZCgpLnRoZW4ocmVhZENodW5rLGEpfWNhdGNoKGUpe2EoZSl9fTtiLnJlYWQoKS50aGVuKHJlYWRDaHVuayxhKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7Zj1udWxsfSkpO2Y9ZnVuY3Rpb24oZSl7Zy5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGgucHJvbWlzZX14Lm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbYS5lbnN1cmUoZSwicm90YXRlIiksYS5lbnN1cmUoZSwicmVmIiksYS5lbnN1cmUoZSwidXNlclVuaXQiKSxhLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGEscl0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCx1c2VyVW5pdDphLHZpZXc6cn19KSl9KSl9KSk7eC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD1uLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbiB3cGhTZXR1cEdldERlc3RpbmF0aW9ucyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKTt4Lm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0RGVzdGluYXRpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7eC5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxhYmVscyhlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSk7eC5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0UGFnZUxheW91dChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7eC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbiB3cGhTZXR1cEdldFBhZ2VNb2RlKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSk7eC5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpO3gub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSk7eC5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbiB3cGhTZXR1cEdldEF0dGFjaG1lbnRzKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7eC5vbigiR2V0SmF2YVNjcmlwdCIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0SmF2YVNjcmlwdChlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSk7eC5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREb2NKU0FjdGlvbnMoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7eC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO3gub24oIkdldE91dGxpbmUiLChmdW5jdGlvbiB3cGhTZXR1cEdldE91dGxpbmUoZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSk7eC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSk7eC5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpO3gub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXRNZXRhZGF0YShlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTt4Lm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uIHdwaFNldHVwR2V0TWFya0luZm8oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTt4Lm9uKCJHZXREYXRhIiwoZnVuY3Rpb24gd3BoU2V0dXBHZXREYXRhKGUpe3JldHVybiBhLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTt4Lm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oYSl7Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhyKTtyZXR1cm4gYS5nZXRBbm5vdGF0aW9uc0RhdGEoeCxyLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpfSkpfSkpfSkpO3gub24oIkdldEZpZWxkT2JqZWN0cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiZmllbGRPYmplY3RzIil9KSk7eC5vbigiSGFzSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pKTt4Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KSk7eC5vbigiU2F2ZURvY3VtZW50IiwoZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cyxmaWxlbmFtZTpvfSl7Y29uc3QgbD1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygieHJlZiIpLGEuZW5zdXJlRG9jKCJzdGFydFhSZWYiKV0saD1lP251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkocyk7aWYoaClmb3IoY29uc3RbZSx0XW9mIGgpbC5wdXNoKGEuZ2V0UGFnZShlKS50aGVuKChhPT57Y29uc3Qgcj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2V9YCk7cmV0dXJuIGEuc2F2ZU5ld0Fubm90YXRpb25zKHgscix0KS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2socil9KSl9KSkpO2lmKGUpbC5wdXNoKGEuc2VyaWFsaXplWGZhRGF0YShzKSk7ZWxzZSBmb3IobGV0IGU9MDtlPHQ7ZSsrKWwucHVzaChhLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7cmV0dXJuIHQuc2F2ZSh4LGEscykuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSkpfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwobCkudGhlbigoZnVuY3Rpb24oW3QsYSxpLHMsbCwuLi5oXSl7bGV0IHU9W10sZD1udWxsO2lmKGUpe2Q9aFswXTtpZighZClyZXR1cm4gdC5ieXRlc31lbHNle3U9aC5mbGF0KDIpO2lmKDA9PT11Lmxlbmd0aClyZXR1cm4gdC5ieXRlc31jb25zdCBmPWEgaW5zdGFuY2VvZiBuLkRpY3QmJmEuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgZz1udWxsLHA9ITE7aWYoQXJyYXkuaXNBcnJheShmKSl7Zm9yKGxldCBlPTAsdD1mLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09ZltlXSl7Zz1mW2UrMV07aT1udWxsO3A9ITB9bnVsbD09PWcmJihnPXMuZ2V0TmV3UmVmKCkpfWVsc2UgaWYoZil7aT1udWxsOygwLHIud2FybikoIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpfWxldCBtPU9iamVjdC5jcmVhdGUobnVsbCk7aWYocy50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1zLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIG4uRGljdCYmdC5mb3JFYWNoKCgodCxhKT0+eyJzdHJpbmciPT10eXBlb2YgYSYmKGVbdF09KDAsci5zdHJpbmdUb1BERlN0cmluZykoYSkpfSkpO209e3Jvb3RSZWY6cy50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsLGVuY3J5cHRSZWY6cy50cmFpbGVyLmdldFJhdygiRW5jcnlwdCIpfHxudWxsLG5ld1JlZjpzLmdldE5ld1JlZigpLGluZm9SZWY6cy50cmFpbGVyLmdldFJhdygiSW5mbyIpfHxudWxsLGluZm86ZSxmaWxlSWRzOnMudHJhaWxlci5nZXQoIklEIil8fG51bGwsc3RhcnRYUmVmOmwsZmlsZW5hbWU6b319cy5yZXNldE5ld1JlZigpO3JldHVybigwLGMuaW5jcmVtZW50YWxVcGRhdGUpKHtvcmlnaW5hbERhdGE6dC5ieXRlcyx4cmVmSW5mbzptLG5ld1JlZnM6dSx4cmVmOnMsaGFzWGZhOiEhZix4ZmFEYXRhc2V0c1JlZjpnLGhhc1hmYURhdGFzZXRzRW50cnk6cCxhY3JvRm9ybVJlZjppLGFjcm9Gb3JtOmEseGZhRGF0YTpkfSl9KSl9KSk7eC5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24gd3BoU2V0dXBSZW5kZXJQYWdlKGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzayhgR2V0T3BlcmF0b3JMaXN0OiBwYWdlICR7bn1gKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjp4LHNpbms6dCx0YXNrOmksaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7cyYmKDAsci5pbmZvKShgcGFnZT0ke24rMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGkpO2kudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTt4Lm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uIHdwaEV4dHJhY3RUZXh0KGUsdCl7Y29uc3Qgbj1lLnBhZ2VJbmRleDthLmdldFBhZ2UobikudGhlbigoZnVuY3Rpb24oYSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIituKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgcz1wPj1yLlZlcmJvc2l0eUxldmVsLklORk9TP0RhdGUubm93KCk6MDthLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjp4LHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ZS5pbmNsdWRlTWFya2VkQ29udGVudCxjb21iaW5lVGV4dEl0ZW1zOmUuY29tYmluZVRleHRJdGVtc30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtzJiYoMCxyLmluZm8pKGBwYWdlPSR7bisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktcykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO3gub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbiB3cGhHZXRTdHJ1Y3RUcmVlKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7eC5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEuZm9udEZhbGxiYWNrKGUuaWQseCl9KSk7eC5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uIHdwaENsZWFudXAoZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KSk7eC5vbigiVGVybWluYXRlIiwoZnVuY3Rpb24gd3BoVGVybWluYXRlKGUpe2Q9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtjb25zdCBlPWEuY2xlYW51cCgpO3QucHVzaChlKTthPW51bGx9ZWxzZSgwLG8uY2xlYXJHbG9iYWxDYWNoZXMpKCk7ZiYmZihuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBnKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXt4LmRlc3Ryb3koKTt4PW51bGx9KSl9KSk7eC5vbigiUmVhZHkiLChmdW5jdGlvbiB3cGhSZWFkeSh0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIHIuUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7eC5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oe3Bhc3N3b3JkOmV9KXtmaW5pc2hXb3JrZXJUYXNrKHQpO2EudXBkYXRlUGFzc3dvcmQoZSk7cGRmTWFuYWdlclJlYWR5KCl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt4LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KSl9ZWxzZSBlIGluc3RhbmNlb2Ygci5JbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5NaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2Ygci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb258fGUgaW5zdGFuY2VvZiByLlVua25vd25FcnJvckV4Y2VwdGlvbj94LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6eC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgaS5YUmVmUGFyc2VFeGNlcHRpb24/YS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCEwKS50aGVuKG9uU3VjY2VzcyxvbkZhaWx1cmUpfSkpOm9uRmFpbHVyZShlKX0pKX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Z2V0UGRmTWFuYWdlcihlKS50aGVuKChmdW5jdGlvbihlKXtpZihkKXtlLnRlcm1pbmF0ZShuZXcgci5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWE9ZTthLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9Pnt4LnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBTfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgaC5NZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1Xb3JrZXJNZXNzYWdlSGFuZGxlcjsidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWwuaXNOb2RlSlMmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmZnVuY3Rpb24gaXNNZXNzYWdlUG9ydChlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmV29ya2VyTWVzc2FnZUhhbmRsZXIuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXQuVGV4dFJlbmRlcmluZ01vZGU9dC5TdHJlYW1UeXBlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlBlcm1pc3Npb25GbGFnPXQuUGFzc3dvcmRSZXNwb25zZXM9dC5QYXNzd29yZEV4Y2VwdGlvbj10LlBhZ2VBY3Rpb25FdmVudFR5cGU9dC5PUFM9dC5NaXNzaW5nUERGRXhjZXB0aW9uPXQuTElORV9GQUNUT1I9dC5MSU5FX0RFU0NFTlRfRkFDVE9SPXQuSW52YWxpZFBERkV4Y2VwdGlvbj10LkltYWdlS2luZD10LklERU5USVRZX01BVFJJWD10LkZvcm1hdEVycm9yPXQuRm9udFR5cGU9dC5GZWF0dXJlVGVzdD10LkZPTlRfSURFTlRJVFlfTUFUUklYPXQuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGU9dC5DTWFwQ29tcHJlc3Npb25UeXBlPXQuQmFzZUV4Y2VwdGlvbj10LkFubm90YXRpb25UeXBlPXQuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXQuQW5ub3RhdGlvblJldmlld1N0YXRlPXQuQW5ub3RhdGlvblJlcGx5VHlwZT10LkFubm90YXRpb25Nb2RlPXQuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXQuQW5ub3RhdGlvbkZsYWc9dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXQuQW5ub3RhdGlvbkVkaXRvclR5cGU9dC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PXQuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlPXQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT10LkFib3J0RXhjZXB0aW9uPXZvaWQgMDt0LmFycmF5Qnl0ZUxlbmd0aD1hcnJheUJ5dGVMZW5ndGg7dC5hcnJheXNUb0J5dGVzPWZ1bmN0aW9uIGFycmF5c1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigxPT09dCYmZVswXWluc3RhbmNlb2YgVWludDhBcnJheSlyZXR1cm4gZVswXTtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDtyKyspYSs9YXJyYXlCeXRlTGVuZ3RoKGVbcl0pO2xldCByPTA7Y29uc3Qgbj1uZXcgVWludDhBcnJheShhKTtmb3IobGV0IGE9MDthPHQ7YSsrKXtsZXQgdD1lW2FdO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwodD0ic3RyaW5nIj09dHlwZW9mIHQ/c3RyaW5nVG9CeXRlcyh0KTpuZXcgVWludDhBcnJheSh0KSk7Y29uc3QgaT10LmJ5dGVMZW5ndGg7bi5zZXQodCxyKTtyKz1pfXJldHVybiBufTt0LmFzc2VydD1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX07dC5ieXRlc1RvU3RyaW5nPWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmdm9pZCAwIT09ZS5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPHQ7bis9YSl7Y29uc3QgaT1NYXRoLm1pbihuK2EsdCkscz1lLnN1YmFycmF5KG4saSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9O3QuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24gY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHQ9ITE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInNldHRsZWQiLHtnZXQ6KCk9PnR9KTtlLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7ZS5yZXNvbHZlPWZ1bmN0aW9uKGUpe3Q9ITA7YShlKX07ZS5yZWplY3Q9ZnVuY3Rpb24oZSl7dD0hMDtyKGUpfX0pKTtyZXR1cm4gZX07dC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoYSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihhLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dCYmdC5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaChlKXt9fWNvbnN0IHI9dD9uZXcgVVJMKGUsdCk6bmV3IFVSTChlKTtpZihmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe2lmKCFlKXJldHVybiExO3N3aXRjaChlLnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpKXJldHVybiByfWNhdGNoKGUpe31yZXR1cm4gbnVsbH07dC5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2UoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfTt0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfTt0LmdldFZlcmJvc2l0eUxldmVsPWZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIHJ9O3QuaW5mbz1mdW5jdGlvbiBpbmZvKGUpe3I+PWEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9O3QuaXNBcnJheUJ1ZmZlcj1mdW5jdGlvbiBpc0FycmF5QnVmZmVyKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJnZvaWQgMCE9PWUuYnl0ZUxlbmd0aH07dC5pc0FycmF5RXF1YWw9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaWYoZVthXSE9PXRbYV0pcmV0dXJuITE7cmV0dXJuITB9O3QuaXNBc2NpaT1mdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX07dC5vYmplY3RGcm9tTWFwPWZ1bmN0aW9uIG9iamVjdEZyb21NYXAoZSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSl0W2FdPXI7cmV0dXJuIHR9O3Qub2JqZWN0U2l6ZT1mdW5jdGlvbiBvYmplY3RTaXplKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9O3Quc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHI9ZSl9O3Quc2hhZG93PXNoYWRvdzt0LnN0cmluZzMyPWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfTt0LnN0cmluZ1RvQnl0ZXM9c3RyaW5nVG9CeXRlczt0LnN0cmluZ1RvUERGU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0OyLDviI9PT1lWzBdJiYiw78iPT09ZVsxXT90PSJ1dGYtMTZiZSI6IsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdP3Q9InV0Zi0xNmxlIjoiw68iPT09ZVswXSYmIsK7Ij09PWVbMV0mJiLCvyI9PT1lWzJdJiYodD0idXRmLTgiKTtpZih0KXRyeXtjb25zdCBhPW5ldyBUZXh0RGVjb2Rlcih0LHtmYXRhbDohMH0pLHI9c3RyaW5nVG9CeXRlcyhlKTtyZXR1cm4gYS5kZWNvZGUocil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9c1tlLmNoYXJDb2RlQXQoYSldO3QucHVzaChyP1N0cmluZy5mcm9tQ2hhckNvZGUocik6ZS5jaGFyQXQoYSkpfXJldHVybiB0LmpvaW4oIiIpfTt0LnN0cmluZ1RvVVRGMTZCRVN0cmluZz1mdW5jdGlvbiBzdHJpbmdUb1VURjE2QkVTdHJpbmcoZSl7Y29uc3QgdD1bIsO+w78iXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIHQuam9pbigiIil9O3Quc3RyaW5nVG9VVEY4U3RyaW5nPXN0cmluZ1RvVVRGOFN0cmluZzt0LnVucmVhY2hhYmxlPXVucmVhY2hhYmxlO3QudXRmOFN0cmluZ1RvU3RyaW5nPWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX07dC53YXJuPXdhcm47dC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXTt0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF07dC5MSU5FX0ZBQ1RPUj0xLjM1O3QuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzU7dC5SZW5kZXJpbmdJbnRlbnRGbGFnPXtBTlk6MSxESVNQTEFZOjIsUFJJTlQ6NCxBTk5PVEFUSU9OU19GT1JNUzoxNixBTk5PVEFUSU9OU19TVE9SQUdFOjMyLEFOTk9UQVRJT05TX0RJU0FCTEU6NjQsT1BMSVNUOjI1Nn07dC5Bbm5vdGF0aW9uTW9kZT17RElTQUJMRTowLEVOQUJMRToxLEVOQUJMRV9GT1JNUzoyLEVOQUJMRV9TVE9SQUdFOjN9O3QuQW5ub3RhdGlvbkVkaXRvclByZWZpeD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyI7dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT17RElTQUJMRTotMSxOT05FOjAsRlJFRVRFWFQ6MyxJTks6MTV9O3QuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGU9e0ZSRUVURVhUX1NJWkU6MSxGUkVFVEVYVF9DT0xPUjoyLEZSRUVURVhUX09QQUNJVFk6MyxJTktfQ09MT1I6MTEsSU5LX1RISUNLTkVTUzoxMixJTktfT1BBQ0lUWToxM307dC5QZXJtaXNzaW9uRmxhZz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fTt0LlRleHRSZW5kZXJpbmdNb2RlPXtGSUxMOjAsU1RST0tFOjEsRklMTF9TVFJPS0U6MixJTlZJU0lCTEU6MyxGSUxMX0FERF9UT19QQVRIOjQsU1RST0tFX0FERF9UT19QQVRIOjUsRklMTF9TVFJPS0VfQUREX1RPX1BBVEg6NixBRERfVE9fUEFUSDo3LEZJTExfU1RST0tFX01BU0s6MyxBRERfVE9fUEFUSF9GTEFHOjR9O3QuSW1hZ2VLaW5kPXtHUkFZU0NBTEVfMUJQUDoxLFJHQl8yNEJQUDoyLFJHQkFfMzJCUFA6M307dC5Bbm5vdGF0aW9uVHlwZT17VEVYVDoxLExJTks6MixGUkVFVEVYVDozLExJTkU6NCxTUVVBUkU6NSxDSVJDTEU6NixQT0xZR09OOjcsUE9MWUxJTkU6OCxISUdITElHSFQ6OSxVTkRFUkxJTkU6MTAsU1FVSUdHTFk6MTEsU1RSSUtFT1VUOjEyLFNUQU1QOjEzLENBUkVUOjE0LElOSzoxNSxQT1BVUDoxNixGSUxFQVRUQUNITUVOVDoxNyxTT1VORDoxOCxNT1ZJRToxOSxXSURHRVQ6MjAsU0NSRUVOOjIxLFBSSU5URVJNQVJLOjIyLFRSQVBORVQ6MjMsV0FURVJNQVJLOjI0LFRIUkVFRDoyNSxSRURBQ1Q6MjZ9O3QuQW5ub3RhdGlvblN0YXRlTW9kZWxUeXBlPXtNQVJLRUQ6Ik1hcmtlZCIsUkVWSUVXOiJSZXZpZXcifTt0LkFubm90YXRpb25NYXJrZWRTdGF0ZT17TUFSS0VEOiJNYXJrZWQiLFVOTUFSS0VEOiJVbm1hcmtlZCJ9O3QuQW5ub3RhdGlvblJldmlld1N0YXRlPXtBQ0NFUFRFRDoiQWNjZXB0ZWQiLFJFSkVDVEVEOiJSZWplY3RlZCIsQ0FOQ0VMTEVEOiJDYW5jZWxsZWQiLENPTVBMRVRFRDoiQ29tcGxldGVkIixOT05FOiJOb25lIn07dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn07dC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn07dC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fTt0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9O3QuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn07dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In07dC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07dC5TdHJlYW1UeXBlPXtVTktOT1dOOiJVTktOT1dOIixGTEFURToiRkxBVEUiLExaVzoiTFpXIixEQ1Q6IkRDVCIsSlBYOiJKUFgiLEpCSUc6IkpCSUciLEE4NToiQTg1IixBSFg6IkFIWCIsQ0NGOiJDQ0YiLFJMWDoiUkxYIn07dC5Gb250VHlwZT17VU5LTk9XTjoiVU5LTk9XTiIsVFlQRTE6IlRZUEUxIixUWVBFMVNUQU5EQVJEOiJUWVBFMVNUQU5EQVJEIixUWVBFMUM6IlRZUEUxQyIsQ0lERk9OVFRZUEUwOiJDSURGT05UVFlQRTAiLENJREZPTlRUWVBFMEM6IkNJREZPTlRUWVBFMEMiLFRSVUVUWVBFOiJUUlVFVFlQRSIsQ0lERk9OVFRZUEUyOiJDSURGT05UVFlQRTIiLFRZUEUzOiJUWVBFMyIsT1BFTlRZUEU6Ik9QRU5UWVBFIixUWVBFMDoiVFlQRTAiLE1NVFlQRTE6Ik1NVFlQRTEifTtjb25zdCBhPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9O3QuVmVyYm9zaXR5TGV2ZWw9YTt0LkNNYXBDb21wcmVzc2lvblR5cGU9e05PTkU6MCxCSU5BUlk6MX07dC5PUFM9e2RlcGVuZGVuY3k6MSxzZXRMaW5lV2lkdGg6MixzZXRMaW5lQ2FwOjMsc2V0TGluZUpvaW46NCxzZXRNaXRlckxpbWl0OjUsc2V0RGFzaDo2LHNldFJlbmRlcmluZ0ludGVudDo3LHNldEZsYXRuZXNzOjgsc2V0R1N0YXRlOjksc2F2ZToxMCxyZXN0b3JlOjExLHRyYW5zZm9ybToxMixtb3ZlVG86MTMsbGluZVRvOjE0LGN1cnZlVG86MTUsY3VydmVUbzI6MTYsY3VydmVUbzM6MTcsY2xvc2VQYXRoOjE4LHJlY3RhbmdsZToxOSxzdHJva2U6MjAsY2xvc2VTdHJva2U6MjEsZmlsbDoyMixlb0ZpbGw6MjMsZmlsbFN0cm9rZToyNCxlb0ZpbGxTdHJva2U6MjUsY2xvc2VGaWxsU3Ryb2tlOjI2LGNsb3NlRU9GaWxsU3Ryb2tlOjI3LGVuZFBhdGg6MjgsY2xpcDoyOSxlb0NsaXA6MzAsYmVnaW5UZXh0OjMxLGVuZFRleHQ6MzIsc2V0Q2hhclNwYWNpbmc6MzMsc2V0V29yZFNwYWNpbmc6MzQsc2V0SFNjYWxlOjM1LHNldExlYWRpbmc6MzYsc2V0Rm9udDozNyxzZXRUZXh0UmVuZGVyaW5nTW9kZTozOCxzZXRUZXh0UmlzZTozOSxtb3ZlVGV4dDo0MCxzZXRMZWFkaW5nTW92ZVRleHQ6NDEsc2V0VGV4dE1hdHJpeDo0MixuZXh0TGluZTo0MyxzaG93VGV4dDo0NCxzaG93U3BhY2VkVGV4dDo0NSxuZXh0TGluZVNob3dUZXh0OjQ2LG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OjQ3LHNldENoYXJXaWR0aDo0OCxzZXRDaGFyV2lkdGhBbmRCb3VuZHM6NDksc2V0U3Ryb2tlQ29sb3JTcGFjZTo1MCxzZXRGaWxsQ29sb3JTcGFjZTo1MSxzZXRTdHJva2VDb2xvcjo1MixzZXRTdHJva2VDb2xvck46NTMsc2V0RmlsbENvbG9yOjU0LHNldEZpbGxDb2xvck46NTUsc2V0U3Ryb2tlR3JheTo1NixzZXRGaWxsR3JheTo1NyxzZXRTdHJva2VSR0JDb2xvcjo1OCxzZXRGaWxsUkdCQ29sb3I6NTksc2V0U3Ryb2tlQ01ZS0NvbG9yOjYwLHNldEZpbGxDTVlLQ29sb3I6NjEsc2hhZGluZ0ZpbGw6NjIsYmVnaW5JbmxpbmVJbWFnZTo2MyxiZWdpbkltYWdlRGF0YTo2NCxlbmRJbmxpbmVJbWFnZTo2NSxwYWludFhPYmplY3Q6NjYsbWFya1BvaW50OjY3LG1hcmtQb2ludFByb3BzOjY4LGJlZ2luTWFya2VkQ29udGVudDo2OSxiZWdpbk1hcmtlZENvbnRlbnRQcm9wczo3MCxlbmRNYXJrZWRDb250ZW50OjcxLGJlZ2luQ29tcGF0OjcyLGVuZENvbXBhdDo3MyxwYWludEZvcm1YT2JqZWN0QmVnaW46NzQscGFpbnRGb3JtWE9iamVjdEVuZDo3NSxiZWdpbkdyb3VwOjc2LGVuZEdyb3VwOjc3LGJlZ2luQW5ub3RhdGlvbjo4MCxlbmRBbm5vdGF0aW9uOjgxLHBhaW50SW1hZ2VNYXNrWE9iamVjdDo4MyxwYWludEltYWdlTWFza1hPYmplY3RHcm91cDo4NCxwYWludEltYWdlWE9iamVjdDo4NSxwYWludElubGluZUltYWdlWE9iamVjdDo4NixwYWludElubGluZUltYWdlWE9iamVjdEdyb3VwOjg3LHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0Ojg4LHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDo4OSxwYWludFNvbGlkQ29sb3JJbWFnZU1hc2s6OTAsY29uc3RydWN0UGF0aDo5MX07dC5VTlNVUFBPUlRFRF9GRUFUVVJFUz17Zm9ybXM6ImZvcm1zIixqYXZhU2NyaXB0OiJqYXZhU2NyaXB0IixzaWduYXR1cmVzOiJzaWduYXR1cmVzIixzbWFzazoic21hc2siLHNoYWRpbmdQYXR0ZXJuOiJzaGFkaW5nUGF0dGVybiIsZXJyb3JUaWxpbmdQYXR0ZXJuOiJlcnJvclRpbGluZ1BhdHRlcm4iLGVycm9yRXh0R1N0YXRlOiJlcnJvckV4dEdTdGF0ZSIsZXJyb3JYT2JqZWN0OiJlcnJvclhPYmplY3QiLGVycm9yRm9udExvYWRUeXBlMzoiZXJyb3JGb250TG9hZFR5cGUzIixlcnJvckZvbnRTdGF0ZToiZXJyb3JGb250U3RhdGUiLGVycm9yRm9udE1pc3Npbmc6ImVycm9yRm9udE1pc3NpbmciLGVycm9yRm9udFRyYW5zbGF0ZToiZXJyb3JGb250VHJhbnNsYXRlIixlcnJvckNvbG9yU3BhY2U6ImVycm9yQ29sb3JTcGFjZSIsZXJyb3JPcGVyYXRvckxpc3Q6ImVycm9yT3BlcmF0b3JMaXN0IixlcnJvckZvbnRUb1VuaWNvZGU6ImVycm9yRm9udFRvVW5pY29kZSIsZXJyb3JGb250TG9hZE5hdGl2ZToiZXJyb3JGb250TG9hZE5hdGl2ZSIsZXJyb3JGb250QnVpbGRQYXRoOiJlcnJvckZvbnRCdWlsZFBhdGgiLGVycm9yRm9udEdldFBhdGg6ImVycm9yRm9udEdldFBhdGgiLGVycm9yTWFya2VkQ29udGVudDoiZXJyb3JNYXJrZWRDb250ZW50IixlcnJvckNvbnRlbnRTdWJTdHJlYW06ImVycm9yQ29udGVudFN1YlN0cmVhbSJ9O3QuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHI9YS5XQVJOSU5HUztmdW5jdGlvbiB3YXJuKGUpe3I+PWEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIHNoYWRvdyhlLHQsYSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IG49ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7dC5CYXNlRXhjZXB0aW9uPW47dC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX07dC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX07dC5JbnZhbGlkUERGRXhjZXB0aW9uPWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19O3QuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBNaXNzaW5nUERGRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fTt0LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj1jbGFzcyBVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19O3QuRm9ybWF0RXJyb3I9Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fTt0LkFib3J0RXhjZXB0aW9uPWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX07ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIGFycmF5Qnl0ZUxlbmd0aChlKXtpZih2b2lkIDAhPT1lLmxlbmd0aClyZXR1cm4gZS5sZW5ndGg7aWYodm9pZCAwIT09ZS5ieXRlTGVuZ3RoKXJldHVybiBlLmJ5dGVMZW5ndGg7dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGFycmF5Qnl0ZUxlbmd0aCIpfXQuRmVhdHVyZVRlc3Q9Y2xhc3MgRmVhdHVyZVRlc3R7c3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpe3JldHVybiBzaGFkb3codGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uIGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRXZhbFN1cHBvcnRlZCIsZnVuY3Rpb24gaXNFdmFsU3VwcG9ydGVkKCl7dHJ5e25ldyBGdW5jdGlvbigiIik7cmV0dXJuITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfX07Y29uc3QgaT1bLi4uQXJyYXkoMjU2KS5rZXlzKCldLm1hcCgoZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKSk7Y2xhc3MgVXRpbHtzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxhKXtyZXR1cm5gIyR7aVtlXX0ke2lbdF19JHtpW2FdfWB9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IGE7aWYoZVswXSl7aWYoZVswXTwwKXthPXRbMF07dFswXT10WzFdO3RbMV09YX10WzBdKj1lWzBdO3RbMV0qPWVbMF07aWYoZVszXTwwKXthPXRbMl07dFsyXT10WzNdO3RbM109YX10WzJdKj1lWzNdO3RbM10qPWVbM119ZWxzZXthPXRbMF07dFswXT10WzJdO3RbMl09YTthPXRbMV07dFsxXT10WzNdO3RbM109YTtpZihlWzFdPDApe2E9dFsyXTt0WzJdPXRbM107dFszXT1hfXRbMl0qPWVbMV07dFszXSo9ZVsxXTtpZihlWzJdPDApe2E9dFswXTt0WzBdPXRbMV07dFsxXT1hfXRbMF0qPWVbMl07dFsxXSo9ZVsyXX10WzBdKz1lWzRdO3RbMV0rPWVbNF07dFsyXSs9ZVs1XTt0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IGE9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvYSwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvYV19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3QgYT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUsdCkscj1VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxuPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT1VdGlsLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1pbihhWzFdLHJbMV0sblsxXSxpWzFdKSxNYXRoLm1heChhWzBdLHJbMF0sblswXSxpWzBdKSxNYXRoLm1heChhWzFdLHJbMV0sblsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLGE9ZVswXSp0WzBdK2VbMV0qdFsyXSxyPWVbMF0qdFsxXStlWzFdKnRbM10sbj1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShhK2kpLzIsbz1NYXRoLnNxcnQoKGEraSkqKjItNCooYSppLW4qcikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBhPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSkscj1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKGE+cilyZXR1cm4gbnVsbDtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSksaT1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiBuPmk/bnVsbDpbYSxuLHIsaV19c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsbixpLHMsbyl7Y29uc3QgYz1bXSxsPVtbXSxbXV07bGV0IGgsdSxkLGYsZyxwLG0sYjtmb3IobGV0IGw9MDtsPDI7KytsKXtpZigwPT09bCl7dT02KmUtMTIqYSs2Km47aD0tMyplKzkqYS05Km4rMypzO2Q9MyphLTMqZX1lbHNle3U9Nip0LTEyKnIrNippO2g9LTMqdCs5KnItOSppKzMqbztkPTMqci0zKnR9aWYoTWF0aC5hYnMoaCk8MWUtMTIpe2lmKE1hdGguYWJzKHUpPDFlLTEyKWNvbnRpbnVlO2Y9LWQvdTswPGYmJmY8MSYmYy5wdXNoKGYpfWVsc2V7bT11KnUtNCpkKmg7Yj1NYXRoLnNxcnQobSk7aWYoIShtPDApKXtnPSgtdStiKS8oMipoKTswPGcmJmc8MSYmYy5wdXNoKGcpO3A9KC11LWIpLygyKmgpOzA8cCYmcDwxJiZjLnB1c2gocCl9fX1sZXQgeSx3PWMubGVuZ3RoO2NvbnN0IFM9dztmb3IoO3ctLTspe2Y9Y1t3XTt5PTEtZjtsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZiphKzMqeSpmKmYqbitmKmYqZipzO2xbMV1bd109eSp5KnkqdCszKnkqeSpmKnIrMyp5KmYqZippK2YqZipmKm99bFswXVtTXT1lO2xbMV1bU109dDtsWzBdW1MrMV09cztsWzFdW1MrMV09bztsWzBdLmxlbmd0aD1sWzFdLmxlbmd0aD1TKzI7cmV0dXJuW01hdGgubWluKC4uLmxbMF0pLE1hdGgubWluKC4uLmxbMV0pLE1hdGgubWF4KC4uLmxbMF0pLE1hdGgubWF4KC4uLmxbMV0pXX19dC5VdGlsPVV0aWw7Y29uc3Qgcz1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNzI4LDcxMSw3MTAsNzI5LDczMyw3MzEsNzMwLDczMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4MjI2LDgyMjQsODIyNSw4MjMwLDgyMTIsODIxMSw0MDIsODI2MCw4MjQ5LDgyNTAsODcyMiw4MjQwLDgyMjIsODIyMCw4MjIxLDgyMTYsODIxNyw4MjE4LDg0ODIsNjQyNTcsNjQyNTgsMzIxLDMzOCwzNTIsMzc2LDM4MSwzMDUsMzIyLDMzOSwzNTMsMzgyLDAsODM2NF07ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5SZWZTZXRDYWNoZT10LlJlZlNldD10LlJlZj10Lk5hbWU9dC5FT0Y9dC5EaWN0PXQuQ21kPXQuQ0lSQ1VMQVJfUkVGPXZvaWQgMDt0LmNsZWFyUHJpbWl0aXZlQ2FjaGVzPWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7by5fY2xlYXJDYWNoZSgpO3MuX2NsZWFyQ2FjaGUoKTtsLl9jbGVhckNhY2hlKCl9O3QuaXNDbWQ9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIG8mJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfTt0LmlzRGljdD1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9O3QuaXNOYW1lPWlzTmFtZTt0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59O3ZhciByPWEoMik7Y29uc3Qgbj1TeW1ib2woIkNJUkNVTEFSX1JFRiIpO3QuQ0lSQ1VMQVJfUkVGPW47Y29uc3QgaT1TeW1ib2woIkVPRiIpO3QuRU9GPWk7Y29uc3Qgcz1mdW5jdGlvbiBOYW1lQ2xvc3VyZSgpe2xldCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Y2xhc3MgTmFtZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZX1zdGF0aWMgZ2V0KHQpe3JldHVybiBlW3RdfHwoZVt0XT1uZXcgTmFtZSh0KSl9c3RhdGljIF9jbGVhckNhY2hlKCl7ZT1PYmplY3QuY3JlYXRlKG51bGwpfX1yZXR1cm4gTmFtZX0oKTt0Lk5hbWU9cztjb25zdCBvPWZ1bmN0aW9uIENtZENsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQodCl7cmV0dXJuIGVbdF18fChlW3RdPW5ldyBDbWQodCkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIENtZH0oKTt0LkNtZD1vO2NvbnN0IGM9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBjfTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1jfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKS5sZW5ndGh9Z2V0KGUsdCxhKXtsZXQgcj10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXBbdF07dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwW2FdKX1yZXR1cm4gciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1hc3luYyBnZXRBc3luYyhlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9cmV0dXJuIHIgaW5zdGFuY2VvZiBsJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PXQpe3I9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcFthXSl9ciBpbnN0YW5jZW9mIGwmJnRoaXMueHJlZiYmKHI9dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKTtpZihBcnJheS5pc0FycmF5KHIpKXtyPXIuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspcltlXWluc3RhbmNlb2YgbCYmdGhpcy54cmVmJiYocltlXT10aGlzLnhyZWYuZmV0Y2gocltlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiByfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9PnsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZSh7eHJlZjplLGRpY3RBcnJheTp0LG1lcmdlU3ViRGljdHM6YT0hMX0pe2NvbnN0IHI9bmV3IERpY3QoZSksbj1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qscl1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXtsZXQgZT1uLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO24uc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBuKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcFt0XT1hWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IERpY3QoZSk7Zm9yKGNvbnN0IGUgb2YgYSlmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPWEpO24uc2l6ZT4wJiYoci5fbWFwW3RdPW4pfW4uY2xlYXIoKTtyZXR1cm4gci5zaXplPjA/cjpEaWN0LmVtcHR5fX10LkRpY3Q9RGljdDtjb25zdCBsPWZ1bmN0aW9uIFJlZkNsb3N1cmUoKXtsZXQgZT1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZ2V0KHQsYSl7Y29uc3Qgcj0wPT09YT9gJHt0fVJgOmAke3R9UiR7YX1gO3JldHVybiBlW3JdfHwoZVtyXT1uZXcgUmVmKHQsYSkpfXN0YXRpYyBfY2xlYXJDYWNoZSgpe2U9T2JqZWN0LmNyZWF0ZShudWxsKX19cmV0dXJuIFJlZn0oKTt0LlJlZj1sO2NsYXNzIFJlZlNldHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX3NldD1uZXcgU2V0KGUmJmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1SZWZTZXQ7Y2xhc3MgUmVmU2V0Q2FjaGV7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19dC5SZWZTZXRDYWNoZT1SZWZTZXRDYWNoZTtmdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIHMmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj10LkRvY1N0YXRzPXZvaWQgMDt0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxhKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHI9c1t0XTtpZihyIGluc3RhbmNlb2Ygbi5EaWN0KWZvcihjb25zdCB0IG9mIHIuZ2V0S2V5cygpKXtjb25zdCBzPWFbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1yLmdldFJhdyh0KSxjPW5ldyBuLlJlZlNldCxsPVtdO19jb2xsZWN0SlMobyxlLGwsYyk7bC5sZW5ndGg+MCYmKGlbc109bCl9fWlmKHQuaGFzKCJBIikpe2NvbnN0IGE9dC5nZXQoIkEiKSxyPW5ldyBuLlJlZlNldCxzPVtdO19jb2xsZWN0SlMoYSxlLHMscik7cy5sZW5ndGg+MCYmKGkuQWN0aW9uPXMpfXJldHVybigwLHIub2JqZWN0U2l6ZSkoaSk+MD9pOm51bGx9O3QuZW5jb2RlVG9YbWxTdHJpbmc9ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1uJiZuPD0xMjYpe2NvbnN0IGk9b1tuXTtpZihpKXthPHImJnQucHVzaChlLnN1YnN0cmluZyhhLHIpKTt0LnB1c2goaSk7YT1yKzF9fWVsc2V7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKGAmI3gke24udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9O2ApO24+NTUyOTUmJihuPDU3MzQ0fHxuPjY1NTMzKSYmcisrO2E9cisxfX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGU7YTxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKGEsZS5sZW5ndGgpKTtyZXR1cm4gdC5qb2luKCIiKX07dC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYobjwzM3x8bj4xMjZ8fDM1PT09bnx8NDA9PT1ufHw0MT09PW58fDYwPT09bnx8NjI9PT1ufHw5MT09PW58fDkzPT09bnx8MTIzPT09bnx8MTI1PT09bnx8NDc9PT1ufHwzNz09PW4pe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7bi50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfTt0LmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5PWZ1bmN0aW9uIGdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe2xldCBhPWUoKTtlPW51bGw7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrPTIpdFthW2VdXT1hW2UrMV07YT1udWxsfXJldHVybiB0fX07dC5nZXRJbmhlcml0YWJsZVByb3BlcnR5PWdldEluaGVyaXRhYmxlUHJvcGVydHk7dC5nZXRMb29rdXBUYWJsZUZhY3Rvcnk9ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19O3QuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLG5db2YgZSl7aWYoIWEuc3RhcnRzV2l0aChyLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KG4ucGFnZUluZGV4KTtpZighZSl7ZT1bXTt0LnNldChuLnBhZ2VJbmRleCxlKX1lLnB1c2gobil9cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH07dC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX07dC5sb2cyPWZ1bmN0aW9uIGxvZzIoZSl7aWYoZTw9MClyZXR1cm4gMDtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nMihlKSl9O3QubnVtYmVyVG9TdHJpbmc9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7aWYodCUxMDA9PTApcmV0dXJuKHQvMTAwKS50b1N0cmluZygpO2lmKHQlMTA9PTApcmV0dXJuIGUudG9GaXhlZCgxKTtyZXR1cm4gZS50b0ZpeGVkKDIpfTt0LnBhcnNlWEZBUGF0aD1mdW5jdGlvbiBwYXJzZVhGQVBhdGgoZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX07dC5yZWFkSW50OD1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9O3QucmVhZFVpbnQxNj1mdW5jdGlvbiByZWFkVWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfTt0LnJlYWRVaW50MzI9ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH07dC5yZWNvdmVySnNVUkw9ZnVuY3Rpb24gcmVjb3ZlckpzVVJMKGUpe2NvbnN0IHQ9bmV3IFJlZ0V4cCgiXlxccyooIitbImFwcC5sYXVuY2hVUkwiLCJ3aW5kb3cub3BlbiIsInhmYS5ob3N0LmdvdG9VUkwiXS5qb2luKCJ8Iikuc3BsaXQoIi4iKS5qb2luKCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCBhPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihhPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93OmF9fXJldHVybiBudWxsfTt0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXsoMCxyLmFzc2VydCkoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT1bXTtsZXQgbjtmb3IoO2U+PTFlMzspe2UtPTFlMzthLnB1c2goIk0iKX1uPWUvMTAwfDA7ZSU9MTAwO2EucHVzaChzW25dKTtuPWUvMTB8MDtlJT0xMDthLnB1c2goc1sxMCtuXSk7YS5wdXNoKHNbMjArZV0pO2NvbnN0IGk9YS5qb2luKCIiKTtyZXR1cm4gdD9pLnRvTG93ZXJDYXNlKCk6aX07dC52YWxpZGF0ZUNTU0ZvbnQ9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTppfT1lO2lmKC9eIi4qIiQvLnRlc3QoYSkpe2lmKC9bXlxcXSIvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAiOiAke2F9LmApO3JldHVybiExfX1lbHNlIGlmKC9eJy4qJyQvLnRlc3QoYSkpe2lmKC9bXlxcXScvLnRlc3QoYS5zbGljZSgxLGEubGVuZ3RoLTEpKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIHVuZXNjYXBlZCAnOiAke2F9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBlIG9mIGEuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoZSl8fCEvXltcdy1cXF0rJC8udGVzdChlKSl7KDAsci53YXJuKShgWEZBIC0gRm9udEZhbWlseSBjb250YWlucyBzb21lIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7YX0uYCk7cmV0dXJuITF9Y29uc3Qgcz1uP24udG9TdHJpbmcoKToiIjtlLmZvbnRXZWlnaHQ9dC5oYXMocyk/czoiNDAwIjtjb25zdCBvPXBhcnNlRmxvYXQoaSk7ZS5pdGFsaWNBbmdsZT1pc05hTihvKXx8bzwtOTB8fG8+OTA/IjE0IjppLnRvU3RyaW5nKCk7cmV0dXJuITB9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg1KTt0LlBERl9WRVJTSU9OX1JFR0VYUD0vXlsxLTldXC5cZCQvO2NsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPU1pc3NpbmdEYXRhRXhjZXB0aW9uO2NsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249UGFyc2VyRU9GRXhjZXB0aW9uO2NsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19dC5YUmVmRW50cnlFeGNlcHRpb249WFJlZkVudHJ5RXhjZXB0aW9uO2NsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19dC5YUmVmUGFyc2VFeGNlcHRpb249WFJlZlBhcnNlRXhjZXB0aW9uO3QuRG9jU3RhdHM9Y2xhc3MgRG9jU3RhdHN7Y29uc3RydWN0b3IoZSl7dGhpcy5faGFuZGxlcj1lO3RoaXMuX3N0cmVhbVR5cGVzPW5ldyBTZXQ7dGhpcy5fZm9udFR5cGVzPW5ldyBTZXR9X3NlbmQoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0cmVhbVR5cGVzKWVbdF09ITA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fZm9udFR5cGVzKXRbZV09ITA7dGhpcy5faGFuZGxlci5zZW5kKCJEb2NTdGF0cyIse3N0cmVhbVR5cGVzOmUsZm9udFR5cGVzOnR9KX1hZGRTdHJlYW1UeXBlKGUpe2lmKCF0aGlzLl9zdHJlYW1UeXBlcy5oYXMoZSkpe3RoaXMuX3N0cmVhbVR5cGVzLmFkZChlKTt0aGlzLl9zZW5kKCl9fWFkZEZvbnRUeXBlKGUpe2lmKCF0aGlzLl9mb250VHlwZXMuaGFzKGUpKXt0aGlzLl9mb250VHlwZXMuYWRkKGUpO3RoaXMuX3NlbmQoKX19fTtmdW5jdGlvbiBnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OnQsZ2V0QXJyYXk6YT0hMSxzdG9wV2hlbkZvdW5kOnI9ITB9KXtsZXQgaTtjb25zdCBzPW5ldyBuLlJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBuLkRpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49YT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKHIpcmV0dXJuIG47aXx8KGk9W10pO2kucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gaX1jb25zdCBzPVsiIiwiQyIsIkNDIiwiQ0NDIiwiQ0QiLCJEIiwiREMiLCJEQ0MiLCJEQ0NDIiwiQ00iLCIiLCJYIiwiWFgiLCJYWFgiLCJYTCIsIkwiLCJMWCIsIkxYWCIsIkxYWFgiLCJYQyIsIiIsIkkiLCJJSSIsIklJSSIsIklWIiwiViIsIlZJIiwiVklJIiwiVklJSSIsIklYIl07ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxzKXtpZighZSlyZXR1cm47bGV0IG89bnVsbDtpZihlIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHMuaGFzKGUpKXJldHVybjtvPWU7cy5wdXQobyk7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxhLHMpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRGljdCl7aWYoKDAsbi5pc05hbWUpKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgbjt0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP249dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihuPXQpO249biYmKDAsci5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZSgvXHUwMDAwL2csIiIpO24mJmEucHVzaChuKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxhLHMpfW8mJnMucmVtb3ZlKG8pfWNvbnN0IG89ezYwOiImbHQ7Iiw2MjoiJmd0OyIsMzg6IiZhbXA7IiwzNDoiJnF1b3Q7IiwzOToiJmFwb3M7In19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CYXNlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDIpO2NsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsci51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYG1ha2VTdWJTdHJlYW1gIGNhbGxlZCIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIG51bGx9fXQuQmFzZVN0cmVhbT1CYXNlU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmV0d29ya1BkZk1hbmFnZXI9dC5Mb2NhbFBkZk1hbmFnZXI9dm9pZCAwO3ZhciByPWEoMiksbj1hKDcpLGk9YSg0KSxzPWEoOSksbz1hKDgpO2Z1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PSgwLHIuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSk7aWYodClyZXR1cm4gdC5ocmVmOygwLHIud2FybikoYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIil9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLGMpe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKGMpO3RoaXMubXNnSGFuZGxlcj1yO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1uO3RoaXMuZW5hYmxlWGZhPWk7Y29uc3QgbD1uZXcgby5TdHJlYW0odCk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLGwpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKGwpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fTt0Lk5ldHdvcmtQZGZNYW5hZ2VyPWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSx0LGEscixpLG8pe3N1cGVyKCk7dGhpcy5fZG9jSWQ9ZTt0aGlzLl9wYXNzd29yZD1hLnBhc3N3b3JkO3RoaXMuX2RvY0Jhc2VVcmw9cGFyc2VEb2NCYXNlVXJsKG8pO3RoaXMubXNnSGFuZGxlcj1hLm1zZ0hhbmRsZXI7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXI7dGhpcy5lbmFibGVYZmE9aTt0aGlzLnN0cmVhbU1hbmFnZXI9bmV3IG4uQ2h1bmtlZFN0cmVhbU1hbmFnZXIodCx7bXNnSGFuZGxlcjphLm1zZ0hhbmRsZXIsbGVuZ3RoOmEubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6YS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmEucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LGEpe3RyeXtjb25zdCByPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseShlLGEpOnJ9Y2F0Y2gocil7aWYoIShyIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgcjthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShyLmJlZ2luLHIuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGEpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DaHVua2VkU3RyZWFtTWFuYWdlcj10LkNodW5rZWRTdHJlYW09dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpLGk9YSg4KTtjbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKTt0aGlzLmNodW5rU2l6ZT10O3RoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0O3RoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpO3RoaXMubWFuYWdlcj1hO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTA7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxhPXRoaXMubnVtQ2h1bmtzO3Q8YTsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBhPXRoaXMuY2h1bmtTaXplO2lmKGUlYSE9MCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBiZWdpbiBvZmZzZXQ6ICR7ZX1gKTtjb25zdCByPWUrdC5ieXRlTGVuZ3RoO2lmKHIlYSE9MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBuPU1hdGguZmxvb3IoZS9hKSxpPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9bjtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCBhPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoYT50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9YTtpPHI7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGE9MDthPHQ7KythKXtjb25zdCByPShlK2EpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpcmV0dXJuIHJ9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsYT10aGlzLnBvcyxyPXRoaXMuZW5kO2lmKCFlKXtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEscik7cmV0dXJuIHQuc3ViYXJyYXkoYSxyKX1sZXQgbj1hK2U7bj5yJiYobj1yKTtuPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGEsbik7dGhpcy5wb3M9bjtyZXR1cm4gdC5zdWJhcnJheShhLG4pfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGE9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxyPVtdO2ZvcihsZXQgZT10O2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8ci5wdXNoKGUpO3JldHVybiByfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCByPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO3IucG9zPXIuc3RhcnQ9ZTtyLmVuZD1lK3R8fHRoaXMuZW5kO3IuZGljdD1hO3JldHVybiByfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09Q2h1bmtlZFN0cmVhbTt0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9c2VuZFJlcXVlc3QoZSx0KXtjb25zdCBhPXRoaXMucGRmTmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcihlLHQpO2EuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fChhLm9uUHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcykpO2xldCBuPVtdLGk9MDtyZXR1cm4gbmV3IFByb21pc2UoKChlLHQpPT57Y29uc3QgcmVhZENodW5rPXM9Pnt0cnl7aWYoIXMuZG9uZSl7Y29uc3QgZT1zLnZhbHVlO24ucHVzaChlKTtpKz0oMCxyLmFycmF5Qnl0ZUxlbmd0aCkoZSk7YS5pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5vblByb2dyZXNzKHtsb2FkZWQ6aX0pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpO3JldHVybn1jb25zdCBvPSgwLHIuYXJyYXlzVG9CeXRlcykobik7bj1udWxsO2Uobyl9Y2F0Y2goZSl7dChlKX19O2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssYT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxhLmFkZCh0KTtpZigwPT09YS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBuPSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Quc2V0KHQsbik7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgYT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuX3JlcXVlc3RzQnlDaHVuay5zZXQoZSxhKTtpLnB1c2goZSl9YS5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxhPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxhKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLG49W107Zm9yKGxldCBlPWE7ZTxyOysrZSluLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3Mobil9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgYT0tMSxyPS0xO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbil7Y29uc3QgaT1lW25dO2E8MCYmKGE9aSk7aWYocj49MCYmcisxIT09aSl7dC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6cisxfSk7YT1pfW4rMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6YSxlbmRDaHVuazppKzF9KTtyPWl9cmV0dXJuIHR9b25Qcm9ncmVzcyhlKXt0aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplK2UubG9hZGVkLHRvdGFsOnRoaXMubGVuZ3RofSl9b25SZWNlaXZlRGF0YShlKXtjb25zdCB0PWUuY2h1bmssYT12b2lkIDA9PT1lLmJlZ2luLHI9YT90aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG49cit0LmJ5dGVMZW5ndGgsaT1NYXRoLmZsb29yKHIvdGhpcy5jaHVua1NpemUpLHM9bjx0aGlzLmxlbmd0aD9NYXRoLmZsb29yKG4vdGhpcy5jaHVua1NpemUpOk1hdGguY2VpbChuL3RoaXMuY2h1bmtTaXplKTtpZihhKXt0aGlzLnN0cmVhbS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEodCk7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9bn1lbHNlIHRoaXMuc3RyZWFtLm9uUmVjZWl2ZURhdGEocix0KTt0aGlzLnN0cmVhbS5pc0RhdGFMb2FkZWQmJnRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVzb2x2ZSh0aGlzLnN0cmVhbSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9aTtlPHM7KytlKXtjb25zdCB0PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYodCl7dGhpcy5fcmVxdWVzdHNCeUNodW5rLmRlbGV0ZShlKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PXRoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5nZXQoYSk7dC5oYXMoZSkmJnQuZGVsZXRlKGUpO3Quc2l6ZT4wfHxvLnB1c2goYSl9fX1pZighdGhpcy5kaXNhYmxlQXV0b0ZldGNoJiYwPT09dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNpemUpe2xldCBlO2lmKDE9PT10aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQpe2NvbnN0IHQ9dGhpcy5zdHJlYW0ubnVtQ2h1bmtzLTE7dGhpcy5zdHJlYW0uaGFzQ2h1bmsodCl8fChlPXQpfWVsc2UgZT10aGlzLnN0cmVhbS5uZXh0RW1wdHlDaHVuayhzKTtOdW1iZXIuaXNJbnRlZ2VyKGUpJiZ0aGlzLl9yZXF1ZXN0Q2h1bmtzKFtlXSl9Zm9yKGNvbnN0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5nZXQoZSk7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZGVsZXRlKGUpO3QucmVzb2x2ZSgpfXRoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUsdG90YWw6dGhpcy5sZW5ndGh9KX1vbkVycm9yKGUpe3RoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucmVqZWN0KGUpfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy5hYm9ydGVkPSEwO3RoaXMucGRmTmV0d29ya1N0cmVhbSYmdGhpcy5wZGZOZXR3b3JrU3RyZWFtLmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5TdHJpbmdTdHJlYW09dC5TdHJlYW09dC5OdWxsU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgyKTtjbGFzcyBTdHJlYW0gZXh0ZW5kcyByLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBuPWErZTtuPnImJihuPXIpO3RoaXMucG9zPW47cmV0dXJuIHQuc3ViYXJyYXkoYSxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfX10LlN0cmVhbT1TdHJlYW07dC5TdHJpbmdTdHJlYW09Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCgwLG4uc3RyaW5nVG9CeXRlcykoZSkpfX07dC5OdWxsU3RyZWFtPWNsYXNzIE51bGxTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheSgwKSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhZ2U9dC5QREZEb2N1bWVudD12b2lkIDA7dmFyIHI9YSgxMCksbj1hKDIpLGk9YSg0KSxzPWEoMyksbz1hKDQ5KSxjPWEoNSksbD1hKDY1KSxoPWEoNjcpLHU9YSg2OSksZD1hKDk4KSxmPWEoMTUpLGc9YSg4KSxwPWEoNzMpLG09YSg2MCksYj1hKDEzKSx5PWEoMTcpLHc9YSg3MiksUz1hKDYzKSx4PWEoNzQpLGs9YSg5OSk7Y29uc3QgQz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7Y29uc3RydWN0b3Ioe3BkZk1hbmFnZXI6ZSx4cmVmOnQscGFnZUluZGV4OmEscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6aSxmb250Q2FjaGU6cyxidWlsdEluQ01hcENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmMsZ2xvYmFsSW1hZ2VDYWNoZTpsLG5vbkJsZW5kTW9kZXNTZXQ6aCx4ZmFGYWN0b3J5OnV9KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnBhZ2VJbmRleD1hO3RoaXMucGFnZURpY3Q9cjt0aGlzLnhyZWY9dDt0aGlzLnJlZj1uO3RoaXMuZm9udENhY2hlPXM7dGhpcy5idWlsdEluQ01hcENhY2hlPW87dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9Yzt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT11O2NvbnN0IGQ9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIGl7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2F9XyR7KytkLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcGFnZSR7bi50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGE9KDAsaS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2Ygcy5EaWN0P3MuRGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OmF9KTphWzBdOmF9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2Ygcy5EaWN0P2U6cy5EaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0WzJdLXRbMF0hPTAmJnRbM10tdFsxXSE9MClyZXR1cm4gdDsoMCxuLndhcm4pKGBFbXB0eSAvJHtlfSBlbnRyeS5gKX1yZXR1cm4gbnVsbH1nZXQgbWVkaWFCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxDKX1nZXQgY3JvcEJveCgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjcm9wQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtsZXQgZT10aGlzLnBhZ2VEaWN0LmdldCgiVXNlclVuaXQiKTsoIm51bWJlciIhPXR5cGVvZiBlfHxlPD0wKSYmKGU9MSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2xldCBhO2lmKGU9PT10fHwoMCxuLmlzQXJyYXlFcXVhbCkoZSx0KSlhPXQ7ZWxzZXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtyJiZyWzJdLXJbMF0hPTAmJnJbM10tclsxXSE9MD9hPXI6KDAsbi53YXJuKSgiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLGF8fHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQsYSl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgdDtlLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpuLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yQ29udGVudFN1YlN0cmVhbX0pOygwLG4ud2FybikoYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke2F9KTogIiR7dH0iLmApfWdldENvbnRlbnRTdHJlYW0oZSl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKHQ9PnQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0/dDpBcnJheS5pc0FycmF5KHQpP25ldyB5LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbSh0LHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzLGUpKTpuZXcgZy5OdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSl7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3Qgbj1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksaT10aGlzLnBhZ2VEaWN0LHM9dGhpcy5hbm5vdGF0aW9ucy5zbGljZSgpLG89YXdhaXQgci5Bbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEpO2Zvcihjb25zdHtyZWY6ZX1vZiBvLmFubm90YXRpb25zKXMucHVzaChlKTtjb25zdCBjPWkuZ2V0KCJBbm5vdHMiKTtpLnNldCgiQW5ub3RzIixzKTtjb25zdCBsPVtdO2xldCBoPW51bGw7dGhpcy54cmVmLmVuY3J5cHQmJihoPXRoaXMueHJlZi5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKSk7KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaSxsLGgpO2MmJmkuc2V0KCJBbm5vdHMiLGMpO2NvbnN0IHU9by5kZXBlbmRlbmNpZXM7dS5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5vLmFubm90YXRpb25zKTtyZXR1cm4gdX1zYXZlKGUsdCxhKXtjb25zdCByPW5ldyBiLlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChhKSYmaS5wdXNoKHMuc2F2ZShyLHQsYSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fCh0aGlzLnJlc291cmNlc1Byb21pc2U9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7cmV0dXJuIHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IHAuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazphLGludGVudDpzLGNhY2hlS2V5Om8sYW5ub3RhdGlvblN0b3JhZ2U6Yz1udWxsfSl7Y29uc3QgbD10aGlzLmdldENvbnRlbnRTdHJlYW0oZSksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksZD10aGlzLnhmYUZhY3Rvcnk/bnVsbDooMCxpLmdldE5ld0Fubm90YXRpb25zTWFwKShjKTtsZXQgZj1Qcm9taXNlLnJlc29sdmUobnVsbCk7aWYoZCl7Y29uc3QgZT1kLmdldCh0aGlzLnBhZ2VJbmRleCk7ZSYmKGY9ci5Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKHUsYSxlKSl9Y29uc3QgZz1Qcm9taXNlLmFsbChbbCxoXSkudGhlbigoKFtyXSk9Pntjb25zdCBuPW5ldyBtLk9wZXJhdG9yTGlzdChzLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OnUuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpvfSk7cmV0dXJuIHUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06cix0YXNrOmEscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX0pKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2csdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsZl0pLnRoZW4oKGZ1bmN0aW9uKFtlLHQscl0pe3ImJih0PXQuY29uY2F0KHIpKTtpZigwPT09dC5sZW5ndGh8fHMmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEUpe2UuZmx1c2goITApO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19Y29uc3QgaT0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUyksbz0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEocyZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShzJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCksZD1bXTtmb3IoY29uc3QgZSBvZiB0KShvfHxsJiZlLm11c3RCZVZpZXdlZChjKXx8aCYmZS5tdXN0QmVQcmludGVkKGMpKSYmZC5wdXNoKGUuZ2V0T3BlcmF0b3JMaXN0KHUsYSxzLGksYykuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7YS5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybntvcExpc3Q6bnVsbCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCkudGhlbigoZnVuY3Rpb24odCl7bGV0IGE9ITEscj0hMTtmb3IoY29uc3R7b3BMaXN0Om4sc2VwYXJhdGVGb3JtOmksc2VwYXJhdGVDYW52YXM6c31vZiB0KXtlLmFkZE9wTGlzdChuKTtpJiYoYT1pKTtzJiYocj1zKX1lLmZsdXNoKCEwLHtmb3JtOmEsY2FudmFzOnJ9KTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fSkpfSkpfWV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjplLHRhc2s6dCxpbmNsdWRlTWFya2VkQ29udGVudDphLHNpbms6cixjb21iaW5lVGV4dEl0ZW1zOm59KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbShlKSxzPXRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkZvbnQiLCJQcm9wZXJ0aWVzIiwiWE9iamVjdCJdKTtyZXR1cm4gUHJvbWlzZS5hbGwoW2ksc10pLnRoZW4oKChbaV0pPT5uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTppLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxjb21iaW5lVGV4dEl0ZW1zOm4sc2luazpyLHZpZXdCb3g6dGhpcy52aWV3fSkpKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyB3LlN0cnVjdFRyZWVQYWdlKGUsdGhpcy5wYWdlRGljdCk7dC5wYXJzZSgpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsYSl7Y29uc3Qgcj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107Y29uc3QgaT1bXSxzPVtdO2xldCBvO2NvbnN0IGM9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxsPSEhKGEmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGg9ISEoYSZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9Y3x8bCYmYS52aWV3YWJsZTsocnx8aCYmYS5wcmludGFibGUpJiZzLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtvfHwobz1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkpO2kucHVzaChhLmV4dHJhY3RUZXh0Q29udGVudChvLHQsdGhpcy52aWV3KS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKGkpO3JldHVybiBzfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKCgoKT0+e2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5hbm5vdGF0aW9ucyllLnB1c2goci5Bbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLHQsdGhpcy5wZGZNYW5hZ2VyLHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExKS5jYXRjaCgoZnVuY3Rpb24oZSl7KDAsbi53YXJuKShgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChlKS50aGVuKChmdW5jdGlvbihlKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3QgdD1bXTtsZXQgYTtmb3IoY29uc3QgbiBvZiBlKWlmKG4paWYobiBpbnN0YW5jZW9mIHIuUG9wdXBBbm5vdGF0aW9uKXthfHwoYT1bXSk7YS5wdXNoKG4pfWVsc2UgdC5wdXNoKG4pO2EmJnQucHVzaCguLi5hKTtyZXR1cm4gdH0pKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT0oMCxpLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5wYWdlRGljdCxuLlBhZ2VBY3Rpb25FdmVudFR5cGUpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJqc0FjdGlvbnMiLGUpfX10LlBhZ2U9UGFnZTtjb25zdCB2PW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLEY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxPPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IG49dC5sZW5ndGgsaT1lLnBlZWtCeXRlcyhhKSxzPWkubGVuZ3RoLW47aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPW4tMTtsZXQgcj1pLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPG4mJmlbci1zXT09PXRbYS1zXTspcysrO2lmKHM+PW4pe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8biYmaVthK3JdPT09dFtyXTspcisrO2lmKHI+PW4pe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9dC5QREZEb2N1bWVudD1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBuLkludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBrLlhSZWYodCxlKTt0aGlzLl9wYWdlUHJvbWlzZXM9bmV3IE1hcDt0aGlzLl92ZXJzaW9uPW51bGw7Y29uc3QgYT17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKythLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBoLkNhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPWYuTGluZWFyaXphdGlvbi5jcmVhdGUodGhpcy5zdHJlYW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShlKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtmaW5kKGUsTykmJih0PWUucG9zKzYtZS5zdGFydCl9ZWxzZXtjb25zdCBhPTEwMjQscj1GLmxlbmd0aDtsZXQgbj0hMSxzPWUuZW5kO2Zvcig7IW4mJnM+MDspe3MtPWEtcjtzPDAmJihzPTApO2UucG9zPXM7bj1maW5kKGUsRixhLCEwKX1pZihuKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywic3RhcnRYUmVmIix0KX1jaGVja0hlYWRlcigpe2NvbnN0IGU9dGhpcy5zdHJlYW07ZS5yZXNldCgpO2lmKCFmaW5kKGUsdikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKHYubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2kuUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoYSk/dGhpcy5fdmVyc2lvbj1hOigwLG4ud2FybikoYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2F9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KChlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXsoMCxuLndhcm4pKCJfaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGUuZ2V0KCJLaWRzIiksdCl9Y29uc3QgYT0oMCxzLmlzTmFtZSkoZS5nZXQoIkZUIiksIlNpZyIpLHI9ZS5nZXQoIlJlY3QiKSxpPUFycmF5LmlzQXJyYXkocikmJnIuZXZlcnkoKGU9PjA9PT1lKSk7cmV0dXJuIGEmJml9KSl9Z2V0IF94ZmFTdHJlYW1zKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksYT17InhkcDp4ZHAiOiIiLHRlbXBsYXRlOiIiLGRhdGFzZXRzOiIiLGNvbmZpZzoiIixjb25uZWN0aW9uU2V0OiIiLGxvY2FsZVNldDoiIixzdHlsZXNoZWV0OiIiLCIveGRwOnhkcCI6IiJ9O2lmKHQgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2FbInhkcDp4ZHAiXT10O3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IG47bj0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzT3duUHJvcGVydHkobikpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihhW25dPWkpfXJldHVybiBhfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3QgYT1lW3RdO2lmKGEpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGQuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYocil0cnl7dFthXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7cmV0dXJuIG51bGx9cmV0dXJuIHR9Z2V0IHhmYUZhY3RvcnkoKXtsZXQgZTt0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgeC5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCksYT1uZXcgcC5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgYS5sb2FkKCk7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZS5nZXQoYSk7dCBpbnN0YW5jZW9mIGMuQmFzZVN0cmVhbSYmci5zZXQoYSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMocil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGM9bmV3IHAuT2JqZWN0TG9hZGVyKHIsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBjLmxvYWQoKTtjb25zdCBsPXIuZ2V0KCJGb250Iik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgYi5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyBtLk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSx5PW5ldyBNYXA7bC5mb3JFYWNoKCgoZSx0KT0+e3kuc2V0KGUsdCl9KSk7Y29uc3Qgdz1bXTtmb3IoY29uc3RbZSxhXW9mIHkpe2NvbnN0IG89YS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShvIGluc3RhbmNlb2Ygcy5EaWN0KSljb250aW51ZTtsZXQgYz1vLmdldCgiRm9udEZhbWlseSIpO2M9Yy5yZXBsYWNlKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6Yyxmb250V2VpZ2h0Om8uZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LW8uZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJncucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTtjb25zdCBTPXRoaXMueGZhRmFjdG9yeS5zZXRGb250cyhmKTtpZighUylyZXR1cm47aC5pZ25vcmVFcnJvcnM9ITA7dy5sZW5ndGg9MDtmLmxlbmd0aD0wO2NvbnN0IHg9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBTKSgwLG8uZ2V0WGZhRm9udE5hbWUpKGAke2V9LVJlZ3VsYXJgKXx8eC5hZGQoZSk7eC5zaXplJiZTLnB1c2goIlBkZkpTLUZhbGxiYWNrIik7Zm9yKGNvbnN0IGUgb2YgUylpZigheC5oYXMoZSkpZm9yKGNvbnN0IGEgb2Zbe25hbWU6IlJlZ3VsYXIiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJCb2xkIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiSXRhbGljIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZToxMn0se25hbWU6IkJvbGRJdGFsaWMiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjEyfV0pe2NvbnN0IGk9YCR7ZX0tJHthLm5hbWV9YCxjPSgwLG8uZ2V0WGZhRm9udERpY3QpKGkpO3cucHVzaCh1LmhhbmRsZVNldEZvbnQocixbcy5OYW1lLmdldChpKSwxXSxudWxsLGQsdCxnLGMse2ZvbnRGYW1pbHk6ZSxmb250V2VpZ2h0OmEuZm9udFdlaWdodCxpdGFsaWNBbmdsZTphLml0YWxpY0FuZ2xlfSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpKX1hd2FpdCBQcm9taXNlLmFsbCh3KTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoZix4KX1hc3luYyBzZXJpYWxpemVYZmFEYXRhKGUpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LnNlcmlhbGl6ZURhdGEoZSk6bnVsbH1nZXQgdmVyc2lvbigpe3JldHVybiB0aGlzLmNhdGFsb2cudmVyc2lvbnx8dGhpcy5fdmVyc2lvbn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHQ9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCF0KXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IG49dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjB8fG4gaW5zdGFuY2VvZiBjLkJhc2VTdHJlYW0mJiFuLmlzRW1wdHk7Y29uc3QgaT0hISgxJnQuZ2V0KCJTaWdGbGFncyIpKSxzPWkmJnRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoYSk7ZS5oYXNBY3JvRm9ybT1yJiYhcztlLmhhc1NpZ25hdHVyZXM9aX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCByPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2Ygcil7ZVthXT0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShyKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKHIgaW5zdGFuY2VvZiBzLk5hbWUpe2VbYV09cjtjb250aW51ZX1icmVhaztkZWZhdWx0OmxldCB0O3N3aXRjaCh0eXBlb2Ygcil7Y2FzZSJzdHJpbmciOnQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykocik7YnJlYWs7Y2FzZSJudW1iZXIiOmNhc2UiYm9vbGVhbiI6dD1yO2JyZWFrO2RlZmF1bHQ6ciBpbnN0YW5jZW9mIHMuTmFtZSYmKHQ9cil9aWYodm9pZCAwPT09dCl7KDAsbi53YXJuKShgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCk7Y29udGludWV9ZS5DdXN0b218fChlLkN1c3RvbT1PYmplY3QuY3JlYXRlKG51bGwpKTtlLkN1c3RvbVthXT10O2NvbnRpbnVlfSgwLG4ud2FybikoYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIEluZm86ICR7cn0uYCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1hLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGE7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9KDAsbi5zdHJpbmdUb0J5dGVzKShlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihhPSgwLG4uc3RyaW5nVG9CeXRlcykoZVsxXSkpfWVsc2UgdD0oMCxsLmNhbGN1bGF0ZU1ENSkodGhpcy5zdHJlYW0uZ2V0Qnl0ZVJhbmdlKDAsMTAyNCksMCwxMDI0KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGE/aGV4U3RyaW5nKGEpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246YSx4cmVmOnJ9PXRoaXMsaT1zLlJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7bGV0IGE9ZS5nZXRSYXcoIlR5cGUiKTthIGluc3RhbmNlb2Ygcy5SZWYmJihhPWF3YWl0IHIuZmV0Y2hBc3luYyhhKSk7aWYoKDAscy5pc05hbWUpKGEsIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKGEpeygwLG4ud2FybikoYF9nZXRMaW5lYXJpemF0aW9uUGFnZTogIiR7YS5tZXNzYWdlfSIuYCk7cmV0dXJuIHQuZ2V0UGFnZURpY3QoZSl9fWdldFBhZ2UoZSl7Y29uc3QgdD10aGlzLl9wYWdlUHJvbWlzZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Om59PXRoaXM7bGV0IGk7aT1uP1Byb21pc2UucmVzb2x2ZShbcy5EaWN0LmVtcHR5LG51bGxdKTpyJiZyLnBhZ2VGaXJzdD09PWU/dGhpcy5fZ2V0TGluZWFyaXphdGlvblBhZ2UoZSk6YS5nZXRQYWdlRGljdChlKTtpPWkudGhlbigoKFt0LHJdKT0+bmV3IFBhZ2Uoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnQscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6YS5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTphLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOmEuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6YS5nbG9iYWxJbWFnZUNhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bn0pKSk7dGhpcy5fcGFnZVByb21pc2VzLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGNoZWNrRmlyc3RQYWdlKGU9ITEpe2lmKCFlKXRyeXthd2FpdCB0aGlzLmdldFBhZ2UoMCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn19fWFzeW5jIGNoZWNrTGFzdFBhZ2UoZT0hMSl7Y29uc3R7Y2F0YWxvZzp0LHBkZk1hbmFnZXI6YX09dGhpczt0LnNldEFjdHVhbE51bVBhZ2VzKCk7bGV0IHI7dHJ5e2F3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygieGZhRmFjdG9yeSIpLGEuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksYS5lbnN1cmVDYXRhbG9nKCJudW1QYWdlcyIpXSk7aWYodGhpcy54ZmFGYWN0b3J5KXJldHVybjtyPXRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dC5udW1QYWdlcztpZighTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChzKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKHItMSk7YXdhaXQgdGhpcy5jbGVhbnVwKCk7aWYocyBpbnN0YW5jZW9mIGkuWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb247KDAsbi53YXJuKShgY2hlY2tMYXN0UGFnZSAtIGludmFsaWQgL1BhZ2VzIHRyZWUgL0NvdW50OiAke3J9LmApO2xldCBvO3RyeXtvPWF3YWl0IHQuZ2V0QWxsUGFnZURpY3RzKGUpfWNhdGNoKGEpe2lmKGEgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLG5dXW9mIG8pe2xldCBpO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7aT1Qcm9taXNlLnJlamVjdChyKTtpLmNhdGNoKCgoKT0+e30pKX1lbHNlIGk9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmEseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6cixyZWY6bixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cChlPSExKXtyZXR1cm4gdGhpcy5jYXRhbG9nP3RoaXMuY2F0YWxvZy5jbGVhbnVwKGUpOigwLHUuY2xlYXJHbG9iYWxDYWNoZXMpKCl9X2NvbGxlY3RGaWVsZE9iamVjdHMoZSx0LGEpe2NvbnN0IGk9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLmdldCgiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gfWEuaGFzKGUpfHxhLnNldChlLFtdKTthLmdldChlKS5wdXNoKHIuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+ZSYmZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpeygwLG4ud2FybikoYF9jb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IHQ9aS5nZXQoIktpZHMiKTtmb3IoY29uc3QgciBvZiB0KXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoZSxyLGEpfX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmaWVsZE9iamVjdHMiLFByb21pc2UucmVzb2x2ZShudWxsKSk7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0aGlzLmNhdGFsb2cuYWNyb0Zvcm0uZ2V0KCJGaWVsZHMiKSl0aGlzLl9jb2xsZWN0RmllbGRPYmplY3RzKCIiLGUsdCk7Y29uc3QgYT1bXTtmb3IoY29uc3RbcixuXW9mIHQpYS5wdXNoKFByb21pc2UuYWxsKG4pLnRoZW4oKHQ9PnsodD10LmZpbHRlcigoZT0+ISFlKSkpLmxlbmd0aD4wJiYoZVtyXT10KX0pKSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoYSkudGhlbigoKCk9PmUpKSl9Z2V0IGhhc0pTQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImhhc0pTQWN0aW9ucyIsZSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQmJk9iamVjdC52YWx1ZXModCkuc29tZSgoZT0+ZS5zb21lKChlPT5udWxsIT09ZS5hY3Rpb25zKSkpKX1nZXQgY2FsY3VsYXRpb25PcmRlcklkcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlfHwhZS5oYXMoIkNPIikpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBzLlJlZiYmYS5wdXNoKGUudG9TdHJpbmcoKSk7cmV0dXJuIDA9PT1hLmxlbmd0aD8oMCxuLnNoYWRvdykodGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk6KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLGEpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Qb3B1cEFubm90YXRpb249dC5NYXJrdXBBbm5vdGF0aW9uPXQuQW5ub3RhdGlvbkZhY3Rvcnk9dC5Bbm5vdGF0aW9uQm9yZGVyU3R5bGU9dC5Bbm5vdGF0aW9uPXZvaWQgMDt0LmdldFF1YWRQb2ludHM9Z2V0UXVhZFBvaW50czt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMTEpLHM9YSgzKSxvPWEoNjMpLGM9YSg1KSxsPWEoNTgpLGg9YSg2NyksdT1hKDEyKSxkPWEoNzApLGY9YSg3MyksZz1hKDYwKSxwPWEoOCksbT1hKDc0KTt0LkFubm90YXRpb25GYWN0b3J5PWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0LGEscixuKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxhLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxhLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksYS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksbj90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEpOi0xXSkudGhlbigoKFtpLHMsbyxjLGxdKT0+YS5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxhLHIsaSxvLGMsbixsXSkpKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxpLG8sYz1udWxsLGwsaCx1PS0xKXtjb25zdCBkPWUuZmV0Y2hJZlJlZih0KTtpZighKGQgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBmPXQgaW5zdGFuY2VvZiBzLlJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7aS5jcmVhdGVPYmpJZCgpfWA7bGV0IGc9ZC5nZXQoIlN1YnR5cGUiKTtnPWcgaW5zdGFuY2VvZiBzLk5hbWU/Zy5uYW1lOm51bGw7Y29uc3QgcD17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOmEsYWNyb0Zvcm06byBpbnN0YW5jZW9mIHMuRGljdD9vOnMuRGljdC5lbXB0eSxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLHBhZ2VJbmRleDp1fTtzd2l0Y2goZyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2Ygcy5OYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24ocCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24ocCl9KDAsci53YXJuKShgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKHApO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKHApO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKHApO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24ocCk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKHApO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKHApO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24ocCk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihwKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKHApO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24ocCk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24ocCk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24ocCk7ZGVmYXVsdDpofHwoZz8oMCxyLndhcm4pKGBVbmltcGxlbWVudGVkIGFubm90YXRpb24gdHlwZSAiJHtnfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uYCk6KDAsci53YXJuKSgiQW5ub3RhdGlvbiBpcyBtaXNzaW5nIHRoZSByZXF1aXJlZCAvU3VidHlwZS4iKSk7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBuPXIuZ2V0UmF3KCJQIik7aWYoIShuIGluc3RhbmNlb2Ygcy5SZWYpKXJldHVybi0xO3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW25dKX1jYXRjaChlKXsoMCxyLndhcm4pKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCk7cmV0dXJuLTF9fXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LGEpe2NvbnN0IG49ZS54cmVmO2xldCBpO2NvbnN0IGM9W10sbD1bXTtmb3IoY29uc3QgaCBvZiBhKXN3aXRjaChoLmFubm90YXRpb25UeXBlKXtjYXNlIHIuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6aWYoIWkpe2NvbnN0IGU9bmV3IHMuRGljdChuKTtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7Y29uc3QgdD1bXTtpPW4uZ2V0TmV3UmVmKCk7KDAsby53cml0ZU9iamVjdCkoaSxlLHQsbnVsbCk7Yy5wdXNoKHtyZWY6aSxkYXRhOnQuam9pbigiIil9KX1sLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixoLGMse2V2YWx1YXRvcjplLHRhc2s6dCxiYXNlRm9udFJlZjppfSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6bC5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihuLGgsYykpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChsKSxkZXBlbmRlbmNpZXM6Y319c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49ZS54cmVmLGk9W107Zm9yKGNvbnN0IHMgb2YgYSlzd2l0Y2gocy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSByLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmkucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scyx7ZXZhbHVhdG9yOmUsdGFzazp0fSkpO2JyZWFrO2Nhc2Ugci5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks6aS5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKG4scykpfXJldHVybiBQcm9taXNlLmFsbChpKX19O2Z1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGE9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOnUuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxhLDApO3JldHVybiBhO2Nhc2UgNDp1LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2lmKCFlLmhhcygiUXVhZFBvaW50cyIpKXJldHVybiBudWxsO2NvbnN0IGE9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGh8fGEubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCByPVtdO2ZvcihsZXQgZT0wLG49YS5sZW5ndGgvODtlPG47ZSsrKXtyLnB1c2goW10pO2ZvcihsZXQgbj04KmUsaT04KmUrODtuPGk7bis9Mil7Y29uc3QgaT1hW25dLHM9YVtuKzFdO2lmKG51bGwhPT10JiYoaTx0WzBdfHxpPnRbMl18fHM8dFsxXXx8cz50WzNdKSlyZXR1cm4gbnVsbDtyW2VdLnB1c2goe3g6aSx5OnN9KX19cmV0dXJuIHIubWFwKChlPT57Y29uc3RbdCxhLHIsbl09ZS5yZWR1Y2UoKChbZSx0LGEscl0sbik9PltNYXRoLm1pbihlLG4ueCksTWF0aC5tYXgodCxuLngpLE1hdGgubWluKGEsbi55KSxNYXRoLm1heChyLG4ueSldKSxbTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUlOX1ZBTFVFLE51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1JTl9WQUxVRV0pO3JldHVyblt7eDp0LHk6bn0se3g6YSx5Om59LHt4OnQseTpyfSx7eDphLHk6cn1dfSkpfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3RbbixpLHMsb109ci5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsYSk7aWYobj09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1uKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tbipjLGVbMV0taSpsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0IHQ9ZS5kaWN0O3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSk7dGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSk7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpO3RoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSk7dGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKTt0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSk7dGhpcy5zZXRCb3JkZXJTdHlsZSh0KTt0aGlzLnNldEFwcGVhcmFuY2UodCk7dGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgYT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoYSk7dGhpcy5zZXRSb3RhdGlvbihhKTt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITF9O2lmKGUuY29sbGVjdEZpZWxkcyl7Y29uc3QgYT10LmdldCgiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSl0IGluc3RhbmNlb2Ygcy5SZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9KDAsbi5jb2xsZWN0QWN0aW9ucykoZS54cmVmLHQsci5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2ZhbGxiYWNrRm9udERpY3Q9bnVsbH1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxyLkFubm90YXRpb25GbGFnLklOVklTSUJMRSkmJiF0aGlzLl9oYXNGbGFnKGUsci5Bbm5vdGF0aW9uRmxhZy5OT1ZJRVcpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuUFJJTlQpJiYhdGhpcy5faGFzRmxhZyhlLHIuQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKX1tdXN0QmVWaWV3ZWQoZSl7Y29uc3QgdD1lJiZlLmdldCh0aGlzLmRhdGEuaWQpO3JldHVybiB0JiZ2b2lkIDAhPT10LmhpZGRlbj8hdC5oaWRkZW46dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxyLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWUmJmUuZ2V0KHRoaXMuZGF0YS5pZCk7cmV0dXJuIHQmJnZvaWQgMCE9PXQucHJpbnQ/dC5wcmludDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsci5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGwuYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MH1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe0FycmF5LmlzQXJyYXkoZSkmJjQ9PT1lLmxlbmd0aD90aGlzLnJlY3RhbmdsZT1yLlV0aWwubm9ybWFsaXplUmVjdChlKTp0aGlzLnJlY3RhbmdsZT1bMCwwLDAsMF19c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1hLm5hbWU7Y29udGludWV9KDAsci53YXJuKShgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2F9YCl9fXNldFJvdGF0aW9uKGUpe3RoaXMucm90YXRpb249MDtpZihlIGluc3RhbmNlb2Ygcy5EaWN0KXtsZXQgdD1lLmdldCgiUiIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIodCkmJjAhPT10KXt0JT0zNjA7dDwwJiYodCs9MzYwKTt0JTkwPT0wJiYodGhpcy5yb3RhdGlvbj10KX19fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIiksYT10LmdldCgiVHlwZSIpO2lmKCFhfHwoMCxzLmlzTmFtZSkoYSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGE9dC5nZXQoIk4iKTtpZihhIGluc3RhbmNlb2YgYy5CYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj1lLmdldCgiQVMiKTtyIGluc3RhbmNlb2Ygcy5OYW1lJiZhLmhhcyhyLm5hbWUpJiYodGhpcy5hcHBlYXJhbmNlPWEuZ2V0KHIubmFtZSkpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2Ygcy5OYW1lPygwLHIud2FybikoInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBzLkRpY3QmJih0aGlzLm9jPXQpfWxvYWRSZXNvdXJjZXMoZSx0KXtyZXR1cm4gdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKS50aGVuKCh0PT57aWYoIXQpcmV0dXJuO3JldHVybiBuZXcgZi5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7Y29uc3Qgbz10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmYSZyLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IGcuT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Yz1uZXcgcC5TdHJpbmdTdHJlYW0oIiIpO2MuZGljdD1uZXcgcy5EaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxjKSxkPWguZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGY9aC5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0sbT1nZXRUcmFuc2Zvcm1NYXRyaXgoby5yZWN0LGQsZiksYj1uZXcgZy5PcGVyYXRvckxpc3Q7bGV0IHk7dGhpcy5vYyYmKHk9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT15JiZiLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHldKTtiLmFkZE9wKHIuT1BTLmJlZ2luQW5ub3RhdGlvbixbby5pZCxvLnJlY3QsbSxmLGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmMsdGFzazp0LHJlc291cmNlczp1LG9wZXJhdG9yTGlzdDpiLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2IuYWRkT3Aoci5PUFMuZW5kQW5ub3RhdGlvbixbXSk7dm9pZCAwIT09eSYmYi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKTt0aGlzLnJlc2V0KCk7cmV0dXJue29wTGlzdDpiLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpsfX1hc3luYyBzYXZlKGUsdCxhKXtyZXR1cm4gbnVsbH1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4hMX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2lmKCF0aGlzLmFwcGVhcmFuY2UpcmV0dXJuO2NvbnN0IHI9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0sdGhpcy5hcHBlYXJhbmNlKSxuPVtdLGk9W10scz17ZGVzaXJlZFNpemU6TWF0aC5JbmZpbml0eSxyZWFkeTohMCxlbnF1ZXVlKGUsdCl7Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcyl7aS5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7bi5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9fX19O2F3YWl0IGUuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTp0aGlzLmFwcGVhcmFuY2UsdGFzazp0LHJlc291cmNlczpyLGluY2x1ZGVNYXJrZWRDb250ZW50OiEwLGNvbWJpbmVUZXh0SXRlbXM6ITAsc2luazpzLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtpLmxlbmd0aCYmbi5wdXNoKGkuam9pbigiIikpO24ubGVuZ3RoPjAmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9bil9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7KDAsci53YXJuKSgiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJUIikpKTtsZXQgYT1lO2NvbnN0IG49bmV3IHMuUmVmU2V0O2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2Zvcig7YS5oYXMoIlBhcmVudCIpOyl7YT1hLmdldCgiUGFyZW50Iik7aWYoIShhIGluc3RhbmNlb2Ygcy5EaWN0KXx8YS5vYmpJZCYmbi5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmbi5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KCgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1Bbm5vdGF0aW9uO2NsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDt0aGlzLmRhc2hBcnJheT1bM107dGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPTA7dGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz0wfXNldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IGE9KHRbMl0tdFswXSkvMixuPSh0WzNdLXRbMV0pLzI7aWYoYT4wJiZuPjAmJihlPmF8fGU+bikpeygwLHIud2FybikoYEFubm90YXRpb25Cb3JkZXJTdHlsZS5zZXRXaWR0aCAtIGlnbm9yaW5nIHdpZHRoOiAke2V9YCk7ZT0xfX10aGlzLndpZHRoPWV9fXNldFN0eWxlKGUpe2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5TT0xJRDticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPXIuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9ci5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlVOREVSTElORX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7bGV0IGE9ITAscj0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7YT0hMTticmVha310PjAmJihyPSExKX1pZihhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKHMuTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUFubm90YXRpb25Cb3JkZXJTdHlsZTtjbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PWUuZGljdDtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIHMuUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGE9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1hIGluc3RhbmNlb2Ygcy5OYW1lP2EubmFtZTpyLkFubm90YXRpb25SZXBseVR5cGUuUkVQTFl9aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PXIuQW5ub3RhdGlvblJlcGx5VHlwZS5HUk9VUCl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO3RoaXMuZGF0YS5oYXNQb3B1cD1lLmhhcygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7dGhpcy5kYXRhLmhhc1BvcHVwPXQuaGFzKCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjphLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpuLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6Y30pe2xldCBsPU51bWJlci5NQVhfVkFMVUUsaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1JTl9WQUxVRSxkPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgZj1bInEiXTt0JiZmLnB1c2godCk7YSYmZi5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmYucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtsZXQgZz10aGlzLmRhdGEucXVhZFBvaW50cztnfHwoZz1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIGcpe2NvbnN0W3QsYSxyLG5dPWMoZixlKTtsPU1hdGgubWluKGwsdCk7dT1NYXRoLm1heCh1LGEpO2g9TWF0aC5taW4oaCxyKTtkPU1hdGgubWF4KGQsbil9Zi5wdXNoKCJRIik7Y29uc3QgbT1uZXcgcy5EaWN0KGUpLGI9bmV3IHMuRGljdChlKTtiLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRm9ybSIpKTtjb25zdCB5PW5ldyBwLlN0cmluZ1N0cmVhbShmLmpvaW4oIiAiKSk7eS5kaWN0PWI7bS5zZXQoIkZtMCIseSk7Y29uc3Qgdz1uZXcgcy5EaWN0KGUpO24mJncuc2V0KCJCTSIscy5OYW1lLmdldChuKSk7Im51bWJlciI9PXR5cGVvZiBpJiZ3LnNldCgiQ0EiLGkpOyJudW1iZXIiPT10eXBlb2YgbyYmdy5zZXQoImNhIixvKTtjb25zdCBTPW5ldyBzLkRpY3QoZSk7Uy5zZXQoIkdTMCIsdyk7Y29uc3QgeD1uZXcgcy5EaWN0KGUpO3guc2V0KCJFeHRHU3RhdGUiLFMpO3guc2V0KCJYT2JqZWN0IixtKTtjb25zdCBrPW5ldyBzLkRpY3QoZSk7ay5zZXQoIlJlc291cmNlcyIseCk7Y29uc3QgQz10aGlzLmRhdGEucmVjdD1bbCxoLHUsZF07ay5zZXQoIkJCb3giLEMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgcC5TdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PWs7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSx5KX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBuPWUuZ2V0TmV3UmVmKCksaT1lLmdldE5ld1JlZigpLHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6aX0pLGM9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxyKSxsPVtdO2xldCBoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKGksYyxsLGgpO2EucHVzaCh7cmVmOmksZGF0YTpsLmpvaW4oIiIpfSk7bC5sZW5ndGg9MDtoPWUuZW5jcnlwdD9lLmVuY3J5cHQuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKTpudWxsOygwLG8ud3JpdGVPYmplY3QpKG4scyxsLGgpO3JldHVybntyZWY6bixkYXRhOmwuam9pbigiIil9fXN0YXRpYyBhc3luYyBjcmVhdGVOZXdQcmludEFubm90YXRpb24oZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKHQsZSxhKSxuPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwOnJ9KTtyZXR1cm4gbmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0Om4seHJlZjplfSl9fXQuTWFya3VwQW5ub3RhdGlvbj1NYXJrdXBBbm5vdGF0aW9uO2NsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0LGE9dGhpcy5kYXRhO3RoaXMucmVmPWUucmVmO2EuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ7dm9pZCAwPT09YS5maWVsZE5hbWUmJihhLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PWEuYWN0aW9ucyYmKGEuYWN0aW9ucz0oMCxuLmNvbGxlY3RBY3Rpb25zKShlLnhyZWYsdCxyLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgbz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO2EuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobyk7Y29uc3QgYz0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTthLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShjKTtpZih2b2lkIDA9PT1vJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjtpZih0KXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7YS5maWVsZFZhbHVlPW89ZS54ZmFEYXRhc2V0cy5nZXRWYWx1ZSh0KX19dm9pZCAwPT09byYmbnVsbCE9PWEuZGVmYXVsdEZpZWxkVmFsdWUmJihhLmZpZWxkVmFsdWU9YS5kZWZhdWx0RmllbGRWYWx1ZSk7YS5hbHRlcm5hdGl2ZVRleHQ9KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlRVIil8fCIiKTtjb25zdCBsPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxlLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGw/bDoiIjthLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKTtjb25zdCBoPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZUIn0pO2EuZmllbGRUeXBlPWggaW5zdGFuY2VvZiBzLk5hbWU/aC5uYW1lOm51bGw7Y29uc3QgdT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJEUiJ9KSxkPWUuYWNyb0Zvcm0uZ2V0KCJEUiIpLGY9dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLmFwcGVhcmFuY2UuZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczp1LGFjcm9Gb3JtUmVzb3VyY2VzOmQsYXBwZWFyYW5jZVJlc291cmNlczpmLG1lcmdlZFJlc291cmNlczpzLkRpY3QubWVyZ2Uoe3hyZWY6ZS54cmVmLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX07YS5maWVsZEZsYWdzPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhLmZpZWxkRmxhZ3MpfHxhLmZpZWxkRmxhZ3M8MCkmJihhLmZpZWxkRmxhZ3M9MCk7YS5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpO2EucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKTthLmhpZGRlbj10aGlzLl9oYXNGbGFnKGEuYW5ub3RhdGlvbkZsYWdzLHIuQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxyLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1zdGF0aWMgX2dldFJvdGF0aW9uTWF0cml4KGUsdCxhKXtzd2l0Y2goZSl7Y2FzZSA5MDpyZXR1cm5bMCwxLC0xLDAsdCwwXTtjYXNlIDE4MDpyZXR1cm5bLTEsMCwwLC0xLHQsYV07Y2FzZSAyNzA6cmV0dXJuWzAsLTEsMSwwLDAsYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19Z2V0Um90YXRpb25NYXRyaXgoZSl7Y29uc3QgdD1lP2UuZ2V0KHRoaXMuZGF0YS5pZCk6dm9pZCAwO2xldCBhPXQmJnQucm90YXRpb247dm9pZCAwPT09YSYmKGE9dGhpcy5yb3RhdGlvbik7aWYoMD09PWEpcmV0dXJuIHIuSURFTlRJVFlfTUFUUklYO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0saT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4gV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoYSxuLGkpfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtjb25zdCB0PWU/ZS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGE9dCYmdC5yb3RhdGlvbjt2b2lkIDA9PT1hJiYoYT10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IHI9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sbj10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1hfHwxODA9PT1hP2AwIDAgJHtyfSAke259IHJlYDpgMCAwICR7bn0gJHtyfSByZWA7bGV0IG89IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihvPWAkeygwLGkuZ2V0UGRmQ29sb3IpKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtzfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe28rPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHsoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtzfSBTIGB9cmV0dXJuIG99YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSl7aWYobiYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikpcmV0dXJue29wTGlzdDpuZXcgZy5PcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKTtjb25zdCBvPW5ldyBnLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGM9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsYyxbMSwwLDAsMSwwLDBdKTtsZXQgaDt0aGlzLm9jJiYoaD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PWgmJm8uYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsaF0pO28uYWRkT3Aoci5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsbCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLCExXSk7Y29uc3QgdT1uZXcgcC5TdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp1LHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpvfSk7by5hZGRPcChyLk9QUy5lbmRBbm5vdGF0aW9uLFtdKTt2b2lkIDAhPT1oJiZvLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pO3JldHVybntvcExpc3Q6byxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgcy5EaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLEFycmF5LmZyb20odGhpcy5ib3JkZXJDb2xvciwoZT0+ZS8yNTUpKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsQXJyYXkuZnJvbSh0aGlzLmJhY2tncm91bmRDb2xvciwoZT0+ZS8yNTUpKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hc3luYyBzYXZlKGUsdCxhKXtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IGk9biYmbi52YWx1ZSxjPW4mJm4ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1jKXJldHVybiBudWxsO2k9aXx8dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09YyYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmkubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZpLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09YyYmKGM9dGhpcy5yb3RhdGlvbik7bGV0IGw9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSk7aWYobnVsbD09PWwpcmV0dXJuIG51bGw7Y29uc3R7eHJlZjpofT1lLHU9aC5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IGQ9WzAsMCx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXV0sZj17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKSh1LmdldCgiVCIpfHwiIiksdmFsdWU6aX0sZz1oLmdldE5ld1JlZigpLHA9bmV3IHMuRGljdChoKTtwLnNldCgiTiIsZyk7Y29uc3QgbT1oLmVuY3J5cHQ7bGV0IGI9bnVsbCx5PW51bGw7aWYobSl7Yj1tLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0aGlzLnJlZi5udW0sdGhpcy5yZWYuZ2VuKTt5PW0uY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGcubnVtLGcuZ2VuKTtsPXkuZW5jcnlwdFN0cmluZyhsKX1jb25zdCBlbmNvZGVyPWU9PigwLHIuaXNBc2NpaSkoZSk/ZTooMCxyLnN0cmluZ1RvVVRGMTZCRVN0cmluZykoZSk7dS5zZXQoIlYiLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoZW5jb2Rlcik6ZW5jb2RlcihpKSk7dS5zZXQoIkFQIixwKTt1LnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QoYyk7dyYmdS5zZXQoIk1LIix3KTtjb25zdCBTPW5ldyBzLkRpY3QoaCk7Uy5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO1Muc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO1Muc2V0KCJSZXNvdXJjZXMiLHRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhoKSk7Uy5zZXQoIkJCb3giLGQpO2NvbnN0IHg9dGhpcy5nZXRSb3RhdGlvbk1hdHJpeChhKTt4IT09ci5JREVOVElUWV9NQVRSSVgmJlMuc2V0KCJNYXRyaXgiLHgpO2NvbnN0IGs9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKHUsayxiKTtrLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBDPVtgJHtnLm51bX0gJHtnLmdlbn0gb2JqXG5gXTsoMCxvLndyaXRlRGljdCkoUyxDLHkpO0MucHVzaCgiIHN0cmVhbVxuIixsLCJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmsuam9pbigiIikseGZhOmZ9LHtyZWY6ZyxkYXRhOkMuam9pbigiIikseGZhOm51bGx9XX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSlyZXR1cm4gbnVsbDtjb25zdCBuPWE/YS5nZXQodGhpcy5kYXRhLmlkKTp2b2lkIDA7bGV0IHMsbztpZihuKXtzPW4uZm9ybWF0dGVkVmFsdWV8fG4udmFsdWU7bz1uLnJvdGF0aW9ufWlmKHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2lmKHZvaWQgMD09PXMpe3M9dGhpcy5kYXRhLmZpZWxkVmFsdWU7aWYoIXMpcmV0dXJuIiJ9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTsoMCxyLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltKCk7aWYoIiI9PT1zKXJldHVybiIiO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBjPS0xO3RoaXMuZGF0YS5tdWx0aUxpbmUmJihjPXMuc3BsaXQoL1xyXG58XHJ8XG4vKS5sZW5ndGgpO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGg9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1vJiYyNzAhPT1vfHwoW2gsbF09W2wsaF0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IHU9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKSxbZCxmXT10aGlzLl9jb21wdXRlRm9udFNpemUobC0yLGgtNCxzLHUsYyk7bGV0IGc9dS5kZXNjZW50O2lzTmFOKGcpJiYoZz0wKTtjb25zdCBwPU1hdGgubWluKE1hdGguZmxvb3IoKGwtZikvMiksMikrTWF0aC5hYnMoZykqZixtPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UoZCxzLHUsZixoLGwsbSwyLHAsYSk7Y29uc3QgYj11LmVuY29kZVN0cmluZyhzKS5qb2luKCIiKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZCx1LGIsaCwyLHAsYSk7Y29uc3QgeT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZigwPT09bXx8bT4yKXJldHVybmAvVHggQk1DIHEgJHt5fUJUIGArZCtgIDEgMCAwIDEgMiAke3B9IFRtICgkeygwLHIuZXNjYXBlU3RyaW5nKShiKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7eX1CVCBgK2QrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQoYix1LGYsaCxtLDIscCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IG49bmV3IGcuT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309YTthd2FpdCBlLmhhbmRsZVNldEZvbnQocixbbyYmcy5OYW1lLmdldChvKSxjXSxudWxsLG4sdCxpLG51bGwpO3JldHVybiBpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsYSxuLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKCFvKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cyl7Y29uc3QgaT10aGlzLl9nZXRUZXh0V2lkdGgoYSxuKTtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3IuTElORV9GQUNUT1IsdC9pKSl9ZWxzZXtjb25zdCBpPWEuc3BsaXQoL1xyXG4/fFxuLyksYz1bXTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PW4uZW5jb2RlU3RyaW5nKGUpLmpvaW4oIiIpLGE9bi5jaGFyc1RvR2x5cGhzKHQpLHI9bi5nZXRDaGFyUG9zaXRpb25zKHQpO2MucHVzaCh7bGluZTp0LGdseXBoczphLHBvc2l0aW9uczpyfSl9Y29uc3QgaXNUb29CaWc9YT0+e2xldCByPTA7Zm9yKGNvbnN0IGkgb2YgYyl7cis9dGhpcy5fc3BsaXRMaW5lKG51bGwsbixhLHQsaSkubGVuZ3RoKmE7aWYocj5lKXJldHVybiEwfXJldHVybiExfTtvPTEyO2xldCBsPW8qci5MSU5FX0ZBQ1RPUixoPU1hdGgucm91bmQoZS9sKTtoPU1hdGgubWF4KGgscyk7Zm9yKDs7KXtsPWUvaDtvPXJvdW5kV2l0aFR3b0RpZ2l0cyhsL3IuTElORV9GQUNUT1IpO2lmKCFpc1Rvb0JpZyhvKSlicmVhaztoKyt9fWNvbnN0e2ZvbnROYW1lOmMsZm9udENvbG9yOmx9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9KDAsaS5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSkoe2ZvbnRTaXplOm8sZm9udE5hbWU6Yyxmb250Q29sb3I6bH0pfXJldHVyblt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSxvXX1fcmVuZGVyVGV4dChlLHQsYSxpLHMsbyxjKXtsZXQgbDtpZigxPT09cyl7bD0oaS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphKS8yfWVsc2UgaWYoMj09PXMpe2w9aS10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSphLW99ZWxzZSBsPW87bD0oMCxuLm51bWJlclRvU3RyaW5nKShsKTtyZXR1cm5gJHtsfSAke2M9KDAsbi5udW1iZXJUb1N0cmluZykoYyl9IFRkICgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pIFRqYH1fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGUpe2NvbnN0e2xvY2FsUmVzb3VyY2VzOnQsYXBwZWFyYW5jZVJlc291cmNlczphLGFjcm9Gb3JtUmVzb3VyY2VzOnJ9PXRoaXMuX2ZpZWxkUmVzb3VyY2VzLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSYmdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZTtpZighbilyZXR1cm4gdHx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKG4pKXJldHVybiBlfWlmKHIgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2Ygcy5EaWN0JiZhLmhhcyhuKSl7Y29uc3Qgcj1uZXcgcy5EaWN0KGUpO3Iuc2V0KG4sYS5nZXRSYXcobikpO2NvbnN0IGk9bmV3IHMuRGljdChlKTtpLnNldCgiRm9udCIscik7cmV0dXJuIHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbaSx0XSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiB0fHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT0oMCxuLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCBpPSgwLG4uZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApO3RoaXMuZGF0YS5tYXhMZW49aTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLGkscyxvLGMpe2NvbnN0IGw9KDAsbi5udW1iZXJUb1N0cmluZykoaS90aGlzLmRhdGEubWF4TGVuKSxoPVtdLHU9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgdSloLnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGMpfUJUIGArZStgIDEgMCAwIDEgJHtzfSAke299IFRtICR7aC5qb2luKGAgJHtsfSAwIFRkIGApfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGEscixuLGkscyxvLGMsbCl7Y29uc3QgaD10LnNwbGl0KC9cclxuP3xcbi8pLHU9W10sZD1uLTIqbztmb3IoY29uc3QgZSBvZiBoKXtjb25zdCB0PXRoaXMuX3NwbGl0TGluZShlLGEscixkKTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PTA9PT11Lmxlbmd0aD9vOjA7dS5wdXNoKHRoaXMuX3JlbmRlclRleHQoZSxhLHIsbixzLHQsLXIpKX19Y29uc3QgZj11LmpvaW4oIlxuIik7cmV0dXJuYC9UeCBCTUMgcSAke3RoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpfUJUIGArZStgIDEgMCAwIDEgMCAke2l9IFRtICR7Zn0gRVQgUSBFTUNgfV9zcGxpdExpbmUoZSx0LGEscixuPXt9KXtlPW4ubGluZXx8dC5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7Y29uc3QgaT1uLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKGkubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPW4ucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxuXT1zW3RdLGc9aVt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9bjt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcoci5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pO3RoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHIuQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2UoMCxyLndhcm4pKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEsbixpKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLCExLGkpO2xldCBzPW51bGwsbz1udWxsO2lmKGkpe2NvbnN0IGU9aS5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO289ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7bnVsbD09cyYmKHM9dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTtjb25zdCBjPXM/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U7aWYoYyl7Y29uc3Qgcz10aGlzLmFwcGVhcmFuY2UsbD1jLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpfHxyLklERU5USVRZX01BVFJJWDtvJiZjLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoaSkpO3RoaXMuYXBwZWFyYW5jZT1jO2NvbnN0IGg9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLG4saSk7dGhpcy5hcHBlYXJhbmNlPXM7Yy5kaWN0LnNldCgiTWF0cml4IixsKTtyZXR1cm4gaH1yZXR1cm57b3BMaXN0Om5ldyBnLk9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGEpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtsZXQgaT1uJiZuLnJvdGF0aW9uLGM9biYmbi52YWx1ZTtpZih2b2lkIDA9PT1pKXtpZih2b2lkIDA9PT1jKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09YylyZXR1cm4gbnVsbH1jb25zdCBsPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybiBudWxsO3ZvaWQgMD09PWkmJihpPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBoPXtwYXRoOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGwuZ2V0KCJUIil8fCIiKSx2YWx1ZTpjP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KGM/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSk7bC5zZXQoIkFTIix1KTtsLnNldCgiTSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwscCxnKTtwLnB1c2goIlxuZW5kb2JqXG4iKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxhKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdCBuPWEuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9biYmbi5yb3RhdGlvbixjPW4mJm4udmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09YylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PWMpcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1jJiYoYz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDooMCxyLnN0cmluZ1RvUERGU3RyaW5nKShsLmdldCgiVCIpfHwiIiksdmFsdWU6Yz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LHU9cy5OYW1lLmdldChjP3RoaXMuZGF0YS5idXR0b25WYWx1ZToiT2ZmIik7bGV0IGQ9bnVsbDtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2lmKGMpaWYodGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzLlJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO2xldCBhPW51bGw7ZiYmKGE9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5wYXJlbnQubnVtLHRoaXMucGFyZW50LmdlbikpO3Quc2V0KCJWIix1KTtkPVtgJHt0aGlzLnBhcmVudC5udW19ICR7dGhpcy5wYXJlbnQuZ2VufSBvYmpcbmBdOygwLG8ud3JpdGVEaWN0KSh0LGQsYSk7ZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpO2wuc2V0KCJNIixgRDokeygwLHIuZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKX1gKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09W2Ake3RoaXMucmVmLm51bX0gJHt0aGlzLnJlZi5nZW59IG9ialxuYF07KDAsby53cml0ZURpY3QpKGwsbSxwKTttLnB1c2goIlxuZW5kb2JqXG4iKTtjb25zdCBiPVt7cmVmOnRoaXMucmVmLGRhdGE6bS5qb2luKCIiKSx4ZmE6aH1dO251bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KTtyZXR1cm4gYn1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgYT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxpPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLG89WzAsMCxhLGldLGM9LjgqTWF0aC5taW4oYSxpKTtsZXQgbCxoO2lmKCJjaGVjayI9PT10KXtsPXt3aWR0aDouNzU1KmMsaGVpZ2h0Oi43MDUqY307aD0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtsPXt3aWR0aDouNzkxKmMsaGVpZ2h0Oi43MDUqY307aD0ibCJ9ZWxzZSgwLHIudW5yZWFjaGFibGUpKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IHU9YHEgQlQgL1BkZkpzWmFEYiAke2N9IFRmIDAgZyAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChhLWwud2lkdGgpLzIpfSAkeygwLG4ubnVtYmVyVG9TdHJpbmcpKChpLWwuaGVpZ2h0KS8yKX0gVGQgKCR7aH0pIFRqIEVUIFFgLGQ9bmV3IHMuRGljdChlLnhyZWYpO2Quc2V0KCJGb3JtVHlwZSIsMSk7ZC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7ZC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7ZC5zZXQoIkJCb3giLG8pO2Quc2V0KCJNYXRyaXgiLFsxLDAsMCwxLDAsMF0pO2Quc2V0KCJMZW5ndGgiLHUubGVuZ3RoKTtjb25zdCBmPW5ldyBzLkRpY3QoZS54cmVmKSxnPW5ldyBzLkRpY3QoZS54cmVmKTtnLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Yuc2V0KCJGb250IixnKTtkLnNldCgiUmVzb3VyY2VzIixmKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBwLlN0cmluZ1N0cmVhbSh1KTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlLmRpY3Q9ZDt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X3Byb2Nlc3NDaGVja0JveChlKXtjb25zdCB0PWUuZGljdC5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgciYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXIpO2NvbnN0IG49bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLGk9YS5nZXRLZXlzKCk7aWYoMD09PWkubGVuZ3RoKWkucHVzaCgiT2ZmIixuKTtlbHNlIGlmKDE9PT1pLmxlbmd0aCkiT2ZmIj09PWlbMF0/aS5wdXNoKG4pOmkudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihpLmluY2x1ZGVzKG4pKXtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixuKX1lbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wO2kucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSl8fG51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPWEuZ2V0KCJPZmYiKXx8bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBhPXQuZ2V0KCJWIik7YSBpbnN0YW5jZW9mIHMuTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9YS5nZXQoIk4iKTtpZihyIGluc3RhbmNlb2Ygcy5EaWN0KXtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlpZigiT2ZmIiE9PWUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZSk7YnJlYWt9dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCh0aGlzLmRhdGEuYnV0dG9uVmFsdWUpfHxudWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1yLmdldCgiT2ZmIil8fG51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImRpc2MiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0fX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7aWYoZS5kaWN0LmhhcygiQSIpfHxlLmRpY3QuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hZS5kaWN0LmhhcygiQSIpJiYhZS5kaWN0LmhhcygiQUEiKTtoLkNhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZS5kaWN0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDplLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czplLmF0dGFjaG1lbnRzfSl9ZWxzZSgwLHIud2FybikoIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIlphcGZEaW5nYmF0cyIpKTtlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHNFbmNvZGluZyIpKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IHQ9KDAsbi5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDplLmRpY3Qsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWEuZmV0Y2hJZlJlZih0W2VdKSxuPUFycmF5LmlzQXJyYXkocik7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP2EuZmV0Y2hJZlJlZihyWzBdKTpyKSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/YS5mZXRjaElmUmVmKHJbMV0pOnIpfX19InN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuQ09NQk8pO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhyLkFubm90YXRpb25GaWVsZEZsYWcuTVVMVElTRUxFQ1QpO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGEpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXQodGhpcy5kYXRhLmlkKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPW4ucm90YXRpb247bGV0IG89bi52YWx1ZTtpZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1vKXJldHVybiBudWxsO3ZvaWQgMD09PW8/bz10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG8pfHwobz1bb10pO2xldCBjPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLGw9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1zJiYyNzAhPT1zfHwoW2wsY109W2MsbF0pO2NvbnN0IGg9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoLHU9W107Zm9yKGxldCBlPTA7ZTxoO2UrKyl7Y29uc3R7ZXhwb3J0VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV07by5pbmNsdWRlcyh0KSYmdS5wdXNoKGUpfXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT0oMCxpLnBhcnNlRGVmYXVsdEFwcGVhcmFuY2UpKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2NvbnN0IGQ9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtsZXQgZix7Zm9udFNpemU6Z309dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTtpZihnKWY9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U7ZWxzZXtjb25zdCBlPShjLTIpL2g7bGV0IHQsYT0tMTtmb3IoY29uc3R7ZGlzcGxheVZhbHVlOmV9b2YgdGhpcy5kYXRhLm9wdGlvbnMpe2NvbnN0IHI9dGhpcy5fZ2V0VGV4dFdpZHRoKGUsZCk7aWYocj5hKXthPXI7dD1lfX1bZixnXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxsLTQsdCxkLC0xKX1jb25zdCBwPWcqci5MSU5FX0ZBQ1RPUixtPShwLWcpLzIsYj1NYXRoLmZsb29yKGMvcCk7bGV0IHk7aWYoMT09PXUubGVuZ3RoKXtjb25zdCBlPXVbMF07eT1lLWUlYn1lbHNlIHk9dS5sZW5ndGg/dVswXTowO2NvbnN0IHc9TWF0aC5taW4oeStiKzEsaCksUz1bIi9UeCBCTUMgcSIsYDEgMSAke2x9ICR7Y30gcmUgVyBuYF07aWYodS5sZW5ndGgpe1MucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiB1KXk8PWUmJmU8dyYmUy5wdXNoKGAxICR7Yy0oZS15KzEpKnB9ICR7bH0gJHtwfSByZSBmYCl9Uy5wdXNoKCJCVCIsZixgMSAwIDAgMSAwICR7Y30gVG1gKTtmb3IobGV0IGU9eTtlPHc7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0sYT1lPT09eT8yOjAscj1lPT09eT9tOjA7Uy5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxkLGcsbCwwLGEsLXArcikpfVMucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4gUy5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9ZS5kaWN0O3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5MSU5LO2NvbnN0IHQ9Z2V0UXVhZFBvaW50cyhlLmRpY3QsdGhpcy5yZWN0YW5nbGUpO3QmJih0aGlzLmRhdGEucXVhZFBvaW50cz10KTt0aGlzLmRhdGEuYm9yZGVyQ29sb3I9dGhpcy5kYXRhLmJvcmRlckNvbG9yfHx0aGlzLmRhdGEuY29sb3I7aC5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPUFVQO2xldCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKCF0KXsoMCxyLndhcm4pKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59Y29uc3QgYT10LmdldCgiU3VidHlwZSIpO3RoaXMuZGF0YS5wYXJlbnRUeXBlPWEgaW5zdGFuY2VvZiBzLk5hbWU/YS5uYW1lOm51bGw7Y29uc3Qgbj1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTt0aGlzLmRhdGEucGFyZW50SWQ9biBpbnN0YW5jZW9mIHMuUmVmP24udG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXRBcnJheSgiUmVjdCIpO0FycmF5LmlzQXJyYXkoaSkmJjQ9PT1pLmxlbmd0aD90aGlzLmRhdGEucGFyZW50UmVjdD1yLlV0aWwubm9ybWFsaXplUmVjdChpKTp0aGlzLmRhdGEucGFyZW50UmVjdD1bMCwwLDAsMF07Y29uc3Qgbz10LmdldCgiUlQiKTsoMCxzLmlzTmFtZSkobyxyLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApJiYodD10LmdldCgiSVJUIikpO2lmKHQuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2lmKHQuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsO2lmKCF0aGlzLnZpZXdhYmxlKXtjb25zdCBlPXQuZ2V0KCJGIik7dGhpcy5faXNWaWV3YWJsZShlKSYmdGhpcy5zZXRGbGFncyhlKX10aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9bS5YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9fXQuUG9wdXBBbm5vdGF0aW9uPVBvcHVwQW5ub3RhdGlvbjtjbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkZSRUVURVhUfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7Y29sb3I6byxmb250U2l6ZTpjLHJlY3Q6bCxyb3RhdGlvbjpoLHVzZXI6dSx2YWx1ZTpkfT1lLGY9bmV3IHMuRGljdCh0KTtmLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpO2Yuc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7KDAsci5nZXRNb2RpZmljYXRpb25EYXRlKSgpfWApO2Yuc2V0KCJSZWN0IixsKTtjb25zdCBnPWAvSGVsdiAke2N9IFRmICR7KDAsaS5nZXRQZGZDb2xvcikobywhMCl9YDtmLnNldCgiREEiLGcpO2Yuc2V0KCJDb250ZW50cyIsZCk7Zi5zZXQoIkYiLDQpO2Yuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2Yuc2V0KCJSb3RhdGUiLGgpO3UmJmYuc2V0KCJUIiwoMCxyLnN0cmluZ1RvVVRGOFN0cmluZykodSkpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtmLnNldCgiQVAiLHApO2E/cC5zZXQoIk4iLGEpOnAuc2V0KCJOIixuKTtyZXR1cm4gZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7YmFzZUZvbnRSZWY6byxldmFsdWF0b3I6Yyx0YXNrOmx9PWEse2NvbG9yOmgsZm9udFNpemU6dSxyZWN0OmQscm90YXRpb246Zix2YWx1ZTpnfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYobyliLnNldCgiSGVsdiIsbyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpO2Uuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2Iuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShjLGwse2ZvbnROYW1lOiJIZWx2ZXRpY2EiLGZvbnRTaXplOnV9LG0pLFt3LFMseCxrXT1kO2xldCBDPXgtdyx2PWstUztmJTE4MCE9MCYmKFtDLHZdPVt2LENdKTtjb25zdCBGPWcuc3BsaXQoIlxuIiksTz11LzFlMztsZXQgVD0tMS8wO2NvbnN0IE09W107Zm9yKGxldCBlIG9mIEYpe2U9eS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIik7TS5wdXNoKGUpO2xldCB0PTA7Y29uc3QgYT15LmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl0Kz1lLndpZHRoKk87VD1NYXRoLm1heChULHQpfWxldCBFPTE7VD5DJiYoRT1DL1QpO2xldCBEPTE7Y29uc3QgTj1yLkxJTkVfRkFDVE9SKnUsUj1yLkxJTkVfREVTQ0VOVF9GQUNUT1IqdSxMPU4qRi5sZW5ndGg7TD52JiYoRD12L0wpO2NvbnN0IGo9dSpNYXRoLm1pbihFLEQpLCQ9WyJxIixgMCAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoQyl9ICR7KDAsbi5udW1iZXJUb1N0cmluZykodil9IHJlIFcgbmAsIkJUIixgMSAwIDAgMSAwICR7KDAsbi5udW1iZXJUb1N0cmluZykoditSKX0gVG0gMCBUYyAkeygwLGkuZ2V0UGRmQ29sb3IpKGgsITApfWAsYC9IZWx2ICR7KDAsbi5udW1iZXJUb1N0cmluZykoail9IFRmYF0sXz0oMCxuLm51bWJlclRvU3RyaW5nKShOKTtmb3IoY29uc3QgZSBvZiBNKSQucHVzaChgMCAtJHtffSBUZCAoJHsoMCxyLmVzY2FwZVN0cmluZykoZSl9KSBUamApOyQucHVzaCgiRVQiLCJRIik7Y29uc3QgVT0kLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSk7WC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSk7WC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSk7WC5zZXQoIkJCb3giLFswLDAsQyx2XSk7WC5zZXQoIkxlbmd0aCIsVS5sZW5ndGgpO1guc2V0KCJSZXNvdXJjZXMiLG0pO2lmKGYpe2NvbnN0IGU9V2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Um90YXRpb25NYXRyaXgoZixDLHYpO1guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEg9bmV3IHAuU3RyaW5nU3RyZWFtKFUpO0guZGljdD1YO3JldHVybiBIfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkxJTkU7Y29uc3QgYT10LmdldEFycmF5KCJMIik7dGhpcy5kYXRhLmxpbmVDb29yZGluYXRlcz1yLlV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IG49dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpO2xldCBzPW51bGwsbz10LmdldEFycmF5KCJJQyIpO2lmKG8pe289Z2V0UmdiQ29sb3IobyxudWxsKTtzPW8/QXJyYXkuZnJvbShvLChlPT5lLzI1NSkpOm51bGx9Y29uc3QgYz1zP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtyLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6Yyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LWwsdFsxXS54K2wsdFszXS55LWwsdFsxXS55K2xdfX0pfX19Y2xhc3MgU3F1YXJlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVQVJFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLnhyZWYsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6dCxmaWxsQ29sb3I6cixzdHJva2VBbHBoYTphLGZpbGxBbHBoYTppLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixpPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxzPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtufSAke2l9ICR7c30gcmVgKTtyP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7bGV0IHI9bnVsbCxuPWUuZGljdC5nZXRBcnJheSgiSUMiKTtpZihuKXtuPWdldFJnYkNvbG9yKG4sbnVsbCk7cj1uP0FycmF5LmZyb20obiwoZT0+ZS8yNTUpKTpudWxsfWNvbnN0IGk9cj9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFyKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUueHJlZixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjp0LGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOmkscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGk9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixvPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYz1hKyhpLWEpLzIsbD1uKyhvLW4pLzIsaD0oaS1hKS8yKnMsdT0oby1uKS8yKnM7ZS5wdXNoKGAke2N9ICR7b30gbWAsYCR7YytofSAke299ICR7aX0gJHtsK3V9ICR7aX0gJHtsfSBjYCxgJHtpfSAke2wtdX0gJHtjK2h9ICR7bn0gJHtjfSAke259IGNgLGAke2MtaH0gJHtufSAke2F9ICR7bC11fSAke2F9ICR7bH0gY2AsYCR7YX0gJHtsK3V9ICR7Yy1ofSAke299ICR7Y30gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBhPXRoaXMuY29sb3I/QXJyYXkuZnJvbSh0aGlzLmNvbG9yLChlPT5lLzI1NSkpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxpPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKmksbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7b1swXT1NYXRoLm1pbihvWzBdLGUueC1zKTtvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpO29bMl09TWF0aC5tYXgob1syXSxlLngrcyk7b1szXT1NYXRoLm1heChvWzNdLGUueStzKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke2l9IHdgLHN0cm9rZUNvbG9yOmEsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9dGhpcy5kYXRhLnZlcnRpY2VzO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyO3QrKyllLnB1c2goYCR7YVt0XS54fSAke2FbdF0ueX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19fWNsYXNzIFBvbHlnb25Bbm5vdGF0aW9uIGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLlBPTFlHT059fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLklOSzt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgdD1lLmRpY3QuZ2V0QXJyYXkoIklua0xpc3QiKTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm47Y29uc3QgYT1lLnhyZWY7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7Zm9yKGxldCByPTAsbj10W2VdLmxlbmd0aDtyPG47cis9Mil0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDphLmZldGNoSWZSZWYodFtlXVtyXSkseTphLmZldGNoSWZSZWYodFtlXVtyKzFdKX0pfWlmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIiksbj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGk9MipuLHM9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7c1swXT1NYXRoLm1pbihzWzBdLHQueC1pKTtzWzFdPU1hdGgubWluKHNbMV0sdC55LWkpO3NbMl09TWF0aC5tYXgoc1syXSx0LngraSk7c1szXT1NYXRoLm1heChzWzNdLHQueStpKX1yLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHMpfHwodGhpcy5yZWN0YW5nbGU9cyk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOmAke259IHdgLHN0cm9rZUNvbG9yOnQsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5pbmtMaXN0cyl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWUucHVzaChgJHt0W2FdLnh9ICR7dFthXS55fSAkezA9PT1hPyJtIjoibCJ9YCk7ZS5wdXNoKCJTIil9cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpufSl7Y29uc3R7cGF0aHM6aSxyZWN0Om8scm90YXRpb246Y309ZSxsPW5ldyBzLkRpY3QodCk7bC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpO2wuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSk7bC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHsoMCxyLmdldE1vZGlmaWNhdGlvbkRhdGUpKCl9YCk7bC5zZXQoIlJlY3QiLG8pO2wuc2V0KCJJbmtMaXN0IixpLm1hcCgoZT0+ZS5wb2ludHMpKSk7bC5zZXQoIkYiLDQpO2wuc2V0KCJCb3JkZXIiLFswLDAsMF0pO2wuc2V0KCJSb3RhdGUiLGMpO2NvbnN0IGg9bmV3IHMuRGljdCh0KTtsLnNldCgiQVAiLGgpO2E/aC5zZXQoIk4iLGEpOmguc2V0KCJOIixuKTtyZXR1cm4gbH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Om8scm90YXRpb246YyxwYXRoczpsLHRoaWNrbmVzczpoLG9wYWNpdHk6dX09ZSxbZCxmLGcsbV09bztsZXQgYj1nLWQseT1tLWY7YyUxODAhPTAmJihbYix5XT1beSxiXSk7Y29uc3Qgdz1bYCR7aH0gdyAxIEogMSBqYCxgJHsoMCxpLmdldFBkZkNvbG9yKShyLCExKX1gXTsxIT09dSYmdy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBTPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtTLmxlbmd0aD0wO1MucHVzaChgJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzBdKX0gJHsoMCxuLm51bWJlclRvU3RyaW5nKShlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTYpe2NvbnN0IGE9ZS5zbGljZSh0LHQrNikubWFwKG4ubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtTLnB1c2goYCR7YX0gY2ApfVMucHVzaCgiUyIpO3cucHVzaChTLmpvaW4oIlxuIikpfWNvbnN0IHg9dy5qb2luKCJcbiIpLGs9bmV3IHMuRGljdCh0KTtrLnNldCgiRm9ybVR5cGUiLDEpO2suc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2suc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpO2suc2V0KCJCQm94IixbMCwwLGIseV0pO2suc2V0KCJMZW5ndGgiLHgubGVuZ3RoKTtpZihjKXtjb25zdCBlPVdpZGdldEFubm90YXRpb24uX2dldFJvdGF0aW9uTWF0cml4KGMsYix5KTtrLnNldCgiTWF0cml4IixlKX1pZigxIT09dSl7Y29uc3QgZT1uZXcgcy5EaWN0KHQpLGE9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCk7ci5zZXQoIkNBIix1KTtyLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRXh0R1N0YXRlIikpO2Euc2V0KCJSMCIscik7ZS5zZXQoIkV4dEdTdGF0ZSIsYSk7ay5zZXQoIlJlc291cmNlcyIsZSl9Y29uc3QgQz1uZXcgcC5TdHJpbmdTdHJlYW0oeCk7Qy5kaWN0PWs7cmV0dXJuIEN9fWNsYXNzIEhpZ2hsaWdodEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1yLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKGUuZGljdCxudWxsKSl7Y29uc3QgdD10aGlzLmFwcGVhcmFuY2UmJnRoaXMuYXBwZWFyYW5jZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsci53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzEsMSwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGZpbGxDb2xvcjp0LGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKGAke3RbMF0ueH0gJHt0WzBdLnl9IG1gLGAke3RbMV0ueH0gJHt0WzFdLnl9IGxgLGAke3RbM10ueH0gJHt0WzNdLnl9IGxgLGAke3RbMl0ueH0gJHt0WzJdLnl9IGxgLCJmIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueX0gbWAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBhPSh0WzBdLnktdFsyXS55KS82O2xldCByPWEsbj10WzJdLng7Y29uc3QgaT10WzJdLnkscz10WzNdLng7ZS5wdXNoKGAke259ICR7aStyfSBtYCk7ZG97bis9MjtyPTA9PT1yP2E6MDtlLnB1c2goYCR7bn0gJHtpK3J9IGxgKX13aGlsZShuPHMpO2UucHVzaCgiUyIpO3JldHVyblt0WzJdLngscyxpLTIqYSxpKzIqYV19fSl9fWVsc2UgdGhpcy5kYXRhLmhhc1BvcHVwPSExfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9ci5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyhlLmRpY3QsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IHQ9dGhpcy5jb2xvcj9BcnJheS5mcm9tKHRoaXMuY29sb3IsKGU9PmUvMjU1KSk6WzAsMCwwXSxhPWUuZGljdC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZS54cmVmLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjp0LHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0ueCt0WzJdLngpLzIrIiAiKyh0WzBdLnkrdFsyXS55KS8yKyIgbSIsKHRbMV0ueCt0WzNdLngpLzIrIiAiKyh0WzFdLnkrdFszXS55KS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEuaGFzUG9wdXA9ITF9fWNsYXNzIFN0YW1wQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuU1RBTVB9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgZC5GaWxlU3BlYyhlLmRpY3QuZ2V0KCJGUyIpLGUueHJlZik7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPXIuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ7dGhpcy5kYXRhLmZpbGU9dC5zZXJpYWxpemFibGV9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7KDAsci5lc2NhcGVQREZOYW1lKSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9O3QuZ2V0UGRmQ29sb3I9Z2V0UGRmQ29sb3I7dC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfTt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMTIpLHM9YSgxMyksbz1hKDMpLGM9YSg4KTtjbGFzcyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvciBleHRlbmRzIHMuRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBjLlN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjphLGFyZ3M6cn09ZTtzd2l0Y2goMHxhKXtjYXNlIG4uT1BTLnNldEZvbnQ6Y29uc3RbZSxhXT1yO2UgaW5zdGFuY2VvZiBvLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OmkuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTppLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApfX19Y2F0Y2goZSl7KDAsbi53YXJuKShgcGFyc2VEZWZhdWx0QXBwZWFyYW5jZSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3QgYT1lWzBdLzI1NTtyZXR1cm5gJHsoMCxyLm51bWJlclRvU3RyaW5nKShhKX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxyLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ29sb3JTcGFjZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSg0KTtjbGFzcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbG9yU3BhY2UmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBDb2xvclNwYWNlLiIpO3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0KXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTt0aGlzLmdldFJnYkl0ZW0oZSx0LGEsMCk7cmV0dXJuIGF9Z2V0UmdiSXRlbShlLHQsYSxuKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiSXRlbSIpfWdldFJnYkJ1ZmZlcihlLHQsYSxuLGkscyxvKXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0UmdiQnVmZmVyIil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsYSxyLG4saSxzLG8sYyl7Y29uc3QgbD10KmE7bGV0IGg9bnVsbDtjb25zdCB1PTE8PHMsZD1hIT09bnx8dCE9PXI7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKHMpKWg9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZsPnUmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9czw9OD9uZXcgVWludDhBcnJheSh1KTpuZXcgVWludDE2QXJyYXkodSk7Zm9yKGxldCBlPTA7ZTx1O2UrKyl0W2VdPWU7Y29uc3QgYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyp1KTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsdSxhLDAscywwKTtpZihkKXtoPW5ldyBVaW50OEFycmF5KDMqbCk7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGw7Kyt0KXtjb25zdCByPTMqb1t0XTtoW2UrK109YVtyXTtoW2UrK109YVtyKzFdO2hbZSsrXT1hW3IrMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IHI9MDtyPGw7KytyKXtjb25zdCBuPTMqb1tyXTtlW3QrK109YVtuXTtlW3QrK109YVtuKzFdO2VbdCsrXT1hW24rMl07dCs9Y319fWVsc2UgaWYoZCl7aD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypsKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsbCxoLDAscywwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxyKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsYSxyLG4saSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPWEvbixjPXIvaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkobiksZD0zKmE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmMpKmQ7Zm9yKGxldCBhPTA7YTxuO2ErKyl7bD1yK3VbYV07dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO3RbaCsrXT1lW2wrK107aCs9c319fShoLGUsdCxhLHIsbixjKTtlbHNle2xldCB0PTAsYT0wO2ZvcihsZXQgbj0wLHM9cippO248cztuKyspe2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTtlW3QrK109aFthKytdO3QrPWN9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGEscil7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgaSxzO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2Ygbi5OYW1lJiYoaT1lLm5hbWUpOyhpfHxzKSYmYS5zZXQoaSxzLHIpfXN0YXRpYyBnZXRDYWNoZWQoZSx0LGEpe2lmKCFhKXRocm93IG5ldyBFcnJvcignQ29sb3JTcGFjZS5nZXRDYWNoZWQgLSBleHBlY3RlZCAibG9jYWxDb2xvclNwYWNlQ2FjaGUiIGFyZ3VtZW50LicpO2lmKGUgaW5zdGFuY2VvZiBuLlJlZil7Y29uc3Qgcj1hLmdldEJ5UmVmKGUpO2lmKHIpcmV0dXJuIHI7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2Ygbi5OYW1lKXtjb25zdCB0PWEuZ2V0QnlOYW1lKGUubmFtZSk7aWYodClyZXR1cm4gdH1yZXR1cm4gbnVsbH1zdGF0aWMgYXN5bmMgcGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3QgaT10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixpKTtyZXR1cm4gaX1zdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczphPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IGk9dGhpcy5nZXRDYWNoZWQoZSx0LG4pO2lmKGkpcmV0dXJuIGk7Y29uc3Qgcz10aGlzLl9wYXJzZShlLHQsYSxyKTt0aGlzLl9jYWNoZShlLHQsbixzKTtyZXR1cm4gc31zdGF0aWMgX3BhcnNlKGUsdCxhPW51bGwsaSl7aWYoKGU9dC5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2Ygbi5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2Ygbi5EaWN0KXtjb25zdCByPWEuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3Qgcz1yLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBuLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxhLGkpO2U9czticmVha319fXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGc7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Zz1zLmdldCgiR2FtbWEiKTtyZXR1cm4gbmV3IGMoZCxmLGcpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtnPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgcD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IGwoZCxmLGcscCk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3QgbT10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPW0uZ2V0KCJOIik7Y29uc3QgYj1tLmdldCgiQWx0ZXJuYXRlIik7aWYoYil7Y29uc3QgZT10aGlzLl9wYXJzZShiLHQsYSxpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxyLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnU9ZVsxXXx8bnVsbDt1JiYodT10aGlzLl9wYXJzZSh1LHQsYSxpKSk7cmV0dXJuIG5ldyBQYXR0ZXJuQ1ModSk7Y2FzZSJJIjpjYXNlIkluZGV4ZWQiOnU9dGhpcy5fcGFyc2UoZVsxXSx0LGEsaSk7Y29uc3QgeT10LmZldGNoSWZSZWYoZVsyXSkrMSx3PXQuZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyh1LHksdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IFM9dC5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShTKT9TLmxlbmd0aDoxO3U9dGhpcy5fcGFyc2UoZVsyXSx0LGEsaSk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sdSx4KTtjYXNlIkxhYiI6cz10LmZldGNoSWZSZWYoZVsxXSk7ZD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Zj1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3Qgaz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgaChkLGYsayk7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtufWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke2V9YCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXsoMCxyLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY215ayIsbmV3IG8pfX0pfX10LkNvbG9yU3BhY2U9Q29sb3JTcGFjZTtjbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPWE7dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LG4sMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0obiwwLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy50aW50Rm4sYz10aGlzLmJhc2UsbD0xLygoMTw8aSktMSksaD1jLm51bUNvbXBzLHU9Yy51c2VzWmVyb1RvT25lUmFuZ2UsZD0oYy5pc1Bhc3N0aHJvdWdoKDgpfHwhdSkmJjA9PT1zO2xldCBmPWQ/bjowO2NvbnN0IGc9ZD9yOm5ldyBVaW50OENsYW1wZWRBcnJheShoKmEpLHA9dGhpcy5udW1Db21wcyxtPW5ldyBGbG9hdDMyQXJyYXkocCksYj1uZXcgRmxvYXQzMkFycmF5KGgpO2xldCB5LHc7Zm9yKHk9MDt5PGE7eSsrKXtmb3Iodz0wO3c8cDt3KyspbVt3XT1lW3QrK10qbDtvKG0sMCxiLDApO2lmKHUpZm9yKHc9MDt3PGg7dysrKWdbZisrXT0yNTUqYlt3XTtlbHNle2MuZ2V0UmdiSXRlbShiLDAsZyxmKTtmKz1ofX1kfHxjLmdldFJnYkJ1ZmZlcihnLDAsYSxyLG4sOCxzKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuYmFzZT1lO3RoaXMuaGlnaFZhbD10O2NvbnN0IG49ZS5udW1Db21wcyp0O3RoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KG4pO2lmKGEgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhuKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7YX1gKTtmb3IobGV0IGU9MDtlPG47KytlKXRoaXMubG9va3VwW2VdPTI1NSZhLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3Qgbj10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKm47dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPGE7KytpKXtjb25zdCBhPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsYSwxLHIsbiw4LHMpO24rPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7KDAsci53YXJuKSgiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXsoMCxyLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0IG49MjU1KmVbdF07YVtyXT1hW3IrMV09YVtyKzJdPW59Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1vKmVbYysrXTtyW2wrK109dDtyW2wrK109dDtyW2wrK109dDtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsYSxyKXthW3JdPTI1NSplW3RdO2FbcisxXT0yNTUqZVt0KzFdO2FbcisyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsYSxyLG4saSxzKXtpZig4PT09aSYmMD09PXMpe3Iuc2V0KGUuc3ViYXJyYXkodCx0KzMqYSksbik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8aSktMSk7bGV0IGM9dCxsPW47Zm9yKGxldCB0PTA7dDxhOysrdCl7cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtyW2wrK109byplW2MrK107bCs9c319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBvPWZ1bmN0aW9uIERldmljZUNteWtDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuKXtjb25zdCBpPWVbdF0qYSxzPWVbdCsxXSphLG89ZVt0KzJdKmEsYz1lW3QrM10qYTtyW25dPTI1NStpKigtNC4zODczMzIzODQ2MDk5ODgqaSs1NC40ODYxNTE5NDE4OTE3NipzKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmMtMjg1LjIzMzEwMjYxMzcwMDQpK3MqKDEuNzE0OTc2MzQ3NzM2MjEzNCpzLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqYy01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypjKzE3LjUxMTkyNzA4NDE4MTMpK2MqKC0yMS44NjEyMjE0NzQ2MzYwNSpjLTE4OS40ODE4MDgzNTkyMjc0Nyk7cltuKzFdPTI1NStpKig4Ljg0MTA0MTQyMjAzNjE0OSppKzYwLjExODAyNzA0NTU5NzM2NipzKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmMtNzkuMjk3MDg0NDgxNjU0OCkrcyooLTE1LjMxMDM2MTMwNjk2NzgxNypzKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipjLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpjLTI0Ljg2NzQxNTgyNTU1ODc4KStjKigtMjAuNzM3MzI1NDcxMTgxMDM0KmMtMTg3LjgwNDUzNzA5NzE5NTc4KTtyW24rMl09MjU1K2kqKC44ODQyNTIyNDMwMDAzMjk2KmkrOC4wNzg2Nzc1MDMxMTI5MjgqcyszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpjLTE0LjE4MzU3Njc5OTY3MzI4NikrcyooMTAuNDk1OTMyNzM0MzIwNzIqcys2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpjLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmMtMTkzLjU4MjA5MzU2ODYxNTA1KStjKigtMjIuMzM4MTY4MDczMDk4ODYqYy0xODAuMTI2MTM5NzQ3MDgzNjcpfXJldHVybiBjbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8YTtpKyspe2NvbnZlcnRUb1JnYihlLHQsbyxyLG4pO3QrPTQ7bis9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fX0oKSxjPWZ1bmN0aW9uIENhbEdyYXlDU0Nsb3N1cmUoKXtmdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2NvbnN0IHM9KHRbYV0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7cltuXT1jO3JbbisxXT1jO3JbbisyXT1jfXJldHVybiBjbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7dD10fHxbMCwwLDBdO2E9YXx8MTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTt0aGlzLkc9YTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApeygwLHIuaW5mbykoYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fCgwLHIud2FybikoYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXsoMCxyLmluZm8pKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0xO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fX0oKSxsPWZ1bmN0aW9uIENhbFJHQkNTQ2xvc3VyZSgpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pLHQ9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pLGE9bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKSxuPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSksaT1uZXcgRmxvYXQzMkFycmF5KDMpLHM9bmV3IEZsb2F0MzJBcnJheSgzKSxvPW5ldyBGbG9hdDMyQXJyYXkoMyk7ZnVuY3Rpb24gbWF0cml4UHJvZHVjdChlLHQsYSl7YVswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTthWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO2FbMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19ZnVuY3Rpb24gc1JHQlRyYW5zZmVyRnVuY3Rpb24oZSl7cmV0dXJuIGU8PS4wMDMxMzA4P2FkanVzdFRvUmFuZ2UoMCwxLDEyLjkyKmUpOmU+PS45OTU1NDUyNT8xOmFkanVzdFRvUmFuZ2UoMCwxLDEuMDU1KmUqKigxLzIuNCktLjA1NSl9ZnVuY3Rpb24gYWRqdXN0VG9SYW5nZShlLHQsYSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxhKSl9ZnVuY3Rpb24gZGVjb2RlTChlKXtyZXR1cm4gZTwwPy1kZWNvZGVMKC1lKTplPjg/KChlKzE2KS8xMTYpKiozOi4wMDExMDcwNTY0NTk4Nzk0NTM5KmV9ZnVuY3Rpb24gY29udmVydFRvUmdiKHIsYyxsLGgsdSxkKXtjb25zdCBmPWFkanVzdFRvUmFuZ2UoMCwxLGNbbF0qZCksZz1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMV0qZCkscD1hZGp1c3RUb1JhbmdlKDAsMSxjW2wrMl0qZCksbT0xPT09Zj8xOmYqKnIuR1IsYj0xPT09Zz8xOmcqKnIuR0cseT0xPT09cD8xOnAqKnIuR0Isdz1yLk1YQSptK3IuTVhCKmIrci5NWEMqeSxTPXIuTVlBKm0rci5NWUIqYityLk1ZQyp5LHg9ci5NWkEqbStyLk1aQipiK3IuTVpDKnksaz1zO2tbMF09dztrWzFdPVM7a1syXT14O2NvbnN0IEM9bzshZnVuY3Rpb24gbm9ybWFsaXplV2hpdGVQb2ludFRvRmxhdChhLHIsbil7aWYoMT09PWFbMF0mJjE9PT1hWzJdKXtuWzBdPXJbMF07blsxXT1yWzFdO25bMl09clsyXTtyZXR1cm59Y29uc3Qgcz1uO21hdHJpeFByb2R1Y3QoZSxyLHMpO2NvbnN0IG89aTshZnVuY3Rpb24gY29udmVydFRvRmxhdChlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19KGEscyxvKTttYXRyaXhQcm9kdWN0KHQsbyxuKX0oci53aGl0ZVBvaW50LGssQyk7Y29uc3Qgdj1zOyFmdW5jdGlvbiBjb21wZW5zYXRlQmxhY2tQb2ludChlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9ZGVjb2RlTCgwKSxuPSgxLXIpLygxLWRlY29kZUwoZVswXSkpLGk9MS1uLHM9KDEtcikvKDEtZGVjb2RlTChlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS1kZWNvZGVMKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qbitpO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0oci5ibGFja1BvaW50LEMsdik7Y29uc3QgRj1vOyFmdW5jdGlvbiBub3JtYWxpemVXaGl0ZVBvaW50VG9ENjUoYSxyLG4pe2NvbnN0IHM9bjttYXRyaXhQcm9kdWN0KGUscixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uIGNvbnZlcnRUb0Q2NShlLHQsYSl7YVswXT0uOTUwNDcqdFswXS9lWzBdO2FbMV09MSp0WzFdL2VbMV07YVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0oYSxzLG8pO21hdHJpeFByb2R1Y3QodCxvLG4pfShuLHYsRik7Y29uc3QgTz1zO21hdHJpeFByb2R1Y3QoYSxGLE8pO2hbdV09MjU1KnNSR0JUcmFuc2ZlckZ1bmN0aW9uKE9bMF0pO2hbdSsxXT0yNTUqc1JHQlRyYW5zZmVyRnVuY3Rpb24oT1sxXSk7aFt1KzJdPTI1NSpzUkdCVHJhbnNmZXJGdW5jdGlvbihPWzJdKX1yZXR1cm4gY2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhLG4pe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7dD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO2E9YXx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtuPW58fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7Y29uc3QgaT1lWzBdLHM9ZVsxXSxvPWVbMl07dGhpcy53aGl0ZVBvaW50PWU7Y29uc3QgYz10WzBdLGw9dFsxXSxoPXRbMl07dGhpcy5ibGFja1BvaW50PXQ7dGhpcy5HUj1hWzBdO3RoaXMuR0c9YVsxXTt0aGlzLkdCPWFbMl07dGhpcy5NWEE9blswXTt0aGlzLk1ZQT1uWzFdO3RoaXMuTVpBPW5bMl07dGhpcy5NWEI9blszXTt0aGlzLk1ZQj1uWzRdO3RoaXMuTVpCPW5bNV07dGhpcy5NWEM9bls2XTt0aGlzLk1ZQz1uWzddO3RoaXMuTVpDPW5bOF07aWYoaTwwfHxvPDB8fDEhPT1zKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihjPDB8fGw8MHx8aDwwKXsoMCxyLmluZm8pKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtjfSwgJHtsfSwgJHtofV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApeygwLHIuaW5mbykoYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixuLGkscyl7Y29uc3Qgbz0xLygoMTw8aSktMSk7Zm9yKGxldCBpPTA7aTxhOysraSl7Y29udmVydFRvUmdiKHRoaXMsZSx0LHIsbixvKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksaD1mdW5jdGlvbiBMYWJDU0Nsb3N1cmUoKXtmdW5jdGlvbiBmbl9nKGUpe2xldCB0O3Q9ZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSk7cmV0dXJuIHR9ZnVuY3Rpb24gZGVjb2RlKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH1mdW5jdGlvbiBjb252ZXJ0VG9SZ2IoZSx0LGEscixuLGkpe2xldCBzPXRbYV0sbz10W2ErMV0sYz10W2ErMl07aWYoITEhPT1yKXtzPWRlY29kZShzLHIsMCwxMDApO289ZGVjb2RlKG8scixlLmFtaW4sZS5hbWF4KTtjPWRlY29kZShjLHIsZS5ibWluLGUuYm1heCl9bz5lLmFtYXg/bz1lLmFtYXg6bzxlLmFtaW4mJihvPWUuYW1pbik7Yz5lLmJtYXg/Yz1lLmJtYXg6YzxlLmJtaW4mJihjPWUuYm1pbik7Y29uc3QgbD0ocysxNikvMTE2LGg9bCtvLzUwMCx1PWwtYy8yMDAsZD1lLlhXKmZuX2coaCksZj1lLllXKmZuX2cobCksZz1lLlpXKmZuX2codSk7bGV0IHAsbSxiO2lmKGUuWlc8MSl7cD0zLjEzMzkqZCstMS42MTcqZistLjQ5MDYqZzttPS0uOTc4NSpkKzEuOTE2KmYrLjAzMzMqZztiPS4wNzIqZCstLjIyOSpmKzEuNDA1NypnfWVsc2V7cD0zLjI0MDYqZCstMS41MzcyKmYrLS40OTg2Kmc7bT0tLjk2ODkqZCsxLjg3NTgqZisuMDQxNSpnO2I9LjA1NTcqZCstLjIwNCpmKzEuMDU3Kmd9bltpXT0yNTUqTWF0aC5zcXJ0KHApO25baSsxXT0yNTUqTWF0aC5zcXJ0KG0pO25baSsyXT0yNTUqTWF0aC5zcXJ0KGIpfXJldHVybiBjbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7dD10fHxbMCwwLDBdO2E9YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTt0aGlzLlhXPWVbMF07dGhpcy5ZVz1lWzFdO3RoaXMuWlc9ZVsyXTt0aGlzLmFtaW49YVswXTt0aGlzLmFtYXg9YVsxXTt0aGlzLmJtaW49YVsyXTt0aGlzLmJtYXg9YVszXTt0aGlzLlhCPXRbMF07dGhpcy5ZQj10WzFdO3RoaXMuWkI9dFsyXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXsoMCxyLmluZm8pKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXsoMCxyLmluZm8pKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fWdldFJnYkl0ZW0oZSx0LGEscil7Y29udmVydFRvUmdiKHRoaXMsZSx0LCExLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsbixpLHMpe2NvbnN0IG89KDE8PGkpLTE7Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29udmVydFRvUmdiKHRoaXMsZSx0LG8scixuKTt0Kz0zO24rPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fX0oKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnRpYWxFdmFsdWF0b3I9dC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9dm9pZCAwO3ZhciByPWEoMiksbj1hKDE0KSxpPWEoMykscz1hKDMyKSxvPWEoMzYpLGM9YSgzNSksbD1hKDM5KSxoPWEoMzgpLHU9YSg0OCksZD1hKDQ5KSxmPWEoNDApLGc9YSg1NSkscD1hKDE1KSxtPWEoNTcpLGI9YSg4KSx5PWEoNSksdz1hKDU4KSxTPWEoMTIpLHg9YSgxNyksaz1hKDM3KSxDPWEoNCksdj1hKDQzKSxGPWEoNTkpLE89YSg2MCksVD1hKDYxKTtjb25zdCBNPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMCxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxFPTEsRD0yLE49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX0oMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifWlmKHQpcmV0dXJuIG51bGw7KDAsci53YXJuKShgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZTogJHtlLm5hbWV9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1mdW5jdGlvbiBpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudChlKXtlLmZuPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0JiZlLmFyZ3NbMF0mJmUuYXJnc1swXS5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIGdldCBUSU1FX1NMT1RfRFVSQVRJT05fTVMoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiVElNRV9TTE9UX0RVUkFUSU9OX01TIiwyMCl9c3RhdGljIGdldCBDSEVDS19USU1FX0VWRVJZKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIRUNLX1RJTUVfRVZFUlkiLDEwMCl9Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6bixidWlsdEluQ01hcENhY2hlOmksc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsSW1hZ2VDYWNoZTpvLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPW47dGhpcy5idWlsdEluQ01hcENhY2hlPWk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLm9wdGlvbnM9Y3x8TTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ9ITE7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7Y29uc3QgZT1uZXcgZy5QREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLGUpfWNsb25lKGU9bnVsbCl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO3Qub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpO3JldHVybiB0fWhhc0JsZW5kTW9kZXMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGE9bmV3IGkuUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IG49W2VdLHM9dGhpcy54cmVmO2Zvcig7bi5sZW5ndGg7KXtjb25zdCBlPW4uc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgaS5EaWN0KWZvcihsZXQgZSBvZiB0LmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgaS5SZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXMuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7KDAsci5pbmZvKShgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoIk5vcm1hbCIhPT10Lm5hbWUpcmV0dXJuITB9ZWxzZSBpZih2b2lkIDAhPT10JiZBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBlIG9mIHQpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgbz1lLmdldCgiWE9iamVjdCIpO2lmKG8gaW5zdGFuY2VvZiBpLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9cy5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTsoMCxyLmluZm8pKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgWE9iamVjdDogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmYS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBpLkRpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7bi5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxuPWF3YWl0IGZldGNoKHQpO2lmKCFuLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7bi5zdGF0dXNUZXh0fSIuYCk7YT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgbi5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6ci5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWX19ZWxzZSBhPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTthLmNvbXByZXNzaW9uVHlwZSE9PXIuQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBiLlN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9KDAsbC5nZXRGb250TmFtZVRvRmlsZU1hcCkoKVtlXTtsZXQgbjtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHthfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP249YXdhaXQgdC5hcnJheUJ1ZmZlcigpOigwLHIud2FybikoYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7bj1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTphfSl9Y2F0Y2goZSl7KDAsci53YXJuKShgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHthfSIgd2l0aCAiJHtlfSIuYCl9aWYoIW4pcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG5ldyBiLlN0cmVhbShuKX1hc3luYyBidWlsZEZvcm1YT2JqZWN0KGUsdCxhLG4scyxvLGMpe2NvbnN0IGw9dC5kaWN0LGg9bC5nZXRBcnJheSgiTWF0cml4Iik7bGV0IHUsZCxmPWwuZ2V0QXJyYXkoIkJCb3giKTtmPUFycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD9yLlV0aWwubm9ybWFsaXplUmVjdChmKTpudWxsO2wuaGFzKCJPQyIpJiYodT1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGwuZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT11JiZuLmFkZE9wKHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLHVdKTtjb25zdCBnPWwuZ2V0KCJHcm91cCIpO2lmKGcpe2Q9e21hdHJpeDpoLGJib3g6ZixzbWFzazphLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtjb25zdCB0PWcuZ2V0KCJTIik7bGV0IHM9bnVsbDtpZigoMCxpLmlzTmFtZSkodCwiVHJhbnNwYXJlbmN5Iikpe2QuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITE7ZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMTtpZihnLmhhcygiQ1MiKSl7Y29uc3QgdD1nLmdldFJhdygiQ1MiKSxhPVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQodCx0aGlzLnhyZWYsYyk7cz1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9fWlmKGEmJmEuYmFja2Ryb3Ape3M9c3x8Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2EuYmFja2Ryb3A9cy5nZXRSZ2IoYS5iYWNrZHJvcCwwKX1uLmFkZE9wKHIuT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0QmVnaW4scCk7cmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnMscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGRPcChyLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKTtnJiZuLmFkZE9wKHIuT1BTLmVuZEdyb3VwLFtkXSk7dm9pZCAwIT09dSYmbi5hZGRPcChyLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0LGE9ITEpe2NvbnN0IHI9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8YT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLHIpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0scil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDpuLGNhY2hlS2V5OmksbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGM9dC5kaWN0LGw9Yy5vYmpJZCxoPWMuZ2V0KCJXIiwiV2lkdGgiKSx1PWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWh8fCJudW1iZXIiIT10eXBlb2YgaHx8IXV8fCJudW1iZXIiIT10eXBlb2YgdSl7KDAsci53YXJuKSgiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGQ9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWQmJmgqdT5kKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXsoMCxyLndhcm4pKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGY7Yy5oYXMoIk9DIikmJihmPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBnLHA7aWYoYy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPWMuZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxhPWgrNz4+MyxvPXQuZ2V0Qnl0ZXMoYSp1KSxkPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2c9VC5QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpvLHdpZHRoOmgsaGVpZ2h0OnUsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIHguRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6ISFkJiZkWzBdPjAsaW50ZXJwb2xhdGU6ZX0pO2cuY2FjaGVkPSEhaTtwPVtnXTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1nPVQuUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6byx3aWR0aDpoLGhlaWdodDp1LGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiB4LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOiEhZCYmZFswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoZy5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxmKTtpJiZzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxhcmdzOltdLG9wdGlvbmFsQ29udGVudDpmfSk7cmV0dXJufWNvbnN0IG09YG1hc2tfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7bi5hZGREZXBlbmRlbmN5KG0pO3RoaXMuX3NlbmRJbWdEYXRhKG0sZyk7cD1be2RhdGE6bSx3aWR0aDpnLndpZHRoLGhlaWdodDpnLmhlaWdodCxpbnRlcnBvbGF0ZTpnLmludGVycG9sYXRlLGNvdW50OjF9XTtuLmFkZEltYWdlT3BzKHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCxwLGYpO2kmJnMuc2V0KGksbCx7Zm46ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO3JldHVybn1jb25zdCBtPWMuZ2V0KCJTTSIsIlNNYXNrIil8fCExLGI9Yy5nZXQoIk1hc2siKXx8ITE7aWYoYSYmIW0mJiFiJiZoK3U8MjAwKXtjb25zdCBpPW5ldyBULlBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7Zz1pLmNyZWF0ZUltYWdlRGF0YSghMCk7bi5hZGRJbWFnZU9wcyhyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxbZ10sZik7cmV0dXJufWxldCB5PWBpbWdfJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWAsdz0hMTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpeT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3l9YDtlbHNlIGlmKGwpe3c9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGwsdGhpcy5wYWdlSW5kZXgpO3cmJih5PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7eX1gKX1uLmFkZERlcGVuZGVuY3koeSk7cD1beSxoLHVdO1QuUERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pLnRoZW4oKGU9PntnPWUuY3JlYXRlSW1hZ2VEYXRhKCExKTtpJiZsJiZ3JiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUobCxnLmRhdGEubGVuZ3RoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxnLHcpfSkpLmNhdGNoKChlPT57KDAsci53YXJuKShgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt5fSI6ICIke2V9Ii5gKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoeSxudWxsLHcpfSkpO24uYWRkSW1hZ2VPcHMoci5PUFMucGFpbnRJbWFnZVhPYmplY3QscCxmKTtpZihpKXtzLnNldChpLGwse2ZuOnIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6cCxvcHRpb25hbENvbnRlbnQ6Zn0pO2lmKGwpeygwLHIuYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkUGFnZUluZGV4KGwsdGhpcy5wYWdlSW5kZXgpO3cmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGwse29iaklkOnksZm46ci5PUFMucGFpbnRJbWFnZVhPYmplY3QsYXJnczpwLG9wdGlvbmFsQ29udGVudDpmLGJ5dGVTaXplOjB9KX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPWUuZ2V0KCJHIiksbz17c3VidHlwZTplLmdldCgiUyIpLm5hbWUsYmFja2Ryb3A6ZS5nZXQoIkJDIil9LGM9ZS5nZXQoIlRSIik7aWYoKDAsZy5pc1BERkZ1bmN0aW9uKShjKSl7Y29uc3QgZT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKGMpLHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKXthWzBdPXIvMjU1O2UoYSwwLGEsMCk7dFtyXT0yNTUqYVswXXwwfW8udHJhbnNmZXJNYXA9dH1yZXR1cm4gdGhpcy5idWlsZEZvcm1YT2JqZWN0KHQscyxvLGEscixuLnN0YXRlLmNsb25lKCksaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXQ9ZTtlbHNle2lmKCEoMCxnLmlzUERGRnVuY3Rpb24pKGUpKXJldHVybiBudWxsO3Q9W2VdfWNvbnN0IGE9W107bGV0IHI9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyKys7aWYoKDAsaS5pc05hbWUpKHQsIklkZW50aXR5Iikpe2EucHVzaChudWxsKTtjb250aW51ZX1pZighKDAsZy5pc1BERkZ1bmN0aW9uKSh0KSlyZXR1cm4gbnVsbDtjb25zdCBzPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUodCksbz1uZXcgVWludDhBcnJheSgyNTYpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGU9MDtlPDI1NjtlKyspe2NbMF09ZS8yNTU7cyhjLDAsYywwKTtvW2VdPTI1NSpjWzBdfDB9YS5wdXNoKG8pO24rK31yZXR1cm4gMSE9PXImJjQhPT1yfHwwPT09bj9udWxsOmF9aGFuZGxlVGlsaW5nVHlwZShlLHQsYSxuLHMsbyxjLGwpe2NvbnN0IGg9bmV3IE8uT3BlcmF0b3JMaXN0LGQ9aS5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3MuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDpofSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBhPWguZ2V0SVIoKSxyPSgwLHUuZ2V0VGlsaW5nUGF0dGVybklSKShhLHMsdCk7by5hZGREZXBlbmRlbmNpZXMoaC5kZXBlbmRlbmNpZXMpO28uYWRkT3AoZSxyKTtzLm9iaklkJiZsLnNldChudWxsLHMub2JqSWQse29wZXJhdG9yTGlzdElSOmEsZGljdDpzfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JUaWxpbmdQYXR0ZXJufSk7KDAsci53YXJuKShgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9aGFuZGxlU2V0Rm9udChlLHQsYSxuLG8sYyxsPW51bGwsaD1udWxsKXtjb25zdCB1PXQmJnRbMF1pbnN0YW5jZW9mIGkuTmFtZT90WzBdLm5hbWU6bnVsbDtyZXR1cm4gdGhpcy5sb2FkRm9udCh1LGEsZSxsLGgpLnRoZW4oKHQ9PnQuZm9udC5pc1R5cGUzRm9udD90LmxvYWRUeXBlM0RhdGEodGhpcyxlLG8pLnRoZW4oKGZ1bmN0aW9uKCl7bi5hZGREZXBlbmRlbmNpZXModC50eXBlM0RlcGVuZGVuY2llcyk7cmV0dXJuIHR9KSkuY2F0Y2goKGU9Pnt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZFR5cGUzfSk7cmV0dXJuIG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBzLkVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX0pKTp0KSkudGhlbigoZT0+e2MuZm9udD1lLmZvbnQ7ZS5zZW5kKHRoaXMuaGFuZGxlcik7cmV0dXJuIGUubG9hZGVkTmFtZX0pKX1oYW5kbGVUZXh0KGUsdCl7Y29uc3QgYT10LmZvbnQsbj1hLmNoYXJzVG9HbHlwaHMoZSk7aWYoYS5kYXRhKXsoISEodC50ZXh0UmVuZGVyaW5nTW9kZSZyLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGEuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhhLG4sdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIG59ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFN0YXRlfSk7KDAsci53YXJuKShgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpuLHRhc2s6cyxzdGF0ZU1hbmFnZXI6byxsb2NhbEdTdGF0ZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe2NvbnN0IGg9dC5vYmpJZDtsZXQgdT0hMDtjb25zdCBkPVtdO2xldCBmPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBuIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBjPXQuZ2V0KG4pO3N3aXRjaChuKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6ZC5wdXNoKFtuLGNdKTticmVhaztjYXNlIkZvbnQiOnU9ITE7Zj1mLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLGNbMF0sYSxzLG8uc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTtkLnB1c2goW24sW2UsY1sxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOmQucHVzaChbbixub3JtYWxpemVCbGVuZE1vZGUoYyldKTticmVhaztjYXNlIlNNYXNrIjppZigoMCxpLmlzTmFtZSkoYywiTm9uZSIpKXtkLnB1c2goW24sITFdKTticmVha31pZihjIGluc3RhbmNlb2YgaS5EaWN0KXt1PSExO2Y9Zi50aGVuKCgoKT0+dGhpcy5oYW5kbGVTTWFzayhjLGUsYSxzLG8sbCkpKTtkLnB1c2goW24sITBdKX1lbHNlKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGMpO2QucHVzaChbbix0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOigwLHIuaW5mbykoImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIituKTticmVhaztkZWZhdWx0OigwLHIuaW5mbykoIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK24pfX1yZXR1cm4gZi50aGVuKChmdW5jdGlvbigpe2QubGVuZ3RoPjAmJmEuYWRkT3Aoci5PUFMuc2V0R1N0YXRlLFtkXSk7dSYmYy5zZXQobixoLGQpfSkpfWxvYWRGb250KGUsdCxhLG49bnVsbCxjPW51bGwpe2NvbnN0IGVycm9yRm9udD1hc3luYygpPT5uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6ImdfZm9udF9lcnJvciIsZm9udDpuZXcgcy5FcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSksbD10aGlzLnhyZWY7bGV0IGg7aWYodCl0IGluc3RhbmNlb2YgaS5SZWYmJihoPXQpO2Vsc2V7Y29uc3QgdD1hLmdldCgiRm9udCIpO3QmJihoPXQuZ2V0UmF3KGUpKX1pZighaCl7Y29uc3QgYT1gRm9udCAiJHtlfHx0JiZ0LnRvU3RyaW5nKCl9IiBpcyBub3QgYXZhaWxhYmxlYDtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7KDAsci53YXJuKShgJHthfS5gKTtyZXR1cm4gZXJyb3JGb250KCl9dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udE1pc3Npbmd9KTsoMCxyLndhcm4pKGAke2F9IC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuYCk7aD1ufHxQYXJ0aWFsRXZhbHVhdG9yLmZhbGxiYWNrRm9udERpY3R9aWYodGhpcy5wYXJzaW5nVHlwZTNGb250JiZ0aGlzLnR5cGUzRm9udFJlZnMuaGFzKGgpKXJldHVybiBlcnJvckZvbnQoKTtpZih0aGlzLmZvbnRDYWNoZS5oYXMoaCkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChoKTtpZighKCh0PWwuZmV0Y2hJZlJlZihoKSlpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIGVycm9yRm9udCgpO2lmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtsZXQgZDt0cnl7ZD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtkLmNzc0ZvbnRJbmZvPWN9Y2F0Y2goZSl7KDAsci53YXJuKShgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6ZixoYXNoOmd9PWQscD1oIGluc3RhbmNlb2YgaS5SZWY7bGV0IG07cCYmKG09YGYke2gudG9TdHJpbmcoKX1gKTtpZihnJiZmIGluc3RhbmNlb2YgaS5EaWN0KXtmLmZvbnRBbGlhc2VzfHwoZi5mb250QWxpYXNlcz1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdCBlPWYuZm9udEFsaWFzZXM7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpfX1lbHNlIGVbZ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07cCYmKGVbZ10uYWxpYXNSZWY9aCk7bT1lW2ddLmZvbnRJRH1pZihwKXRoaXMuZm9udENhY2hlLnB1dChoLHUucHJvbWlzZSk7ZWxzZXttfHwobT10aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKSk7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHttfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKX0oMCxyLmFzc2VydCkobSYmbS5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bX1gO3RoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dm9pZCAwIT09ZS5mb250VHlwZSYmbC5zdGF0cy5hZGRGb250VHlwZShlLmZvbnRUeXBlKTt1LnJlc29sdmUobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRyYW5zbGF0ZX0pOygwLHIud2FybikoYGxvYWRGb250IC0gdHJhbnNsYXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTt0cnl7Y29uc3QgZT1mJiZmLmdldCgiRm9udEZpbGUzIiksdD1lJiZlLmdldCgiU3VidHlwZSIpLGE9KDAsby5nZXRGb250VHlwZSkoZC50eXBlLHQmJnQubmFtZSk7dm9pZCAwIT09YSYmbC5zdGF0cy5hZGRGb250VHlwZShhKX1jYXRjaChlKXt9dS5yZXNvbHZlKG5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgcy5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIHUucHJvbWlzZX1idWlsZFBhdGgoZSx0LGEsbj0hMSl7Y29uc3QgaT1lLmxlbmd0aC0xO2F8fChhPVtdKTtpZihpPDB8fGUuZm5BcnJheVtpXSE9PXIuT1BTLmNvbnN0cnVjdFBhdGgpe2lmKG4peygwLHIud2FybikoYEVuY291bnRlcmVkIHBhdGggb3BlcmF0b3IgIiR7dH0iIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LmApO2UuYWRkT3Aoci5PUFMuc2F2ZSxudWxsKX1sZXQgaTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107aT1bTWF0aC5taW4oYVswXSxlKSxNYXRoLm1heChhWzBdLGUpLE1hdGgubWluKGFbMV0sdCksTWF0aC5tYXgoYVsxXSx0KV07YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86aT1bYVswXSxhWzBdLGFbMV0sYVsxXV07YnJlYWs7ZGVmYXVsdDppPVsxLzAsLTEvMCwxLzAsLTEvMF19ZS5hZGRPcChyLk9QUy5jb25zdHJ1Y3RQYXRoLFtbdF0sYSxpXSk7biYmZS5hZGRPcChyLk9QUy5yZXN0b3JlLG51bGwpfWVsc2V7Y29uc3Qgbj1lLmFyZ3NBcnJheVtpXTtuWzBdLnB1c2godCk7blsxXS5wdXNoKC4uLmEpO2NvbnN0IHM9blsyXTtzd2l0Y2godCl7Y2FzZSByLk9QUy5yZWN0YW5nbGU6Y29uc3QgZT1hWzBdK2FbMl0sdD1hWzFdK2FbM107c1swXT1NYXRoLm1pbihzWzBdLGFbMF0sZSk7c1sxXT1NYXRoLm1heChzWzFdLGFbMF0sZSk7c1syXT1NYXRoLm1pbihzWzJdLGFbMV0sdCk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0sdCk7YnJlYWs7Y2FzZSByLk9QUy5tb3ZlVG86Y2FzZSByLk9QUy5saW5lVG86c1swXT1NYXRoLm1pbihzWzBdLGFbMF0pO3NbMV09TWF0aC5tYXgoc1sxXSxhWzBdKTtzWzJdPU1hdGgubWluKHNbMl0sYVsxXSk7c1szXT1NYXRoLm1heChzWzNdLGFbMV0pfX19cGFyc2VDb2xvclNwYWNlKHtjczplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KXtyZXR1cm4gUy5Db2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTphfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2Ygci5BYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JDb2xvclNwYWNlfSk7KDAsci53YXJuKShgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBuPXIuZ2V0KGUpO2lmKCFuKXtjb25zdCBpPXUuUGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLmhhbmRsZXIsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGEpLmdldElSKCk7bj1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLnNldChlLG4pO3RoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtuLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixpXSl9cmV0dXJuIG59aGFuZGxlQ29sb3JOKGUsdCxhLG4scyxvLGMsbCxoLGQpe2NvbnN0IGY9YS5wb3AoKTtpZihmIGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBnPXMuZ2V0UmF3KGYubmFtZSkscD1nIGluc3RhbmNlb2YgaS5SZWYmJmguZ2V0QnlSZWYoZyk7aWYocCl0cnl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGwsaT0oMCx1LmdldFRpbGluZ1BhdHRlcm5JUikocC5vcGVyYXRvckxpc3RJUixwLmRpY3Qscik7ZS5hZGRPcCh0LGkpO3JldHVybn1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZihzPT09RSl7Y29uc3Qgcj1uLmJhc2U/bi5iYXNlLmdldFJnYihhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LHIsbyxtLGksZSxjLGgpfWlmKHM9PT1EKXtjb25zdCBhPWkuZ2V0KCJTaGFkaW5nIikscj1pLmdldEFycmF5KCJNYXRyaXgiKSxuPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmEscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO2UuYWRkT3AodCxbIlNoYWRpbmciLG4scl0pO3JldHVybn10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtzfWApfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtmfWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxhKXtpZigrK3Q+MTApeygwLHIud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBuPWUubGVuZ3RoLHM9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShuPDIpJiZzIGluc3RhbmNlb2YgaS5OYW1lKXtzd2l0Y2gocy5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmEucHVzaChzLm5hbWUpO2JyZWFrO2RlZmF1bHQ6KDAsci53YXJuKShgSW52YWxpZCBvcGVyYXRvciAke3MubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8bjtyKyspe2NvbnN0IG49ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKG4pO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107YS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgbiBpbnN0YW5jZW9mIGkuUmVmJiZhLnB1c2gobi50b1N0cmluZygpKX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgYTtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXthPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9ZX1jb25zdCBuPWEuZ2V0KCJUeXBlIikubmFtZTtpZigiT0NHIj09PW4pcmV0dXJue3R5cGU6bixpZDphLm9iaklkfTtpZigiT0NNRCI9PT1uKXtjb25zdCBlPWEuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWEuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6bixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgaS5OYW1lP2EuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIGkuUmVmKXJldHVybnt0eXBlOm4saWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6YSxvcGVyYXRvckxpc3Q6bixpbml0aWFsU3RhdGU6cz1udWxsLGZhbGxiYWNrRm9udERpY3Q6bz1udWxsfSl7YT1hfHxpLkRpY3QuZW1wdHk7cz1zfHxuZXcgRXZhbFN0YXRlO2lmKCFuKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IGM9dGhpcyxsPXRoaXMueHJlZjtsZXQgaD0hMTtjb25zdCB1PW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxkPW5ldyBtLkxvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IG0uTG9jYWxHU3RhdGVDYWNoZSxnPW5ldyBtLkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlLHA9bmV3IE1hcCxiPWEuZ2V0KCJYT2JqZWN0Iil8fGkuRGljdC5lbXB0eSx3PWEuZ2V0KCJQYXR0ZXJuIil8fGkuRGljdC5lbXB0eSx4PW5ldyBTdGF0ZU1hbmFnZXIocyksaz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbCx4KSxDPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWsuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKW4uYWRkT3Aoci5PUFMucmVzdG9yZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3Qsbi5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscyl9Y2F0Y2goZSl7cyhlKX19KSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Qy5yZXNldCgpO2NvbnN0IG09e307bGV0IHYsRixPLFQsTSxFO2Zvcig7ISh2PUMuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighay5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxzPW0uZm47c3dpdGNoKDB8cyl7Y2FzZSByLk9QUy5wYWludFhPYmplY3Q6RT1lWzBdaW5zdGFuY2VvZiBpLk5hbWU7TT1lWzBdLm5hbWU7aWYoRSl7Y29uc3QgdD11LmdldEJ5TmFtZShNKTtpZih0KXtuLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTtpbmNyZW1lbnRDYWNoZWRJbWFnZU1hc2tDb3VudCh0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBvPWIuZ2V0UmF3KE0pO2lmKG8gaW5zdGFuY2VvZiBpLlJlZil7Y29uc3QgdD11LmdldEJ5UmVmKG8pO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2UoKTtyZXR1cm59Y29uc3QgYT1jLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGMucGFnZUluZGV4KTtpZihhKXtuLmFkZERlcGVuZGVuY3koYS5vYmpJZCk7bi5hZGRJbWFnZU9wcyhhLmZuLGEuYXJncyxhLm9wdGlvbmFsQ29udGVudCk7ZSgpO3JldHVybn1vPWwuZmV0Y2gobyl9aWYoIShvIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBoPW8uZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGggaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09aC5uYW1lKWlmKCJJbWFnZSIhPT1oLm5hbWUpe2lmKCJQUyIhPT1oLm5hbWUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtoLm5hbWV9YCk7KDAsci5pbmZvKSgiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOm8sb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSxsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkudGhlbihlLHMpO2Vsc2V7eC5zYXZlKCk7Yy5idWlsZEZvcm1YT2JqZWN0KGEsbyxudWxsLG4sdCx4LnN0YXRlLmNsb25lKCksZCkudGhlbigoZnVuY3Rpb24oKXt4LnJlc3RvcmUoKTtlKCl9KSxzKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvclhPYmplY3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRGb250OnZhciBEPWVbMV07bmV4dChjLmhhbmRsZVNldEZvbnQoYSxlLG51bGwsbix0LHguc3RhdGUsbykudGhlbigoZnVuY3Rpb24oZSl7bi5hZGREZXBlbmRlbmN5KGUpO24uYWRkT3Aoci5PUFMuc2V0Rm9udCxbZSxEXSl9KSkpO3JldHVybjtjYXNlIHIuT1BTLmJlZ2luVGV4dDpoPSEwO2JyZWFrO2Nhc2Ugci5PUFMuZW5kVGV4dDpoPSExO2JyZWFrO2Nhc2Ugci5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIFI9ZVswXS5jYWNoZUtleTtpZihSKXtjb25zdCB0PXUuZ2V0QnlOYW1lKFIpO2lmKHQpe24uYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChjLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczphLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6Uixsb2NhbEltYWdlQ2FjaGU6dSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkfSkpO3JldHVybjtjYXNlIHIuT1BTLnNob3dUZXh0OmlmKCF4LnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KHguc3RhdGUpO2NvbnRpbnVlfWVbMF09Yy5oYW5kbGVUZXh0KGVbMF0seC5zdGF0ZSk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZigheC5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udCh4LnN0YXRlKTtjb250aW51ZX12YXIgTD1bXSxqPXguc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/TC5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LGopKToibnVtYmVyIj09dHlwZW9mIHQmJkwucHVzaCh0KTtlWzBdPUw7cz1yLk9QUy5zaG93VGV4dDticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6aWYoIXguc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoeC5zdGF0ZSk7Y29udGludWV9bi5hZGRPcChyLk9QUy5uZXh0TGluZSk7bi5hZGRPcChyLk9QUy5zZXRXb3JkU3BhY2luZyxbZS5zaGlmdCgpXSk7bi5hZGRPcChyLk9QUy5zZXRDaGFyU3BhY2luZyxbZS5zaGlmdCgpXSk7ZVswXT1jLmhhbmRsZVRleHQoZVswXSx4LnN0YXRlKTtzPXIuT1BTLnNob3dUZXh0O2JyZWFrO2Nhc2Ugci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGU6eC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2Ugci5PUFMuc2V0RmlsbENvbG9yU3BhY2U6e2NvbnN0IHQ9Uy5Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLGwsZCk7aWYodCl7eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLmZpbGxDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PVMuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxsLGQpO2lmKHQpe3guc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJih4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHIuT1BTLnNldEZpbGxDb2xvcjpUPXguc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1ULmdldFJnYihlLDApO3M9ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsR3JheTp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYihlLDApO3M9ci5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxDTVlLQ29sb3I6eC5zdGF0ZS5maWxsQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtzPXIuT1BTLnNldEZpbGxSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZUNNWUtDb2xvcjp4LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Uy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215aztlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjp4LnN0YXRlLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIHIuT1BTLnNldFN0cm9rZVJHQkNvbG9yOnguc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2I7ZT1TLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlQ9eC5zdGF0ZS5maWxsQ29sb3JTcGFjZTtpZigiUGF0dGVybiI9PT1ULm5hbWUpe25leHQoYy5oYW5kbGVDb2xvck4obixyLk9QUy5zZXRGaWxsQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46VD14LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09VC5uYW1lKXtuZXh0KGMuaGFuZGxlQ29sb3JOKG4sci5PUFMuc2V0U3Ryb2tlQ29sb3JOLGUsVCx3LGEsdCxkLGcscCkpO3JldHVybn1lPVQuZ2V0UmdiKGUsMCk7cz1yLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIHIuT1BTLnNoYWRpbmdGaWxsOnZhciAkPWEuZ2V0KCJTaGFkaW5nIik7aWYoISQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgXz0kLmdldChlWzBdLm5hbWUpO2lmKCFfKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpO2U9W2MucGFyc2VTaGFkaW5nKHtzaGFkaW5nOl8scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cH0pXTtzPXIuT1BTLnNoYWRpbmdGaWxsO2JyZWFrO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOkU9ZVswXWluc3RhbmNlb2YgaS5OYW1lO009ZVswXS5uYW1lO2lmKEUpe2NvbnN0IHQ9Zi5nZXRCeU5hbWUoTSk7aWYodCl7dC5sZW5ndGg+MCYmbi5hZGRPcChyLk9QUy5zZXRHU3RhdGUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscyl7aWYoIUUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbz1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShvIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgbD1vLmdldChNKTtpZighKGwgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmEsZ1N0YXRlOmwsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6TSx0YXNrOnQsc3RhdGVNYW5hZ2VyOngsbG9jYWxHU3RhdGVDYWNoZTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KS50aGVuKGUscyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO2MuaGFuZGxlci5zZW5kKCJVbnN1cHBvcnRlZEZlYXR1cmUiLHtmZWF0dXJlSWQ6ci5VTlNVUFBPUlRFRF9GRUFUVVJFUy5lcnJvckV4dEdTdGF0ZX0pOygwLHIud2FybikoYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMubW92ZVRvOmNhc2Ugci5PUFMubGluZVRvOmNhc2Ugci5PUFMuY3VydmVUbzpjYXNlIHIuT1BTLmN1cnZlVG8yOmNhc2Ugci5PUFMuY3VydmVUbzM6Y2FzZSByLk9QUy5jbG9zZVBhdGg6Y2FzZSByLk9QUy5yZWN0YW5nbGU6Yy5idWlsZFBhdGgobixzLGUsaCk7Y29udGludWU7Y2FzZSByLk9QUy5tYXJrUG9pbnQ6Y2FzZSByLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIHIuT1BTLmJlZ2luQ29tcGF0OmNhc2Ugci5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxyLndhcm4pKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KGMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxhKS50aGVuKChlPT57bi5hZGRPcChyLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTtjLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JNYXJrZWRDb250ZW50fSk7KDAsci53YXJuKShgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgaS5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihGPTAsTz1lLmxlbmd0aDtGPE8mJiEoZVtGXWluc3RhbmNlb2YgaS5EaWN0KTtGKyspO2lmKEY8Tyl7KDAsci53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrcyk7Y29udGludWV9fX1uLmFkZE9wKHMsZSl9aWYodiluZXh0KE4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiByLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt0aGlzLmhhbmRsZXIuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JPcGVyYXRvckxpc3R9KTsoMCxyLndhcm4pKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmEsc3RhdGVNYW5hZ2VyOm49bnVsbCxjb21iaW5lVGV4dEl0ZW1zOnM9ITEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bz0hMSxzaW5rOmMsc2VlblN0eWxlczpsPW5ldyBTZXQsdmlld0JveDp1LG1hcmtlZENvbnRlbnREYXRhOmQ9bnVsbH0pe2E9YXx8aS5EaWN0LmVtcHR5O249bnx8bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtvJiYoZD1kfHx7bGV2ZWw6MH0pO2NvbnN0IGY9KDAsaC5nZXROb3JtYWxpemVkVW5pY29kZXMpKCksZz17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCl9LHA9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sYj1bIiAiLCIgIl07bGV0IFM9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oUysxKSUyLGE9IiAiIT09YltTXSYmIiAiPT09Ylt0XTtiW1NdPWU7Uz10O3JldHVybiBhfWZ1bmN0aW9uIHJlc2V0TGFzdENoYXJzKCl7YlswXT1iWzFdPSIgIjtTPTB9Y29uc3QgeD10aGlzLGs9dGhpcy54cmVmLEM9W107bGV0IHY9bnVsbDtjb25zdCBGPW5ldyBtLkxvY2FsSW1hZ2VDYWNoZSxPPW5ldyBtLkxvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsayxuKTtsZXQgTTtmdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxyLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LHIuRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCBhPWUuYmJveFszXS1lLmJib3hbMV07YT4wJiYodFszXSo9YSpNLmZvbnRNYXRyaXhbM10pfXJldHVybiByLlV0aWwudHJhbnNmb3JtKE0uY3RtLHIuVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZihwLmluaXRpYWxpemVkKXJldHVybiBwO2NvbnN0IGU9TS5mb250LHQ9ZS5sb2FkZWROYW1lO2lmKCFsLmhhcyh0KSl7bC5hZGQodCk7Zy5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9fXAuZm9udE5hbWU9dDtjb25zdCBhPXAudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7cC53aWR0aD1wLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3AuaGVpZ2h0PXAudG90YWxIZWlnaHQ9MDtwLnZlcnRpY2FsPSEwfWVsc2V7cC53aWR0aD1wLnRvdGFsV2lkdGg9MDtwLmhlaWdodD1wLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTtwLnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLG49TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSk7cC50ZXh0QWR2YW5jZVNjYWxlPW4qcjtwLnRyYWNraW5nU3BhY2VNaW49LjEqTS5mb250U2l6ZTtwLm5vdEFTcGFjZT0uMDMqTS5mb250U2l6ZTtwLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKk0uZm9udFNpemU7cC5zcGFjZUluRmxvd01pbj0uMSpNLmZvbnRTaXplO3Auc3BhY2VJbkZsb3dNYXg9LjYqTS5mb250U2l6ZTtwLmhhc0VPTD0hMTtwLmluaXRpYWxpemVkPSEwO3JldHVybiBwfWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCFwLmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pKmU7aWYodCE9PXAudGV4dEFkdmFuY2VTY2FsZSl7aWYocC52ZXJ0aWNhbCl7cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlO3AuaGVpZ2h0PTB9ZWxzZXtwLnRvdGFsV2lkdGgrPXAud2lkdGgqcC50ZXh0QWR2YW5jZVNjYWxlO3Aud2lkdGg9MH1wLnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLG4pe3JldHVybiB4LmxvYWRGb250KGUsbixhKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5mb250LmlzVHlwZTNGb250P2UubG9hZFR5cGUzRGF0YSh4LGEsdCkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSk6ZX0pKS50aGVuKChmdW5jdGlvbihlKXtNLmZvbnQ9ZS5mb250O00uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBhcHBseUludmVyc2VSb3RhdGlvbihlLHQsYSl7Y29uc3Qgcj1NYXRoLmh5cG90KGFbMF0sYVsxXSk7cmV0dXJuWyhhWzBdKmUrYVsxXSp0KS9yLChhWzJdKmUrYVszXSp0KS9yXX1mdW5jdGlvbiBjb21wYXJlV2l0aExhc3RQb3NpdGlvbigpe2NvbnN0IGU9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgdD1lWzRdLGE9ZVs1XTtjb25zdCByPXQtdVswXSxuPWEtdVsxXTtpZihyPDB8fHI+dVsyXXx8bjwwfHxuPnVbM10pcmV0dXJuITE7aWYoIXN8fCFNLmZvbnR8fCFwLnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IGk9cC5wcmV2VHJhbnNmb3JtWzRdLG89cC5wcmV2VHJhbnNmb3JtWzVdO2lmKGk9PT10JiZvPT09YSlyZXR1cm4hMDtsZXQgYz0tMTtlWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0/Yz1lWzBdPjA/MDoxODA6ZVsxXSYmMD09PWVbMF0mJjA9PT1lWzNdJiYoYz1lWzFdPjA/OTA6MjcwKTtzd2l0Y2goYyl7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W3QsYV09W2EsdF07W2ksb109W28saV07YnJlYWs7Y2FzZSAxODA6W3QsYSxpLG9dPVstdCwtYSwtaSwtb107YnJlYWs7Y2FzZSAyNzA6W3QsYV09Wy1hLC10XTtbaSxvXT1bLW8sLWldO2JyZWFrO2RlZmF1bHQ6W3QsYV09YXBwbHlJbnZlcnNlUm90YXRpb24odCxhLGUpO1tpLG9dPWFwcGx5SW52ZXJzZVJvdGF0aW9uKGksbyxwLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0oby1hKS9wLnRleHRBZHZhbmNlU2NhbGUscj10LWksbj1NYXRoLnNpZ24ocC5oZWlnaHQpO2lmKGU8bipwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHIpPi41KnAud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyhyKT5wLndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnAubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qcC50cmFja2luZ1NwYWNlTWluKXAuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSxwLnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXAuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOjAsaGVpZ2h0Ok1hdGguYWJzKGUpLHRyYW5zZm9ybTpwLnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6cC5mb250TmFtZSxoYXNFT0w6ITF9KX1lbHNlIHAuaGVpZ2h0Kz1lO3JldHVybiEwfWNvbnN0IGw9KHQtaSkvcC50ZXh0QWR2YW5jZVNjYWxlLGg9YS1vLGQ9TWF0aC5zaWduKHAud2lkdGgpO2lmKGw8ZCpwLm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGgpPi41KnAuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMoaCk+cC5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfWw8PWQqcC5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobDw9ZCpwLnRyYWNraW5nU3BhY2VNaW4pcC53aWR0aCs9bDtlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKGwscC5wcmV2VHJhbnNmb3JtLGQpKWlmKDA9PT1wLnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7Zy5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDpNYXRoLmFicyhsKSxoZWlnaHQ6MCx0cmFuc2Zvcm06cC5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOnAuZm9udE5hbWUsaGFzRU9MOiExfSl9ZWxzZSBwLndpZHRoKz1sO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1NLmZvbnQ7aWYoIWUpe2NvbnN0IGU9TS5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpNLnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpNLnRleHRIU2NhbGUsMCkpO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxuPU0uZm9udE1hdHJpeFswXSpNLmZvbnRTaXplO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3Qgcz1yW2VdO2lmKHMuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBvPU0uY2hhclNwYWNpbmcrKGUrMT09PWk/dDowKSxjPXMud2lkdGg7YS52ZXJ0aWNhbCYmKGM9cy52bWV0cmljP3Mudm1ldHJpY1swXTotYyk7bGV0IGw9YypuO2lmKHMuaXNXaGl0ZXNwYWNlKXtpZihhLnZlcnRpY2FsKXtvKz0tbCtNLndvcmRTcGFjaW5nO00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1vKX1lbHNle28rPWwrTS53b3JkU3BhY2luZztNLnRyYW5zbGF0ZVRleHRNYXRyaXgobypNLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKCkpY29udGludWU7Y29uc3QgdT1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtzLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobD0wKTtpZihhLnZlcnRpY2FsKXtNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxsKTtsPU1hdGguYWJzKGwpO3UuaGVpZ2h0Kz1sfWVsc2V7bCo9TS50ZXh0SFNjYWxlO00udHJhbnNsYXRlVGV4dE1hdHJpeChsLDApO3Uud2lkdGgrPWx9bCYmKHUucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpKTtsZXQgZD1zLnVuaWNvZGU7ZD1mW2RdfHxkO2Q9KDAsaC5yZXZlcnNlSWZSdGwpKGQpO3NhdmVMYXN0Q2hhcihkKSYmdS5zdHIucHVzaCgiICIpO3Uuc3RyLnB1c2goZCk7byYmKGEudmVydGljYWw/TS50cmFuc2xhdGVUZXh0TWF0cml4KDAsLW8pOk0udHJhbnNsYXRlVGV4dE1hdHJpeChvKk0udGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYocC5pbml0aWFsaXplZCl7cC5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGcuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk0uZm9udC5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIGFkZEZha2VTcGFjZXMoZSx0LGEpe2lmKGEqcC5zcGFjZUluRmxvd01pbjw9ZSYmZTw9YSpwLnNwYWNlSW5GbG93TWF4KXtpZihwLmluaXRpYWxpemVkKXtyZXNldExhc3RDaGFycygpO3Auc3RyLnB1c2goIiAiKX1yZXR1cm4hMX1jb25zdCByPXAuZm9udE5hbWU7bGV0IG49MDtpZihwLnZlcnRpY2FsKXtuPWU7ZT0wfWZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmVzZXRMYXN0Q2hhcnMoKTtnLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiLHdpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhuKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpyLGhhc0VPTDohMX0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYocC5pbml0aWFsaXplZCYmcC5zdHIpe3AudmVydGljYWw/cC50b3RhbEhlaWdodCs9cC5oZWlnaHQqcC50ZXh0QWR2YW5jZVNjYWxlOnAudG90YWxXaWR0aCs9cC53aWR0aCpwLnRleHRBZHZhbmNlU2NhbGU7Zy5pdGVtcy5wdXNoKGZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lLnN0ci5qb2luKCIiKSxhPSgwLHcuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOmEuc3RyLGRpcjphLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShwKSk7cC5pbml0aWFsaXplZD0hMTtwLnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Zy5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2MuZW5xdWV1ZShnLHQpO2cuaXRlbXM9W107Zy5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRT1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxoKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3QsYy5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaCl9Y2F0Y2goZSl7aChlKX19KSxoKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RS5yZXNldCgpO2NvbnN0IGY9e307bGV0IHAsbT1bXTtmb3IoOyEocD1FLmNoZWNrKCkpOyl7bS5sZW5ndGg9MDtmLmFyZ3M9bTtpZighVC5yZWFkKGYpKWJyZWFrO009bi5zdGF0ZTtjb25zdCBlPWYuZm47bT1mLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zZXRGb250OnZhciBiPW1bMF0ubmFtZSx3PW1bMV07aWYoTS5mb250JiZiPT09TS5mb250TmFtZSYmdz09PU0uZm9udFNpemUpYnJlYWs7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPWI7TS5mb250U2l6ZT13O25leHQoaGFuZGxlU2V0Rm9udChiLG51bGwpKTtyZXR1cm47Y2FzZSByLk9QUy5zZXRUZXh0UmlzZTpNLnRleHRSaXNlPW1bMF07YnJlYWs7Y2FzZSByLk9QUy5zZXRIU2NhbGU6TS50ZXh0SFNjYWxlPW1bMF0vMTAwO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZzpNLmxlYWRpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLm1vdmVUZXh0Ok0udHJhbnNsYXRlVGV4dExpbmVNYXRyaXgobVswXSxtWzFdKTtNLnRleHRNYXRyaXg9TS50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2JyZWFrO2Nhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0Ok0ubGVhZGluZz0tbVsxXTtNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSk7TS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lOk0uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIHIuT1BTLnNldFRleHRNYXRyaXg6TS5zZXRUZXh0TWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTtNLnNldFRleHRMaW5lTWF0cml4KG1bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdKTt1cGRhdGVBZHZhbmNlU2NhbGUoKTticmVhaztjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOk0uY2hhclNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLnNldFdvcmRTcGFjaW5nOk0ud29yZFNwYWNpbmc9bVswXTticmVhaztjYXNlIHIuT1BTLmJlZ2luVGV4dDpNLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTtNLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7YnJlYWs7Y2FzZSByLk9QUy5zaG93U3BhY2VkVGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1jb25zdCBlPShNLmZvbnQudmVydGljYWw/MTotMSkqTS5mb250U2l6ZS8xZTMsaD1tWzBdO2ZvcihsZXQgdD0wLGE9aC5sZW5ndGg7dDxhLTE7dCsrKXtjb25zdCBhPWhbdF07aWYoInN0cmluZyI9PXR5cGVvZiBhKUMucHVzaChhKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSYmMCE9PWEpe2NvbnN0IHQ9Qy5qb2luKCIiKTtDLmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczp0LGV4dHJhU3BhY2luZzphKmV9KX19Y29uc3QgZj1oLmF0KC0xKTsic3RyaW5nIj09dHlwZW9mIGYmJkMucHVzaChmKTtpZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2Ugci5PUFMuc2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOm1bMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHIuT1BTLm5leHRMaW5lU2hvd1RleHQ6aWYoIW4uc3RhdGUuZm9udCl7eC5lbnN1cmVTdGF0ZUZvbnQobi5zdGF0ZSk7Y29udGludWV9TS5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczptWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSByLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighbi5zdGF0ZS5mb250KXt4LmVuc3VyZVN0YXRlRm9udChuLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPW1bMF07TS5jaGFyU3BhY2luZz1tWzFdO00uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6bVsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugci5PUFMucGFpbnRYT2JqZWN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dnx8KHY9YS5nZXQoIlhPYmplY3QiKXx8aS5EaWN0LmVtcHR5KTt2YXIgUz1tWzBdaW5zdGFuY2VvZiBpLk5hbWUsRD1tWzBdLm5hbWU7aWYoUyYmRi5nZXRCeU5hbWUoRCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxoKXtpZighUyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IGY9di5nZXRSYXcoRCk7aWYoZiBpbnN0YW5jZW9mIGkuUmVmKXtpZihGLmdldEJ5UmVmKGYpKXtlKCk7cmV0dXJufWlmKHguZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKGYseC5wYWdlSW5kZXgpKXtlKCk7cmV0dXJufWY9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpe0Yuc2V0KEQsZi5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHA9bi5zdGF0ZS5jbG9uZSgpLG09bmV3IFN0YXRlTWFuYWdlcihwKSxiPWYuZGljdC5nZXRBcnJheSgiTWF0cml4Iik7QXJyYXkuaXNBcnJheShiKSYmNj09PWIubGVuZ3RoJiZtLnRyYW5zZm9ybShiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07eC5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazp0LHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxjb21iaW5lVGV4dEl0ZW1zOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6byxzaW5rOncsc2VlblN0eWxlczpsLHZpZXdCb3g6dSxtYXJrZWRDb250ZW50RGF0YTpkfSkudGhlbigoZnVuY3Rpb24oKXt3LmVucXVldWVJbnZva2VkfHxGLnNldChELGYuZGljdC5vYmpJZCwhMCk7ZSgpfSksaCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2Ugci5PUFMuc2V0R1N0YXRlOlM9bVswXWluc3RhbmNlb2YgaS5OYW1lO0Q9bVswXS5uYW1lO2lmKFMmJk8uZ2V0QnlOYW1lKEQpKWJyZWFrO25leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcz1uLmdldChEKTtpZighKHMgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPXMuZ2V0KCJGb250Iik7aWYobyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtNLmZvbnROYW1lPW51bGw7TS5mb250U2l6ZT1vWzFdO2hhbmRsZVNldEZvbnQobnVsbCxvWzBdKS50aGVuKGUsdCl9ZWxzZXtPLnNldChELHMub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZigheC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSByLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihvKXtkLmxldmVsKys7Zy5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzptWzBdaW5zdGFuY2VvZiBpLk5hbWU/bVswXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIHIuT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzOmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7ZC5sZXZlbCsrO2xldCBlPW51bGw7bVsxXWluc3RhbmNlb2YgaS5EaWN0JiYoZT1tWzFdLmdldCgiTUNJRCIpKTtnLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudFByb3BzIixpZDpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake3guaWRGYWN0b3J5LmdldFBhZ2VPYmpJZCgpfV9tY2lkJHtlfWA6bnVsbCx0YWc6bVswXWluc3RhbmNlb2YgaS5OYW1lP21bMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSByLk9QUy5lbmRNYXJrZWRDb250ZW50OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobyl7aWYoMD09PWQubGV2ZWwpYnJlYWs7ZC5sZXZlbC0tO2cuaXRlbXMucHVzaCh7dHlwZToiZW5kTWFya2VkQ29udGVudCJ9KX19aWYoZy5pdGVtcy5sZW5ndGg+PWMuZGVzaXJlZFNpemUpe3A9ITA7YnJlYWt9fWlmKHApbmV4dChOKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxhKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgcztjb25zdCBsPXRoaXMucmVhZFRvVW5pY29kZShhLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKGEuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmKGEuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsci5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLHIuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtJiYocz10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsci53YXJuKShgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7dT1lLmdldCgiRW5jb2RpbmciKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKTtkPWQgaW5zdGFuY2VvZiBpLk5hbWU/ZC5uYW1lOm51bGw7aWYodS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPW4uZmV0Y2hJZlJlZihhKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBpLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGUpOygwLHIud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9aWYoZClhLmRlZmF1bHRFbmNvZGluZz0oMCxjLmdldEVuY29kaW5nKShkKTtlbHNle2NvbnN0IGU9ISEoYS5mbGFncyZvLkZvbnRGbGFncy5TeW1ib2xpYyksdD0hIShhLmZsYWdzJm8uRm9udEZsYWdzLk5vbnN5bWJvbGljKTt1PWMuU3RhbmRhcmRFbmNvZGluZzsiVHJ1ZVR5cGUiIT09YS50eXBlfHx0fHwodT1jLldpbkFuc2lFbmNvZGluZyk7aWYoZSl7dT1jLk1hY1JvbWFuRW5jb2Rpbmc7YS5maWxlJiYhYS5pc0ludGVybmFsRm9udHx8KC9TeW1ib2wvaS50ZXN0KGEubmFtZSk/dT1jLlN5bWJvbFNldEVuY29kaW5nOi9EaW5nYmF0c3xXaW5nZGluZ3MvaS50ZXN0KGEubmFtZSkmJih1PWMuWmFwZkRpbmdiYXRzRW5jb2RpbmcpKX1hLmRlZmF1bHRFbmNvZGluZz11fWEuZGlmZmVyZW5jZXM9aDthLmJhc2VFbmNvZGluZ05hbWU9ZDthLmhhc0VuY29kaW5nPSEhZHx8aC5sZW5ndGg+MDthLmRpY3Q9ZTtyZXR1cm4gbC50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtyZXR1cm4gdGhpcy5idWlsZFRvVW5pY29kZShhKX0pKS50aGVuKChlPT57YS50b1VuaWNvZGU9ZTtzJiYoYS5jaWRUb0dpZE1hcD10aGlzLnJlYWRDaWRUb0dpZE1hcChzLGUpKTtyZXR1cm4gYX0pKX1fc2ltcGxlRm9udFRvVW5pY29kZShlLHQ9ITEpeygwLHIuYXNzZXJ0KSghZS5jb21wb3NpdGUsIk11c3QgYmUgYSBzaW1wbGUgZm9udC4iKTtjb25zdCBhPVtdLG49ZS5kZWZhdWx0RW5jb2Rpbmcuc2xpY2UoKSxpPWUuYmFzZUVuY29kaW5nTmFtZSxzPWUuZGlmZmVyZW5jZXM7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3QgdD1zW2VdOyIubm90ZGVmIiE9PXQmJihuW2VdPXQpfWNvbnN0IG89KDAsay5nZXRHbHlwaHNVbmljb2RlKSgpO2Zvcihjb25zdCByIGluIG4pe2xldCBzPW5bcl07aWYoIiI9PT1zKWNvbnRpbnVlO2xldCBsPW9bc107aWYodm9pZCAwIT09bCl7YVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpO2NvbnRpbnVlfWxldCB1PTA7c3dpdGNoKHNbMF0pe2Nhc2UiRyI6Mz09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PXMubGVuZ3RoJiYodT1wYXJzZUludChzLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihzLmxlbmd0aD49MyYmcy5sZW5ndGg8PTQpe2NvbnN0IGE9cy5zdWJzdHJpbmcoMSk7aWYodCl7dT1wYXJzZUludChhLDE2KTticmVha311PSthO2lmKE51bWJlci5pc05hTih1KSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpsPSgwLGguZ2V0VW5pY29kZUZvckdseXBoKShzLG8pOy0xIT09bCYmKHU9bCl9aWYodT4wJiZ1PD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKHUpKXtpZihpJiZ1PT09K3Ipe2NvbnN0IGU9KDAsYy5nZXRFbmNvZGluZykoaSk7aWYoZSYmKHM9ZVtyXSkpe2Fbcl09U3RyaW5nLmZyb21DaGFyQ29kZShvW3NdKTtjb250aW51ZX19YVtyXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh1KX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD0hIWUudG9Vbmljb2RlJiZlLnRvVW5pY29kZS5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzphfT1lLmNpZFN5c3RlbUluZm8scz1pLk5hbWUuZ2V0KGAke3R9LSR7YX0tVUNTMmApLG89YXdhaXQgbi5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnMsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXTtlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgYT1vLmxvb2t1cCh0KTthJiYoY1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKChhLmNoYXJDb2RlQXQoMCk8PDgpK2EuY2hhckNvZGVBdCgxKSkpfSkpO3JldHVybiBuZXcgZi5Ub1VuaWNvZGVNYXAoYyl9cmV0dXJuIG5ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfXJlYWRUb1VuaWNvZGUoZSl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIGkuTmFtZT9uLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uSWRlbnRpdHlDTWFwP25ldyBmLklkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBmLlRvVW5pY29kZU1hcChlLmdldE1hcCgpKX0pKTplIGluc3RhbmNlb2YgeS5CYXNlU3RyZWFtP24uQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBuLklkZW50aXR5Q01hcClyZXR1cm4gbmV3IGYuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgdD1uZXcgQXJyYXkoZS5sZW5ndGgpO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpe3RbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk7cmV0dXJufWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0yKXtjb25zdCB0PWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4JnQpKXtyLnB1c2godCk7Y29udGludWV9ZSs9Mjtjb25zdCBuPWEuY2hhckNvZGVBdChlKTw8OHxhLmNoYXJDb2RlQXQoZSsxKTtyLnB1c2goKCgxMDIzJnQpPDwxMCkrKDEwMjMmbikrNjU1MzYpfXRbZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4ucil9KSk7cmV0dXJuIG5ldyBmLlRvVW5pY29kZU1hcCh0KX0pLChlPT57aWYoZSBpbnN0YW5jZW9mIHIuQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7dGhpcy5oYW5kbGVyLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udFRvVW5pY29kZX0pOygwLHIud2FybikoYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSk6UHJvbWlzZS5yZXNvbHZlKG51bGwpOlByb21pc2UucmVzb2x2ZShudWxsKX1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1lW3IrK108PDh8ZVtyXSxpPXI+PjE7KDAhPT1ufHx0LmhhcyhpKSkmJihhW2ldPW4pfXJldHVybiBhfWV4dHJhY3RXaWR0aHMoZSx0LGEpe2NvbnN0IHI9dGhpcy54cmVmO2xldCBuPVtdLHM9MDtjb25zdCBjPVtdO2xldCBsLGgsdSxkLGYsZyxwLG07aWYoYS5jb21wb3NpdGUpe3M9ZS5oYXMoIkRXIik/ZS5nZXQoIkRXIik6MWUzO209ZS5nZXQoIlciKTtpZihtKWZvcihoPTAsdT1tLmxlbmd0aDtoPHU7aCsrKXtnPXIuZmV0Y2hJZlJlZihtW2grK10pO3A9ci5mZXRjaElmUmVmKG1baF0pO2lmKEFycmF5LmlzQXJyYXkocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspbltnKytdPXIuZmV0Y2hJZlJlZihwW2RdKTtlbHNle2NvbnN0IGU9ci5mZXRjaElmUmVmKG1bKytoXSk7Zm9yKGQ9ZztkPD1wO2QrKyluW2RdPWV9fWlmKGEudmVydGljYWwpe2xldCB0PWUuZ2V0QXJyYXkoIkRXMiIpfHxbODgwLC0xZTNdO2w9W3RbMV0sLjUqcyx0WzBdXTt0PWUuZ2V0KCJXMiIpO2lmKHQpZm9yKGg9MCx1PXQubGVuZ3RoO2g8dTtoKyspe2c9ci5mZXRjaElmUmVmKHRbaCsrXSk7cD1yLmZldGNoSWZSZWYodFtoXSk7aWYoQXJyYXkuaXNBcnJheShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKyljW2crK109W3IuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2QrK10pLHIuZmV0Y2hJZlJlZihwW2RdKV07ZWxzZXtjb25zdCBlPVtyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKSxyLmZldGNoSWZSZWYodFsrK2hdKV07Zm9yKGQ9ZztkPD1wO2QrKyljW2RdPWV9fX19ZWxzZXtjb25zdCBvPWEuZmlyc3RDaGFyO209ZS5nZXQoIldpZHRocyIpO2lmKG0pe2Q9bztmb3IoaD0wLHU9bS5sZW5ndGg7aDx1O2grKyluW2QrK109ci5mZXRjaElmUmVmKG1baF0pO3M9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgaS5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7bj10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO3M9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYj0hMCx5PXM7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO2lmKHQpaWYoeSl7aWYoeSE9PXQpe2I9ITE7YnJlYWt9fWVsc2UgeT10fWImJihhLmZsYWdzfD1vLkZvbnRGbGFncy5GaXhlZFBpdGNoKTthLmRlZmF1bHRXaWR0aD1zO2Eud2lkdGhzPW47YS5kZWZhdWx0Vk1ldHJpY3M9bDthLnZtZXRyaWNzPWN9aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBuPSgwLGwuZ2V0U3RkRm9udE1hcCkoKVtlXXx8ZTtjb25zdCBpPSgwLHYuZ2V0TWV0cmljcykoKTtuIGluIGl8fChuPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgcz1pW25dO2lmKCJudW1iZXIiPT10eXBlb2Ygcyl7dD1zO3I9ITB9ZWxzZSBhPXMoKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOnIsd2lkdGhzOmF9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9dC5kaWZmZXJlbmNlcyxuPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIHImJmVbclt0XV0/YVt0XT1lW3JbdF1dOnQgaW4gbiYmZVtuW3RdXSYmKGFbdF09ZVtuW3RdXSk7cmV0dXJuIGF9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgYT1lLmdldCgiU3VidHlwZSIpO2lmKCEoYSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bGV0IG4scyxvPSExO2lmKCJUeXBlMCI9PT1hLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTthPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtvPSEwfWNvbnN0IGM9ZS5nZXQoIkZpcnN0Q2hhciIpfHwwLGw9ZS5nZXQoIkxhc3RDaGFyIil8fChvPzY1NTM1OjI1NSksaD1lLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZihoKXtuPW5ldyBGLk11cm11ckhhc2gzXzY0O2NvbnN0IGE9dC5nZXRSYXcoIkVuY29kaW5nIik7aWYoYSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShhLm5hbWUpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgaS5EaWN0KWZvcihjb25zdCBlIG9mIGEuZ2V0UmF3VmFsdWVzKCkpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSluLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGkuUmVmKW4udXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgaS5OYW1lP2Fbcl09dC5uYW1lOigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZikmJihhW3JdPXQudG9TdHJpbmcoKSl9bi51cGRhdGUoYS5qb2luKCkpfW4udXBkYXRlKGAke2N9LSR7bH1gKTtzPWUuZ2V0KCJUb1VuaWNvZGUiKXx8dC5nZXQoIlRvVW5pY29kZSIpO2lmKHMgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0pe2NvbnN0IGU9cy5zdHJ8fHMsdD1lLmJ1ZmZlcj9uZXcgVWludDhBcnJheShlLmJ1ZmZlci5idWZmZXIsMCxlLmJ1ZmZlckxlbmd0aCk6bmV3IFVpbnQ4QXJyYXkoZS5ieXRlcy5idWZmZXIsZS5zdGFydCxlLmVuZC1lLnN0YXJ0KTtuLnVwZGF0ZSh0KX1lbHNlIHMgaW5zdGFuY2VvZiBpLk5hbWUmJm4udXBkYXRlKHMubmFtZSk7Y29uc3Qgcj1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIGkuUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7bi51cGRhdGUoZS5qb2luKCkpfWlmKG8pe24udXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBpLlJlZillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgb2YgdCkoIm51bWJlciI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgaS5SZWYpJiZhLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2Euam9pbigpfV1gKX1uLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIGkuTmFtZT9uLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBpLlJlZj9uLnVwZGF0ZShyLnRvU3RyaW5nKCkpOnIgaW5zdGFuY2VvZiB5LkJhc2VTdHJlYW0mJm4udXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpoLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpvLHR5cGU6YS5uYW1lLGZpcnN0Q2hhcjpjLGxhc3RDaGFyOmwsdG9Vbmljb2RlOnMsaGFzaDpuP24uaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6Yyx0eXBlOmgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpwfSl7Y29uc3QgbT0iVHlwZTMiPT09aDtsZXQgeTtpZighZSl7aWYoIW0pe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkJhc2UgZm9udCBpcyBub3Qgc3BlY2lmaWVkIik7ZT1lLm5hbWUucmVwbGFjZSgvWyxfXS9nLCItIik7Y29uc3Qgbj10aGlzLmdldEJhc2VGb250TWV0cmljcyhlKSxjPWUuc3BsaXQoIi0iKVswXSxkPSh0aGlzLmlzU2VyaWZGb250KGMpP28uRm9udEZsYWdzLlNlcmlmOjApfChuLm1vbm9zcGFjZT9vLkZvbnRGbGFncy5GaXhlZFBpdGNoOjApfCgoMCxsLmdldFN5bWJvbHNGb250cykoKVtjXT9vLkZvbnRGbGFncy5TeW1ib2xpYzpvLkZvbnRGbGFncy5Ob25zeW1ib2xpYyk7eT17dHlwZTpoLG5hbWU6ZSxsb2FkZWROYW1lOmEubG9hZGVkTmFtZSx3aWR0aHM6bi53aWR0aHMsZGVmYXVsdFdpZHRoOm4uZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZCxmaXJzdENoYXI6dSxsYXN0Q2hhcjpmLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Om19O2NvbnN0IHA9dC5nZXQoIldpZHRocyIpLGI9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgdz1udWxsO2lmKGIpe3kuaXNTdGFuZGFyZEZvbnQ9ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShiKTt5LmlzSW50ZXJuYWxGb250PSEhd31yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCx0LHkpLnRoZW4oKHQ9PntpZihwKXtjb25zdCBlPVtdO2xldCBhPXU7Zm9yKGNvbnN0IHQgb2YgcCllW2ErK109dGhpcy54cmVmLmZldGNoSWZSZWYodCk7dC53aWR0aHM9ZX1lbHNlIHQud2lkdGhzPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgobi53aWR0aHMsdCk7cmV0dXJuIG5ldyBzLkZvbnQoZSx3LHQpfSkpfShlPW5ldyBpLkRpY3QobnVsbCkpLnNldCgiRm9udE5hbWUiLGkuTmFtZS5nZXQoaCkpO2Uuc2V0KCJGb250QkJveCIsdC5nZXRBcnJheSgiRm9udEJCb3giKXx8WzAsMCwwLDBdKX1sZXQgdyxTLHgsayxDLHY9ZS5nZXQoIkZvbnROYW1lIiksRj10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIHYmJih2PWkuTmFtZS5nZXQodikpOyJzdHJpbmciPT10eXBlb2YgRiYmKEY9aS5OYW1lLmdldChGKSk7aWYoIW0pe2NvbnN0IGU9diYmdi5uYW1lLHQ9RiYmRi5uYW1lO2lmKGUhPT10KXsoMCxyLmluZm8pKGBUaGUgRm9udERlc2NyaXB0b3IncyBGb250TmFtZSBpcyAiJHtlfSIgYnV0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRm9udCdzIEJhc2VGb250ICIke3R9Ii5gKTtlJiZ0JiZ0LnN0YXJ0c1dpdGgoZSkmJih2PUYpfX12PXZ8fEY7aWYoISh2IGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTt0cnl7dz1lLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLHIud2FybikoYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt2Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTt3PW5ldyBiLk51bGxTdHJlYW19bGV0IE89ITEsVD0hMSxNPW51bGw7aWYodyl7aWYody5kaWN0KXtjb25zdCBlPXcuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgaS5OYW1lJiYoUz1lLm5hbWUpO3g9dy5kaWN0LmdldCgiTGVuZ3RoMSIpO2s9dy5kaWN0LmdldCgiTGVuZ3RoMiIpO0M9dy5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKHApe2NvbnN0IGU9KDAsZC5nZXRYZmFGb250TmFtZSkodi5uYW1lKTtpZihlKXtwLmZvbnRGYW1pbHk9YCR7cC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO3AubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7TT1lLmZhY3RvcnN8fG51bGw7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO1Q9ISF3O2E9dD0oMCxkLmdldFhmYUZvbnREaWN0KSh2Lm5hbWUpO2M9ITB9fWVsc2UgaWYoIW0pe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKSh2Lm5hbWUpO2lmKGUpe089ITA7dz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTtUPSEhd319eT17dHlwZTpoLG5hbWU6di5uYW1lLHN1YnR5cGU6UyxmaWxlOncsbGVuZ3RoMTp4LGxlbmd0aDI6ayxsZW5ndGgzOkMsaXNTdGFuZGFyZEZvbnQ6Tyxpc0ludGVybmFsRm9udDpULGxvYWRlZE5hbWU6YS5sb2FkZWROYW1lLGNvbXBvc2l0ZTpjLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDp0LmdldEFycmF5KCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsZmlyc3RDaGFyOnUsbGFzdENoYXI6Zix0b1VuaWNvZGU6ZyxiYm94OmUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94IiksYXNjZW50OmUuZ2V0KCJBc2NlbnQiKSxkZXNjZW50OmUuZ2V0KCJEZXNjZW50IikseEhlaWdodDplLmdldCgiWEhlaWdodCIpfHwwLGNhcEhlaWdodDplLmdldCgiQ2FwSGVpZ2h0Iil8fDAsZmxhZ3M6ZS5nZXQoIkZsYWdzIiksaXRhbGljQW5nbGU6ZS5nZXQoIkl0YWxpY0FuZ2xlIil8fDAsaXNUeXBlM0ZvbnQ6bSxjc3NGb250SW5mbzpwLHNjYWxlRmFjdG9yczpNfTtpZihjKXtjb25zdCBlPWEuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBpLk5hbWUmJih5LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBuLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt5LmNNYXA9dDt5LnZlcnRpY2FsPXkuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxhLHkpLnRoZW4oKGE9Pnt0aGlzLmV4dHJhY3RXaWR0aHModCxlLGEpO3JldHVybiBuZXcgcy5Gb250KHYubmFtZSx3LGEpfSkpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsYSxuKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3QgaT1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKG4uaWdub3JlRXJyb3JzKXthLnNlbmQoIlVuc3VwcG9ydGVkRmVhdHVyZSIse2ZlYXR1cmVJZDpyLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEJ1aWxkUGF0aH0pOygwLHIud2FybikoYGJ1aWxkRm9udFBhdGhzIC0gaWdub3JpbmcgJHtpfSBnbHlwaDogIiR7ZX0iLmApO3JldHVybn10aHJvdyBlfX1mb3IoY29uc3QgZSBvZiB0KXtidWlsZFBhdGgoZS5mb250Q2hhcik7Y29uc3QgdD1lLmFjY2VudDt0JiZ0LmZvbnRDaGFyJiZidWlsZFBhdGgodC5mb250Q2hhcil9fXN0YXRpYyBnZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IGkuRGljdDtlLnNldCgiQmFzZUZvbnQiLGkuTmFtZS5nZXQoIlBERkpTLUZhbGxiYWNrRm9udCIpKTtlLnNldCgiVHlwZSIsaS5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixpLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixpLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9UGFydGlhbEV2YWx1YXRvcjtjbGFzcyBUcmFuc2xhdGVkRm9udHtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmEsZXZhbHVhdG9yT3B0aW9uczpyfSl7dGhpcy5sb2FkZWROYW1lPWU7dGhpcy5mb250PXQ7dGhpcy5kaWN0PWE7dGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1yfHxNO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxhKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBuPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pO24ucGFyc2luZ1R5cGUzRm9udD0hMDtjb25zdCBzPW5ldyBpLlJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXMuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnMucHV0KHRoaXMuZGljdC5vYmpJZCk7bi50eXBlM0ZvbnRSZWZzPXM7Y29uc3Qgbz10aGlzLmZvbnQsYz10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBsPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGg9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksdT10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxkPU9iamVjdC5jcmVhdGUobnVsbCksZj1yLlV0aWwubm9ybWFsaXplUmVjdChvLmJib3h8fFswLDAsMCwwXSksZz1mWzJdLWZbMF0scD1mWzNdLWZbMV0sbT1NYXRoLmh5cG90KGcscCk7Zm9yKGNvbnN0IGUgb2YgaC5nZXRLZXlzKCkpbD1sLnRoZW4oKCgpPT57Y29uc3QgdD1oLmdldChlKSxpPW5ldyBPLk9wZXJhdG9yTGlzdDtyZXR1cm4gbi5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6YSxyZXNvdXJjZXM6dSxvcGVyYXRvckxpc3Q6aX0pLnRoZW4oKCgpPT57aS5mbkFycmF5WzBdPT09ci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzJiZ0aGlzLl9yZW1vdmVUeXBlM0NvbG9yT3BlcmF0b3JzKGksbSk7ZFtlXT1pLmdldElSKCk7Zm9yKGNvbnN0IGUgb2YgaS5kZXBlbmRlbmNpZXMpYy5hZGQoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpeygwLHIud2FybikoYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3QgYT1uZXcgTy5PcGVyYXRvckxpc3Q7ZFtlXT1hLmdldElSKCl9KSl9KSk7dGhpcy50eXBlM0xvYWRlZD1sLnRoZW4oKCgpPT57by5jaGFyUHJvY09wZXJhdG9yTGlzdD1kO2lmKHRoaXMuX2Jib3gpe28uaXNDaGFyQkJveD0hMDtvLmJib3g9dGhpcy5fYmJveH19KSk7cmV0dXJuIHRoaXMudHlwZTNMb2FkZWR9X3JlbW92ZVR5cGUzQ29sb3JPcGVyYXRvcnMoZSx0PU5hTil7Y29uc3QgYT1yLlV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksbj1hWzJdLWFbMF0saT1hWzNdLWFbMV0scz1NYXRoLmh5cG90KG4saSk7aWYoMD09PW58fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGFbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxhWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sYVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGFbM10pfWxldCBvPTAsYz1lLmxlbmd0aDtmb3IoO288Yzspe3N3aXRjaChlLmZuQXJyYXlbb10pe2Nhc2Ugci5PUFMuc2V0Q2hhcldpZHRoQW5kQm91bmRzOmJyZWFrO2Nhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3JTcGFjZTpjYXNlIHIuT1BTLnNldEZpbGxDb2xvclNwYWNlOmNhc2Ugci5PUFMuc2V0U3Ryb2tlQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDb2xvck46Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOmNhc2Ugci5PUFMuc2V0U3Ryb2tlR3JheTpjYXNlIHIuT1BTLnNldEZpbGxHcmF5OmNhc2Ugci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsUkdCQ29sb3I6Y2FzZSByLk9QUy5zZXRTdHJva2VDTVlLQ29sb3I6Y2FzZSByLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOmNhc2Ugci5PUFMuc2hhZGluZ0ZpbGw6Y2FzZSByLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6ZS5mbkFycmF5LnNwbGljZShvLDEpO2UuYXJnc0FycmF5LnNwbGljZShvLDEpO2MtLTtjb250aW51ZTtjYXNlIHIuT1BTLnNldEdTdGF0ZTpjb25zdFt0XT1lLmFyZ3NBcnJheVtvXTtsZXQgYT0wLG49dC5sZW5ndGg7Zm9yKDthPG47KXtjb25zdFtlXT10W2FdO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGEsMSk7bi0tO2NvbnRpbnVlfWErK319bysrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09ci5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShyLklERU5USVRZX01BVFJJWCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9ci5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLnRleHRNYXRyaXg9ci5JREVOVElUWV9NQVRSSVguc2xpY2UoKTt0aGlzLnRleHRMaW5lTWF0cml4PXIuSURFTlRJVFlfTUFUUklYLnNsaWNlKCk7dGhpcy5jaGFyU3BhY2luZz0wO3RoaXMud29yZFNwYWNpbmc9MDt0aGlzLmxlYWRpbmc9MDt0aGlzLnRleHRIU2NhbGU9MTt0aGlzLnRleHRSaXNlPTB9c2V0VGV4dE1hdHJpeChlLHQsYSxyLG4saSl7Y29uc3Qgcz10aGlzLnRleHRNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09bjtzWzVdPWl9c2V0VGV4dExpbmVNYXRyaXgoZSx0LGEscixuLGkpe2NvbnN0IHM9dGhpcy50ZXh0TGluZU1hdHJpeDtzWzBdPWU7c1sxXT10O3NbMl09YTtzWzNdPXI7c1s0XT1uO3NbNV09aX10cmFuc2xhdGVUZXh0TWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19dHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoZSx0KXtjb25zdCBhPXRoaXMudGV4dExpbmVNYXRyaXg7YVs0XT1hWzBdKmUrYVsyXSp0K2FbNF07YVs1XT1hWzFdKmUrYVszXSp0K2FbNV19Y2FycmlhZ2VSZXR1cm4oKXt0aGlzLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KDAsLXRoaXMubGVhZGluZyk7dGhpcy50ZXh0TWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKX1jbG9uZSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZSh0aGlzKTtlLnRleHRNYXRyaXg9dGhpcy50ZXh0TWF0cml4LnNsaWNlKCk7ZS50ZXh0TGluZU1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7ZS5mb250TWF0cml4PXRoaXMuZm9udE1hdHJpeC5zbGljZSgpO3JldHVybiBlfX1jbGFzcyBFdmFsU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmN0bT1uZXcgRmxvYXQzMkFycmF5KHIuSURFTlRJVFlfTUFUUklYKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPXIuVGV4dFJlbmRlcmluZ01vZGUuRklMTDt0aGlzLmZpbGxDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5zdHJva2VDb2xvclNwYWNlPVMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLEMuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpyLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5KPXtpZDpyLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2Uuaj17aWQ6ci5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5NPXtpZDpyLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZD17aWQ6ci5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfTtlLnJpPXtpZDpyLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5pPXtpZDpyLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLmdzPXtpZDpyLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5xPXtpZDpyLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuUT17aWQ6ci5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmNtPXtpZDpyLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZS5tPXtpZDpyLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5sPXtpZDpyLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5jPXtpZDpyLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9O2Uudj17aWQ6ci5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS55PXtpZDpyLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLmg9e2lkOnIuT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLnJlPXtpZDpyLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX07ZS5TPXtpZDpyLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5zPXtpZDpyLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLmY9e2lkOnIuT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5GPXtpZDpyLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImYqIl09e2lkOnIuT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkI9e2lkOnIuT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiQioiXT17aWQ6ci5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuYj17aWQ6ci5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2VbImIqIl09e2lkOnIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2Uubj17aWQ6ci5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLlc9e2lkOnIuT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZVsiVyoiXT17aWQ6ci5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQlQ9e2lkOnIuT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfTtlLkVUPXtpZDpyLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuVGM9e2lkOnIuT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHc9e2lkOnIuT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVHo9e2lkOnIuT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLlRMPXtpZDpyLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuVGY9e2lkOnIuT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5Ucj17aWQ6ci5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5Ucz17aWQ6ci5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5UZD17aWQ6ci5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5URD17aWQ6ci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuVG09e2lkOnIuT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX07ZVsiVCoiXT17aWQ6ci5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5Uaj17aWQ6ci5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5USj17aWQ6ci5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZVsiJyJdPXtpZDpyLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2VbJyInXT17aWQ6ci5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5kMD17aWQ6ci5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9O2UuZDE9e2lkOnIuT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfTtlLkNTPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuY3M9e2lkOnIuT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuU0M9e2lkOnIuT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9O2UuU0NOPXtpZDpyLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9O2Uuc2M9e2lkOnIuT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfTtlLnNjbj17aWQ6ci5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH07ZS5HPXtpZDpyLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuZz17aWQ6ci5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5SRz17aWQ6ci5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX07ZS5yZz17aWQ6ci5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9O2UuSz17aWQ6ci5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9O2Uuaz17aWQ6ci5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfTtlLnNoPXtpZDpyLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJJPXtpZDpyLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuSUQ9e2lkOnIuT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuRUk9e2lkOnIuT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9O2UuRG89e2lkOnIuT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLk1QPXtpZDpyLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX07ZS5EUD17aWQ6ci5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5CTUM9e2lkOnIuT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfTtlLkJEQz17aWQ6ci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX07ZS5FTUM9e2lkOnIuT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5CWD17aWQ6ci5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX07ZS5FWD17aWQ6ci5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9O2UuQk09bnVsbDtlLkJEPW51bGw7ZS50cnVlPW51bGw7ZS5mYT1udWxsO2UuZmFsPW51bGw7ZS5mYWxzPW51bGw7ZS5mYWxzZT1udWxsO2UubnU9bnVsbDtlLm51bD1udWxsO2UubnVsbD1udWxsfSkpO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1zdGF0aWMgZ2V0IE1BWF9JTlZBTElEX1BBVEhfT1BTKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCl9Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IHAuUGFyc2VyKHtsZXhlcjpuZXcgcC5MZXhlcihlLEV2YWx1YXRvclByZXByb2Nlc3Nvci5vcE1hcCkseHJlZjp0fSk7dGhpcy5zdGF0ZU1hbmFnZXI9YTt0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W107dGhpcy5faXNQYXRoT3A9ITE7dGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IGE9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYoYSBpbnN0YW5jZW9mIGkuQ21kKXtjb25zdCBuPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW25dO2lmKCFpKXsoMCxyLndhcm4pKGBVbmtub3duIGNvbW1hbmQgIiR7bn0iLmApO2NvbnRpbnVlfWNvbnN0IHM9aS5pZCxvPWkubnVtQXJncztsZXQgYz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49ci5PUFMubW92ZVRvJiZzPD1yLk9QUy5lbmRQYXRoO2lmKGkudmFyaWFibGVBcmdzKWM+byYmKDAsci5pbmZvKShgQ29tbWFuZCAke259OiBleHBlY3RlZCBbMCwgJHtvfV0gYXJncywgYnV0IHJlY2VpdmVkICR7Y30gYXJncy5gKTtlbHNle2lmKGMhPT1vKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO2M+bzspe2UucHVzaCh0LnNoaWZ0KCkpO2MtLX1mb3IoO2M8byYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7YysrfX1pZihjPG8pe2NvbnN0IGU9YGNvbW1hbmQgJHtufTogZXhwZWN0ZWQgJHtvfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtjfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTsoMCxyLndhcm4pKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihhPT09aS5FT0YpcmV0dXJuITE7aWYobnVsbCE9PWEpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGEpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKX19fXByZXByb2Nlc3NDb21tYW5kKGUsdCl7c3dpdGNoKDB8ZSl7Y2FzZSByLk9QUy5zYXZlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHIuT1BTLnJlc3RvcmU6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2Ugci5PUFMudHJhbnNmb3JtOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fXQuRXZhbHVhdG9yUHJlcHJvY2Vzc29yPUV2YWx1YXRvclByZXByb2Nlc3Nvcn0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDUpLHM9YSgxNSksbz1hKDQpLGM9YSg4KTtjb25zdCBsPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0saD0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LGEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LGEpO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LGEpe2lmKHQtZT5oKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1hO2NvbnN0IHQ9YS5jaGFyQ29kZUF0KHIpKzE7dD4yNTU/YT1hLnN1YnN0cmluZygwLHItMSkrU3RyaW5nLmZyb21DaGFyQ29kZShhLmNoYXJDb2RlQXQoci0xKSsxKSsiXDAiOmE9YS5zdWJzdHJpbmcoMCxyKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7aWYodC1lPmgpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtlPD10JiZuPHI7KXt0aGlzLl9tYXBbZV09YVtuKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLGE9dC5sZW5ndGg7aWYoYTw9NjU1MzYpZm9yKGxldCByPTA7cjxhO3IrKyl2b2lkIDAhPT10W3JdJiZlKHIsdFtyXSk7ZWxzZSBmb3IoY29uc3QgYSBpbiB0KWUoYSx0W2FdKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsYSl7bGV0IHI9MDtjb25zdCBuPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLHM9bi5sZW5ndGg7aTxzO2krKyl7cj0ocjw8OHxlLmNoYXJDb2RlQXQodCtpKSk+Pj4wO2NvbnN0IHM9bltpXTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDspe2NvbnN0IHQ9c1tlKytdLG49c1tlKytdO2lmKHI+PXQmJnI8PW4pe2EuY2hhcmNvZGU9cjthLmxlbmd0aD1pKzE7cmV0dXJufX19YS5jaGFyY29kZT0wO2EubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9dFthXTtmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjspe2NvbnN0IG49clt0KytdLGk9clt0KytdO2lmKGU+PW4mJmU8PWkpcmV0dXJuIGErMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9Q01hcDtjbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsYSl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpeygwLHIudW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXsoMCxyLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7KDAsci51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX10LklkZW50aXR5Q01hcD1JZGVudGl0eUNNYXA7Y29uc3QgdT1mdW5jdGlvbiBCaW5hcnlDTWFwUmVhZGVyQ2xvc3VyZSgpe2Z1bmN0aW9uIGhleFRvSW50KGUsdCl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPD10O3IrKylhPWE8PDh8ZVtyXTtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gaGV4VG9TdHIoZSx0KXtyZXR1cm4gMT09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0pOjM9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdLGVbMl0sZVszXSk6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPWE7bj49MDtuLS0pe3IrPWVbbl0rdFtuXTtlW25dPTI1NSZyO3I+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgYT0xO2ZvcihsZXQgcj10O3I+PTAmJmE+MDtyLS0pe2ErPWVbcl07ZVtyXT0yNTUmYTthPj49OH19Y29uc3QgZT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2U9ISgxMjgmYSk7dD10PDw3fDEyNyZhfXdoaWxlKCFlKTtyZXR1cm4gdH1yZWFkU2lnbmVkKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gMSZlP34oZT4+PjEpOmU+Pj4xfXJlYWRIZXgoZSx0KXtlLnNldCh0aGlzLmJ1ZmZlci5zdWJhcnJheSh0aGlzLnBvcyx0aGlzLnBvcyt0KzEpKTt0aGlzLnBvcys9dCsxfXJlYWRIZXhOdW1iZXIoZSx0KXtsZXQgYTtjb25zdCBuPXRoaXMudG1wQnVmO2xldCBpPTA7ZG97Y29uc3QgZT10aGlzLnJlYWRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmV4cGVjdGVkIEVPRiBpbiBiY21hcCIpO2E9ISgxMjgmZSk7bltpKytdPTEyNyZlfXdoaWxlKCFhKTtsZXQgcz10LG89MCxjPTA7Zm9yKDtzPj0wOyl7Zm9yKDtjPDgmJm4ubGVuZ3RoPjA7KXtvfD1uWy0taV08PGM7Yys9N31lW3NdPTI1NSZvO3MtLTtvPj49ODtjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3QgYT0xJmVbdF0/MjU1OjA7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKyl7cj0oMSZyKTw8OHxlW25dO2Vbbl09cj4+MV5hfX1yZWFkU3RyaW5nKCl7Y29uc3QgZT10aGlzLnJlYWROdW1iZXIoKTtsZXQgdD0iIjtmb3IobGV0IGE9MDthPGU7YSsrKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkTnVtYmVyKCkpO3JldHVybiB0fX1yZXR1cm4gY2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKHQsYSxyKXtjb25zdCBuPW5ldyBCaW5hcnlDTWFwU3RyZWFtKHQpLGk9bi5yZWFkQnl0ZSgpO2EudmVydGljYWw9ISEoMSZpKTtsZXQgcz1udWxsO2NvbnN0IG89bmV3IFVpbnQ4QXJyYXkoZSksYz1uZXcgVWludDhBcnJheShlKSxsPW5ldyBVaW50OEFycmF5KGUpLGg9bmV3IFVpbnQ4QXJyYXkoZSksdT1uZXcgVWludDhBcnJheShlKTtsZXQgZCxmO2Zvcig7KGY9bi5yZWFkQnl0ZSgpKT49MDspe2NvbnN0IHQ9Zj4+NTtpZig3PT09dCl7c3dpdGNoKDMxJmYpe2Nhc2UgMDpuLnJlYWRTdHJpbmcoKTticmVhaztjYXNlIDE6cz1uLnJlYWRTdHJpbmcoKX1jb250aW51ZX1jb25zdCByPSEhKDE2JmYpLGk9MTUmZjtpZihpKzE+ZSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBnPTEscD1uLnJlYWROdW1iZXIoKTtzd2l0Y2godCl7Y2FzZSAwOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7YS5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQobyxpKSxoZXhUb0ludChjLGkpKX1icmVhaztjYXNlIDE6bi5yZWFkSGV4KG8saSk7bi5yZWFkSGV4TnVtYmVyKGMsaSk7YWRkSGV4KGMsbyxpKTtuLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtuLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxjLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7bi5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChsLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBPbmUoaGV4VG9JbnQobCxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxpKTtpZighcil7bi5yZWFkSGV4TnVtYmVyKHUsaSk7YWRkSGV4KGwsdSxpKX1kPW4ucmVhZFNpZ25lZCgpKyhkKzEpO2EubWFwT25lKGhleFRvSW50KGwsaSksZCl9YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChvLGkpO24ucmVhZEhleE51bWJlcihjLGkpO2FkZEhleChjLG8saSk7ZD1uLnJlYWROdW1iZXIoKTthLm1hcENpZFJhbmdlKGhleFRvSW50KG8saSksaGV4VG9JbnQoYyxpKSxkKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgoYyxpKTtpZihyKW8uc2V0KGMpO2Vsc2V7bi5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8sYyxpKX1uLnJlYWRIZXhOdW1iZXIoYyxpKTthZGRIZXgoYyxvLGkpO2Q9bi5yZWFkTnVtYmVyKCk7YS5tYXBDaWRSYW5nZShoZXhUb0ludChvLGkpLGhleFRvSW50KGMsaSksZCl9YnJlYWs7Y2FzZSA0Om4ucmVhZEhleChsLGcpO24ucmVhZEhleChoLGkpO2EubWFwT25lKGhleFRvSW50KGwsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsZyk7aWYoIXIpe24ucmVhZEhleE51bWJlcih1LGcpO2FkZEhleChsLHUsZyl9aW5jSGV4KGgsaSk7bi5yZWFkSGV4U2lnbmVkKHUsaSk7YWRkSGV4KGgsdSxpKTthLm1hcE9uZShoZXhUb0ludChsLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2Nhc2UgNTpuLnJlYWRIZXgobyxnKTtuLnJlYWRIZXhOdW1iZXIoYyxnKTthZGRIZXgoYyxvLGcpO24ucmVhZEhleChoLGkpO2EubWFwQmZSYW5nZShoZXhUb0ludChvLGcpLGhleFRvSW50KGMsZyksaGV4VG9TdHIoaCxpKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGMsZyk7aWYocilvLnNldChjKTtlbHNle24ucmVhZEhleE51bWJlcihvLGcpO2FkZEhleChvLGMsZyl9bi5yZWFkSGV4TnVtYmVyKGMsZyk7YWRkSGV4KGMsbyxnKTtuLnJlYWRIZXgoaCxpKTthLm1hcEJmUmFuZ2UoaGV4VG9JbnQobyxnKSxoZXhUb0ludChjLGcpLGhleFRvU3RyKGgsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7dH1gKX19cmV0dXJuIHM/cihzKTphfX19KCksZD1mdW5jdGlvbiBDTWFwRmFjdG9yeUNsb3N1cmUoKXtmdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXQ9dDw8OHxlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKXx8InN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoYSk/U3RyaW5nLmZyb21DaGFyQ29kZShhKTphO2UubWFwQmZSYW5nZShyLGksdCl9ZWxzZXtpZighKDAsbi5pc0NtZCkoYSwiWyIpKWJyZWFrO3thPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxuLmlzQ21kKShhLCJdIikmJmEhPT1uLkVPRjspe3MucHVzaChhKTthPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShyLGkscyl9fX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PW4uRU9GKWJyZWFrO2lmKCgwLG4uaXNDbWQpKGEsImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBpPWE7ZS5tYXBPbmUocixpKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoKDAsbi5pc0NtZCkoYSwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IHI9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhhKTtjb25zdCBpPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RJbnQoYSk7Y29uc3Qgcz1hO2UubWFwQ2lkUmFuZ2UocixpLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1uLkVPRilicmVhaztpZigoMCxuLmlzQ21kKShhLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBhKWJyZWFrO2NvbnN0IGk9c3RyVG9JbnQoYSk7ZS5hZGRDb2Rlc3BhY2VSYW5nZShhLmxlbmd0aCxyLGkpfXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2Ygbi5OYW1lJiYoZS5uYW1lPWEubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxhLGkpe2xldCBzLGM7ZTpmb3IoOzspdHJ5e2NvbnN0IGE9dC5nZXRPYmooKTtpZihhPT09bi5FT0YpYnJlYWs7aWYoYSBpbnN0YW5jZW9mIG4uTmFtZSl7IldNb2RlIj09PWEubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PWEubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3M9YX1lbHNlIGlmKGEgaW5zdGFuY2VvZiBuLkNtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBuLk5hbWUmJihjPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFpJiZjJiYoaT1jKTtyZXR1cm4gaT9leHRlbmRDTWFwKGUsYSxpKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LGEpe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChhLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWUuY29kZXNwYWNlUmFuZ2VzW2FdPXRbYV0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LGEpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWwuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmEsY29tcHJlc3Npb25UeXBlOm59PWF3YWl0IHQoZSksaT1uZXcgQ01hcCghMCk7aWYobj09PXIuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyB1KS5wcm9jZXNzKGEsaSwoZT0+ZXh0ZW5kQ01hcChpLHQsZSkpKTtpZihuPT09ci5DTWFwQ29tcHJlc3Npb25UeXBlLk5PTkUpe2NvbnN0IGU9bmV3IHMuTGV4ZXIobmV3IGMuU3RyZWFtKGEpKTtyZXR1cm4gcGFyc2VDTWFwKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke259YCl9cmV0dXJue2FzeW5jIGNyZWF0ZShlKXtjb25zdCB0PWUuZW5jb2RpbmcsYT1lLmZldGNoQnVpbHRJbkNNYXAscj1lLnVzZUNNYXA7aWYodCBpbnN0YW5jZW9mIG4uTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAodC5uYW1lLGEpO2lmKHQgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBzLkxleGVyKHQpLGEscik7cmV0dXJuIGUuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLGEpOmV9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19fSgpO3QuQ01hcEZhY3Rvcnk9ZH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpLHM9YSgxNiksbz1hKDE4KSxjPWEoMTkpLGw9YSgyMSksaD1hKDIyKSx1PWEoMjUpLGQ9YSgyNyksZj1hKDI5KSxnPWEoOCkscD1hKDMwKSxtPWEoMzEpO2Z1bmN0aW9uIGNvbXB1dGVBZGxlcjMyKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE9MSxyPTA7Zm9yKGxldCBuPTA7bjx0Oysrbil7YSs9MjU1JmVbbl07cis9YX1yZXR1cm4gciU2NTUyMTw8MTZ8YSU2NTUyMX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczphPSExLHJlY292ZXJ5TW9kZTpyPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWE7dGhpcy5yZWNvdmVyeU1vZGU9cjt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2Ygbi5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kKXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj1udWxsfWVsc2V7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX19dHJ5U2hpZnQoKXt0cnl7dGhpcy5zaGlmdCgpO3JldHVybiEwfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2Ygbi5DbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1uLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgYXJyYXkuIil9dGhpcy5zaGlmdCgpO3JldHVybiBhO2Nhc2UiPDwiOmNvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Zvcig7ISgwLG4uaXNDbWQpKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09bi5FT0Y7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIG4uTmFtZSkpeygwLHIuaW5mbykoIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PW4uRU9GKWJyZWFrO3Muc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PW4uRU9GKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gczt0aHJvdyBuZXcgaS5QYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBkaWN0aW9uYXJ5LiIpfWlmKCgwLG4uaXNDbWQpKHRoaXMuYnVmMiwic3RyZWFtIikpcmV0dXJuIHRoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM7dGhpcy5zaGlmdCgpO3JldHVybiBzO2RlZmF1bHQ6cmV0dXJuIHR9aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl7aWYoTnVtYmVyLmlzSW50ZWdlcih0aGlzLmJ1ZjEpJiYoMCxuLmlzQ21kKSh0aGlzLmJ1ZjIsIlIiKSl7Y29uc3QgZT1uLlJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPWUucG9zO2xldCBzLG8sYz0wO2Zvcig7LTEhPT0ocz1lLmdldEJ5dGUoKSk7KWlmKDA9PT1jKWM9Njk9PT1zPzE6MDtlbHNlIGlmKDE9PT1jKWM9NzM9PT1zPzI6MDtlbHNleygwLHIuYXNzZXJ0KSgyPT09YywiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBpbnZhbGlkIHN0YXRlLiIpO2lmKDMyPT09c3x8MTA9PT1zfHwxMz09PXMpe289ZS5wb3M7Y29uc3QgYT1lLnBlZWtCeXRlcygxMCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtzPWFbZV07aWYoKDAhPT1zfHwwPT09YVtlKzFdKSYmKDEwIT09cyYmMTMhPT1zJiYoczwzMnx8cz4xMjcpKSl7Yz0wO2JyZWFrfX1pZigyIT09Yyljb250aW51ZTtpZih0Lmtub3duQ29tbWFuZHMpe2NvbnN0IGU9dC5wZWVrT2JqKCk7ZSBpbnN0YW5jZW9mIG4uQ21kJiYhdC5rbm93bkNvbW1hbmRzW2UuY21kXSYmKGM9MCl9ZWxzZSgwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kIC0gYGxleGVyLmtub3duQ29tbWFuZHNgIGlzIHVuZGVmaW5lZC4iKTtpZigyPT09YylicmVha31lbHNlIGM9MH1pZigtMT09PXMpeygwLHIud2FybikoImZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kOiBSZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSB3aXRob3V0IGZpbmRpbmcgYSB2YWxpZCBFSSBtYXJrZXIiKTtpZihvKXsoMCxyLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpO2Uuc2tpcCgtKGUucG9zLW8pKX19bGV0IGw9NDtlLnNraXAoLWwpO3M9ZS5wZWVrQnl0ZSgpO2Uuc2tpcChsKTsoMCxpLmlzV2hpdGVTcGFjZSkocyl8fGwtLTtyZXR1cm4gZS5wb3MtbC1hfWZpbmREQ1REZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYSxuLGk9ITE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09YSl7c3dpdGNoKGUuZ2V0Qnl0ZSgpKXtjYXNlIDA6YnJlYWs7Y2FzZSAyNTU6ZS5za2lwKC0xKTticmVhaztjYXNlIDIxNzppPSEwO2JyZWFrO2Nhc2UgMTkyOmNhc2UgMTkzOmNhc2UgMTk0OmNhc2UgMTk1OmNhc2UgMTk3OmNhc2UgMTk4OmNhc2UgMTk5OmNhc2UgMjAxOmNhc2UgMjAyOmNhc2UgMjAzOmNhc2UgMjA1OmNhc2UgMjA2OmNhc2UgMjA3OmNhc2UgMTk2OmNhc2UgMjA0OmNhc2UgMjE4OmNhc2UgMjE5OmNhc2UgMjIwOmNhc2UgMjIxOmNhc2UgMjIyOmNhc2UgMjIzOmNhc2UgMjI0OmNhc2UgMjI1OmNhc2UgMjI2OmNhc2UgMjI3OmNhc2UgMjI4OmNhc2UgMjI5OmNhc2UgMjMwOmNhc2UgMjMxOmNhc2UgMjMyOmNhc2UgMjMzOmNhc2UgMjM0OmNhc2UgMjM1OmNhc2UgMjM2OmNhc2UgMjM3OmNhc2UgMjM4OmNhc2UgMjM5OmNhc2UgMjU0Om49ZS5nZXRVaW50MTYoKTtuPjI/ZS5za2lwKG4tMik6ZS5za2lwKC0yKX1pZihpKWJyZWFrfWNvbnN0IHM9ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBEQ1REZWNvZGUgaW1hZ2Ugc3RyZWFtOiBFT0kgbWFya2VyIG5vdCBmb3VuZCwgc2VhcmNoaW5nIGZvciAvRUkvIGluc3RlYWQuIik7ZS5za2lwKC1zKTtyZXR1cm4gdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKX10aGlzLmlubGluZVN0cmVhbVNraXBFSShlKTtyZXR1cm4gc31maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDEyNj09PWEpe2NvbnN0IHQ9ZS5wb3M7YT1lLnBlZWtCeXRlKCk7Zm9yKDsoMCxpLmlzV2hpdGVTcGFjZSkoYSk7KXtlLnNraXAoKTthPWUucGVla0J5dGUoKX1pZig2Mj09PWEpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IG49ZS5wb3MtdDtpZigtMT09PWEpeygwLHIud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJSGV4RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGE7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKSYmNjIhPT1hOyk7Y29uc3Qgbj1lLnBvcy10O2lmKC0xPT09YSl7KDAsci53YXJuKSgiSW5saW5lIEFTQ0lJSGV4RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59aW5saW5lU3RyZWFtU2tpcEVJKGUpe2xldCB0LGE9MDtmb3IoOy0xIT09KHQ9ZS5nZXRCeXRlKCkpOylpZigwPT09YSlhPTY5PT09dD8xOjA7ZWxzZSBpZigxPT09YSlhPTczPT09dD8yOjA7ZWxzZSBpZigyPT09YSlicmVha31tYWtlSW5saW5lSW1hZ2UoZSl7Y29uc3QgdD10aGlzLmxleGVyLGE9dC5zdHJlYW0saT1uZXcgbi5EaWN0KHRoaXMueHJlZik7bGV0IHM7Zm9yKDshKDAsbi5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1uLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2Ygbi5OYW1lKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTt0aGlzLnNoaWZ0KCk7aWYodGhpcy5idWYxPT09bi5FT0YpYnJlYWs7aS5zZXQodCx0aGlzLmdldE9iaihlKSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihzPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbz1pLmdldCgiRiIsIkZpbHRlciIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBuLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBuLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1hLnBvcztsZXQgaDtzd2l0Y2goYyl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpoPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpoPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQoYSk7YnJlYWs7ZGVmYXVsdDpoPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoYSl9bGV0IHUsZD1hLm1ha2VTdWJTdHJlYW0obCxoLGkpO2lmKGg8MWUzJiZzPDU1NTIpe2NvbnN0IGU9ZC5nZXRCeXRlcygpO2QucmVzZXQoKTtjb25zdCByPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjb25zdCBpPWEuZ2V0Qnl0ZXMocyk7YS5wb3M9cjt1PWNvbXB1dGVBZGxlcjMyKGUpKyJfIitjb21wdXRlQWRsZXIzMihpKTtjb25zdCBvPXRoaXMuaW1hZ2VDYWNoZVt1XTtpZih2b2lkIDAhPT1vKXt0aGlzLmJ1ZjI9bi5DbWQuZ2V0KCJFSSIpO3RoaXMuc2hpZnQoKTtvLnJlc2V0KCk7cmV0dXJuIG99fWUmJihkPWUuY3JlYXRlU3RyZWFtKGQsaCkpO2Q9dGhpcy5maWx0ZXIoZCxpLGgpO2QuZGljdD1pO2lmKHZvaWQgMCE9PXUpe2QuY2FjaGVLZXk9YGlubGluZV8ke2h9XyR7dX1gO3RoaXMuaW1hZ2VDYWNoZVt1XT1kfXRoaXMuYnVmMj1uLkNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBkfV9maW5kU3RyZWFtTGVuZ3RoKGUsdCl7Y29uc3R7c3RyZWFtOmF9PXRoaXMubGV4ZXI7YS5wb3M9ZTtjb25zdCByPXQubGVuZ3RoO2Zvcig7YS5wb3M8YS5lbmQ7KXtjb25zdCBuPWEucGVla0J5dGVzKDIwNDgpLGk9bi5sZW5ndGgtcjtpZihpPD0wKWJyZWFrO2xldCBzPTA7Zm9yKDtzPGk7KXtsZXQgaT0wO2Zvcig7aTxyJiZuW3MraV09PT10W2ldOylpKys7aWYoaT49cil7YS5wb3MrPXM7cmV0dXJuIGEucG9zLWV9cysrfWEucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBhPXRoaXMubGV4ZXI7bGV0IHM9YS5zdHJlYW07YS5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpeygwLHIuaW5mbykoYEJhZCBsZW5ndGggIiR7YyYmYy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO2M9MH1zLnBvcz1vK2M7YS5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmKDAsbi5pc0NtZCkodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSk7bGV0IHQ9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGUpO2lmKHQ8MCl7Y29uc3QgYT0xO2ZvcihsZXQgbj0xO248PWE7bisrKXtjb25zdCBhPWUubGVuZ3RoLW4sYz1lLnNsaWNlKDAsYSksbD10aGlzLl9maW5kU3RyZWFtTGVuZ3RoKG8sYyk7aWYobD49MCl7Y29uc3QgZT1zLnBlZWtCeXRlcyhhKzEpW2FdO2lmKCEoMCxpLmlzV2hpdGVTcGFjZSkoZSkpYnJlYWs7KDAsci5pbmZvKShgRm91bmQgIiR7KDAsci5ieXRlc1RvU3RyaW5nKShjKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTt0PWw7YnJlYWt9fWlmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWlzc2luZyBlbmRzdHJlYW0gY29tbWFuZC4iKX1jPXQ7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3M9cy5tYWtlU3ViU3RyZWFtKG8sYyxlKTt0JiYocz10LmNyZWF0ZVN0cmVhbShzLGMpKTtzPXRoaXMuZmlsdGVyKHMsZSxjKTtzLmRpY3Q9ZTtyZXR1cm4gc31maWx0ZXIoZSx0LGEpe2xldCBpPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGkgaW5zdGFuY2VvZiBuLk5hbWUpe0FycmF5LmlzQXJyYXkocykmJigwLHIud2FybikoIi9EZWNvZGVQYXJtcyBzaG91bGQgbm90IGJlIGFuIEFycmF5LCB3aGVuIC9GaWx0ZXIgaXMgYSBOYW1lLiIpO3JldHVybiB0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsYSxzKX1sZXQgbz1hO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxhPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pO2lmKCEoaSBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtpfSJgKTtzPW51bGw7QXJyYXkuaXNBcnJheShhKSYmYyBpbiBhJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW2NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKTtvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEsbil7aWYoMD09PWEpeygwLHIud2FybikoYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBnLk51bGxTdHJlYW19Y29uc3QgYj10aGlzLnhyZWYuc3RhdHM7dHJ5e3N3aXRjaCh0KXtjYXNlIkZsIjpjYXNlIkZsYXRlRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkZMQVRFKTtyZXR1cm4gbj9uZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGwuRmxhdGVTdHJlYW0oZSxhKSxhLG4pOm5ldyBsLkZsYXRlU3RyZWFtKGUsYSk7Y2FzZSJMWlciOmNhc2UiTFpXRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkxaVyk7bGV0IHQ9MTtpZihuKXtuLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9bi5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGYuTFpXU3RyZWFtKGUsYSx0KSxhLG4pfXJldHVybiBuZXcgZi5MWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5EQ1QpO3JldHVybiBuZXcgdS5KcGVnU3RyZWFtKGUsYSxuKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOmIuYWRkU3RyZWFtVHlwZShyLlN0cmVhbVR5cGUuSlBYKTtyZXR1cm4gbmV3IGQuSnB4U3RyZWFtKGUsYSxuKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkE4NSk7cmV0dXJuIG5ldyBzLkFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5BSFgpO3JldHVybiBuZXcgby5Bc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkNDRik7cmV0dXJuIG5ldyBjLkNDSVRURmF4U3RyZWFtKGUsYSxuKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6Yi5hZGRTdHJlYW1UeXBlKHIuU3RyZWFtVHlwZS5STFgpO3JldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpiLmFkZFN0cmVhbVR5cGUoci5TdHJlYW1UeXBlLkpCSUcpO3JldHVybiBuZXcgaC5KYmlnMlN0cmVhbShlLGEsbil9KDAsci53YXJuKShgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgZy5OdWxsU3RyZWFtfX19dC5QYXJzZXI9UGFyc2VyO2NvbnN0IGI9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHRvSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyBMZXhlcntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCk7dGhpcy5zdHJCdWY9W107dGhpcy5rbm93bkNvbW1hbmRzPXQ7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz0tMX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wZWVrQ2hhcigpe3JldHVybiB0aGlzLnN0cmVhbS5wZWVrQnl0ZSgpfWdldE51bWJlcigpe2xldCBlPXRoaXMuY3VycmVudENoYXIsdD0hMSxhPTAsbj0wO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSBpZig0Mz09PWUpe249MTtlPXRoaXMubmV4dENoYXIoKX1pZigxMD09PWV8fDEzPT09ZSlkb3tlPXRoaXMubmV4dENoYXIoKX13aGlsZSgxMD09PWV8fDEzPT09ZSk7aWYoNDY9PT1lKXthPTEwO2U9dGhpcy5uZXh0Q2hhcigpfWlmKGU8NDh8fGU+NTcpe2NvbnN0IHQ9YEludmFsaWQgbnVtYmVyOiAke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9IChjaGFyQ29kZSAke2V9KWA7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpeygwLHIuaW5mbykoYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcih0KX1uPW58fDE7bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodClvPTEwKm8rcjtlbHNlezAhPT1hJiYoYSo9MTApO3M9MTAqcytyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKSgwLHIud2FybikoIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1lKWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtjPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKHMvPWEpO3QmJihzKj0xMCoqKGMqbykpO3JldHVybiBuKnN9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgbj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxuKXtjYXNlLTE6KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT0tLWUpe3RoaXMubmV4dENoYXIoKTt0PSEwfWVsc2UgYS5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5MjpuPXRoaXMubmV4dENoYXIoKTtzd2l0Y2gobil7Y2FzZS0xOigwLHIud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgMTEwOmEucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDphLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6YS5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6YS5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOmEucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1Jm47bj10aGlzLm5leHRDaGFyKCk7aT0hMDtpZihuPj00OCYmbjw9NTUpe2U9KGU8PDMpKygxNSZuKTtuPXRoaXMubmV4dENoYXIoKTtpZihuPj00OCYmbjw9NTUpe2k9ITE7ZT0oZTw8MykrKDE1Jm4pfX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9YnJlYWs7ZGVmYXVsdDphLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuKSl9aWYodClicmVhaztpfHwobj10aGlzLm5leHRDaGFyKCkpfXJldHVybiBhLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtmb3IoOyhlPXRoaXMubmV4dENoYXIoKSk+PTAmJiFiW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGJbZV0peygwLHIud2FybikoIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgbj10b0hleERpZ2l0KGUpO2lmKC0xIT09bil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpeygwLHIud2FybikoYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKGJbZV0pYnJlYWs7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2NvbnRpbnVlfWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8aSkpfWVsc2UgYS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1lbHNlIGEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTthLmxlbmd0aD4xMjcmJigwLHIud2FybikoYE5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogJHthLmxlbmd0aH1gKTtyZXR1cm4gbi5OYW1lLmdldChhLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHwoMCxyLndhcm4pKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOigwLHIud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxhLG49dGhpcy5jdXJyZW50Q2hhcixpPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKG48MCl7KDAsci53YXJuKSgiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PW4pe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09YltuXSl7aWYoaSl7dD10b0hleERpZ2l0KG4pO2lmKC0xPT09dCl7dGhpcy5faGV4U3RyaW5nV2FybihuKTtuPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX19ZWxzZXthPXRvSGV4RGlnaXQobik7aWYoLTE9PT1hKXt0aGlzLl9oZXhTdHJpbmdXYXJuKG4pO249dGhpcy5uZXh0Q2hhcigpO2NvbnRpbnVlfWUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQ8PDR8YSkpfWk9IWk7bj10aGlzLm5leHRDaGFyKCl9ZWxzZSBuPXRoaXMubmV4dENoYXIoKX1yZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIG4uRU9GO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgiPj4iKX1yZXR1cm4gbi5DbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBuLkNtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIG4uQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBhPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gbi5DbWQuZ2V0KGEpfX1jb25zdCBpPXRoaXMua25vd25Db21tYW5kcztsZXQgcz1pJiZ2b2lkIDAhPT1pW2FdO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihzJiZ2b2lkIDA9PT1pW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2EubGVuZ3RofWApO2E9ZTtzPWkmJnZvaWQgMCE9PWlbYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIG4uQ21kLmdldChhKX1wZWVrT2JqKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5wb3MsdD10aGlzLmN1cnJlbnRDaGFyLGE9dGhpcy5iZWdpbklubGluZUltYWdlUG9zO2xldCBuO3RyeXtuPXRoaXMuZ2V0T2JqKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBwZWVrT2JqOiAke2V9YCl9dGhpcy5zdHJlYW0ucG9zPWU7dGhpcy5jdXJyZW50Q2hhcj10O3RoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz1hO3JldHVybiBufXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19dC5MZXhlcj1MZXhlcjt0LkxpbmVhcml6YXRpb249Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoYT9yPj0wOnI+MCkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxpPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBvLGM7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEpJiZOdW1iZXIuaXNJbnRlZ2VyKHIpJiYoMCxuLmlzQ21kKShpLCJvYmoiKSYmcyBpbnN0YW5jZW9mIG4uRGljdCYmIm51bWJlciI9PXR5cGVvZihvPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZvPjApKXJldHVybiBudWxsO2lmKChjPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6YyxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaTg1U3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KSxuPWEoNCk7Y2xhc3MgQXNjaWk4NVN0cmVhbSBleHRlbmRzIHIuRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7KDAsbi5pc1doaXRlU3BhY2UpKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDsoMCxuLmlzV2hpdGVTcGFjZSkodCk7KXQ9ZS5nZXRCeXRlKCk7c1tpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKXNbaV09MTE3O3RoaXMuZW9mPSEwfWxldCBvPTA7Zm9yKGk9MDtpPDU7KytpKW89ODUqbysoc1tpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZvO28+Pj04fX19fXQuQXNjaWk4NVN0cmVhbT1Bc2NpaTg1U3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSg4KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIERlY29kZVN0cmVhbSBleHRlbmRzIHIuQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO3RoaXMucG9zPTA7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmVvZj0hMTt0aGlzLmJ1ZmZlcj1pO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5wb3M7bGV0IGE7aWYoZSl7dGhpcy5lbnN1cmVCdWZmZXIodCtlKTthPXQrZTtmb3IoOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8YTspdGhpcy5yZWFkQmxvY2soKTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KHQsYSl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGE9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWEmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IG4uU3RyZWFtKHRoaXMuYnVmZmVyLGUsdCxhKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiB0aGlzLnN0cj90aGlzLnN0ci5nZXRCYXNlU3RyZWFtcygpOm51bGx9fXQuRGVjb2RlU3RyZWFtPURlY29kZVN0cmVhbTt0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBhPTA7Zm9yKGNvbnN0IHQgb2YgZSlhKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihhKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGE7dHJ5e2E9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3QmJnQuZGljdC5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxuPXIrYS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIobikuc2V0KGEscik7dGhpcy5idWZmZXJMZW5ndGg9bn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBhPXQuZ2V0QmFzZVN0cmVhbXMoKTthJiZlLnB1c2goLi4uYSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bc2NpaUhleFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLGE9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IHI9dGhpcy5idWZmZXJMZW5ndGgsbj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKG48MCluPWU7ZWxzZXthW3IrK109bjw8NHxlO249LTF9fWlmKG4+PTAmJnRoaXMuZW9mKXthW3IrK109bjw8NDtuPS0xfXRoaXMuZmlyc3REaWdpdD1uO3RoaXMuYnVmZmVyTGVuZ3RoPXJ9fXQuQXNjaWlIZXhTdHJlYW09QXNjaWlIZXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheFN0cmVhbT12b2lkIDA7dmFyIHI9YSgyMCksbj1hKDE3KSxpPWEoMyk7Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2EgaW5zdGFuY2VvZiBpLkRpY3R8fChhPWkuRGljdC5lbXB0eSk7Y29uc3Qgbj17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyByLkNDSVRURmF4RGVjb2RlcihuLHtLOmEuZ2V0KCJLIiksRW5kT2ZMaW5lOmEuZ2V0KCJFbmRPZkxpbmUiKSxFbmNvZGVkQnl0ZUFsaWduOmEuZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczphLmdldCgiQ29sdW1ucyIpLFJvd3M6YS5nZXQoIlJvd3MiKSxFbmRPZkJsb2NrOmEuZ2V0KCJFbmRPZkJsb2NrIiksQmxhY2tJczE6YS5nZXQoIkJsYWNrSXMxIil9KX1yZWFkQmxvY2soKXtmb3IoOyF0aGlzLmVvZjspe2NvbnN0IGU9dGhpcy5jY2l0dEZheERlY29kZXIucmVhZE5leHRDaGFyKCk7aWYoLTE9PT1lKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSk7dGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09Q0NJVFRGYXhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DQ0lUVEZheERlY29kZXI9dm9pZCAwO3ZhciByPWEoMik7Y29uc3Qgbj0tMSxpPVtbLTEsLTFdLFstMSwtMV0sWzcsOF0sWzcsN10sWzYsNl0sWzYsNl0sWzYsNV0sWzYsNV0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzQsMF0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzMsM10sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl0sWzEsMl1dLHM9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxvPVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxjPVtbLTEsLTFdLFstMSwtMV0sWzEyLC0yXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjQ5Nl0sWzEyLDI1NjBdLFsxMiwyNTYwXSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEyLDUyXSxbMTIsNTJdLFsxMyw2NDBdLFsxMyw3MDRdLFsxMyw3NjhdLFsxMyw4MzJdLFsxMiw1NV0sWzEyLDU1XSxbMTIsNTZdLFsxMiw1Nl0sWzEzLDEyODBdLFsxMywxMzQ0XSxbMTMsMTQwOF0sWzEzLDE0NzJdLFsxMiw1OV0sWzEyLDU5XSxbMTIsNjBdLFsxMiw2MF0sWzEzLDE1MzZdLFsxMywxNjAwXSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzEzLDE2NjRdLFsxMywxNzI4XSxbMTIsMzIwXSxbMTIsMzIwXSxbMTIsMzg0XSxbMTIsMzg0XSxbMTIsNDQ4XSxbMTIsNDQ4XSxbMTMsNTEyXSxbMTMsNTc2XSxbMTIsNTNdLFsxMiw1M10sWzEyLDU0XSxbMTIsNTRdLFsxMyw4OTZdLFsxMyw5NjBdLFsxMywxMDI0XSxbMTMsMTA4OF0sWzEzLDExNTJdLFsxMywxMjE2XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF1dLGw9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0saD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07dC5DQ0lUVEZheERlY29kZXI9Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDtsZXQgYSxyPXQuRW5kT2ZCbG9jaztudWxsPT1yJiYocj0hMCk7dGhpcy5lb2Jsb2NrPXI7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCBpLHMsbyxjLGw7aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbyxsLGg7aWYodGhpcy5uZXh0TGluZTJEKXtmb3IoYz0wO3RbY108YTsrK2MpZVtjXT10W2NdO2VbYysrXT1hO2VbY109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtpPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChvKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbaSsxXSxzKTtlW2krMV08YSYmKGkrPTIpO2JyZWFrO2Nhc2UgMTpvPWw9MDtpZihzKXtkb3tvKz1oPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGg+PTY0KTtkb3tsKz1oPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGg+PTY0KX1lbHNle2Rve28rPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtpXSszLHMpO3NePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytpO2Zvcig7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08YTspaSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbaV0rMixzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK2k7Zm9yKDtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxhOylpKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtpXSxzKTtzXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTMscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTEscyk7c149MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtpPjA/LS1pOisraTtmb3IoO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPGE7KWkrPTJ9YnJlYWs7Y2FzZSBuOnRoaXMuX2FkZFBpeGVscyhhLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6KDAsci5pbmZvKSgiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cz0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe289MDtpZihzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyk7c149MX19bGV0IHU9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7bz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtvIT09biYmMSE9PW87KXt0aGlzLl9lYXRCaXRzKDEpO289dGhpcy5fbG9va0JpdHMoMTIpfWVsc2UgZm9yKDswPT09bzspe3RoaXMuX2VhdEJpdHMoMSk7bz10aGlzLl9sb29rQml0cygxMil9aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO3U9ITB9ZWxzZSBvPT09biYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZ1JiZ0aGlzLmJ5dGVBbGlnbil7bz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW8pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYyl7bz10aGlzLl9sb29rQml0cygxMik7MSE9PW8mJigwLHIuaW5mbykoImJhZCBydGMgY29kZTogIitvKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtvPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihvPT09bil7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJm8pfX10WzBdPjA/dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MF06dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe2w9MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtvPTg7bD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+byl7bDw8PW87MSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKTt0aGlzLm91dHB1dEJpdHMtPW87bz0wfWVsc2V7bDw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7by09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihvPjApe2w8PD1vO289MH19fXdoaWxlKG8pfXRoaXMuYmxhY2smJihsXj0yNTUpO3JldHVybiBsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBhPXRoaXMuY29kaW5nTGluZTtsZXQgbj10aGlzLmNvZGluZ1BvcztpZihlPmFbbl0pe2lmKGU+dGhpcy5jb2x1bW5zKXsoMCxyLmluZm8pKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZuXnQmJisrbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IG49dGhpcy5jb2RpbmdQb3M7aWYoZT5hW25dKXtpZihlPnRoaXMuY29sdW1ucyl7KDAsci5pbmZvKSgicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmbl50JiYrK247YVtuXT1lfWVsc2UgaWYoZTxhW25dKXtpZihlPDApeygwLHIuaW5mbykoImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO24+MCYmZTxhW24tMV07KS0tbjthW25dPWV9dGhpcy5jb2RpbmdQb3M9bn1fZmluZFRhYmxlQ29kZShlLHQsYSxyKXtjb25zdCBpPXJ8fDA7Zm9yKGxldCByPWU7cjw9dDsrK3Ipe2xldCBlPXRoaXMuX2xvb2tCaXRzKHIpO2lmKGU9PT1uKXJldHVyblshMCwxLCExXTtyPHQmJihlPDw9dC1yKTtpZighaXx8ZT49aSl7Y29uc3QgdD1hW2UtaV07aWYodFswXT09PXIpe3RoaXMuX2VhdEJpdHMocik7cmV0dXJuWyEwLHRbMV0sITBdfX19cmV0dXJuWyExLDAsITFdfV9nZXRUd29EaW1Db2RlKCl7bGV0IGUsdD0wO2lmKHRoaXMuZW9ibG9jayl7dD10aGlzLl9sb29rQml0cyg3KTtlPWlbdF07aWYoZSYmZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2NvbnN0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxLDcsaSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX0oMCxyLmluZm8pKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIG59X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1uKXJldHVybiAxO2U9dD4+NT09MD9zW3RdOm9bdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LG8pO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDExLDEyLHMpO2lmKGVbMF0pcmV0dXJuIGVbMV19KDAsci5pbmZvKSgiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PW4pcmV0dXJuIDE7dD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsaCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoNywxMixsLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxjKTtpZihlWzBdKXJldHVybiBlWzFdfSgwLHIuaW5mbykoImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/bjp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0O3RoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GbGF0ZVN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDIpO2NvbnN0IGk9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSxzPW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLG89bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxjPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxsPVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBhPWUuZ2V0Qnl0ZSgpLHI9ZS5nZXRCeXRlKCk7aWYoLTE9PT1hfHwtMT09PXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2F9LCAke3J9YCk7aWYoKChhPDw4KStyKSUzMSE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7YX0sICR7cn1gKTtpZigzMiZyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1hPDxyO3IrPTh9YT1pJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1pPj5lO3RoaXMuY29kZVNpemU9ci09ZTtyZXR1cm4gYX1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIsYT1lWzBdLHI9ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPHImJi0xIT09KGk9dC5nZXRCeXRlKCkpOyl7b3w9aTw8cztzKz04fWNvbnN0IGM9YVtvJigxPDxyKS0xXSxsPWM+PjE2LGg9NjU1MzUmYztpZihsPDF8fHM8bCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1vPj5sO3RoaXMuY29kZVNpemU9cy1sO3JldHVybiBofWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGEscj0wO2ZvcihhPTA7YTx0OysrYSllW2FdPnImJihyPWVbYV0pO2NvbnN0IG49MTw8cixpPW5ldyBJbnQzMkFycmF5KG4pO2ZvcihsZXQgcz0xLG89MCxjPTI7czw9cjsrK3Msbzw8PTEsYzw8PTEpZm9yKGxldCByPTA7cjx0OysrcilpZihlW3JdPT09cyl7bGV0IGU9MCx0PW87Zm9yKGE9MDthPHM7KythKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihhPWU7YTxuO2ErPWMpaVthXT1zPDwxNnxyOysrb31yZXR1cm5baSxyXX1yZWFkQmxvY2soKXtsZXQgZSx0O2NvbnN0IGE9dGhpcy5zdHI7bGV0IHIsaCx1PXRoaXMuZ2V0Qml0cygzKTsxJnUmJih0aGlzLmVvZj0hMCk7dT4+PTE7aWYoMD09PXUpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2xldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cnw9dDw8ODtpZigtMT09PSh0PWEuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgaT10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2l8PXQ8PDg7aWYoaSE9PSg2NTUzNSZ+cikmJigwIT09cnx8MCE9PWkpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxvPXMrcjtlPXRoaXMuZW5zdXJlQnVmZmVyKG8pO3RoaXMuYnVmZmVyTGVuZ3RoPW87aWYoMD09PXIpLTE9PT1hLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWEuZ2V0Qnl0ZXMocik7ZS5zZXQodCxzKTt0Lmxlbmd0aDxyJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09dSl7cj1jO2g9bH1lbHNle2lmKDIhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxhPXRoaXMuZ2V0Qml0cyg1KSsxLG49dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPG47KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTA7bz0wO2NvbnN0IGw9ZSthLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKXtkPTI7Zj0zO2c9dH1lbHNlIGlmKDE3PT09ZSl7ZD0zO2Y9MztnPXQ9MH1lbHNle2lmKDE4IT09ZSl7dVtvKytdPXQ9ZTtjb250aW51ZX1kPTc7Zj0xMTtnPXQ9MH1sZXQgYT10aGlzLmdldEJpdHMoZCkrZjtmb3IoO2EtLSA+MDspdVtvKytdPWd9cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoMCxlKSk7aD10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKHUuc3ViYXJyYXkoZSxsKSl9fWU9dGhpcy5idWZmZXI7bGV0IGQ9ZT9lLmxlbmd0aDowLGY9dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgYT10aGlzLmdldENvZGUocik7aWYoYTwyNTYpe2lmKGYrMT49ZCl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihmKzEpO2Q9ZS5sZW5ndGh9ZVtmKytdPWE7Y29udGludWV9aWYoMjU2PT09YSl7dGhpcy5idWZmZXJMZW5ndGg9ZjtyZXR1cm59YS09MjU3O2E9c1thXTtsZXQgbj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7dD0oNjU1MzUmYSkrbjthPXRoaXMuZ2V0Q29kZShoKTthPW9bYV07bj1hPj4xNjtuPjAmJihuPXRoaXMuZ2V0Qml0cyhuKSk7Y29uc3QgaT0oNjU1MzUmYSkrbjtpZihmK3Q+PWQpe2U9dGhpcy5lbnN1cmVCdWZmZXIoZit0KTtkPWUubGVuZ3RofWZvcihsZXQgYT0wO2E8dDsrK2EsKytmKWVbZl09ZVtmLWldfX19dC5GbGF0ZVN0cmVhbT1GbGF0ZVN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpiaWcyU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDUpLG49YSgxNyksaT1hKDMpLHM9YSgyMyksbz1hKDIpO2NsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBzLkpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkpCSUcyR2xvYmFscyIpO2lmKGUgaW5zdGFuY2VvZiByLkJhc2VTdHJlYW0pe2NvbnN0IGE9ZS5nZXRCeXRlcygpO3QucHVzaCh7ZGF0YTphLHN0YXJ0OjAsZW5kOmEubGVuZ3RofSl9fXQucHVzaCh7ZGF0YTp0aGlzLmJ5dGVzLHN0YXJ0OjAsZW5kOnRoaXMuYnl0ZXMubGVuZ3RofSk7Y29uc3QgYT1lLnBhcnNlQ2h1bmtzKHQpLG49YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1uO3RoaXMuZW9mPSEwfX10LkpiaWcyU3RyZWFtPUpiaWcyU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSmJpZzJJbWFnZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNCksaT1hKDI0KSxzPWEoMjApO2NsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoYEpCSUcyIGVycm9yOiAke2V9YCwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtjb25zdCBlPW5ldyBpLkFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiZGVjb2RlciIsZSl9Z2V0IGNvbnRleHRDYWNoZSgpe2NvbnN0IGU9bmV3IENvbnRleHRDYWNoZTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiY29udGV4dENhY2hlIixlKX19ZnVuY3Rpb24gZGVjb2RlSW50ZWdlcihlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKHQpO2xldCBuPTE7ZnVuY3Rpb24gcmVhZEJpdHMoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWEucmVhZEJpdChyLG4pO249bjwyNTY/bjw8MXxlOjUxMSYobjw8MXxlKXwyNTY7dD10PDwxfGV9cmV0dXJuIHQ+Pj4wfWNvbnN0IGk9cmVhZEJpdHMoMSkscz1yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygxKT9yZWFkQml0cygzMikrNDQzNjpyZWFkQml0cygxMikrMzQwOnJlYWRCaXRzKDgpKzg0OnJlYWRCaXRzKDYpKzIwOnJlYWRCaXRzKDQpKzQ6cmVhZEJpdHMoMik7cmV0dXJuIDA9PT1pP3M6cz4wPy1zOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsYSl7Y29uc3Qgcj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IG49MTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtuPW48PDF8dC5yZWFkQml0KHIsbil9cmV0dXJuIGE8MzE/biYoMTw8YSktMToyMTQ3NDgzNjQ3Jm59Y29uc3Qgbz1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLGM9W1t7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMyx5Oi0xfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTQseTowfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV1dLGw9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxoPVszOTcxNywxOTQxLDIyOSw0MDVdLHU9WzMyLDhdO2Z1bmN0aW9uIGRlY29kZUJpdG1hcChlLHQsYSxyLG4saSxzLG8pe2lmKGUpe3JldHVybiBkZWNvZGVNTVJCaXRtYXAobmV3IFJlYWRlcihvLmRhdGEsby5zdGFydCxvLmVuZCksdCxhLCExKX1pZigwPT09ciYmIWkmJiFuJiY0PT09cy5sZW5ndGgmJjM9PT1zWzBdLngmJi0xPT09c1swXS55JiYtMz09PXNbMV0ueCYmLTE9PT1zWzFdLnkmJjI9PT1zWzJdLngmJi0yPT09c1syXS55JiYtMj09PXNbM10ueCYmLTI9PT1zWzNdLnkpcmV0dXJuIGZ1bmN0aW9uIGRlY29kZUJpdG1hcFRlbXBsYXRlMChlLHQsYSl7Y29uc3Qgcj1hLmRlY29kZXIsbj1hLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKyl7aD1pW29dPW5ldyBVaW50OEFycmF5KGUpO3U9bzwxP2g6aVtvLTFdO2Q9bzwyP2g6aVtvLTJdO3M9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NDtmb3IoYz0wO2M8ZTtjKyspe2hbY109bD1yLnJlYWRCaXQobixzKTtzPSgzMTczNSZzKTw8MXwoYyszPGU/ZFtjKzNdPDwxMTowKXwoYys0PGU/dVtjKzRdPDw0OjApfGx9fXJldHVybiBpfSh0LGEsbyk7Y29uc3QgbD0hIWksdT1jW3JdLmNvbmNhdChzKTt1LnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgZD11Lmxlbmd0aCxmPW5ldyBJbnQ4QXJyYXkoZCksZz1uZXcgSW50OEFycmF5KGQpLHA9W107bGV0IG0sYix5PTAsdz0wLFM9MCx4PTA7Zm9yKGI9MDtiPGQ7YisrKXtmW2JdPXVbYl0ueDtnW2JdPXVbYl0ueTt3PU1hdGgubWluKHcsdVtiXS54KTtTPU1hdGgubWF4KFMsdVtiXS54KTt4PU1hdGgubWluKHgsdVtiXS55KTtiPGQtMSYmdVtiXS55PT09dVtiKzFdLnkmJnVbYl0ueD09PXVbYisxXS54LTE/eXw9MTw8ZC0xLWI6cC5wdXNoKGIpfWNvbnN0IGs9cC5sZW5ndGgsQz1uZXcgSW50OEFycmF5KGspLHY9bmV3IEludDhBcnJheShrKSxGPW5ldyBVaW50MTZBcnJheShrKTtmb3IobT0wO208azttKyspe2I9cFttXTtDW21dPXVbYl0ueDt2W21dPXVbYl0ueTtGW21dPTE8PGQtMS1ifWNvbnN0IE89LXcsVD0teCxNPXQtUyxFPWhbcl07bGV0IEQ9bmV3IFVpbnQ4QXJyYXkodCk7Y29uc3QgTj1bXSxSPW8uZGVjb2RlcixMPW8uY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpO2xldCBqLCQsXyxVLFgsSD0wLHE9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtpZihuKXtIXj1SLnJlYWRCaXQoTCxFKTtpZihIKXtOLnB1c2goRCk7Y29udGludWV9fUQ9bmV3IFVpbnQ4QXJyYXkoRCk7Ti5wdXNoKEQpO2ZvcihqPTA7ajx0O2orKyl7aWYobCYmaVtlXVtqXSl7RFtqXT0wO2NvbnRpbnVlfWlmKGo+PU8mJmo8TSYmZT49VCl7cT1xPDwxJnk7Zm9yKGI9MDtiPGs7YisrKXskPWUrdltiXTtfPWorQ1tiXTtVPU5bJF1bX107aWYoVSl7VT1GW2JdO3F8PVV9fX1lbHNle3E9MDtYPWQtMTtmb3IoYj0wO2I8ZDtiKyssWC0tKXtfPWorZltiXTtpZihfPj0wJiZfPHQpeyQ9ZStnW2JdO2lmKCQ+PTApe1U9TlskXVtfXTtVJiYocXw9VTw8WCl9fX19Y29uc3QgYT1SLnJlYWRCaXQoTCxxKTtEW2pdPWF9fXJldHVybiBOfWZ1bmN0aW9uIGRlY29kZVJlZmluZW1lbnQoZSx0LGEscixuLGkscyxvLGMpe2xldCBoPWxbYV0uY29kaW5nOzA9PT1hJiYoaD1oLmNvbmNhdChbb1swXV0pKTtjb25zdCBkPWgubGVuZ3RoLGY9bmV3IEludDMyQXJyYXkoZCksZz1uZXcgSW50MzJBcnJheShkKTtsZXQgcDtmb3IocD0wO3A8ZDtwKyspe2ZbcF09aFtwXS54O2dbcF09aFtwXS55fWxldCBtPWxbYV0ucmVmZXJlbmNlOzA9PT1hJiYobT1tLmNvbmNhdChbb1sxXV0pKTtjb25zdCBiPW0ubGVuZ3RoLHk9bmV3IEludDMyQXJyYXkoYiksdz1uZXcgSW50MzJBcnJheShiKTtmb3IocD0wO3A8YjtwKyspe3lbcF09bVtwXS54O3dbcF09bVtwXS55fWNvbnN0IFM9clswXS5sZW5ndGgseD1yLmxlbmd0aCxrPXVbYV0sQz1bXSx2PWMuZGVjb2RlcixGPWMuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBPPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYocyl7T149di5yZWFkQml0KEYsayk7aWYoTyl0aHJvdyBuZXcgSmJpZzJFcnJvcigicHJlZGljdGlvbiBpcyBub3Qgc3VwcG9ydGVkIil9Y29uc3QgdD1uZXcgVWludDhBcnJheShlKTtDLnB1c2godCk7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG8sYyxsPTA7Zm9yKHA9MDtwPGQ7cCsrKXtvPWErZ1twXTtjPXMrZltwXTtvPDB8fGM8MHx8Yz49ZT9sPDw9MTpsPWw8PDF8Q1tvXVtjXX1mb3IocD0wO3A8YjtwKyspe289YSt3W3BdLWk7Yz1zK3lbcF0tbjtvPDB8fG8+PXh8fGM8MHx8Yz49Uz9sPDw9MTpsPWw8PDF8cltvXVtjXX1jb25zdCBoPXYucmVhZEJpdChGLGwpO3Rbc109aH19cmV0dXJuIEN9ZnVuY3Rpb24gZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxyLG4saSxzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5KXtpZihlJiZ0KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3Qgdz1bXTtsZXQgUyx4O2ZvcihTPTA7UzxyO1MrKyl7eD1uZXcgVWludDhBcnJheShhKTtpZihuKWZvcihsZXQgZT0wO2U8YTtlKyspeFtlXT1uO3cucHVzaCh4KX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDtTPTA7Zm9yKDtTPGk7KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgbj0wO3M+MSYmKG49ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IGk9cyp2K24sRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksTz10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgVD1vW0ZdLE09VFswXS5sZW5ndGgsRT1ULmxlbmd0aDtpZihPKXtjb25zdCBlPWRlY29kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayksYT1kZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSxyPWRlY29kZUludGVnZXIoQywiSUFSRFkiLGspO00rPWU7RSs9dDtUPWRlY29kZVJlZmluZW1lbnQoTSxFLGcsVCwoZT4+MSkrYSwodD4+MSkrciwhMSxwLG0pfWNvbnN0IEQ9aS0oMSZ1PzA6RS0xKSxOPXItKDImdT9NLTE6MCk7bGV0IFIsTCxqO2lmKGwpe2ZvcihSPTA7UjxFO1IrKyl7eD13W04rUl07aWYoIXgpY29udGludWU7aj1UW1JdO2NvbnN0IGU9TWF0aC5taW4oYS1ELE0pO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXXw9altMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKXhbRCtMXV49altMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19cis9RS0xfWVsc2V7Zm9yKEw9MDtMPEU7TCsrKXt4PXdbRCtMXTtpZih4KXtqPVRbTF07c3dpdGNoKGQpe2Nhc2UgMDpmb3IoUj0wO1I8TTtSKyspeFtOK1JdfD1qW1JdO2JyZWFrO2Nhc2UgMjpmb3IoUj0wO1I8TTtSKyspeFtOK1JdXj1qW1JdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX19cis9TS0xfVMrKztjb25zdCAkPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09JClicmVhaztyKz0kK2h9fXJldHVybiB3fWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgYT17fTthLm51bWJlcj0oMCxuLnJlYWRVaW50MzIpKGUsdCk7Y29uc3Qgcj1lW3QrNF0saT02MyZyO2lmKCFvW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPW9baV07YS5kZWZlcnJlZE5vblJldGFpbj0hISgxMjgmcik7Y29uc3Qgcz0hISg2NCZyKSxjPWVbdCs1XTtsZXQgbD1jPj41Jjc7Y29uc3QgaD1bMzEmY107bGV0IHU9dCs2O2lmKDc9PT1jKXtsPTUzNjg3MDkxMSYoMCxuLnJlYWRVaW50MzIpKGUsdS0xKTt1Kz0zO2xldCB0PWwrNz4+MztoWzBdPWVbdSsrXTtmb3IoOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO2EucmV0YWluQml0cz1oO2xldCBmPTQ7YS5udW1iZXI8PTI1Nj9mPTE6YS5udW1iZXI8PTY1NTM2JiYoZj0yKTtjb25zdCBnPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1mP2VbdV06Mj09PWY/KDAsbi5yZWFkVWludDE2KShlLHUpOigwLG4ucmVhZFVpbnQzMikoZSx1KTtnLnB1c2godCk7dSs9Zn1hLnJlZmVycmVkVG89ZztpZihzKXthLnBhZ2VBc3NvY2lhdGlvbj0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NH1lbHNlIGEucGFnZUFzc29jaWF0aW9uPWVbdSsrXTthLmxlbmd0aD0oMCxuLnJlYWRVaW50MzIpKGUsdSk7dSs9NDtpZig0Mjk0OTY3Mjk1PT09YS5sZW5ndGgpe2lmKDM4IT09aSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCB1bmtub3duIHNlZ21lbnQgbGVuZ3RoIik7e2NvbnN0IHQ9cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHUpLHI9ISEoMSZlW3UrZF0pLG49NixpPW5ldyBVaW50OEFycmF5KG4pO2lmKCFyKXtpWzBdPTI1NTtpWzFdPTE3Mn1pWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O2lbM109dC5oZWlnaHQ+PjE2JjI1NTtpWzRdPXQuaGVpZ2h0Pj44JjI1NTtpWzVdPTI1NSZ0LmhlaWdodDtmb3IocD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8biYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1uKXthLmxlbmd0aD1wK247YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1hLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1hLmhlYWRlckVuZD11O3JldHVybiBhfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsYSxyKXtjb25zdCBuPVtdO2xldCBpPWE7Zm9yKDtpPHI7KXtjb25zdCBhPXJlYWRTZWdtZW50SGVhZGVyKHQsaSk7aT1hLmhlYWRlckVuZDtjb25zdCByPXtoZWFkZXI6YSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7ci5zdGFydD1pO2krPWEubGVuZ3RoO3IuZW5kPWl9bi5wdXNoKHIpO2lmKDUxPT09YS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bltlXS5zdGFydD1pO2krPW5bZV0uaGVhZGVyLmxlbmd0aDtuW2VdLmVuZD1pfXJldHVybiBufWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6KDAsbi5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxuLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLG4ucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsbi5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBkPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBzLG8sYyxsLGg9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PSgwLG4ucmVhZFVpbnQxNikocixoKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7aCs9MjtpZighZS5odWZmbWFuKXtsPTA9PT1lLnRlbXBsYXRlPzQ6MTtvPVtdO2ZvcihjPTA7YzxsO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfWUuYXQ9b31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7bz1bXTtmb3IoYz0wO2M8MjtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn1lLnJlZmluZW1lbnRBdD1vfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgdT17fTt1LmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGgpO2grPWQ7Y29uc3QgZj0oMCxuLnJlYWRVaW50MTYpKHIsaCk7aCs9Mjt1Lmh1ZmZtYW49ISEoMSZmKTt1LnJlZmluZW1lbnQ9ISEoMiZmKTt1LmxvZ1N0cmlwU2l6ZT1mPj4yJjM7dS5zdHJpcFNpemU9MTw8dS5sb2dTdHJpcFNpemU7dS5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzO3UudHJhbnNwb3NlZD0hISg2NCZmKTt1LmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzO3UuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxO3UuZHNPZmZzZXQ9Zjw8MTc+PjI3O3UucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjE7aWYodS5odWZmbWFuKXtjb25zdCBlPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO3UuaHVmZm1hbkZTPTMmZTt1Lmh1ZmZtYW5EUz1lPj4yJjM7dS5odWZmbWFuRFQ9ZT4+NCYzO3UuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjM7dS5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMzt1Lmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMzt1Lmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKHUucmVmaW5lbWVudCYmIXUucmVmaW5lbWVudFRlbXBsYXRlKXtvPVtdO2ZvcihjPTA7YzwyO2MrKyl7by5wdXNoKHt4OigwLG4ucmVhZEludDgpKHIsaCkseTooMCxuLnJlYWRJbnQ4KShyLGgrMSl9KTtoKz0yfXUucmVmaW5lbWVudEF0PW99dS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcz0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDtzPVt1LGEucmVmZXJyZWRUbyxyLGgsaV07YnJlYWs7Y2FzZSAxNjpjb25zdCBnPXt9LHA9cltoKytdO2cubW1yPSEhKDEmcCk7Zy50ZW1wbGF0ZT1wPj4xJjM7Zy5wYXR0ZXJuV2lkdGg9cltoKytdO2cucGF0dGVybkhlaWdodD1yW2grK107Zy5tYXhQYXR0ZXJuSW5kZXg9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7cz1bZyxhLm51bWJlcixyLGgsaV07YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixoKTtoKz1kO2NvbnN0IGI9cltoKytdO20ubW1yPSEhKDEmYik7bS50ZW1wbGF0ZT1iPj4xJjM7bS5lbmFibGVTa2lwPSEhKDgmYik7bS5jb21iaW5hdGlvbk9wZXJhdG9yPWI+PjQmNzttLmRlZmF1bHRQaXhlbFZhbHVlPWI+PjcmMTttLmdyaWRXaWR0aD0oMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRIZWlnaHQ9KDAsbi5yZWFkVWludDMyKShyLGgpO2grPTQ7bS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JigwLG4ucmVhZFVpbnQzMikocixoKTtoKz00O20uZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKHIsaCk7aCs9NDttLmdyaWRWZWN0b3JYPSgwLG4ucmVhZFVpbnQxNikocixoKTtoKz0yO20uZ3JpZFZlY3Rvclk9KDAsbi5yZWFkVWludDE2KShyLGgpO2grPTI7cz1bbSxhLnJlZmVycmVkVG8scixoLGldO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCB5PXt9O3kuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsaCk7aCs9ZDtjb25zdCB3PXJbaCsrXTt5Lm1tcj0hISgxJncpO3kudGVtcGxhdGU9dz4+MSYzO3kucHJlZGljdGlvbj0hISg4JncpO2lmKCF5Lm1tcil7bD0wPT09eS50ZW1wbGF0ZT80OjE7bz1bXTtmb3IoYz0wO2M8bDtjKyspe28ucHVzaCh7eDooMCxuLnJlYWRJbnQ4KShyLGgpLHk6KDAsbi5yZWFkSW50OCkocixoKzEpfSk7aCs9Mn15LmF0PW99cz1beSxyLGgsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCBTPXt3aWR0aDooMCxuLnJlYWRVaW50MzIpKHIsaCksaGVpZ2h0OigwLG4ucmVhZFVpbnQzMikocixoKzQpLHJlc29sdXRpb25YOigwLG4ucmVhZFVpbnQzMikocixoKzgpLHJlc29sdXRpb25ZOigwLG4ucmVhZFVpbnQzMikocixoKzEyKX07NDI5NDk2NzI5NT09PVMuaGVpZ2h0JiZkZWxldGUgUy5oZWlnaHQ7Y29uc3QgeD1yW2grMTZdOygwLG4ucmVhZFVpbnQxNikocixoKzE3KTtTLmxvc3NsZXNzPSEhKDEmeCk7Uy5yZWZpbmVtZW50PSEhKDImeCk7Uy5kZWZhdWx0UGl4ZWxWYWx1ZT14Pj4yJjE7Uy5jb21iaW5hdGlvbk9wZXJhdG9yPXg+PjMmMztTLnJlcXVpcmVzQnVmZmVyPSEhKDMyJngpO1MuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JngpO3M9W1NdO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpzPVthLm51bWJlcixyLGgsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCB1PSJvbiIrYS50eXBlTmFtZTt1IGluIHQmJnRbdV0uYXBwbHkodCxzKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLG49ZS5oZWlnaHQsaT1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxuO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1pfWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8bjtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9aX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IG49ZS5pbmZvLGk9bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsbi53aWR0aCxuLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKG4scyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyl7bGV0IG8sYztpZihlLmh1ZmZtYW4pe289ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLG4saSxzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpuPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIGk9Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6bix0YWJsZUJpdG1hcFNpemU6aSx0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtjPW5ldyBSZWFkZXIocixpLHMpfWxldCBsPXRoaXMuc3ltYm9scztsfHwodGhpcy5zeW1ib2xzPWw9e30pO2NvbnN0IGg9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQocixpLHMpO2xbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGkscyxvLGMsbCxoLHUsZCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBmPVtdO2xldCBnPTAscD0oMCxuLmxvZzIpKGEubGVuZ3RoK3IpO2NvbnN0IG09dS5kZWNvZGVyLGI9dS5jb250ZXh0Q2FjaGU7bGV0IHksdztpZihlKXt5PWdldFN0YW5kYXJkVGFibGUoMSk7dz1bXTtwPU1hdGgubWF4KHAsMSl9Zm9yKDtmLmxlbmd0aDxyOyl7Zys9ZT9zLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFESCIsbSk7bGV0IHI9MCxuPTA7Y29uc3QgaT1lP3cubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBpPWU/cy50YWJsZURlbHRhV2lkdGguZGVjb2RlKGQpOmRlY29kZUludGVnZXIoYiwiSUFEVyIsbSk7aWYobnVsbD09PWkpYnJlYWs7cis9aTtuKz1yO2xldCB5O2lmKHQpe2NvbnN0IG49ZGVjb2RlSW50ZWdlcihiLCJJQUFJIixtKTtpZihuPjEpeT1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGcsMCxuLDEsYS5jb25jYXQoZikscCwwLDAsMSwwLHMsbCxoLHUsMCxkKTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChiLG0scCksdD1kZWNvZGVJbnRlZ2VyKGIsIklBUkRYIixtKSxuPWRlY29kZUludGVnZXIoYiwiSUFSRFkiLG0pO3k9ZGVjb2RlUmVmaW5lbWVudChyLGcsbCxlPGEubGVuZ3RoP2FbZV06ZltlLWEubGVuZ3RoXSx0LG4sITEsaCx1KX1mLnB1c2goeSl9ZWxzZSBpZihlKXcucHVzaChyKTtlbHNle3k9ZGVjb2RlQml0bWFwKCExLHIsZyxvLCExLG51bGwsYyx1KTtmLnB1c2goeSl9fWlmKGUmJiF0KXtjb25zdCBlPXMudGFibGVCaXRtYXBTaXplLmRlY29kZShkKTtkLmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcChkLG4sZyk7ZWxzZXtjb25zdCBhPWQuZW5kLHI9ZC5wb3NpdGlvbitlO2QuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAoZCxuLGcsITEpO2QuZW5kPWE7ZC5wb3NpdGlvbj1yfWNvbnN0IGE9dy5sZW5ndGg7aWYoaT09PWEtMSlmLnB1c2godCk7ZWxzZXtsZXQgZSxyLG4scyxvLGM9MDtmb3IoZT1pO2U8YTtlKyspe3M9d1tlXTtuPWMrcztvPVtdO2ZvcihyPTA7cjxnO3IrKylvLnB1c2godFtyXS5zdWJhcnJheShjLG4pKTtmLnB1c2gobyk7Yz1ufX19fWNvbnN0IFM9W10seD1bXTtsZXQgayxDLHY9ITE7Y29uc3QgRj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8Rjspe2xldCB0PWU/eS5kZWNvZGUoZCk6ZGVjb2RlSW50ZWdlcihiLCJJQUVYIixtKTtmb3IoO3QtLTspeC5wdXNoKHYpO3Y9IXZ9Zm9yKGs9MCxDPWEubGVuZ3RoO2s8QztrKyspeFtrXSYmUy5wdXNoKGFba10pO2ZvcihsZXQgZT0wO2U8cjtrKyssZSsrKXhba10mJlMucHVzaChmW2VdKTtyZXR1cm4gU30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxoLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMsbyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsdSxjKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPWUuaW5mbztsZXQgbyxjO2NvbnN0IGw9dGhpcy5zeW1ib2xzLGg9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1sW2VdO3QmJmgucHVzaCguLi50KX1jb25zdCB1PSgwLG4ubG9nMikoaC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7Yz1uZXcgUmVhZGVyKGEscixpKTtvPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsbil7Y29uc3QgaT1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9bi5yZWFkQml0cyg0KTtpLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShpLCExKTtpLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUobik7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1uLnJlYWRCaXRzKDIpKzM7YT1pW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1uLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1uLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7aS5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fW4uYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKGksITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxoLmxlbmd0aCxjKX1jb25zdCBkPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGY9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LHMud2lkdGgscy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGgsdSxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IsbyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxkLGUubG9nU3RyaXBTaXplLGMpO3RoaXMuZHJhd0JpdG1hcChzLGYpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsbil7bGV0IGk9dGhpcy5wYXR0ZXJucztpfHwodGhpcy5wYXR0ZXJucz1pPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLG4pO2lbdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixuLGkpe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09biYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLG4sITEsbnVsbCxzLGkpLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10sbj10KmUsaT1uK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShuLGkpKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBzPXRoaXMucGF0dGVybnNbdFswXV0sbz1lLmluZm8sYz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxsPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxzLG8sYyxsLGgsdSxkLGYsZyxwKXtpZihvKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09Yyl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7Y30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgbT1bXTtsZXQgYix5LHc7Zm9yKGI9MDtiPGk7YisrKXt3PW5ldyBVaW50OEFycmF5KHIpO2lmKHMpZm9yKHk9MDt5PHI7eSsrKXdbeV09czttLnB1c2godyl9Y29uc3QgUz10Lmxlbmd0aCx4PXRbMF0saz14WzBdLmxlbmd0aCxDPXgubGVuZ3RoLHY9KDAsbi5sb2cyKShTKSxGPVtdO2lmKCFlKXtGLnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgTz1bXTtsZXQgVCxNLEUsRCxOLFIsTCxqLCQsXyxVO2UmJihUPW5ldyBSZWFkZXIocC5kYXRhLHAuc3RhcnQscC5lbmQpKTtmb3IoYj12LTE7Yj49MDtiLS0pe009ZT9kZWNvZGVNTVJCaXRtYXAoVCxsLGgsITApOmRlY29kZUJpdG1hcCghMSxsLGgsYSwhMSxudWxsLEYscCk7T1tiXT1NfWZvcihFPTA7RTxoO0UrKylmb3IoRD0wO0Q8bDtEKyspe049MDtSPTA7Zm9yKHk9di0xO3k+PTA7eS0tKXtOXj1PW3ldW0VdW0RdO1J8PU48PHl9TD10W1JdO2o9dStFKmcrRCpmPj44OyQ9ZCtFKmYtRCpnPj44O2lmKGo+PTAmJmorazw9ciYmJD49MCYmJCtDPD1pKWZvcihiPTA7YjxDO2IrKyl7VT1tWyQrYl07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKylVW2oreV18PV9beV19ZWxzZXtsZXQgZSx0O2ZvcihiPTA7YjxDO2IrKyl7dD0kK2I7aWYoISh0PDB8fHQ+PWkpKXtVPW1bdF07Xz1MW2JdO2Zvcih5PTA7eTxrO3krKyl7ZT1qK3k7ZT49MCYmZTxyJiYoVVtlXXw9X1t5XSl9fX19fXJldHVybiBtfShlLm1tcixzLGUudGVtcGxhdGUsby53aWR0aCxvLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3RvclksYyk7dGhpcy5kcmF3Qml0bWFwKG8sbCl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSYoMCxuLnJlYWRVaW50MzIpKGUsdCsxKSxzPTQyOTQ5NjcyOTUmKDAsbi5yZWFkVWludDMyKShlLHQrNSksbz1uZXcgUmVhZGVyKGUsdCs5LGEpLGM9MSsocj4+MSY3KSxsPTErKHI+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyk7ZD1vLnJlYWRCaXRzKGwpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW2YsdSxkLDBdKSk7Zis9MTw8ZH13aGlsZShmPHMpO3U9by5yZWFkQml0cyhjKTtoLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsdSwzMiwwLCJsb3dlciJdKSk7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3MsdSwzMiwwXSkpO2lmKDEmcil7dT1vLnJlYWRCaXRzKGMpO2gucHVzaChuZXcgSHVmZm1hbkxpbmUoW3UsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShoLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBuLGkscyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO249YztpPTA7Zm9yKDtpPHQ7KXtzPWVbaV07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9bjtuKyt9aSsrfW8rK319fWNvbnN0IGY9e307ZnVuY3Rpb24gZ2V0U3RhbmRhcmRUYWJsZShlKXtsZXQgdCxhPWZbZV07aWYoYSlyZXR1cm4gYTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2E9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtmW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPWFbdFtuXV07aWYoaSl7aWYoZT09PXIpcmV0dXJuIGk7cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBuPTA7bjxhO24rKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IG49e0s6LTEsQ29sdW1uczp0LFJvd3M6YSxCbGFja0lzMTohMCxFbmRPZkJsb2NrOnJ9LGk9bmV3IHMuQ0NJVFRGYXhEZWNvZGVyKGUsbiksbz1bXTtsZXQgYyxsPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7by5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7Yz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09Yyl7Yz0wO2w9ITB9YT03fWVbcl09Yz4+YSYxO2EtLX19aWYociYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LHIuZGF0YSxyLnN0YXJ0LHIuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3QgYT1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWE7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgcj1lW3RdPj4xLG49MSZlW3RdO2NvbnN0IGk9YVtyXSxzPWkucWU7bGV0IG8sYz10aGlzLmEtcztpZih0aGlzLmNoaWdoPHMpaWYoYzxzKXtjPXM7bz1uO3I9aS5ubXBzfWVsc2V7Yz1zO289MV5uOzE9PT1pLnN3aXRjaEZsYWcmJihuPW8pO3I9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09cztpZigwIT0oMzI3NjgmYykpe3RoaXMuYT1jO3JldHVybiBufWlmKGM8cyl7bz0xXm47MT09PWkuc3dpdGNoRmxhZyYmKG49byk7cj1pLm5scHN9ZWxzZXtvPW47cj1pLm5tcHN9fWRvezA9PT10aGlzLmN0JiZ0aGlzLmJ5dGVJbigpO2M8PD0xO3RoaXMuY2hpZ2g9dGhpcy5jaGlnaDw8MSY2NTUzNXx0aGlzLmNsb3c+PjE1JjE7dGhpcy5jbG93PXRoaXMuY2xvdzw8MSY2NTUzNTt0aGlzLmN0LS19d2hpbGUoMD09KDMyNzY4JmMpKTt0aGlzLmE9YztlW3RdPXI8PDF8bjtyZXR1cm4gb319fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSnBlZ1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyNikscz1hKDIpO2NsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09cil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWF9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYodGhpcy5mb3JjZVJHQiYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxuPW5ldyBJbnQzMkFycmF5KHIpO2xldCBpPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe25bZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtuW2UrMV09dFtlXSpzfDA7MjU2PT09bltlXSYmMD09PW5bZSsxXXx8KGk9ITApfWkmJihlLmRlY29kZVRyYW5zZm9ybT1uKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIG4uRGljdCl7Y29uc3QgdD10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcih0KSYmKGUuY29sb3JUcmFuc2Zvcm09dCl9Y29uc3QgYT1uZXcgaS5KcGVnSW1hZ2UoZSk7YS5wYXJzZSh0aGlzLmJ5dGVzKTtjb25zdCByPWEuZ2V0RGF0YSh7d2lkdGg6dGhpcy5kcmF3V2lkdGgsaGVpZ2h0OnRoaXMuZHJhd0hlaWdodCxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9cjt0aGlzLmJ1ZmZlckxlbmd0aD1yLmxlbmd0aDt0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPUpwZWdTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5KcGVnSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDQpO2NsYXNzIEpwZWdFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihgSlBFRyBlcnJvcjogJHtlfWAsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIHIuQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyByLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLHM9NDAxNyxvPTc5OSxjPTM0MDYsbD0yMjc2LGg9MTU2Nyx1PTM3ODQsZD01NzkzLGY9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsbj0wLGk9MTY7Zm9yKDtpPjAmJiFlW2ktMV07KWktLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8aTthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtuXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31uKyt9aWYoYSsxPGkpe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscyxvLGMsbCxoLHUsZD0hMSl7Y29uc3QgZj1hLm1jdXNQZXJMaW5lLGc9YS5wcm9ncmVzc2l2ZSxwPXQ7bGV0IG09MCxiPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGI+MCl7Yi0tO3JldHVybiBtPj5iJjF9bT1lW3QrK107aWYoMjU1PT09bSl7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmZCl7dCs9Mjtjb25zdCByPSgwLG4ucmVhZFVpbnQxNikoZSx0KTt0Kz0yO2lmKHI+MCYmciE9PWEuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIscil9ZWxzZSBpZigyMTc9PT1yKXtpZihkKXtjb25zdCBlPXgqKDg9PT1hLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChhLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhtPDw4fHIpLnRvU3RyaW5nKDE2KX1gKX19Yj03O3JldHVybiBtPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB5PTA7bGV0IHcsUz0wO2xldCB4PTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxhLHIsbil7Y29uc3QgaT1hJWY7eD0oYS9mfDApKmUudityO2NvbnN0IHM9aSplLmgrbjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx4LHMpKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsYSl7eD1hL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IHI9YSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseCxyKSl9Y29uc3Qgaz1zLmxlbmd0aDtsZXQgQyx2LEYsTyxULE07TT1nPzA9PT1jPzA9PT1oP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBhPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQykscj0wPT09YT8wOnJlY2VpdmVBbmRFeHRlbmQoYSk8PHU7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1yfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDx1fTowPT09aD9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYoeT4wKXt5LS07cmV0dXJufWxldCBhPWM7Y29uc3Qgcj1sO2Zvcig7YTw9cjspe2NvbnN0IHI9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxuPTE1JnIscz1yPj40O2lmKDA9PT1uKXtpZihzPDE1KXt5PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9YSs9MTY7Y29udGludWV9YSs9cztjb25zdCBvPWlbYV07ZS5ibG9ja0RhdGFbdCtvXT1yZWNlaXZlQW5kRXh0ZW5kKG4pKigxPDx1KTthKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgYT1jO2NvbnN0IHI9bDtsZXQgbixzLG89MDtmb3IoO2E8PXI7KXtjb25zdCByPXQraVthXSxjPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goUyl7Y2FzZSAwOnM9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtuPTE1JnM7bz1zPj40O2lmKDA9PT1uKWlmKG88MTUpe3k9cmVjZWl2ZShvKSsoMTw8byk7Uz00fWVsc2V7bz0xNjtTPTF9ZWxzZXtpZigxIT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO3c9cmVjZWl2ZUFuZEV4dGVuZChuKTtTPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSk7ZWxzZXtvLS07MD09PW8mJihTPTI9PT1TPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1jKihyZWFkQml0KCk8PHUpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09dzw8dTtTPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPWMqKHJlYWRCaXQoKTw8dSkpfWErK31pZig0PT09Uyl7eS0tOzA9PT15JiYoUz0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgbj0xO2Zvcig7bjw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KWJyZWFrO24rPTE2O2NvbnRpbnVlfW4rPXM7Y29uc3Qgbz1pW25dO2UuYmxvY2tEYXRhW3Qrb109cmVjZWl2ZUFuZEV4dGVuZChyKTtuKyt9fTtsZXQgRSxELE4sUixMPTA7RD0xPT09az9zWzBdLmJsb2Nrc1BlckxpbmUqc1swXS5ibG9ja3NQZXJDb2x1bW46ZiphLm1jdXNQZXJDb2x1bW47Zm9yKDtMPD1EOyl7Y29uc3QgYT1vP01hdGgubWluKEQtTCxvKTpEO2lmKGE+MCl7Zm9yKHY9MDt2PGs7disrKXNbdl0ucHJlZD0wO3k9MDtpZigxPT09ayl7Qz1zWzBdO2ZvcihUPTA7VDxhO1QrKyl7ZGVjb2RlQmxvY2soQyxNLEwpO0wrK319ZWxzZSBmb3IoVD0wO1Q8YTtUKyspe2Zvcih2PTA7djxrO3YrKyl7Qz1zW3ZdO049Qy5oO1I9Qy52O2ZvcihGPTA7RjxSO0YrKylmb3IoTz0wO088TjtPKyspZGVjb2RlTWN1KEMsTSxMLEYsTyl9TCsrfX1iPTA7RT1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighRSlicmVhaztpZihFLmludmFsaWQpe2NvbnN0IGU9YT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxyLndhcm4pKGBkZWNvZGVTY2FuIC0gJHtlfSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7RS5pbnZhbGlkfWApO3Q9RS5vZmZzZXR9aWYoIShFLm1hcmtlcj49NjU0ODgmJkUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1wfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsYSl7Y29uc3Qgcj1lLnF1YW50aXphdGlvblRhYmxlLG49ZS5ibG9ja0RhdGE7bGV0IGksZyxwLG0sYix5LHcsUyx4LGssQyx2LEYsTyxULE0sRTtpZighcil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe3g9blt0K2VdO2s9blt0K2UrMV07Qz1uW3QrZSsyXTt2PW5bdCtlKzNdO0Y9blt0K2UrNF07Tz1uW3QrZSs1XTtUPW5bdCtlKzZdO009blt0K2UrN107eCo9cltlXTtpZigwIT0oa3xDfHZ8RnxPfFR8TSkpe2sqPXJbZSsxXTtDKj1yW2UrMl07dio9cltlKzNdO0YqPXJbZSs0XTtPKj1yW2UrNV07VCo9cltlKzZdO00qPXJbZSs3XTtpPWQqeCsxMjg+Pjg7Zz1kKkYrMTI4Pj44O3A9QzttPVQ7Yj1mKihrLU0pKzEyOD4+ODtTPWYqKGsrTSkrMTI4Pj44O3k9djw8NDt3PU88PDQ7aT1pK2crMT4+MTtnPWktZztFPXAqdSttKmgrMTI4Pj44O3A9cCpoLW0qdSsxMjg+Pjg7bT1FO2I9Yit3KzE+PjE7dz1iLXc7Uz1TK3krMT4+MTt5PVMteTtpPWkrbSsxPj4xO209aS1tO2c9ZytwKzE+PjE7cD1nLXA7RT1iKmwrUypjKzIwNDg+PjEyO2I9YipjLVMqbCsyMDQ4Pj4xMjtTPUU7RT15Km8rdypzKzIwNDg+PjEyO3k9eSpzLXcqbysyMDQ4Pj4xMjt3PUU7YVtlXT1pK1M7YVtlKzddPWktUzthW2UrMV09Zyt3O2FbZSs2XT1nLXc7YVtlKzJdPXAreTthW2UrNV09cC15O2FbZSszXT1tK2I7YVtlKzRdPW0tYn1lbHNle0U9ZCp4KzUxMj4+MTA7YVtlXT1FO2FbZSsxXT1FO2FbZSsyXT1FO2FbZSszXT1FO2FbZSs0XT1FO2FbZSs1XT1FO2FbZSs2XT1FO2FbZSs3XT1FfX1mb3IobGV0IGU9MDtlPDg7KytlKXt4PWFbZV07az1hW2UrOF07Qz1hW2UrMTZdO3Y9YVtlKzI0XTtGPWFbZSszMl07Tz1hW2UrNDBdO1Q9YVtlKzQ4XTtNPWFbZSs1Nl07aWYoMCE9KGt8Q3x2fEZ8T3xUfE0pKXtpPWQqeCsyMDQ4Pj4xMjtnPWQqRisyMDQ4Pj4xMjtwPUM7bT1UO2I9Ziooay1NKSsyMDQ4Pj4xMjtTPWYqKGsrTSkrMjA0OD4+MTI7eT12O3c9TztpPTQxMTIrKGkrZysxPj4xKTtnPWktZztFPXAqdSttKmgrMjA0OD4+MTI7cD1wKmgtbSp1KzIwNDg+PjEyO209RTtiPWIrdysxPj4xO3c9Yi13O1M9Uyt5KzE+PjE7eT1TLXk7aT1pK20rMT4+MTttPWktbTtnPWcrcCsxPj4xO3A9Zy1wO0U9YipsK1MqYysyMDQ4Pj4xMjtiPWIqYy1TKmwrMjA0OD4+MTI7Uz1FO0U9eSpvK3cqcysyMDQ4Pj4xMjt5PXkqcy13Km8rMjA0OD4+MTI7dz1FO3g9aStTO009aS1TO2s9Zyt3O1Q9Zy13O0M9cCt5O089cC15O3Y9bStiO0Y9bS1iO3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7azwxNj9rPTA6az49NDA4MD9rPTI1NTprPj49NDtDPDE2P0M9MDpDPj00MDgwP0M9MjU1OkM+Pj00O3Y8MTY/dj0wOnY+PTQwODA/dj0yNTU6dj4+PTQ7RjwxNj9GPTA6Rj49NDA4MD9GPTI1NTpGPj49NDtPPDE2P089MDpPPj00MDgwP089MjU1Ok8+Pj00O1Q8MTY/VD0wOlQ+PTQwODA/VD0yNTU6VD4+PTQ7TTwxNj9NPTA6TT49NDA4MD9NPTI1NTpNPj49NDtuW3QrZV09eDtuW3QrZSs4XT1rO25bdCtlKzE2XT1DO25bdCtlKzI0XT12O25bdCtlKzMyXT1GO25bdCtlKzQwXT1PO25bdCtlKzQ4XT1UO25bdCtlKzU2XT1NfWVsc2V7RT1kKngrODE5Mj4+MTQ7RT1FPC0yMDQwPzA6RT49MjAyND8yNTU6RSsyMDU2Pj40O25bdCtlXT1FO25bdCtlKzhdPUU7blt0K2UrMTZdPUU7blt0K2UrMjRdPUU7blt0K2UrMzJdPUU7blt0K2UrNDBdPUU7blt0K2UrNDhdPUU7blt0K2UrNTZdPUV9fX1mdW5jdGlvbiBidWlsZENvbXBvbmVudERhdGEoZSx0KXtjb25zdCBhPXQuYmxvY2tzUGVyTGluZSxyPXQuYmxvY2tzUGVyQ29sdW1uLG49bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8cjtlKyspZm9yKGxldCByPTA7cjxhO3IrKyl7cXVhbnRpemVBbmRJbnZlcnNlKHQsZ2V0QmxvY2tCdWZmZXJPZmZzZXQodCxlLHIpLG4pfXJldHVybiB0LmJsb2NrRGF0YX1mdW5jdGlvbiBmaW5kTmV4dEZpbGVNYXJrZXIoZSx0LGE9dCl7Y29uc3Qgcj1lLmxlbmd0aC0xO2xldCBpPWE8dD9hOnQ7aWYodD49cilyZXR1cm4gbnVsbDtjb25zdCBzPSgwLG4ucmVhZFVpbnQxNikoZSx0KTtpZihzPj02NTQ3MiYmczw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6cyxvZmZzZXQ6dH07bGV0IG89KDAsbi5yZWFkVWludDE2KShlLGkpO2Zvcig7IShvPj02NTQ3MiYmbzw9NjU1MzQpOyl7aWYoKytpPj1yKXJldHVybiBudWxsO289KDAsbi5yZWFkVWludDE2KShlLGkpfXJldHVybntpbnZhbGlkOnMudG9TdHJpbmcoMTYpLG1hcmtlcjpvLG9mZnNldDppfX10LkpwZWdJbWFnZT1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2Z1bmN0aW9uIHJlYWREYXRhQmxvY2soKXtjb25zdCB0PSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2xldCBhPW8rdC0yO2NvbnN0IGk9ZmluZE5leHRGaWxlTWFya2VyKGUsYSxvKTtpZihpJiZpLmludmFsaWQpeygwLHIud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIitpLmludmFsaWQpO2E9aS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KG8sYSk7bys9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksYT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCByIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgbj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqci5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKnIudi9lLm1heFYpLHM9dCpyLmgsbz02NCooYSpyLnYpKihzKzEpO3IuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO3IuYmxvY2tzUGVyTGluZT1uO3IuYmxvY2tzUGVyQ29sdW1uPWl9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1hfWxldCBhLHMsbz0wLGM9bnVsbCxsPW51bGwsaD0wO2NvbnN0IHU9W10sZD1bXSxmPVtdO2xldCBnPSgwLG4ucmVhZFVpbnQxNikoZSxvKTtvKz0yO2lmKDY1NDk2IT09Zyl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7Zz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjtlOmZvcig7NjU0OTchPT1nOyl7bGV0IHAsbSxiO3N3aXRjaChnKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgeT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1nJiY3ND09PXlbMF0mJjcwPT09eVsxXSYmNzM9PT15WzJdJiY3MD09PXlbM10mJjA9PT15WzRdJiYoYz17dmVyc2lvbjp7bWFqb3I6eVs1XSxtaW5vcjp5WzZdfSxkZW5zaXR5VW5pdHM6eVs3XSx4RGVuc2l0eTp5WzhdPDw4fHlbOV0seURlbnNpdHk6eVsxMF08PDh8eVsxMV0sdGh1bWJXaWR0aDp5WzEyXSx0aHVtYkhlaWdodDp5WzEzXSx0aHVtYkRhdGE6eS5zdWJhcnJheSgxNCwxNCszKnlbMTJdKnlbMTNdKX0pOzY1NTE4PT09ZyYmNjU9PT15WzBdJiYxMDA9PT15WzFdJiYxMTE9PT15WzJdJiY5OD09PXlbM10mJjEwMT09PXlbNF0mJihsPXt2ZXJzaW9uOnlbNV08PDh8eVs2XSxmbGFnczA6eVs3XTw8OHx5WzhdLGZsYWdzMTp5WzldPDw4fHlbMTBdLHRyYW5zZm9ybUNvZGU6eVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IHc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7Y29uc3QgUz13K28tMjtsZXQgeDtmb3IoO288Uzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihtPTA7bTw2NDttKyspe3g9aVttXTthW3hdPWVbbysrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKG09MDttPDY0O20rKyl7eD1pW21dO2FbeF09KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9fXVbMTUmdF09YX1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIk9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZCIpO28rPTI7YT17fTthLmV4dGVuZGVkPTY1NDczPT09ZzthLnByb2dyZXNzaXZlPTY1NDc0PT09ZzthLnByZWNpc2lvbj1lW28rK107Y29uc3Qgaz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9MjthLnNjYW5MaW5lcz10fHxrO2Euc2FtcGxlc1BlckxpbmU9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YS5jb21wb25lbnRzPVtdO2EuY29tcG9uZW50SWRzPXt9O2NvbnN0IEM9ZVtvKytdO2xldCB2PTAsRj0wO2ZvcihwPTA7cDxDO3ArKyl7Y29uc3QgdD1lW29dLHI9ZVtvKzFdPj40LG49MTUmZVtvKzFdO3Y8ciYmKHY9cik7RjxuJiYoRj1uKTtjb25zdCBpPWVbbysyXTtiPWEuY29tcG9uZW50cy5wdXNoKHtoOnIsdjpuLHF1YW50aXphdGlvbklkOmkscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO2EuY29tcG9uZW50SWRzW3RdPWItMTtvKz0zfWEubWF4SD12O2EubWF4Vj1GO3ByZXBhcmVDb21wb25lbnRzKGEpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTz0oMCxuLnJlYWRVaW50MTYpKGUsbyk7bys9Mjtmb3IocD0yO3A8Tzspe2NvbnN0IHQ9ZVtvKytdLGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCByPTA7Zm9yKG09MDttPDE2O20rKyxvKyspcis9YVttXT1lW29dO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7Zm9yKG09MDttPHI7bSsrLG8rKyluW21dPWVbb107cCs9MTcrcjsodD4+ND09MD9mOmQpWzE1JnRdPWJ1aWxkSHVmZm1hblRhYmxlKGEsbil9YnJlYWs7Y2FzZSA2NTUwMTpvKz0yO3M9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7YnJlYWs7Y2FzZSA2NTQ5ODpjb25zdCBUPTE9PSsraCYmIXQ7bys9Mjtjb25zdCBNPWVbbysrXSxFPVtdO2ZvcihwPTA7cDxNO3ArKyl7Y29uc3QgdD1lW28rK10scj1hLmNvbXBvbmVudElkc1t0XSxuPWEuY29tcG9uZW50c1tyXTtuLmluZGV4PXQ7Y29uc3QgaT1lW28rK107bi5odWZmbWFuVGFibGVEQz1mW2k+PjRdO24uaHVmZm1hblRhYmxlQUM9ZFsxNSZpXTtFLnB1c2gobil9Y29uc3QgRD1lW28rK10sTj1lW28rK10sUj1lW28rK107dHJ5e2NvbnN0IHQ9ZGVjb2RlU2NhbihlLG8sYSxFLHMsRCxOLFI+PjQsMTUmUixUKTtvKz10fWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7KDAsci53YXJuKShgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXsoMCxyLndhcm4pKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6bys9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbb10mJm8tLTticmVhaztkZWZhdWx0OmNvbnN0IEw9ZmluZE5leHRGaWxlTWFya2VyKGUsby0yLG8tMyk7aWYoTCYmTC5pbnZhbGlkKXsoMCxyLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK0wuaW52YWxpZCk7bz1MLm9mZnNldDticmVha31pZighTHx8bz49ZS5sZW5ndGgtMSl7KDAsci53YXJuKSgiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrZy50b1N0cmluZygxNikpfWc9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTJ9dGhpcy53aWR0aD1hLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PWEuc2NhbkxpbmVzO3RoaXMuamZpZj1jO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgYS5jb21wb25lbnRzKXtjb25zdCB0PXVbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvYS5tYXhILHNjYWxlWTplLnYvYS5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofV9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKGUsdCxhPSExKXtjb25zdCByPXRoaXMud2lkdGgvZSxuPXRoaXMuaGVpZ2h0L3Q7bGV0IGkscyxvLGMsbCxoLHUsZCxmLGcscCxtPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHk9ZSp0KmIsdz1uZXcgVWludDhDbGFtcGVkQXJyYXkoeSksUz1uZXcgVWludDMyQXJyYXkoZSkseD00Mjk0OTY3Mjg4O2xldCBrO2Zvcih1PTA7dTxiO3UrKyl7aT10aGlzLmNvbXBvbmVudHNbdV07cz1pLnNjYWxlWCpyO289aS5zY2FsZVkqbjttPXU7cD1pLm91dHB1dDtjPWkuYmxvY2tzUGVyTGluZSsxPDwzO2lmKHMhPT1rKXtmb3IobD0wO2w8ZTtsKyspe2Q9MHxsKnM7U1tsXT0oZCZ4KTw8M3w3JmR9az1zfWZvcihoPTA7aDx0O2grKyl7ZD0wfGgqbztnPWMqKGQmeCl8KDcmZCk8PDM7Zm9yKGw9MDtsPGU7bCsrKXt3W21dPXBbZytTW2xdXTttKz1ifX19bGV0IEM9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2F8fDQhPT1ifHxDfHwoQz1uZXcgSW50MzJBcnJheShbLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTUsLTI1NiwyNTVdKSk7aWYoQylmb3IodT0wO3U8eTspZm9yKGQ9MCxmPTA7ZDxiO2QrKyx1KyssZis9Mil3W3VdPSh3W3VdKkNbZl0+PjgpK0NbZisxXTtyZXR1cm4gd31nZXQgX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKCl7cmV0dXJuIHRoaXMuYWRvYmU/ISF0aGlzLmFkb2JlLnRyYW5zZm9ybUNvZGU6Mz09PXRoaXMubnVtQ29tcG9uZW50cz8wIT09dGhpcy5fY29sb3JUcmFuc2Zvcm0mJig4MiE9PXRoaXMuY29tcG9uZW50c1swXS5pbmRleHx8NzEhPT10aGlzLmNvbXBvbmVudHNbMV0uaW5kZXh8fDY2IT09dGhpcy5jb21wb25lbnRzWzJdLmluZGV4KToxPT09dGhpcy5fY29sb3JUcmFuc2Zvcm19X2NvbnZlcnRZY2NUb1JnYihlKXtsZXQgdCxhLHI7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bis9Myl7dD1lW25dO2E9ZVtuKzFdO3I9ZVtuKzJdO2Vbbl09dC0xNzkuNDU2KzEuNDAyKnI7ZVtuKzFdPXQrMTM1LjQ1OS0uMzQ0KmEtLjcxNCpyO2VbbisyXT10LTIyNi44MTYrMS43NzIqYX1yZXR1cm4gZX1fY29udmVydFljY2tUb1JnYihlKXtsZXQgdCxhLHIsbixpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl7dD1lW3NdO2E9ZVtzKzFdO3I9ZVtzKzJdO249ZVtzKzNdO2VbaSsrXT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqbi0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3Km4rMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMypuKy40ODM1NzA4ODQ1MTI2NSkrbiooLS4wMDAzMzYxOTcxNzc2MTgzOTQqbisuNDg0NzkxNTYxNDkwNzc2KTtlW2krK109MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3Km4tLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKm4tLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4Km4rLjI1ODAyOTEwMjA2ODQ1KStuKigtLjAwMDMxODkxMzExNzU4ODMyOCpuLS4yMTM3NDI0MDAzMjM2NjUpO2VbaSsrXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MipuKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKm4tLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3Km4rLjExNjkzNTAyMDQ2NTE0NSkrbiooLS4wMDAzNDM1MzE5OTY1MTA1NTUqbisuMjQxNjUyNjAyMzI0MDcpfXJldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGEscjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKz00KXt0PWVbbl07YT1lW24rMV07cj1lW24rMl07ZVtuXT00MzQuNDU2LXQtMS40MDIqcjtlW24rMV09MTE5LjU0MS10Ky4zNDQqYSsuNzE0KnI7ZVtuKzJdPTQ4MS44MTYtdC0xLjc3MiphfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGEscixuLGk9MDtmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKz00KXt0PWVbc107YT1lW3MrMV07cj1lW3MrMl07bj1lW3MrM107ZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipuLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpuLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqbisuMDY4Njc0MjIzODU5NTM0NSktbiooLjAwMDMzNjE5NzE3NzYxODM5MzcqbisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqbi0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqbi0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqbi0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLW4qKC4wMDAzMTg5MTMxMTc1ODgzMjgxKm4rLjczNjQ4ODM4MDc3MzMxNjgpO2VbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqbi0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqbi0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqbi0uNzU5MTQ1NDY0OTc0OTYwOSktbiooLjAwMDM0MzUzMTk5NjUxMDU1NTMqbisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBuPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJmEpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbi5sZW5ndGgpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2Ygbil7ZVt0KytdPWE7ZVt0KytdPWE7ZVt0KytdPWF9cmV0dXJuIGV9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYihuKTtpZig0PT09dGhpcy5udW1Db21wb25lbnRzKXtpZih0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZClyZXR1cm4gYT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweFN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDI4KSxpPWEoMik7Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBuLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLGE9ZS5oZWlnaHQscj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBuPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqcik7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Y29uc3QgaT1lLnRpbGVzW2FdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKnI7Y29uc3QgZj10KnIsZz1zKnI7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTtuLnNldChlLGQpO3UrPWc7ZCs9Zn19dGhpcy5idWZmZXI9bn10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPUpweFN0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkpweEltYWdlPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoMjQpO2NsYXNzIEpweEVycm9yIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGBKUFggZXJyb3I6ICR7ZX1gLCJKcHhFcnJvciIpfX1jb25zdCBzPXtMTDowLExIOjEsSEw6MSxISDoyfTt0LkpweEltYWdlPWNsYXNzIEpweEltYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZT0hMX1wYXJzZShlKXtpZig2NTM1OT09PSgwLG4ucmVhZFVpbnQxNikoZSwwKSl7dGhpcy5wYXJzZUNvZGVzdHJlYW0oZSwwLGUubGVuZ3RoKTtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0Oyl7bGV0IGk9OCxzPSgwLG4ucmVhZFVpbnQzMikoZSxhKTtjb25zdCBvPSgwLG4ucmVhZFVpbnQzMikoZSxhKzQpO2ErPWk7aWYoMT09PXMpe3M9NDI5NDk2NzI5NiooMCxuLnJlYWRVaW50MzIpKGUsYSkrKDAsbi5yZWFkVWludDMyKShlLGErNCk7YSs9ODtpKz04fTA9PT1zJiYocz10LWEraSk7aWYoczxpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCBib3ggZmllbGQgc2l6ZSIpO2NvbnN0IGM9cy1pO2xldCBsPSEwO3N3aXRjaChvKXtjYXNlIDE3ODU3Mzc4MzI6bD0hMTticmVhaztjYXNlIDE2NjgyNDY2NDI6Y29uc3QgdD1lW2FdO2lmKDE9PT10KXtjb25zdCB0PSgwLG4ucmVhZFVpbnQzMikoZSxhKzMpO3N3aXRjaCh0KXtjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpicmVhaztkZWZhdWx0OigwLHIud2FybikoIlVua25vd24gY29sb3JzcGFjZSAiK3QpfX1lbHNlIDI9PT10JiYoMCxyLmluZm8pKCJJQ0MgcHJvZmlsZSBub3Qgc3VwcG9ydGVkIik7YnJlYWs7Y2FzZSAxNzg1NzM3ODI3OnRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsYSxhK2MpO2JyZWFrO2Nhc2UgMTc4MzYzNmUzOjIxODc5MzczOCE9PSgwLG4ucmVhZFVpbnQzMikoZSxhKSYmKDAsci53YXJuKSgiSW52YWxpZCBKUDIgc2lnbmF0dXJlIik7YnJlYWs7Y2FzZSAxNzgzNjM0NDU4OmNhc2UgMTcxODkwOTI5NjpjYXNlIDE5MjAwOTk2OTc6Y2FzZSAxOTE5MjUxMjMyOmNhc2UgMTc2ODQ0OTEzODpicmVhaztkZWZhdWx0OmNvbnN0IGk9U3RyaW5nLmZyb21DaGFyQ29kZShvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvKTsoMCxyLndhcm4pKGBVbnN1cHBvcnRlZCBoZWFkZXIgdHlwZSAke299ICgke2l9KS5gKX1sJiYoYSs9Yyl9fXBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7dGhpcy53aWR0aD10LXI7dGhpcy5oZWlnaHQ9YS1uO3RoaXMuY29tcG9uZW50c0NvdW50PWk7dGhpcy5iaXRzUGVyQ29tcG9uZW50PTg7cmV0dXJufX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX1wYXJzZUNvZGVzdHJlYW0oZSx0LGEpe2NvbnN0IGk9e307bGV0IHM9ITE7dHJ5e2xldCBvPXQ7Zm9yKDtvKzE8YTspe2NvbnN0IHQ9KDAsbi5yZWFkVWludDE2KShlLG8pO28rPTI7bGV0IGEsYyxsLGgsdSxkLGY9MDtzd2l0Y2godCl7Y2FzZSA2NTM1OTppLm1haW5IZWFkZXI9ITA7YnJlYWs7Y2FzZSA2NTQ5NzpicmVhaztjYXNlIDY1MzYxOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IGc9e307Zy5Yc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2cuWXNpej0oMCxuLnJlYWRVaW50MzIpKGUsbys4KTtnLlhPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzEyKTtnLllPc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzE2KTtnLlhUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzIwKTtnLllUc2l6PSgwLG4ucmVhZFVpbnQzMikoZSxvKzI0KTtnLlhUT3Npej0oMCxuLnJlYWRVaW50MzIpKGUsbysyOCk7Zy5ZVE9zaXo9KDAsbi5yZWFkVWludDMyKShlLG8rMzIpO2NvbnN0IHA9KDAsbi5yZWFkVWludDE2KShlLG8rMzYpO2cuQ3Npej1wO2NvbnN0IG09W107YT1vKzM4O2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IHQ9e3ByZWNpc2lvbjoxKygxMjcmZVthXSksaXNTaWduZWQ6ISEoMTI4JmVbYV0pLFhSc2l6OmVbYSsxXSxZUnNpejplW2ErMl19O2ErPTM7Y2FsY3VsYXRlQ29tcG9uZW50RGltZW5zaW9ucyh0LGcpO20ucHVzaCh0KX1pLlNJWj1nO2kuY29tcG9uZW50cz1tO2NhbGN1bGF0ZVRpbGVHcmlkcyhpLG0pO2kuUUNDPVtdO2kuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgYj17fTthPW8rMjtjPWVbYSsrXTtzd2l0Y2goMzEmYyl7Y2FzZSAwOmg9ODt1PSEwO2JyZWFrO2Nhc2UgMTpoPTE2O3U9ITE7YnJlYWs7Y2FzZSAyOmg9MTY7dT0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Yi5ub1F1YW50aXphdGlvbj04PT09aDtiLnNjYWxhckV4cG91bmRlZD11O2IuZ3VhcmRCaXRzPWM+PjU7bD1bXTtmb3IoO2E8ZitvOyl7Y29uc3QgdD17fTtpZig4PT09aCl7dC5lcHNpbG9uPWVbYSsrXT4+Mzt0Lm11PTB9ZWxzZXt0LmVwc2lsb249ZVthXT4+Mzt0Lm11PSg3JmVbYV0pPDw4fGVbYSsxXTthKz0yfWwucHVzaCh0KX1iLlNQcWNkcz1sO2lmKGkubWFpbkhlYWRlcilpLlFDRD1iO2Vsc2V7aS5jdXJyZW50VGlsZS5RQ0Q9YjtpLmN1cnJlbnRUaWxlLlFDQz1bXX1icmVhaztjYXNlIDY1MzczOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IHk9e307YT1vKzI7bGV0IHc7aWYoaS5TSVouQ3NpejwyNTcpdz1lW2ErK107ZWxzZXt3PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yfWM9ZVthKytdO3N3aXRjaCgzMSZjKXtjYXNlIDA6aD04O3U9ITA7YnJlYWs7Y2FzZSAxOmg9MTY7dT0hMTticmVhaztjYXNlIDI6aD0xNjt1PSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX15Lm5vUXVhbnRpemF0aW9uPTg9PT1oO3kuc2NhbGFyRXhwb3VuZGVkPXU7eS5ndWFyZEJpdHM9Yz4+NTtsPVtdO2Zvcig7YTxmK287KXtjb25zdCB0PXt9O2lmKDg9PT1oKXt0LmVwc2lsb249ZVthKytdPj4zO3QubXU9MH1lbHNle3QuZXBzaWxvbj1lW2FdPj4zO3QubXU9KDcmZVthXSk8PDh8ZVthKzFdO2ErPTJ9bC5wdXNoKHQpfXkuU1BxY2RzPWw7aS5tYWluSGVhZGVyP2kuUUNDW3ddPXk6aS5jdXJyZW50VGlsZS5RQ0Nbd109eTticmVhaztjYXNlIDY1MzYyOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2NvbnN0IFM9e307YT1vKzI7Y29uc3QgeD1lW2ErK107Uy5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmeCk7Uy5zb3BNYXJrZXJVc2VkPSEhKDImeCk7Uy5lcGhNYXJrZXJVc2VkPSEhKDQmeCk7Uy5wcm9ncmVzc2lvbk9yZGVyPWVbYSsrXTtTLmxheWVyc0NvdW50PSgwLG4ucmVhZFVpbnQxNikoZSxhKTthKz0yO1MubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVthKytdO1MuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbYSsrXTtTLnhjYj0yKygxNSZlW2ErK10pO1MueWNiPTIrKDE1JmVbYSsrXSk7Y29uc3Qgaz1lW2ErK107Uy5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmayk7Uy5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImayk7Uy50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZrKTtTLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZrKTtTLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmayk7Uy5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJmspO1MucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbYSsrXTtpZihTLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDthPGYrbzspe2NvbnN0IHI9ZVthKytdO3QucHVzaCh7UFB4OjE1JnIsUFB5OnI+PjR9KX1TLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgQz1bXTtTLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkMucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpO1MudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZDLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpO1MudmVydGljYWxseVN0cmlwZSYmQy5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIik7Uy5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZDLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKTtpZihDLmxlbmd0aD4wKXtzPSEwOygwLHIud2FybikoYEpQWDogVW5zdXBwb3J0ZWQgQ09EIG9wdGlvbnMgKCR7Qy5qb2luKCIsICIpfSkuYCl9aWYoaS5tYWluSGVhZGVyKWkuQ09EPVM7ZWxzZXtpLmN1cnJlbnRUaWxlLkNPRD1TO2kuY3VycmVudFRpbGUuQ09DPVtdfWJyZWFrO2Nhc2UgNjU0MjQ6Zj0oMCxuLnJlYWRVaW50MTYpKGUsbyk7ZD17fTtkLmluZGV4PSgwLG4ucmVhZFVpbnQxNikoZSxvKzIpO2QubGVuZ3RoPSgwLG4ucmVhZFVpbnQzMikoZSxvKzQpO2QuZGF0YUVuZD1kLmxlbmd0aCtvLTI7ZC5wYXJ0SW5kZXg9ZVtvKzhdO2QucGFydHNDb3VudD1lW28rOV07aS5tYWluSGVhZGVyPSExO2lmKDA9PT1kLnBhcnRJbmRleCl7ZC5DT0Q9aS5DT0Q7ZC5DT0M9aS5DT0Muc2xpY2UoMCk7ZC5RQ0Q9aS5RQ0Q7ZC5RQ0M9aS5RQ0Muc2xpY2UoMCl9aS5jdXJyZW50VGlsZT1kO2JyZWFrO2Nhc2UgNjU0Mjc6ZD1pLmN1cnJlbnRUaWxlO2lmKDA9PT1kLnBhcnRJbmRleCl7aW5pdGlhbGl6ZVRpbGUoaSxkLmluZGV4KTtidWlsZFBhY2tldHMoaSl9Zj1kLmRhdGFFbmQtbztwYXJzZVRpbGVQYWNrZXRzKGksZSxvLGYpO2JyZWFrO2Nhc2UgNjUzNjM6KDAsci53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOmY9KDAsbi5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9Zn19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgSnB4RXJyb3IoZS5tZXNzYWdlKTsoMCxyLndhcm4pKGBKUFg6IFRyeWluZyB0byByZWNvdmVyIGZyb206ICIke2UubWVzc2FnZX0iLmApfXRoaXMudGlsZXM9ZnVuY3Rpb24gdHJhbnNmb3JtQ29tcG9uZW50cyhlKXtjb25zdCB0PWUuU0laLGE9ZS5jb21wb25lbnRzLHI9dC5Dc2l6LG49W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXNbdF09dHJhbnNmb3JtVGlsZShlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKnIpLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1yLHQ9c1swXS5pdGVtcyxuPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1hWzBdLnByZWNpc2lvbi04O3U9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1yLTM7Zj10Lmxlbmd0aDtpZih5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1O3A9bltkXTttPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+Pmg7Y1tiKytdPWU+Pmg7Y1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KXtnPXRbZF0rdTtwPW5bZF07bT1vW2RdO2NbYisrXT1nKzEuNDAyKm0+Pmg7Y1tiKytdPWctLjM0NDEzKnAtLjcxNDE0Km0+Pmg7Y1tiKytdPWcrMS43NzIqcD4+aH1pZihlKWZvcihkPTAsYj0zO2Q8ZjtkKyssYis9NCljW2JdPWxbZF0rdT4+aH1lbHNlIGZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9c1tlXS5pdGVtcztoPWFbZV0ucHJlY2lzaW9uLTg7dT0uNSsoMTI4PDxoKTtmb3IoYj1lLGQ9MCxmPXQubGVuZ3RoO2Q8ZjtkKyspe2NbYl09dFtkXSt1Pj5oO2IrPXJ9fW4ucHVzaChsKX1yZXR1cm4gbn0oaSk7dGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6O3RoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXo7dGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2Z1bmN0aW9uIGNhbGN1bGF0ZUNvbXBvbmVudERpbWVuc2lvbnMoZSx0KXtlLngwPU1hdGguY2VpbCh0LlhPc2l6L2UuWFJzaXopO2UueDE9TWF0aC5jZWlsKHQuWHNpei9lLlhSc2l6KTtlLnkwPU1hdGguY2VpbCh0LllPc2l6L2UuWVJzaXopO2UueTE9TWF0aC5jZWlsKHQuWXNpei9lLllSc2l6KTtlLndpZHRoPWUueDEtZS54MDtlLmhlaWdodD1lLnkxLWUueTB9ZnVuY3Rpb24gY2FsY3VsYXRlVGlsZUdyaWRzKGUsdCl7Y29uc3QgYT1lLlNJWixyPVtdO2xldCBuO2NvbnN0IGk9TWF0aC5jZWlsKChhLlhzaXotYS5YVE9zaXopL2EuWFRzaXopLHM9TWF0aC5jZWlsKChhLllzaXotYS5ZVE9zaXopL2EuWVRzaXopO2ZvcihsZXQgZT0wO2U8cztlKyspZm9yKGxldCB0PTA7dDxpO3QrKyl7bj17fTtuLnR4MD1NYXRoLm1heChhLlhUT3Npeit0KmEuWFRzaXosYS5YT3Npeik7bi50eTA9TWF0aC5tYXgoYS5ZVE9zaXorZSphLllUc2l6LGEuWU9zaXopO24udHgxPU1hdGgubWluKGEuWFRPc2l6Kyh0KzEpKmEuWFRzaXosYS5Yc2l6KTtuLnR5MT1NYXRoLm1pbihhLllUT3NpeisoZSsxKSphLllUc2l6LGEuWXNpeik7bi53aWR0aD1uLnR4MS1uLnR4MDtuLmhlaWdodD1uLnR5MS1uLnR5MDtuLmNvbXBvbmVudHM9W107ci5wdXNoKG4pfWUudGlsZXM9cjtmb3IobGV0IGU9MCxpPWEuQ3NpejtlPGk7ZSsrKXtjb25zdCBhPXRbZV07Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPXt9O249clt0XTtpLnRjeDA9TWF0aC5jZWlsKG4udHgwL2EuWFJzaXopO2kudGN5MD1NYXRoLmNlaWwobi50eTAvYS5ZUnNpeik7aS50Y3gxPU1hdGguY2VpbChuLnR4MS9hLlhSc2l6KTtpLnRjeTE9TWF0aC5jZWlsKG4udHkxL2EuWVJzaXopO2kud2lkdGg9aS50Y3gxLWkudGN4MDtpLmhlaWdodD1pLnRjeTEtaS50Y3kwO24uY29tcG9uZW50c1tlXT1pfX19ZnVuY3Rpb24gZ2V0QmxvY2tzRGltZW5zaW9ucyhlLHQsYSl7Y29uc3Qgcj10LmNvZGluZ1N0eWxlUGFyYW1ldGVycyxuPXt9O2lmKHIuZW50cm9weUNvZGVyV2l0aEN1c3RvbVByZWNpbmN0cyl7bi5QUHg9ci5wcmVjaW5jdHNTaXplc1thXS5QUHg7bi5QUHk9ci5wcmVjaW5jdHNTaXplc1thXS5QUHl9ZWxzZXtuLlBQeD0xNTtuLlBQeT0xNX1uLnhjYl89YT4wP01hdGgubWluKHIueGNiLG4uUFB4LTEpOk1hdGgubWluKHIueGNiLG4uUFB4KTtuLnljYl89YT4wP01hdGgubWluKHIueWNiLG4uUFB5LTEpOk1hdGgubWluKHIueWNiLG4uUFB5KTtyZXR1cm4gbn1mdW5jdGlvbiBidWlsZFByZWNpbmN0cyhlLHQsYSl7Y29uc3Qgcj0xPDxhLlBQeCxuPTE8PGEuUFB5LGk9MD09PXQucmVzTGV2ZWwscz0xPDxhLlBQeCsoaT8wOi0xKSxvPTE8PGEuUFB5KyhpPzA6LTEpLGM9dC50cngxPnQudHJ4MD9NYXRoLmNlaWwodC50cngxL3IpLU1hdGguZmxvb3IodC50cngwL3IpOjAsbD10LnRyeTE+dC50cnkwP01hdGguY2VpbCh0LnRyeTEvbiktTWF0aC5mbG9vcih0LnRyeTAvbik6MCxoPWMqbDt0LnByZWNpbmN0UGFyYW1ldGVycz17cHJlY2luY3RXaWR0aDpyLHByZWNpbmN0SGVpZ2h0Om4sbnVtcHJlY2luY3Rzd2lkZTpjLG51bXByZWNpbmN0c2hpZ2g6bCxudW1wcmVjaW5jdHM6aCxwcmVjaW5jdFdpZHRoSW5TdWJiYW5kOnMscHJlY2luY3RIZWlnaHRJblN1YmJhbmQ6b319ZnVuY3Rpb24gYnVpbGRDb2RlYmxvY2tzKGUsdCxhKXtjb25zdCByPWEueGNiXyxuPWEueWNiXyxpPTE8PHIscz0xPDxuLG89dC50YngwPj5yLGM9dC50YnkwPj5uLGw9dC50YngxK2ktMT4+cixoPXQudGJ5MStzLTE+Pm4sdT10LnJlc29sdXRpb24ucHJlY2luY3RQYXJhbWV0ZXJzLGQ9W10sZj1bXTtsZXQgZyxwLG0sYjtmb3IocD1jO3A8aDtwKyspZm9yKGc9bztnPGw7ZysrKXttPXtjYng6ZyxjYnk6cCx0YngwOmkqZyx0YnkwOnMqcCx0YngxOmkqKGcrMSksdGJ5MTpzKihwKzEpfTttLnRieDBfPU1hdGgubWF4KHQudGJ4MCxtLnRieDApO20udGJ5MF89TWF0aC5tYXgodC50YnkwLG0udGJ5MCk7bS50YngxXz1NYXRoLm1pbih0LnRieDEsbS50YngxKTttLnRieTFfPU1hdGgubWluKHQudGJ5MSxtLnRieTEpO2I9TWF0aC5mbG9vcigobS50YngwXy10LnRieDApL3UucHJlY2luY3RXaWR0aEluU3ViYmFuZCkrTWF0aC5mbG9vcigobS50YnkwXy10LnRieTApL3UucHJlY2luY3RIZWlnaHRJblN1YmJhbmQpKnUubnVtcHJlY2luY3Rzd2lkZTttLnByZWNpbmN0TnVtYmVyPWI7bS5zdWJiYW5kVHlwZT10LnR5cGU7bS5MYmxvY2s9MztpZihtLnRieDFfPD1tLnRieDBffHxtLnRieTFfPD1tLnRieTBfKWNvbnRpbnVlO2QucHVzaChtKTtsZXQgZT1mW2JdO2lmKHZvaWQgMCE9PWUpe2c8ZS5jYnhNaW4/ZS5jYnhNaW49ZzpnPmUuY2J4TWF4JiYoZS5jYnhNYXg9Zyk7cDxlLmNieU1pbj9lLmNieE1pbj1wOnA+ZS5jYnlNYXgmJihlLmNieU1heD1wKX1lbHNlIGZbYl09ZT17Y2J4TWluOmcsY2J5TWluOnAsY2J4TWF4OmcsY2J5TWF4OnB9O20ucHJlY2luY3Q9ZX10LmNvZGVibG9ja1BhcmFtZXRlcnM9e2NvZGVibG9ja1dpZHRoOnIsY29kZWJsb2NrSGVpZ2h0Om4sbnVtY29kZWJsb2Nrd2lkZTpsLW8rMSxudW1jb2RlYmxvY2toaWdoOmgtYysxfTt0LmNvZGVibG9ja3M9ZDt0LnByZWNpbmN0cz1mfWZ1bmN0aW9uIGNyZWF0ZVBhY2tldChlLHQsYSl7Y29uc3Qgcj1bXSxuPWUuc3ViYmFuZHM7Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPW5bZV0uY29kZWJsb2Nrcztmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49YVtlXTtuLnByZWNpbmN0TnVtYmVyPT09dCYmci5wdXNoKG4pfX1yZXR1cm57bGF5ZXJOdW1iZXI6YSxjb2RlYmxvY2tzOnJ9fWZ1bmN0aW9uIExheWVyUmVzb2x1dGlvbkNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288bjtvKyspe2Zvcig7Yzw9cztjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLG8pO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25MYXllckNvbXBvbmVudFBvc2l0aW9uSXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsci5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBvPTAsYz0wLGw9MCxoPTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uIEpweEltYWdlX25leHRQYWNrZXQoKXtmb3IoO288PXM7bysrKXtmb3IoO2M8bjtjKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF07aWYobz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW29dLGE9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7aDxhOyl7Y29uc3QgZT1jcmVhdGVQYWNrZXQodCxoLGMpO2grKztyZXR1cm4gZX1oPTB9bD0wfWM9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzLG8sYyxsLGg9MDtmb3IoYz0wO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2g9TWF0aC5tYXgoaCxlLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpfWNvbnN0IHU9bmV3IEludDMyQXJyYXkoaCsxKTtmb3Iobz0wO288PWg7KytvKXtsZXQgZT0wO2ZvcihjPTA7YzxpOysrYyl7Y29uc3QgdD1yLmNvbXBvbmVudHNbY10ucmVzb2x1dGlvbnM7bzx0Lmxlbmd0aCYmKGU9TWF0aC5tYXgoZSx0W29dLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHMpKX11W29dPWV9cz0wO289MDtjPTA7bD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbiBKcHhJbWFnZV9uZXh0UGFja2V0KCl7Zm9yKDtvPD1oO28rKyl7Zm9yKDtsPHVbb107bCsrKXtmb3IoO2M8aTtjKyspe2NvbnN0IGU9ci5jb21wb25lbnRzW2NdO2lmKG8+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tvXSxhPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztpZighKGw+PWEpKXtmb3IoO3M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQsbCxzKTtzKys7cmV0dXJuIGV9cz0wfX1jPTB9bD0wfXRocm93IG5ldyBKcHhFcnJvcigiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gUG9zaXRpb25Db21wb25lbnRSZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKXtjb25zdCB0PWUuU0laLGE9ZS5jdXJyZW50VGlsZS5pbmRleCxyPWUudGlsZXNbYV0sbj1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz1nZXRQcmVjaW5jdFNpemVzSW5JbWFnZVNjYWxlKHIpLG89cztsZXQgYz0wLGw9MCxoPTAsdT0wLGQ9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7ZDxvLm1heE51bUhpZ2g7ZCsrKXtmb3IoO3U8by5tYXhOdW1XaWRlO3UrKyl7Zm9yKDtoPGk7aCsrKXtjb25zdCBlPXIuY29tcG9uZW50c1toXSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2w8PXQ7bCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbbF0sYT1zLmNvbXBvbmVudHNbaF0ucmVzb2x1dGlvbnNbbF0scj1nZXRQcmVjaW5jdEluZGV4SWZFeGlzdCh1LGQsYSxvLHQpO2lmKG51bGwhPT1yKXtmb3IoO2M8bjspe2NvbnN0IGU9Y3JlYXRlUGFja2V0KHQscixjKTtjKys7cmV0dXJuIGV9Yz0wfX1sPTB9aD0wfXU9MH10aHJvdyBuZXcgSnB4RXJyb3IoIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIENvbXBvbmVudFBvc2l0aW9uUmVzb2x1dGlvbkxheWVySXRlcmF0b3IoZSl7Y29uc3QgdD1lLlNJWixhPWUuY3VycmVudFRpbGUuaW5kZXgscj1lLnRpbGVzW2FdLG49ci5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6LHM9Z2V0UHJlY2luY3RTaXplc0luSW1hZ2VTY2FsZShyKTtsZXQgbz0wLGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24gSnB4SW1hZ2VfbmV4dFBhY2tldCgpe2Zvcig7bDxpOysrbCl7Y29uc3QgZT1yLmNvbXBvbmVudHNbbF0sdD1zLmNvbXBvbmVudHNbbF0sYT1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDt1PHQubWF4TnVtSGlnaDt1Kyspe2Zvcig7aDx0Lm1heE51bVdpZGU7aCsrKXtmb3IoO2M8PWE7YysrKXtjb25zdCBhPWUucmVzb2x1dGlvbnNbY10scj10LnJlc29sdXRpb25zW2NdLGk9Z2V0UHJlY2luY3RJbmRleElmRXhpc3QoaCx1LHIsdCxhKTtpZihudWxsIT09aSl7Zm9yKDtvPG47KXtjb25zdCBlPWNyZWF0ZVBhY2tldChhLGksbyk7bysrO3JldHVybiBlfW89MH19Yz0wfWg9MH11PTB9dGhyb3cgbmV3IEpweEVycm9yKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBnZXRQcmVjaW5jdEluZGV4SWZFeGlzdChlLHQsYSxyLG4pe2NvbnN0IGk9ZSpyLm1pbldpZHRoLHM9dCpyLm1pbkhlaWdodDtpZihpJWEud2lkdGghPTB8fHMlYS5oZWlnaHQhPTApcmV0dXJuIG51bGw7Y29uc3Qgbz1zL2Eud2lkdGgqbi5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZTtyZXR1cm4gaS9hLmhlaWdodCtvfWZ1bmN0aW9uIGdldFByZWNpbmN0U2l6ZXNJbkltYWdlU2NhbGUoZSl7Y29uc3QgdD1lLmNvbXBvbmVudHMubGVuZ3RoO2xldCBhPU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLG49MCxpPTA7Y29uc3Qgcz1uZXcgQXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyl7Y29uc3QgdD1lLmNvbXBvbmVudHNbb10sYz10LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbD1uZXcgQXJyYXkoYysxKTtsZXQgaD1OdW1iZXIuTUFYX1ZBTFVFLHU9TnVtYmVyLk1BWF9WQUxVRSxkPTAsZj0wLGc9MTtmb3IobGV0IGU9YztlPj0wOy0tZSl7Y29uc3QgYT10LnJlc29sdXRpb25zW2VdLHI9ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdFdpZHRoLG49ZyphLnByZWNpbmN0UGFyYW1ldGVycy5wcmVjaW5jdEhlaWdodDtoPU1hdGgubWluKGgscik7dT1NYXRoLm1pbih1LG4pO2Q9TWF0aC5tYXgoZCxhLnByZWNpbmN0UGFyYW1ldGVycy5udW1wcmVjaW5jdHN3aWRlKTtmPU1hdGgubWF4KGYsYS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzaGlnaCk7bFtlXT17d2lkdGg6cixoZWlnaHQ6bn07Zzw8PTF9YT1NYXRoLm1pbihhLGgpO3I9TWF0aC5taW4ocix1KTtuPU1hdGgubWF4KG4sZCk7aT1NYXRoLm1heChpLGYpO3Nbb109e3Jlc29sdXRpb25zOmwsbWluV2lkdGg6aCxtaW5IZWlnaHQ6dSxtYXhOdW1XaWRlOmQsbWF4TnVtSGlnaDpmfX1yZXR1cm57Y29tcG9uZW50czpzLG1pbldpZHRoOmEsbWluSGVpZ2h0OnIsbWF4TnVtV2lkZTpuLG1heE51bUhpZ2g6aX19ZnVuY3Rpb24gYnVpbGRQYWNrZXRzKGUpe2NvbnN0IHQ9ZS5TSVosYT1lLmN1cnJlbnRUaWxlLmluZGV4LHI9ZS50aWxlc1thXSxuPXQuQ3Npejtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCB0PXIuY29tcG9uZW50c1tlXSxhPXQuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxuPVtdLGk9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspe2NvbnN0IHI9Z2V0QmxvY2tzRGltZW5zaW9ucygwLHQsZSkscz17fSxvPTE8PGEtZTtzLnRyeDA9TWF0aC5jZWlsKHQudGN4MC9vKTtzLnRyeTA9TWF0aC5jZWlsKHQudGN5MC9vKTtzLnRyeDE9TWF0aC5jZWlsKHQudGN4MS9vKTtzLnRyeTE9TWF0aC5jZWlsKHQudGN5MS9vKTtzLnJlc0xldmVsPWU7YnVpbGRQcmVjaW5jdHMoMCxzLHIpO24ucHVzaChzKTtsZXQgYztpZigwPT09ZSl7Yz17fTtjLnR5cGU9IkxMIjtjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKTtjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKTtjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKTtjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKTtjLnJlc29sdXRpb249cztidWlsZENvZGVibG9ja3MoMCxjLHIpO2kucHVzaChjKTtzLnN1YmJhbmRzPVtjXX1lbHNle2NvbnN0IG49MTw8YS1lKzEsbz1bXTtjPXt9O2MudHlwZT0iSEwiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24pO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24pO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iTEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24pO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24pO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtjPXt9O2MudHlwZT0iSEgiO2MudGJ4MD1NYXRoLmNlaWwodC50Y3gwL24tLjUpO2MudGJ5MD1NYXRoLmNlaWwodC50Y3kwL24tLjUpO2MudGJ4MT1NYXRoLmNlaWwodC50Y3gxL24tLjUpO2MudGJ5MT1NYXRoLmNlaWwodC50Y3kxL24tLjUpO2MucmVzb2x1dGlvbj1zO2J1aWxkQ29kZWJsb2NrcygwLGMscik7aS5wdXNoKGMpO28ucHVzaChjKTtzLnN1YmJhbmRzPW99fXQucmVzb2x1dGlvbnM9bjt0LnN1YmJhbmRzPWl9Y29uc3QgaT1yLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMucHJvZ3Jlc3Npb25PcmRlcjtzd2l0Y2goaSl7Y2FzZSAwOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBMYXllclJlc29sdXRpb25Db21wb25lbnRQb3NpdGlvbkl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgMTpyLnBhY2tldHNJdGVyYXRvcj1uZXcgUmVzb2x1dGlvbkxheWVyQ29tcG9uZW50UG9zaXRpb25JdGVyYXRvcihlKTticmVhaztjYXNlIDI6ci5wYWNrZXRzSXRlcmF0b3I9bmV3IFJlc29sdXRpb25Qb3NpdGlvbkNvbXBvbmVudExheWVySXRlcmF0b3IoZSk7YnJlYWs7Y2FzZSAzOnIucGFja2V0c0l0ZXJhdG9yPW5ldyBQb3NpdGlvbkNvbXBvbmVudFJlc29sdXRpb25MYXllckl0ZXJhdG9yKGUpO2JyZWFrO2Nhc2UgNDpyLnBhY2tldHNJdGVyYXRvcj1uZXcgQ29tcG9uZW50UG9zaXRpb25SZXNvbHV0aW9uTGF5ZXJJdGVyYXRvcihlKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKcHhFcnJvcihgVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgJHtpfWApfX1mdW5jdGlvbiBwYXJzZVRpbGVQYWNrZXRzKGUsdCxhLHIpe2xldCBpLHM9MCxvPTAsYz0hMTtmdW5jdGlvbiByZWFkQml0cyhlKXtmb3IoO288ZTspe2NvbnN0IGU9dFthK3NdO3MrKztpZihjKXtpPWk8PDd8ZTtvKz03O2M9ITF9ZWxzZXtpPWk8PDh8ZTtvKz04fTI1NT09PWUmJihjPSEwKX1vLT1lO3JldHVybiBpPj4+byYoMTw8ZSktMX1mdW5jdGlvbiBza2lwTWFya2VySWZFcXVhbChlKXtpZigyNTU9PT10W2Ercy0xXSYmdFthK3NdPT09ZSl7c2tpcEJ5dGVzKDEpO3JldHVybiEwfWlmKDI1NT09PXRbYStzXSYmdFthK3MrMV09PT1lKXtza2lwQnl0ZXMoMik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gc2tpcEJ5dGVzKGUpe3MrPWV9ZnVuY3Rpb24gYWxpZ25Ub0J5dGUoKXtvPTA7aWYoYyl7cysrO2M9ITF9fWZ1bmN0aW9uIHJlYWRDb2RpbmdwYXNzZXMoKXtpZigwPT09cmVhZEJpdHMoMSkpcmV0dXJuIDE7aWYoMD09PXJlYWRCaXRzKDEpKXJldHVybiAyO2xldCBlPXJlYWRCaXRzKDIpO2lmKGU8MylyZXR1cm4gZSszO2U9cmVhZEJpdHMoNSk7aWYoZTwzMSlyZXR1cm4gZSs2O2U9cmVhZEJpdHMoNyk7cmV0dXJuIGUrMzd9Y29uc3QgbD1lLmN1cnJlbnRUaWxlLmluZGV4LGg9ZS50aWxlc1tsXSx1PWUuQ09ELnNvcE1hcmtlclVzZWQsZD1lLkNPRC5lcGhNYXJrZXJVc2VkLGY9aC5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPHI7KXthbGlnblRvQnl0ZSgpO3UmJnNraXBNYXJrZXJJZkVxdWFsKDE0NSkmJnNraXBCeXRlcyg0KTtjb25zdCBlPWYubmV4dFBhY2tldCgpO2lmKCFyZWFkQml0cygxKSljb250aW51ZTtjb25zdCByPWUubGF5ZXJOdW1iZXIsaT1bXTtsZXQgbztmb3IobGV0IHQ9MCxhPWUuY29kZWJsb2Nrcy5sZW5ndGg7dDxhO3QrKyl7bz1lLmNvZGVibG9ja3NbdF07bGV0IGE9by5wcmVjaW5jdDtjb25zdCBzPW8uY2J4LWEuY2J4TWluLGM9by5jYnktYS5jYnlNaW47bGV0IGwsaCx1PSExLGQ9ITE7aWYodm9pZCAwIT09by5pbmNsdWRlZCl1PSEhcmVhZEJpdHMoMSk7ZWxzZXthPW8ucHJlY2luY3Q7bGV0IGU7aWYodm9pZCAwIT09YS5pbmNsdXNpb25UcmVlKWU9YS5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1hLmNieE1heC1hLmNieE1pbisxLG49YS5jYnlNYXgtYS5jYnlNaW4rMTtlPW5ldyBJbmNsdXNpb25UcmVlKHQsbixyKTtoPW5ldyBUYWdUcmVlKHQsbik7YS5pbmNsdXNpb25UcmVlPWU7YS56ZXJvQml0UGxhbmVzVHJlZT1oO2ZvcihsZXQgZT0wO2U8cjtlKyspaWYoMCE9PXJlYWRCaXRzKDEpKXRocm93IG5ldyBKcHhFcnJvcigiSW52YWxpZCB0YWcgdHJlZSIpfWlmKGUucmVzZXQocyxjLHIpKWZvcig7Oyl7aWYoIXJlYWRCaXRzKDEpKXtlLmluY3JlbWVudFZhbHVlKHIpO2JyZWFrfWw9IWUubmV4dExldmVsKCk7aWYobCl7by5pbmNsdWRlZD0hMDt1PWQ9ITA7YnJlYWt9fX1pZighdSljb250aW51ZTtpZihkKXtoPWEuemVyb0JpdFBsYW5lc1RyZWU7aC5yZXNldChzLGMpO2Zvcig7OylpZihyZWFkQml0cygxKSl7bD0haC5uZXh0TGV2ZWwoKTtpZihsKWJyZWFrfWVsc2UgaC5pbmNyZW1lbnRWYWx1ZSgpO28uemVyb0JpdFBsYW5lcz1oLnZhbHVlfWNvbnN0IGY9cmVhZENvZGluZ3Bhc3NlcygpO2Zvcig7cmVhZEJpdHMoMSk7KW8uTGJsb2NrKys7Y29uc3QgZz0oMCxuLmxvZzIpKGYpLHA9cmVhZEJpdHMoKGY8MTw8Zz9nLTE6Zykrby5MYmxvY2spO2kucHVzaCh7Y29kZWJsb2NrOm8sY29kaW5ncGFzc2VzOmYsZGF0YUxlbmd0aDpwfSl9YWxpZ25Ub0J5dGUoKTtkJiZza2lwTWFya2VySWZFcXVhbCgxNDYpO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5zaGlmdCgpO289ZS5jb2RlYmxvY2s7dm9pZCAwPT09by5kYXRhJiYoby5kYXRhPVtdKTtvLmRhdGEucHVzaCh7ZGF0YTp0LHN0YXJ0OmErcyxlbmQ6YStzK2UuZGF0YUxlbmd0aCxjb2RpbmdwYXNzZXM6ZS5jb2RpbmdwYXNzZXN9KTtzKz1lLmRhdGFMZW5ndGh9fXJldHVybiBzfWZ1bmN0aW9uIGNvcHlDb2VmZmljaWVudHMoZSx0LGEscixuLHMsYyxsLGgpe2NvbnN0IHU9ci50YngwLGQ9ci50YnkwLGY9ci50YngxLXIudGJ4MCxnPXIuY29kZWJsb2NrcyxwPSJIIj09PXIudHlwZS5jaGFyQXQoMCk/MTowLG09IkgiPT09ci50eXBlLmNoYXJBdCgxKT90OjA7Zm9yKGxldCBhPTAsYj1nLmxlbmd0aDthPGI7KythKXtjb25zdCBiPWdbYV0seT1iLnRieDFfLWIudGJ4MF8sdz1iLnRieTFfLWIudGJ5MF87aWYoMD09PXl8fDA9PT13KWNvbnRpbnVlO2lmKHZvaWQgMD09PWIuZGF0YSljb250aW51ZTtjb25zdCBTPW5ldyBvKHksdyxiLnN1YmJhbmRUeXBlLGIuemVyb0JpdFBsYW5lcyxzKTtsZXQgeD0yO2NvbnN0IGs9Yi5kYXRhO2xldCBDLHYsRixPPTAsVD0wO2ZvcihDPTAsdj1rLmxlbmd0aDtDPHY7QysrKXtGPWtbQ107Tys9Ri5lbmQtRi5zdGFydDtUKz1GLmNvZGluZ3Bhc3Nlc31jb25zdCBNPW5ldyBVaW50OEFycmF5KE8pO2xldCBFPTA7Zm9yKEM9MCx2PWsubGVuZ3RoO0M8djtDKyspe0Y9a1tDXTtjb25zdCBlPUYuZGF0YS5zdWJhcnJheShGLnN0YXJ0LEYuZW5kKTtNLnNldChlLEUpO0UrPWUubGVuZ3RofWNvbnN0IEQ9bmV3IGkuQXJpdGhtZXRpY0RlY29kZXIoTSwwLE8pO1Muc2V0RGVjb2RlcihEKTtmb3IoQz0wO0M8VDtDKyspe3N3aXRjaCh4KXtjYXNlIDA6Uy5ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKTticmVhaztjYXNlIDE6Uy5ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpO2JyZWFrO2Nhc2UgMjpTLnJ1bkNsZWFudXBQYXNzKCk7bCYmUy5jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpfWgmJlMucmVzZXQoKTt4PSh4KzEpJTN9bGV0IE49Yi50YngwXy11KyhiLnRieTBfLWQpKmY7Y29uc3QgUj1TLmNvZWZmaWNlbnRzU2lnbixMPVMuY29lZmZpY2VudHNNYWduaXR1ZGUsaj1TLmJpdHNEZWNvZGVkLCQ9Yz8wOi41O2xldCBfLFUsWDtFPTA7Y29uc3QgSD0iTEwiIT09ci50eXBlO2ZvcihDPTA7Qzx3O0MrKyl7Y29uc3QgYT0yKihOL2Z8MCkqKHQtZikrcCttO2ZvcihfPTA7Xzx5O18rKyl7VT1MW0VdO2lmKDAhPT1VKXtVPShVKyQpKm47MCE9PVJbRV0mJihVPS1VKTtYPWpbRV07Y29uc3QgdD1IP2ErKE48PDEpOk47ZVt0XT1jJiZYPj1zP1U6VSooMTw8cy1YKX1OKys7RSsrfU4rPWYteX19fWZ1bmN0aW9uIHRyYW5zZm9ybVRpbGUoZSx0LGEpe2NvbnN0IHI9dC5jb21wb25lbnRzW2FdLG49ci5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsaT1yLnF1YW50aXphdGlvblBhcmFtZXRlcnMsbz1uLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCxjPWkuU1BxY2RzLGw9aS5zY2FsYXJFeHBvdW5kZWQsaD1pLmd1YXJkQml0cyx1PW4uc2VnbWVudGF0aW9uU3ltYm9sVXNlZCxkPW4ucmVzZXRDb250ZXh0UHJvYmFiaWxpdGllcyxmPWUuY29tcG9uZW50c1thXS5wcmVjaXNpb24sZz1uLnJldmVyc2libGVUcmFuc2Zvcm1hdGlvbixwPWc/bmV3IFJldmVyc2libGVUcmFuc2Zvcm06bmV3IElycmV2ZXJzaWJsZVRyYW5zZm9ybSxtPVtdO2xldCBiPTA7Zm9yKGxldCBlPTA7ZTw9bztlKyspe2NvbnN0IHQ9ci5yZXNvbHV0aW9uc1tlXSxhPXQudHJ4MS10LnRyeDAsbj10LnRyeTEtdC50cnkwLGk9bmV3IEZsb2F0MzJBcnJheShhKm4pO2ZvcihsZXQgcj0wLG49dC5zdWJiYW5kcy5sZW5ndGg7cjxuO3IrKyl7bGV0IG4sbztpZihsKXtuPWNbYl0ubXU7bz1jW2JdLmVwc2lsb247YisrfWVsc2V7bj1jWzBdLm11O289Y1swXS5lcHNpbG9uKyhlPjA/MS1lOjApfWNvbnN0IHA9dC5zdWJiYW5kc1tyXSxtPXNbcC50eXBlXTtjb3B5Q29lZmZpY2llbnRzKGksYSwwLHAsZz8xOjIqKihmK20tbykqKDErbi8yMDQ4KSxoK28tMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDphLGhlaWdodDpuLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sci50Y3gwLHIudGN5MCk7cmV0dXJue2xlZnQ6ci50Y3gwLHRvcDpyLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gaW5pdGlhbGl6ZVRpbGUoZSx0KXtjb25zdCBhPWUuU0laLkNzaXoscj1lLnRpbGVzW3RdO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IGE9ci5jb21wb25lbnRzW3RdLG49dm9pZCAwIT09ZS5jdXJyZW50VGlsZS5RQ0NbdF0/ZS5jdXJyZW50VGlsZS5RQ0NbdF06ZS5jdXJyZW50VGlsZS5RQ0Q7YS5xdWFudGl6YXRpb25QYXJhbWV0ZXJzPW47Y29uc3QgaT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLkNPQ1t0XT9lLmN1cnJlbnRUaWxlLkNPQ1t0XTplLmN1cnJlbnRUaWxlLkNPRDthLmNvZGluZ1N0eWxlUGFyYW1ldGVycz1pfXIuY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycz1lLmN1cnJlbnRUaWxlLkNPRH1jbGFzcyBUYWdUcmVle2NvbnN0cnVjdG9yKGUsdCl7Y29uc3QgYT0oMCxuLmxvZzIpKE1hdGgubWF4KGUsdCkpKzE7dGhpcy5sZXZlbHM9W107Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT17d2lkdGg6ZSxoZWlnaHQ6dCxpdGVtczpbXX07dGhpcy5sZXZlbHMucHVzaChhKTtlPU1hdGguY2VpbChlLzIpO3Q9TWF0aC5jZWlsKHQvMil9fXJlc2V0KGUsdCl7bGV0IGEscj0wLG49MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7YT10aGlzLmxldmVsc1tyXTtjb25zdCBpPWUrdCphLndpZHRoO2lmKHZvaWQgMCE9PWEuaXRlbXNbaV0pe249YS5pdGVtc1tpXTticmVha31hLmluZGV4PWk7ZT4+PTE7dD4+PTE7cisrfXItLTthPXRoaXMubGV2ZWxzW3JdO2EuaXRlbXNbYS5pbmRleF09bjt0aGlzLmN1cnJlbnRMZXZlbD1yO2RlbGV0ZSB0aGlzLnZhbHVlfWluY3JlbWVudFZhbHVlKCl7Y29uc3QgZT10aGlzLmxldmVsc1t0aGlzLmN1cnJlbnRMZXZlbF07ZS5pdGVtc1tlLmluZGV4XSsrfW5leHRMZXZlbCgpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3QgYT10Lml0ZW1zW3QuaW5kZXhdO2UtLTtpZihlPDApe3RoaXMudmFsdWU9YTtyZXR1cm4hMX10aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jbGFzcyBJbmNsdXNpb25UcmVle2NvbnN0cnVjdG9yKGUsdCxhKXtjb25zdCByPSgwLG4ubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXJbZV09YTtjb25zdCBuPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOnJ9O3RoaXMubGV2ZWxzLnB1c2gobik7ZT1NYXRoLmNlaWwoZS8yKTt0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQsYSl7bGV0IHI9MDtmb3IoO3I8dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3Qgbj10aGlzLmxldmVsc1tyXSxpPWUrdCpuLndpZHRoO24uaW5kZXg9aTtjb25zdCBzPW4uaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPmEpe3RoaXMuY3VycmVudExldmVsPXI7dGhpcy5wcm9wYWdhdGVWYWx1ZXMoKTtyZXR1cm4hMX1lPj49MTt0Pj49MTtyKyt9dGhpcy5jdXJyZW50TGV2ZWw9ci0xO3JldHVybiEwfWluY3JlbWVudFZhbHVlKGUpe2NvbnN0IHQ9dGhpcy5sZXZlbHNbdGhpcy5jdXJyZW50TGV2ZWxdO3QuaXRlbXNbdC5pbmRleF09ZSsxO3RoaXMucHJvcGFnYXRlVmFsdWVzKCl9cHJvcGFnYXRlVmFsdWVzKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07Zm9yKDstLWU+PTA7KXt0PXRoaXMubGV2ZWxzW2VdO3QuaXRlbXNbdC5pbmRleF09YX19bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCBhPXQuaXRlbXNbdC5pbmRleF07dC5pdGVtc1t0LmluZGV4XT0yNTU7ZS0tO2lmKGU8MClyZXR1cm4hMTt0aGlzLmN1cnJlbnRMZXZlbD1lO3Q9dGhpcy5sZXZlbHNbZV07dC5pdGVtc1t0LmluZGV4XT1hO3JldHVybiEwfX1jb25zdCBvPWZ1bmN0aW9uIEJpdE1vZGVsQ2xvc3VyZSgpe2NvbnN0IGU9MTcsdD1uZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSxhPW5ldyBVaW50OEFycmF5KFswLDMsNCwwLDUsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDEsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzAsMSwyLDAsMSwyLDIsMCwyLDIsMiwwLDAsMCwwLDAsMyw0LDUsMCw0LDUsNSwwLDUsNSw1LDAsMCwwLDAsMCw2LDcsNywwLDcsNyw3LDAsNyw3LDcsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOCwwLDAsMCwwLDAsOCw4LDgsMCw4LDgsOCwwLDgsOCw4XSk7cmV0dXJuIGNsYXNzIEJpdE1vZGVse2NvbnN0cnVjdG9yKGUsbixpLHMsbyl7dGhpcy53aWR0aD1lO3RoaXMuaGVpZ2h0PW47bGV0IGM7Yz0iSEgiPT09aT9yOiJITCI9PT1pP2E6dDt0aGlzLmNvbnRleHRMYWJlbFRhYmxlPWM7Y29uc3QgbD1lKm47dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2U9bmV3IFVpbnQ4QXJyYXkobCk7dGhpcy5jb2VmZmljZW50c1NpZ249bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGg7aD1vPjE0P25ldyBVaW50MzJBcnJheShsKTpvPjY/bmV3IFVpbnQxNkFycmF5KGwpOm5ldyBVaW50OEFycmF5KGwpO3RoaXMuY29lZmZpY2VudHNNYWduaXR1ZGU9aDt0aGlzLnByb2Nlc3NpbmdGbGFncz1uZXcgVWludDhBcnJheShsKTtjb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2lmKDAhPT1zKWZvcihsZXQgZT0wO2U8bDtlKyspdVtlXT1zO3RoaXMuYml0c0RlY29kZWQ9dTt0aGlzLnJlc2V0KCl9c2V0RGVjb2RlcihlKXt0aGlzLmRlY29kZXI9ZX1yZXNldCgpe3RoaXMuY29udGV4dHM9bmV3IEludDhBcnJheSgxOSk7dGhpcy5jb250ZXh0c1swXT04O3RoaXMuY29udGV4dHNbMTddPTkyO3RoaXMuY29udGV4dHNbMThdPTZ9c2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGUsdCxhKXtjb25zdCByPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLG49dGhpcy53aWR0aCxpPXRoaXMuaGVpZ2h0LHM9dD4wLG89dCsxPG47bGV0IGM7aWYoZT4wKXtjPWEtbjtzJiYocltjLTFdKz0xNik7byYmKHJbYysxXSs9MTYpO3JbY10rPTR9aWYoZSsxPGkpe2M9YStuO3MmJihyW2MtMV0rPTE2KTtvJiYocltjKzFdKz0xNik7cltjXSs9NH1zJiYoclthLTFdKz0xKTtvJiYoclthKzFdKz0xKTtyW2FdfD0xMjh9cnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCl7Y29uc3QgZT10aGlzLmRlY29kZXIsdD10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLG49dGhpcy5jb2VmZmljZW50c1NpZ24saT10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxzPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLG89dGhpcy5jb250ZXh0cyxjPXRoaXMuY29udGV4dExhYmVsVGFibGUsbD10aGlzLmJpdHNEZWNvZGVkO2ZvcihsZXQgaD0wO2g8YTtoKz00KWZvcihsZXQgdT0wO3U8dDt1Kyspe2xldCBkPWgqdCt1O2ZvcihsZXQgZj0wO2Y8NDtmKyssZCs9dCl7Y29uc3QgdD1oK2Y7aWYodD49YSlicmVhaztzW2RdJj0tMjtpZihyW2RdfHwhaVtkXSljb250aW51ZTtjb25zdCBnPWNbaVtkXV07aWYoZS5yZWFkQml0KG8sZykpe2NvbnN0IGU9dGhpcy5kZWNvZGVTaWduQml0KHQsdSxkKTtuW2RdPWU7cltkXT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKHQsdSxkKTtzW2RdfD0yfWxbZF0rKztzW2RdfD0xfX19ZGVjb2RlU2lnbkJpdChlLHQsYSl7Y29uc3Qgcj10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLHM9dGhpcy5jb2VmZmljZW50c1NpZ247bGV0IG8sYyxsLGgsdSxkO2g9dD4wJiYwIT09aVthLTFdO2lmKHQrMTxyJiYwIT09aVthKzFdKXtsPXNbYSsxXTtpZihoKXtjPXNbYS0xXTtvPTEtbC1jfWVsc2Ugbz0xLWwtbH1lbHNlIGlmKGgpe2M9c1thLTFdO289MS1jLWN9ZWxzZSBvPTA7Y29uc3QgZj0zKm87aD1lPjAmJjAhPT1pW2Etcl07aWYoZSsxPG4mJjAhPT1pW2Ercl0pe2w9c1thK3JdO2lmKGgpe2M9c1thLXJdO289MS1sLWMrZn1lbHNlIG89MS1sLWwrZn1lbHNlIGlmKGgpe2M9c1thLXJdO289MS1jLWMrZn1lbHNlIG89ZjtpZihvPj0wKXt1PTkrbztkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSl9ZWxzZXt1PTktbztkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KX1yZXR1cm4gZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxuPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqYSxsPTQqdDtmb3IobGV0IGEsaD0wO2g8YztoPWEpe2E9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPGE7bCs9dCl7aWYoIXJbbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2O2lmKDAhPSgyJm9bbF0pKXtvW2xdXj0yO3Q9MD09PSgxMjcmbltsXSk/MTU6MTR9Y29uc3QgYT1lLnJlYWRCaXQoaSx0KTtyW2xdPXJbbF08PDF8YTtzW2xdKys7b1tsXXw9MX19fXJ1bkNsZWFudXBQYXNzKCl7Y29uc3QgdD10aGlzLmRlY29kZXIsYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbixvPXRoaXMuY29udGV4dHMsYz10aGlzLmNvbnRleHRMYWJlbFRhYmxlLGw9dGhpcy5iaXRzRGVjb2RlZCxoPXRoaXMucHJvY2Vzc2luZ0ZsYWdzLHU9YSxkPTIqYSxmPTMqYTtsZXQgZztmb3IobGV0IHA9MDtwPHI7cD1nKXtnPU1hdGgubWluKHArNCxyKTtjb25zdCBtPXAqYSxiPXArMzxyO2ZvcihsZXQgcj0wO3I8YTtyKyspe2NvbnN0IHk9bStyO2xldCB3LFM9MCx4PXksaz1wO2lmKGImJjA9PT1oW3ldJiYwPT09aFt5K3VdJiYwPT09aFt5K2RdJiYwPT09aFt5K2ZdJiYwPT09blt5XSYmMD09PW5beSt1XSYmMD09PW5beStkXSYmMD09PW5beStmXSl7aWYoIXQucmVhZEJpdChvLDE4KSl7bFt5XSsrO2xbeSt1XSsrO2xbeStkXSsrO2xbeStmXSsrO2NvbnRpbnVlfVM9dC5yZWFkQml0KG8sZSk8PDF8dC5yZWFkQml0KG8sZSk7aWYoMCE9PVMpe2s9cCtTO3grPVMqYX13PXRoaXMuZGVjb2RlU2lnbkJpdChrLHIseCk7c1t4XT13O2lbeF09MTt0aGlzLnNldE5laWdoYm9yc1NpZ25pZmljYW5jZShrLHIseCk7aFt4XXw9Mjt4PXk7Zm9yKGxldCBlPXA7ZTw9aztlKysseCs9YSlsW3hdKys7UysrfWZvcihrPXArUztrPGc7aysrLHgrPWEpe2lmKGlbeF18fDAhPSgxJmhbeF0pKWNvbnRpbnVlO2NvbnN0IGU9Y1tuW3hdXTtpZigxPT09dC5yZWFkQml0KG8sZSkpe3c9dGhpcy5kZWNvZGVTaWduQml0KGsscix4KTtzW3hdPXc7aVt4XT0xO3RoaXMuc2V0TmVpZ2hib3JzU2lnbmlmaWNhbmNlKGsscix4KTtoW3hdfD0yfWxbeF0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IHQ9dGhpcy5kZWNvZGVyLGE9dGhpcy5jb250ZXh0cztpZigxMCE9PSh0LnJlYWRCaXQoYSxlKTw8M3x0LnJlYWRCaXQoYSxlKTw8Mnx0LnJlYWRCaXQoYSxlKTw8MXx0LnJlYWRCaXQoYSxlKSkpdGhyb3cgbmV3IEpweEVycm9yKCJJbnZhbGlkIHNlZ21lbnRhdGlvbiBzeW1ib2wiKX19fSgpO2NsYXNzIFRyYW5zZm9ybXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1UcmFuc2Zvcm0mJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxhKXtsZXQgcj1lWzBdO2ZvcihsZXQgbj0xLGk9ZS5sZW5ndGg7bjxpO24rKylyPXRoaXMuaXRlcmF0ZShyLGVbbl0sdCxhKTtyZXR1cm4gcn1leHRlbmQoZSx0LGEpe2xldCByPXQtMSxuPXQrMSxpPXQrYS0yLHM9dCthO2Vbci0tXT1lW24rK107ZVtzKytdPWVbaS0tXTtlW3ItLV09ZVtuKytdO2VbcysrXT1lW2ktLV07ZVtyLS1dPWVbbisrXTtlW3MrK109ZVtpLS1dO2Vbcl09ZVtuXTtlW3NdPWVbaV19ZmlsdGVyKGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LGEscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspe2Y9MipoKm87Zm9yKHU9MDt1PG47dSsrLGQrKyxmKz0yKWxbZl09c1tkXX1zPWUuaXRlbXM9bnVsbDtjb25zdCBtPW5ldyBGbG9hdDMyQXJyYXkobys4KTtpZigxPT09byl7aWYoMCE9KDEmYSkpZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKWxbZF0qPS41fWVsc2UgZm9yKHA9MCxkPTA7cDxjO3ArKyxkKz1vKXttLnNldChsLnN1YmFycmF5KGQsZCtvKSw0KTt0aGlzLmV4dGVuZChtLDQsbyk7dGhpcy5maWx0ZXIobSw0LG8pO2wuc2V0KG0uc3ViYXJyYXkoNCw0K28pLGQpfWxldCBiPTE2O2NvbnN0IHk9W107Zm9yKGg9MDtoPGI7aCsrKXkucHVzaChuZXcgRmxvYXQzMkFycmF5KGMrOCkpO2xldCB3LFM9MDtlPTQrYztpZigxPT09Yyl7aWYoMCE9KDEmcikpZm9yKGc9MDtnPG87ZysrKWxbZ10qPS41fWVsc2UgZm9yKGc9MDtnPG87ZysrKXtpZigwPT09Uyl7Yj1NYXRoLm1pbihvLWcsYik7Zm9yKGQ9ZyxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKyl5W3ddW2ZdPWxbZCt3XTtTPWJ9Uy0tO2NvbnN0IHQ9eVtTXTt0aGlzLmV4dGVuZCh0LDQsYyk7dGhpcy5maWx0ZXIodCw0LGMpO2lmKDA9PT1TKXtkPWctYisxO2ZvcihmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX19cmV0dXJue3dpZHRoOm8saGVpZ2h0OmMsaXRlbXM6bH19fWNsYXNzIElycmV2ZXJzaWJsZVRyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybXtmaWx0ZXIoZSx0LGEpe2NvbnN0IHI9YT4+MTtsZXQgbixpLHMsbztjb25zdCBjPS0xLjU4NjEzNDM0MjA1OTkyNCxsPS0uMDUyOTgwMTE4NTcyOTYxLGg9Ljg4MjkxMTA3NTUzMDkzNCx1PS40NDM1MDY4NTIwNDM5NzEsZD0xLjIzMDE3NDEwNDkxNDAwMTtuPSh0fD0wKS0zO2ZvcihpPXIrNDtpLS07bis9MillW25dKj0uODEyODkzMDY2MTE1OTYwOTtuPXQtMjtzPXUqZVtuLTFdO2ZvcihpPXIrMztpLS07bis9Mil7bz11KmVbbisxXTtlW25dPWQqZVtuXS1zLW87aWYoIWktLSlicmVhaztuKz0yO3M9dSplW24rMV07ZVtuXT1kKmVbbl0tcy1vfW49dC0xO3M9aCplW24tMV07Zm9yKGk9cisyO2ktLTtuKz0yKXtvPWgqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1oKmVbbisxXTtlW25dLT1zK299bj10O3M9bCplW24tMV07Zm9yKGk9cisxO2ktLTtuKz0yKXtvPWwqZVtuKzFdO2Vbbl0tPXMrbztpZighaS0tKWJyZWFrO24rPTI7cz1sKmVbbisxXTtlW25dLT1zK299aWYoMCE9PXIpe249dCsxO3M9YyplW24tMV07Zm9yKGk9cjtpLS07bis9Mil7bz1jKmVbbisxXTtlW25dLT1zK287aWYoIWktLSlicmVhaztuKz0yO3M9YyplW24rMV07ZVtuXS09cytvfX19fWNsYXNzIFJldmVyc2libGVUcmFuc2Zvcm0gZXh0ZW5kcyBUcmFuc2Zvcm17ZmlsdGVyKGUsdCxhKXtjb25zdCByPWE+PjE7bGV0IG4saTtmb3Iobj10fD0wLGk9cisxO2ktLTtuKz0yKWVbbl0tPWVbbi0xXStlW24rMV0rMj4+Mjtmb3Iobj10KzEsaT1yO2ktLTtuKz0yKWVbbl0rPWVbbi0xXStlW24rMV0+PjF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxaV1N0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyk7Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgci5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsbj17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtuLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtuLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1ufXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3Qgbj10aGlzLmx6d1N0YXRlO2lmKCFuKXJldHVybjtjb25zdCBpPW4uZWFybHlDaGFuZ2U7bGV0IHM9bi5uZXh0Q29kZTtjb25zdCBvPW4uZGljdGlvbmFyeVZhbHVlcyxjPW4uZGljdGlvbmFyeUxlbmd0aHMsbD1uLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9bi5jb2RlTGVuZ3RoLHU9bi5wcmV2Q29kZTtjb25zdCBkPW4uY3VycmVudFNlcXVlbmNlO2xldCBmPW4uY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxuPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKG4pe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytpJnMraS0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK2kpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19bi5uZXh0Q29kZT1zO24uY29kZUxlbmd0aD1oO24ucHJldkNvZGU9dTtuLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fXQuTFpXU3RyZWFtPUxaV1N0cmVhbX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlByZWRpY3RvclN0cmVhbT12b2lkIDA7dmFyIHI9YSgxNyksbj1hKDMpLGk9YSgyKTtjbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2Ygbi5EaWN0KSlyZXR1cm4gZTtjb25zdCByPXRoaXMucHJlZGljdG9yPWEuZ2V0KCJQcmVkaWN0b3IiKXx8MTtpZihyPD0xKXJldHVybiBlO2lmKDIhPT1yJiYocjwxMHx8cj4xNSkpdGhyb3cgbmV3IGkuRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHtyfWApO3RoaXMucmVhZEJsb2NrPTI9PT1yP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcz10aGlzLmNvbG9ycz1hLmdldCgiQ29sb3JzIil8fDEsbz10aGlzLmJpdHM9YS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxjPXRoaXMuY29sdW1ucz1hLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cypvKzc+PjM7dGhpcy5yb3dCeXRlcz1jKnMqbys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxhPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSkscj10aGlzLmJpdHMsbj10aGlzLmNvbG9ycyxpPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFpLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IHMsbz0wLGM9MCxsPTAsaD0wLHU9dDtpZigxPT09ciYmMT09PW4pZm9yKHM9MDtzPGU7KytzKXtsZXQgZT1pW3NdXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NzthW3UrK109ZX1lbHNlIGlmKDg9PT1yKXtmb3Iocz0wO3M8bjsrK3MpYVt1KytdPWlbc107Zm9yKDtzPGU7KytzKXthW3VdPWFbdS1uXStpW3NdO3UrK319ZWxzZSBpZigxNj09PXIpe2NvbnN0IHQ9MipuO2ZvcihzPTA7czx0OysrcylhW3UrK109aVtzXTtmb3IoO3M8ZTtzKz0yKXtjb25zdCBlPSgoMjU1Jmlbc10pPDw4KSsoMjU1JmlbcysxXSkrKCgyNTUmYVt1LXRdKTw8OCkrKDI1NSZhW3UtdCsxXSk7YVt1KytdPWU+PjgmMjU1O2FbdSsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4rMSksdT0oMTw8ciktMTtsZXQgZD0wLGY9dDtjb25zdCBnPXRoaXMuY29sdW1ucztmb3Iocz0wO3M8ZzsrK3MpZm9yKGxldCB0PTA7dDxuOysrdCl7aWYobDxyKXtvPW88PDh8MjU1JmlbZCsrXTtsKz04fWVbdF09ZVt0XSsobz4+bC1yKSZ1O2wtPXI7Yz1jPDxyfGVbdF07aCs9cjtpZihoPj04KXthW2YrK109Yz4+aC04JjI1NTtoLT04fX1oPjAmJihhW2YrK109KGM8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsYT10aGlzLnN0ci5nZXRCeXRlKCkscj10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hci5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2xldCBvPXMuc3ViYXJyYXkobi1lLG4pOzA9PT1vLmxlbmd0aCYmKG89bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBjLGwsaCx1PW47c3dpdGNoKGEpe2Nhc2UgMDpmb3IoYz0wO2M8ZTsrK2Mpc1t1KytdPXJbY107YnJlYWs7Y2FzZSAxOmZvcihjPTA7Yzx0OysrYylzW3UrK109cltjXTtmb3IoO2M8ZTsrK2Mpe3NbdV09c1t1LXRdK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK3JbY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStyW2NdO2Zvcig7YzxlOysrYyl7c1t1XT0ob1tjXStzW3UtdF0+PjEpK3JbY10mMjU1O3UrK31icmVhaztjYXNlIDQ6Zm9yKGM9MDtjPHQ7KytjKXtsPW9bY107aD1yW2NdO3NbdSsrXT1sK2h9Zm9yKDtjPGU7KytjKXtsPW9bY107Y29uc3QgZT1vW2MtdF0sYT1zW3UtdF0sbj1hK2wtZTtsZXQgaT1uLWE7aTwwJiYoaT0taSk7bGV0IGQ9bi1sO2Q8MCYmKGQ9LWQpO2xldCBmPW4tZTtmPDAmJihmPS1mKTtoPXJbY107c1t1KytdPWk8PWQmJmk8PWY/YStoOmQ8PWY/bCtoOmUraH1icmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19dC5QcmVkaWN0b3JTdHJlYW09UHJlZGljdG9yU3RyZWFtfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUnVuTGVuZ3RoU3RyZWFtPXZvaWQgMDt2YXIgcj1hKDE3KTtjbGFzcyBSdW5MZW5ndGhTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWVbMF07aWYocjwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3RbYSsrXT1lWzFdO2lmKHI+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhyKTt0LnNldChlLGEpO2ErPXJ9fWVsc2V7cj0yNTctcjtjb25zdCBuPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl0W2ErK109bn10aGlzLmJ1ZmZlckxlbmd0aD1hfX10LlJ1bkxlbmd0aFN0cmVhbT1SdW5MZW5ndGhTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Gb250PXQuRXJyb3JGb250PXZvaWQgMDt2YXIgcj1hKDIpLG49YSgzMyksaT1hKDM2KSxzPWEoMzgpLG89YSgzNyksYz1hKDM1KSxsPWEoMzkpLGg9YSg0MCksdT1hKDQxKSxkPWEoNDIpLGY9YSg0MyksZz1hKDQ0KSxwPWEoMTQpLG09YSg0NSksYj1hKDQpLHk9YSg4KSx3PWEoNDYpO2NvbnN0IFM9W1s1NzM0NCw2Mzc0M10sWzEwNDg1NzYsMTExNDEwOV1dLHg9MWUzLGs9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImZvbnRUeXBlIiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzdWJ0eXBlIiwidHlwZSIsInZlcnRpY2FsIl0sQz1bImNNYXAiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJ0b0ZvbnRDaGFyIiwidG9Vbmljb2RlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09ci5GT05UX0lERU5USVRZX01BVFJJWFswXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxhPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIGEpYVtlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsbixpLG8sYyxsKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPW47dGhpcy52bWV0cmljPWk7dGhpcy5vcGVyYXRvckxpc3RJZD1vO3RoaXMuaXNTcGFjZT1jO3RoaXMuaXNJbkZvbnQ9bDtjb25zdCBoPSgwLHMuZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeSkoYSk7dGhpcy5pc1doaXRlc3BhY2U9aC5pc1doaXRlc3BhY2U7dGhpcy5pc1plcm9XaWR0aERpYWNyaXRpYz1oLmlzWmVyb1dpZHRoRGlhY3JpdGljO3RoaXMuaXNJbnZpc2libGVGb3JtYXRNYXJrPWguaXNJbnZpc2libGVGb3JtYXRNYXJrfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LGEpe2VbdCsxXT1hO2VbdF09YT4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBhPShlPDw4KSt0O3JldHVybiAzMjc2OCZhP2EtNjU1MzY6YX1mdW5jdGlvbiBzdHJpbmcxNihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gc2FmZVN0cmluZzE2KGUpe2U+MzI3Njc/ZT0zMjc2NzplPC0zMjc2OCYmKGU9LTMyNzY4KTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuInR0Y2YiPT09KDAsci5ieXRlc1RvU3RyaW5nKSh0KX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6YSxjb21wb3NpdGU6bn0pe2xldCBpLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT0oMCxiLnJlYWRVaW50MzIpKHQsMCl8fCJ0cnVlIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpaT1uPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiJPVFRPIj09PSgwLHIuYnl0ZXNUb1N0cmluZykodCl9KGUpKWk9bj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPW4/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihuKXtpPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXsoMCxyLndhcm4pKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtzPWF9cmV0dXJuW2ksc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IG47Zm9yKGxldCBhPTAsaT1lLmxlbmd0aDthPGk7YSsrKXtuPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlW2FdLHQpOy0xIT09biYmKHJbYV09bil9Zm9yKGNvbnN0IGUgaW4gYSl7bj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYVtlXSx0KTstMSE9PW4mJihyWytlXT1uKX1yZXR1cm4gcn1mdW5jdGlvbiBjb252ZXJ0Q2lkU3RyaW5nKGUsdCxhPSExKXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gdC5jaGFyQ29kZUF0KDApO2Nhc2UgMjpyZXR1cm4gdC5jaGFyQ29kZUF0KDApPDw4fHQuY2hhckNvZGVBdCgxKX1jb25zdCBuPWBVbnN1cHBvcnRlZCBDSUQgc3RyaW5nIChjaGFyQ29kZSAke2V9KTogIiR7dH0iLmA7aWYoYSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihuKTsoMCxyLndhcm4pKG4pO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEsbil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wO2NvbnN0IGg9U1tsXVswXTtsZXQgdT1oLGQ9U1tsXVsxXTtmb3IobGV0IGYgaW4gZSl7Znw9MDtsZXQgZz1lW2ZdO2lmKCF0KGcpKWNvbnRpbnVlO2lmKHU+ZCl7bCsrO2lmKGw+PVMubGVuZ3RoKXsoMCxyLndhcm4pKCJSYW4gb3V0IG9mIHNwYWNlIGluIGZvbnQgcHJpdmF0ZSB1c2UgYXJlYS4iKTticmVha311PVNbbF1bMF07ZD1TW2xdWzFdfWNvbnN0IHA9dSsrOzA9PT1nJiYoZz1hKTtsZXQgbT1uLmdldChmKTsic3RyaW5nIj09dHlwZW9mIG0mJihtPW0uY29kZVBvaW50QXQoMCkpO2lmKG0mJm08aCYmIWMuaGFzKGcpKXtzLnNldChtLGcpO2MuYWRkKGcpfWlbcF09ZztvW2ZdPXB9cmV0dXJue3RvRm9udENoYXI6byxjaGFyQ29kZVRvR2x5cGhJZDppLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTp1fX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGEpe2NvbnN0IG49ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxhKXtjb25zdCByPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49YXx8ci5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Usbl1vZiB0KW4+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpufSk7MD09PXIubGVuZ3RoJiZyLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO3Iuc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgbj1bXSxpPXIubGVuZ3RoO2ZvcihsZXQgZT0wO2U8aTspe2NvbnN0IHQ9cltlXS5mb250Q2hhckNvZGUsYT1bcltlXS5nbHlwaElkXTsrK2U7bGV0IHM9dDtmb3IoO2U8aSYmcysxPT09cltlXS5mb250Q2hhckNvZGU7KXthLnB1c2gocltlXS5nbHlwaElkKTsrK3M7KytlO2lmKDY1NTM1PT09cylicmVha31uLnB1c2goW3QscyxhXSl9cmV0dXJuIG59KGUsdCxhKSxpPW4uYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxvLGMsbCxoPSJcMFwwIitzdHJpbmcxNihpKSsiXDADXDABIisoMCxyLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9bi5sZW5ndGgtMTtzPj0wJiYhKG5bc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO25bc11bMF08NjU1MzUmJjY1NTM1PT09bltzXVsxXSYmKG5bc11bMV09NjU1MzQpO2NvbnN0IGQ9bltzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsUz0iIix4PSIiLGs9IiIsQz0iIix2PSIiLEY9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPW5bc107Yj1wWzBdO3k9cFsxXTtTKz1zdHJpbmcxNihiKTt4Kz1zdHJpbmcxNih5KTt3PXBbMl07bGV0IGU9ITA7Zm9yKGM9MSxsPXcubGVuZ3RoO2M8bDsrK2MpaWYod1tjXSE9PXdbYy0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe2srPXN0cmluZzE2KHdbMF0tYiY2NTUzNSk7Qys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGYtcykrMipGO0YrPXktYisxO2srPXN0cmluZzE2KDApO0MrPXN0cmluZzE2KGUpO2ZvcihjPTAsbD13Lmxlbmd0aDtjPGw7KytjKXYrPXN0cmluZzE2KHdbY10pfX1pZihkPjApe3grPSLDv8O/IjtTKz0iw7/DvyI7ays9IlwwASI7Qys9IlwwXDAifWNvbnN0IE89IlwwXDAiK3N0cmluZzE2KDIqZikrc3RyaW5nMTYoZy5yYW5nZSkrc3RyaW5nMTYoZy5lbnRyeSkrc3RyaW5nMTYoZy5yYW5nZVNoaWZ0KSt4KyJcMFwwIitTK2srQyt2O2xldCBUPSIiLE09IiI7aWYoaT4xKXtoKz0iXDADXDBcbiIrKDAsci5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCk7VD0iIjtmb3Iocz0wLG89bi5sZW5ndGg7czxvO3MrKyl7cD1uW3NdO2I9cFswXTt3PXBbMl07bGV0IGU9d1swXTtmb3IoYz0xLGw9dy5sZW5ndGg7YzxsOysrYylpZih3W2NdIT09d1tjLTFdKzEpe3k9cFswXStjLTE7VCs9KDAsci5zdHJpbmczMikoYikrKDAsci5zdHJpbmczMikoeSkrKDAsci5zdHJpbmczMikoZSk7Yj15KzE7ZT13W2NdfVQrPSgwLHIuc3RyaW5nMzIpKGIpKygwLHIuc3RyaW5nMzIpKHBbMV0pKygwLHIuc3RyaW5nMzIpKGUpfU09IlwwXGZcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aCsxNikrIlwwXDBcMFwwIisoMCxyLnN0cmluZzMyKShULmxlbmd0aC8xMil9cmV0dXJuIGgrIlwwBCIrc3RyaW5nMTYoTy5sZW5ndGgrNCkrTytNK1R9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2E9YXx8e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IG49MCxpPTAsbz0wLGM9MCxsPW51bGwsaD0wO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhsPmV8fCFsKSYmKGw9ZSk7aDxlJiYoaD1lKTtjb25zdCB0PSgwLHMuZ2V0VW5pY29kZVJhbmdlRm9yKShlKTtpZih0PDMyKW58PTE8PHQ7ZWxzZSBpZih0PDY0KWl8PTE8PHQtMzI7ZWxzZSBpZih0PDk2KW98PTE8PHQtNjQ7ZWxzZXtpZighKHQ8MTIzKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7Y3w9MTw8dC05Nn19aD42NTUzNSYmKGg9NjU1MzUpfWVsc2V7bD0wO2g9MjU1fWNvbnN0IHU9ZS5iYm94fHxbMCwwLDAsMF0sZD1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8ci5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZj1lLmFzY2VudFNjYWxlZD8xOmQveCxnPWEuYXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuYXNjZW50fHx1WzNdKSk7bGV0IHA9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGYqKGUuZGVzY2VudHx8dVsxXSkpO3A+MCYmZS5kZXNjZW50PjAmJnVbMV08MCYmKHA9LXApO2NvbnN0IG09YS55TWF4fHxnLGI9LWEueU1pbnx8LXA7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsci5zdHJpbmczMikobikrKDAsci5zdHJpbmczMikoaSkrKDAsci5zdHJpbmczMikobykrKDAsci5zdHJpbmczMikoYykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU/MTowKStzdHJpbmcxNihsfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoaHx8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZykrc3RyaW5nMTYocCkrIlwwZCIrc3RyaW5nMTYobSkrc3RyaW5nMTYoYikrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KGx8fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7Y29uc3QgdD1NYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpO3JldHVybiJcMANcMFwwIisoMCxyLnN0cmluZzMyKSh0KSsiXDBcMFwwXDAiKygwLHIuc3RyaW5nMzIpKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZSgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgYT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0scj1bXTtsZXQgbixpLHMsbyxjO2ZvcihuPTAsaT1hLmxlbmd0aDtuPGk7bisrKXtjPXRbMV1bbl18fGFbbl07Y29uc3QgZT1bXTtmb3Iocz0wLG89Yy5sZW5ndGg7czxvO3MrKyllLnB1c2goc3RyaW5nMTYoYy5jaGFyQ29kZUF0KHMpKSk7ci5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W2Escl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPWEubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitzdHJpbmcxNihmKStzdHJpbmcxNigxMipmKzYpLHA9MDtmb3Iobj0wLGk9aC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgZT1sW25dO2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKXtjPWVbc107Zys9aFtuXSt1W25dK2Rbbl0rc3RyaW5nMTYocykrc3RyaW5nMTYoYy5sZW5ndGgpK3N0cmluZzE2KHApO3ArPWMubGVuZ3RofX1nKz1hLmpvaW4oIiIpK3Iuam9pbigiIik7cmV0dXJuIGd9dC5Gb250PWNsYXNzIEZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPSExO3RoaXMubG9hZGVkTmFtZT1hLmxvYWRlZE5hbWU7dGhpcy5pc1R5cGUzRm9udD1hLmlzVHlwZTNGb250O3RoaXMubWlzc2luZ0ZpbGU9ITE7dGhpcy5jc3NGb250SW5mbz1hLmNzc0ZvbnRJbmZvO3RoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IG49ISEoYS5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIW4mJiFhLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLGE9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihhW2VdKXtuPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PW47dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0IHM9YS50eXBlLG89YS5zdWJ0eXBlO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1vO2xldCBjLGg9InNhbnMtc2VyaWYiO3RoaXMuaXNNb25vc3BhY2U/aD0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250JiYoaD0ic2VyaWYiKTt0aGlzLmZhbGxiYWNrTmFtZT1oO3RoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L3g7dGhpcy5hc2NlbnQ9YS5hc2NlbnQveDt0aGlzLmRlc2NlbnQ9YS5kZXNjZW50L3g7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyIhPT1hLnR5cGUpe3RoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKHQmJiF0LmlzRW1wdHkpe1tzLG9dPWdldEZvbnRGaWxlVHlwZSh0LGEpO3M9PT10aGlzLnR5cGUmJm89PT10aGlzLnN1YnR5cGV8fCgwLHIuaW5mbykoYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7c30vJHtvfS5gKTt0cnl7c3dpdGNoKHMpe2Nhc2UiTU1UeXBlMSI6KDAsci5pbmZvKSgiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgbj0iVHlwZTFDIj09PW98fCJDSURGb250VHlwZTBDIj09PW8/bmV3IHUuQ0ZGRm9udCh0LGEpOm5ldyB3LlR5cGUxRm9udChlLHQsYSk7YWRqdXN0V2lkdGhzKGEpO2M9dGhpcy5jb252ZXJ0KGUsbixhKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Yz10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxhKTtpZih0aGlzLmlzT3BlblR5cGUpe2FkanVzdFdpZHRocyhhKTtzPSJPcGVuVHlwZSJ9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7KDAsci53YXJuKShlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KGEpO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGEpO3RoaXMuZGF0YT1jO3RoaXMuZm9udFR5cGU9KDAsaS5nZXRGb250VHlwZSkocyxvLGEuaXNTdGFuZGFyZEZvbnQpO3RoaXMuZm9udE1hdHJpeD1hLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9YS53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9YS5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPWEuc2VhY01hcH1lbHNle3QmJigwLHIud2FybikoJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSl9fWVsc2V7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxhLmRlZmF1bHRFbmNvZGluZ1tlXTt0aGlzLmZvbnRUeXBlPXIuRm9udFR5cGUuVFlQRTN9fWdldCByZW5kZXJlcigpe2NvbnN0IGU9ZC5Gb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywicmVuZGVyZXIiLGUpfWV4cG9ydERhdGEoZT0hMSl7Y29uc3QgdD1lP1suLi5rLC4uLkNdOmssYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLG47Zm9yKHIgb2YgdCl7bj10aGlzW3JdO3ZvaWQgMCE9PW4mJihhW3JdPW4pfXJldHVybiBhfWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3QgdD10aGlzLm5hbWUsYT10aGlzLnR5cGUsbj10aGlzLnN1YnR5cGU7bGV0IHU9KDAsaS5ub3JtYWxpemVGb250TmFtZSkodCk7Y29uc3QgZD0oMCxsLmdldFN0ZEZvbnRNYXApKCksZz0oMCxsLmdldE5vblN0ZEZvbnRNYXApKCkscD0hIWRbdV0sbT0hKCFnW3VdfHwhZFtnW3VdXSk7dT1kW3VdfHxnW3VdfHx1O2NvbnN0IGI9KDAsZi5nZXRGb250QmFzaWNNZXRyaWNzKSgpW3VdO2lmKGIpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWIuYXNjZW50L3gpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yi5kZXNjZW50L3gpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWIuY2FwSGVpZ2h0L3gpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KHUpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KHUpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCB5PS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghcHx8eSkmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigocHx8bSkmJiJDSURGb250VHlwZTIiPT09YSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgYT1lLmNpZFRvR2lkTWFwLHI9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzKSgpKTsvQXJpYWwtP0JsYWNrL2kudGVzdCh0KT9hcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIsKDAsbC5nZXRTdXBwbGVtZW50YWxHbHlwaE1hcEZvckFyaWFsQmxhY2spKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpKSgpKTtpZihhKXtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07dm9pZCAwIT09YVt0XSYmKHJbK2VdPWFbdF0pfWEubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1yW2VdO3ZvaWQgMD09PWFbbl0mJihyWytlXT10KX0pKX10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7clsrZV09dH0pKTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgaC5Ub1VuaWNvZGVNYXAocil9ZWxzZSBpZigvU3ltYm9sL2kudGVzdCh1KSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuU3ltYm9sU2V0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdCh1KSl7L1dpbmdkaW5ncy9pLnRlc3QodCkmJigwLHIud2FybikoIk5vbi1lbWJlZGRlZCBXaW5nZGluZ3MgZm9udCwgZmFsbGluZyBiYWNrIHRvIFphcGZEaW5nYmF0cy4iKTt0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyl9ZWxzZSBpZihwKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1hfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZVsrdF09YX0pKTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLGE9W107dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9dGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sbj0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoYSxlKTstMSE9PW4mJihyPW4pfWFbK3RdPXJ9KSk7dGhpcy5jb21wb3NpdGUmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcCYmL1ZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEsKDAsbC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHMpKCkpO3RoaXMudG9Gb250Q2hhcj1hfWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPXUuc3BsaXQoIi0iKVswXTt0aGlzLmZvbnRUeXBlPSgwLGkuZ2V0Rm9udFR5cGUpKGEsbixlLmlzU3RhbmRhcmRGb250KX1jaGVja0FuZFJlcGFpcihlLHQsYSl7Y29uc3Qgcz1bIk9TLzIiLCJjbWFwIiwiaGVhZCIsImhoZWEiLCJobXR4IiwibWF4cCIsIm5hbWUiLCJwb3N0IiwibG9jYSIsImdseWYiLCJmcGdtIiwicHJlcCIsImN2dCAiLCJDRkYgIl07ZnVuY3Rpb24gcmVhZFRhYmxlcyhlLHQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthWyJPUy8yIl09bnVsbDthLmNtYXA9bnVsbDthLmhlYWQ9bnVsbDthLmhoZWE9bnVsbDthLmhtdHg9bnVsbDthLm1heHA9bnVsbDthLm5hbWU9bnVsbDthLnBvc3Q9bnVsbDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PXJlYWRUYWJsZUVudHJ5KGUpO3MuaW5jbHVkZXModC50YWcpJiYoMCE9PXQubGVuZ3RoJiYoYVt0LnRhZ109dCkpfXJldHVybiBhfWZ1bmN0aW9uIHJlYWRUYWJsZUVudHJ5KGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCksYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwO2Uuc2tpcChyKTtjb25zdCBzPWUuZ2V0Qnl0ZXMobik7ZS5wb3M9aTtpZigiaGVhZCI9PT10KXtzWzhdPXNbOV09c1sxMF09c1sxMV09MDtzWzE3XXw9MzJ9cmV0dXJue3RhZzp0LGNoZWNrc3VtOmEsbGVuZ3RoOm4sb2Zmc2V0OnIsZGF0YTpzfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxhLHIsbixpKXtjb25zdCBzPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYoYS10PD0xMilyZXR1cm4gcztjb25zdCBvPWUuc3ViYXJyYXkodCxhKTtsZXQgYz1zaWduZWRJbnQxNihvWzBdLG9bMV0pO2lmKGM8MCl7Yz0tMTt3cml0ZVNpZ25lZEludDE2KG8sMCxjKTtyLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWxldCBsLGg9MTAsdT0wO2ZvcihsPTA7bDxjO2wrKyl7dT0ob1toXTw8OHxvW2grMV0pKzE7aCs9Mn1jb25zdCBkPWgsZj1vW2hdPDw4fG9baCsxXTtzLnNpemVPZkluc3RydWN0aW9ucz1mO2grPTIrZjtjb25zdCBnPWg7bGV0IHA9MDtmb3IobD0wO2w8dTtsKyspe2NvbnN0IGU9b1toKytdOzE5MiZlJiYob1toLTFdPTYzJmUpO2xldCB0PTI7MiZlP3Q9MToxNiZlJiYodD0wKTtsZXQgYT0yOzQmZT9hPTE6MzImZSYmKGE9MCk7Y29uc3Qgcj10K2E7cCs9cjtpZig4JmUpe2NvbnN0IGU9b1toKytdO2wrPWU7cCs9ZSpyfX1pZigwPT09cClyZXR1cm4gcztsZXQgbT1oK3A7aWYobT5vLmxlbmd0aClyZXR1cm4gcztpZighaSYmZj4wKXtyLnNldChvLnN1YmFycmF5KDAsZCksbik7ci5zZXQoWzAsMF0sbitkKTtyLnNldChvLnN1YmFycmF5KGcsbSksbitkKzIpO20tPWY7by5sZW5ndGgtbT4zJiYobT1tKzMmLTQpO3MubGVuZ3RoPW07cmV0dXJuIHN9aWYoby5sZW5ndGgtbT4zKXttPW0rMyYtNDtyLnNldChvLnN1YmFycmF5KDAsbSksbik7cy5sZW5ndGg9bTtyZXR1cm4gc31yLnNldChvLG4pO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0sbj1lLmxlbmd0aCxpPWErbjtpZigwIT09dC5nZXRVaW50MTYoKXx8bjw2KXJldHVybiByO2NvbnN0IHM9dC5nZXRVaW50MTYoKSxvPXQuZ2V0VWludDE2KCksYz1bXTtsZXQgbCxoO2ZvcihsPTA7bDxzJiZ0LnBvcysxMjw9aTtsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V8fDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2UpJiZjLnB1c2goZSl9Zm9yKGw9MCxoPWMubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9Y1tsXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBuPWErbytlLm9mZnNldDtpZihuK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9bjtjb25zdCBzPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgYT0iIjtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKz0yKWErPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7clsxXVtzXT1hfWVsc2UgclswXVtzXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuIHJ9Y29uc3QgbD1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IGEsbixpLHMsbyxjPWUuZGF0YSxoPTAsdT0wLGQ9MDtjb25zdCBmPVtdLGc9W10scD1bXTtsZXQgbT10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxiPSExLHk9MCx3PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2g8ZTspe2NvbnN0IGU9Y1toKytdO2lmKDY0PT09ZSl7bj1jW2grK107aWYoYnx8dyloKz1uO2Vsc2UgZm9yKGE9MDthPG47YSsrKWYucHVzaChjW2grK10pfWVsc2UgaWYoNjU9PT1lKXtuPWNbaCsrXTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZigxNzY9PSgyNDgmZSkpe249ZS0xNzYrMTtpZihifHx3KWgrPW47ZWxzZSBmb3IoYT0wO2E8bjthKyspZi5wdXNoKGNbaCsrXSl9ZWxzZSBpZigxODQ9PSgyNDgmZSkpe249ZS0xODQrMTtpZihifHx3KWgrPTIqbjtlbHNlIGZvcihhPTA7YTxuO2ErKyl7aT1jW2grK107Zi5wdXNoKGk8PDh8Y1toKytdKX19ZWxzZSBpZig0MyE9PWV8fG0paWYoNDQhPT1lfHxtKXtpZig0NT09PWUpaWYoYil7Yj0hMTt1PWh9ZWxzZXtvPWcucG9wKCk7aWYoIW8peygwLHIud2FybikoIlRUOiBFTkRGIGJhZCBzdGFjayIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59cz1wLnBvcCgpO2M9by5kYXRhO2g9by5pO3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbc109Zi5sZW5ndGgtby5zdGFja1RvcH1lbHNlIGlmKDEzNz09PWUpe2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1ofWVsc2UgaWYoODg9PT1lKSsreTtlbHNlIGlmKDI3PT09ZSl3PXk7ZWxzZSBpZig4OT09PWUpe3c9PT15JiYodz0wKTstLXl9ZWxzZSBpZigyOD09PWUmJiFiJiYhdyl7Y29uc3QgZT1mLmF0KC0xKTtlPjAmJihoKz1lLTEpfX1lbHNle2lmKGJ8fHcpeygwLHIud2FybikoIlRUOiBuZXN0ZWQgRkRFRnMgbm90IGFsbG93ZWQiKTttPSEwfWI9ITA7ZD1oO3M9Zi5wb3AoKTt0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmh9fWVsc2UgaWYoIWImJiF3KXtzPWYuYXQoLTEpO2lmKGlzTmFOKHMpKSgwLHIuaW5mbykoIlRUOiBDQUxMIGVtcHR5IHN0YWNrIChvciBpbnZhbGlkIGVudHJ5KS4iKTtlbHNle3QuZnVuY3Rpb25zVXNlZFtzXT0hMDtpZihzIGluIHQuZnVuY3Rpb25zU3RhY2tEZWx0YXMpe2NvbnN0IGU9Zi5sZW5ndGgrdC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXTtpZihlPDApeygwLHIud2FybikoIlRUOiBDQUxMIGludmFsaWQgZnVuY3Rpb25zIHN0YWNrIGRlbHRhLiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Zi5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhcC5pbmNsdWRlcyhzKSl7Zy5wdXNoKHtkYXRhOmMsaTpoLHN0YWNrVG9wOmYubGVuZ3RoLTF9KTtwLnB1c2gocyk7bz10LmZ1bmN0aW9uc0RlZmluZWRbc107aWYoIW8peygwLHIud2FybikoIlRUOiBDQUxMIG5vbi1leGlzdGVudCBmdW5jdGlvbiIpO3QuaGludHNWYWxpZD0hMTtyZXR1cm59Yz1vLmRhdGE7aD1vLml9fX1pZighYiYmIXcpe2xldCB0PTA7ZTw9MTQyP3Q9bFtlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpO2lmKGU+PTExMyYmZTw9MTE3KXtuPWYucG9wKCk7aXNOYU4obil8fCh0PTIqLW4pfWZvcig7dDwwJiZmLmxlbmd0aD4wOyl7Zi5wb3AoKTt0Kyt9Zm9yKDt0PjA7KXtmLnB1c2goTmFOKTt0LS19fX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1tO2NvbnN0IFM9W2NdO2g+Yy5sZW5ndGgmJlMucHVzaChuZXcgVWludDhBcnJheShoLWMubGVuZ3RoKSk7aWYoZD51KXsoMCxyLndhcm4pKCJUVDogY29tcGxlbWVudGluZyBhIG1pc3NpbmcgZnVuY3Rpb24gdGFpbCIpO1MucHVzaChuZXcgVWludDhBcnJheShbMzQsNDVdKSl9IWZ1bmN0aW9uIGZvbGRUVFRhYmxlKGUsdCl7aWYodC5sZW5ndGg+MSl7bGV0IGEscixuPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspbis9dFthXS5sZW5ndGg7bj1uKzMmLTQ7Y29uc3QgaT1uZXcgVWludDhBcnJheShuKTtsZXQgcz0wO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpLnNldCh0W2FdLHMpO3MrPXRbYV0ubGVuZ3RofWUuZGF0YT1pO2UubGVuZ3RoPW59fShlLFMpfWxldCBkLGYsYix3O2lmKGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZSh0PW5ldyB5LlN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czphLG9mZnNldFRhYmxlOm59PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTsoMCxyLmFzc2VydCkoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBhPWUuZ2V0VWludDE2KCksbj1lLmdldFVpbnQxNigpLGk9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG89e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjphLG1pbm9yVmVyc2lvbjpuLG51bUZvbnRzOmksb2Zmc2V0VGFibGU6c307c3dpdGNoKGEpe2Nhc2UgMTpyZXR1cm4gbztjYXNlIDI6by5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7by5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG99dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbz0wO288YTtvKyspe2UucG9zPShlLnN0YXJ0fHwwKStuW29dO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLGM9cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighYy5uYW1lKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0IGw9cmVhZE5hbWVUYWJsZShjLm5hbWUpO2ZvcihsZXQgZT0wLHI9bC5sZW5ndGg7ZTxyO2UrKylmb3IobGV0IHI9MCxuPWxbZV0ubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49bFtlXVtyXSYmbFtlXVtyXS5yZXBsYWNlKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOmN9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6Y30pfX19aWYocyl7KDAsci53YXJuKShgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7ZD1lLmhlYWRlcjtmPWUudGFibGVzfWVsc2V7ZD1yZWFkT3BlblR5cGVIZWFkZXIodCk7Zj1yZWFkVGFibGVzKHQsZC5udW1UYWJsZXMpfWNvbnN0IFM9IWZbIkNGRiAiXTtpZihTKXtpZighZi5sb2NhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIWYuZ2x5Zil7KDAsci53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtmLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1hLmNvbXBvc2l0ZSYmKChhLmNpZFRvR2lkTWFwfHxbXSkubGVuZ3RoPjB8fCEoYS5jTWFwIGluc3RhbmNlb2YgcC5JZGVudGl0eUNNYXApKTtpZigiT1RUTyI9PT1kLnZlcnNpb24mJiF0fHwhZi5oZWFkfHwhZi5oaGVhfHwhZi5tYXhwfHwhZi5wb3N0KXt3PW5ldyB5LlN0cmVhbShmWyJDRkYgIl0uZGF0YSk7Yj1uZXcgdS5DRkZGb250KHcsYSk7YWRqdXN0V2lkdGhzKGEpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxiLGEpfWRlbGV0ZSBmLmdseWY7ZGVsZXRlIGYubG9jYTtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIWYubWF4cCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO3QucG9zPSh0LnN0YXJ0fHwwKStmLm1heHAub2Zmc2V0O2NvbnN0IHg9dC5nZXRJbnQzMigpLGs9dC5nZXRVaW50MTYoKTtpZihhLnNjYWxlRmFjdG9ycyYmYS5zY2FsZUZhY3RvcnMubGVuZ3RoPT09ayYmUyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWEsdD1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSxyPW5ldyBnLkdseWZUYWJsZSh7Z2x5ZlRhYmxlOmYuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmYubG9jYS5kYXRhLG51bUdseXBoczprfSk7ci5zY2FsZShlKTtjb25zdHtnbHlmOm4sbG9jYTppLGlzTG9jYXRpb25Mb25nOnN9PXIud3JpdGUoKTtmLmdseWYuZGF0YT1uO2YubG9jYS5kYXRhPWk7aWYocyE9PSEhdCl7Zi5oZWFkLmRhdGFbNTBdPTA7Zi5oZWFkLmRhdGFbNTFdPXM/MTowfWNvbnN0IG89Zi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgYT00KnQscj1NYXRoLnJvdW5kKGVbdF0qaW50MTYob1thXSxvW2ErMV0pKTtvW2FdPXI+PjgmMjU1O29bYSsxXT0yNTUmcjt3cml0ZVNpZ25lZEludDE2KG8sYSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihvW2ErMl0sb1thKzNdKSkpfX1sZXQgQz1rKzEsdj0hMDtpZihDPjY1NTM1KXt2PSExO0M9azsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRj0wLE89MDtpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7Zi5tYXhwLmRhdGFbMTRdPTA7Zi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7Rj10LmdldFVpbnQxNigpO3QucG9zKz00O089dC5nZXRVaW50MTYoKX1mLm1heHAuZGF0YVs0XT1DPj44O2YubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IFQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxhLG4pe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxpKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LGkpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpeygwLHIud2FybikoIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGE9MCxuPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7YTxuO2ErKyl7aWYoYT50KXsoMCxyLndhcm4pKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFthXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFthXSl7KDAsci53YXJuKSgiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIithKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KGksbik7aWYoYSYmMSZhLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShhLmxlbmd0aCsxKTtlLnNldChhLmRhdGEpO2EuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KGYuZnBnbSxmLnByZXAsZlsiY3Z0ICJdLEYpO2lmKCFUKXtkZWxldGUgZi5mcGdtO2RlbGV0ZSBmLnByZXA7ZGVsZXRlIGZbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxhLG4saSxzKXtpZighdCl7YSYmKGEuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG89ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgYz1lLmdldFVpbnQxNigpO2lmKDAhPT1vKXtpZighKDImaW50MTYobi5kYXRhWzQ0XSxuLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKGM+aSl7KDAsci5pbmZvKShgVGhlIG51bU9mTWV0cmljcyAoJHtjfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtpfSkuYCk7Yz1pO3QuZGF0YVszNF09KDY1MjgwJmMpPj44O3QuZGF0YVszNV09MjU1JmN9Y29uc3QgbD1pLWMtKGEubGVuZ3RoLTQqYz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzIqbCk7ZS5zZXQoYS5kYXRhKTtpZihzKXtlW2EubGVuZ3RoXT1hLmRhdGFbMl07ZVthLmxlbmd0aCsxXT1hLmRhdGFbM119YS5kYXRhPWV9fSh0LGYuaGhlYSxmLmhtdHgsZi5oZWFkLEMsdik7aWYoIWYuaGVhZCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IG49ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShuWzBdLG5bMV0sblsyXSxuWzNdKTtpZihpPj4xNiE9MSl7KDAsci5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7blswXT0wO25bMV09MTtuWzJdPTA7blszXT0wfWNvbnN0IHM9aW50MTYobls1MF0sbls1MV0pO2lmKHM8MHx8cz4xKXsoMCxyLmluZm8pKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIitzKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7bls1MF09MDtuWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTtuWzUwXT0wO25bNTFdPTF9fX0oZi5oZWFkLGssUz9mLmxvY2EubGVuZ3RoOjApO2xldCBNPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUyl7Y29uc3QgZT1pbnQxNihmLmhlYWQuZGF0YVs1MF0sZi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGEscixuLGkscyl7bGV0IG8sYyxsO2lmKHIpe289NDtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxhKXtlW3RdPWE+Pj4yNCYyNTU7ZVt0KzFdPWE+PjE2JjI1NTtlW3QrMl09YT4+OCYyNTU7ZVt0KzNdPTI1NSZhfX1lbHNle289MjtjPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtsPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxhKXtlW3RdPWE+PjkmMjU1O2VbdCsxXT1hPj4xJjI1NX19Y29uc3QgaD1pP2ErMTphLHU9byooMStoKSxkPW5ldyBVaW50OEFycmF5KHUpO2Quc2V0KGUuZGF0YS5zdWJhcnJheSgwLHUpKTtlLmRhdGE9ZDtjb25zdCBmPXQuZGF0YSxnPWYubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IG0sYjtjb25zdCB5PVtdO2ZvcihtPTAsYj0wO208YSsxO20rKyxiKz1vKXtsZXQgZT1jKGQsYik7ZT5nJiYoZT1nKTt5LnB1c2goe2luZGV4Om0sb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX15LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihtPTA7bTxhO20rKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXlbbV07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGE9eVttKzFdLm9mZnNldDtpZigwIT09YSl7eVttXS5lbmRPZmZzZXQ9YTticmVha319Y29uc3Qgdz1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBTPTA7bChkLDAsUyk7Zm9yKG09MCxiPW87bTxhO20rKyxiKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoZix5W21dLm9mZnNldCx5W21dLmVuZE9mZnNldCxwLFMsbiksdD1lLmxlbmd0aDswPT09dCYmKHdbbV09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPnMmJihzPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTtTKz10O2woZCxiLFMpfWlmKDA9PT1TKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihtPTAsYj1vO208aDttKyssYis9bylsKGQsYixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihpKXtjb25zdCBhPWMoZCxvKTtpZihwLmxlbmd0aD5hK1MpdC5kYXRhPXAuc3ViYXJyYXkoMCxhK1MpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGErUyk7dC5kYXRhLnNldChwLnN1YmFycmF5KDAsUykpfXQuZGF0YS5zZXQocC5zdWJhcnJheSgwLGEpLFMpO2woZS5kYXRhLGQubGVuZ3RoLW8sUythKX1lbHNlIHQuZGF0YT1wLnN1YmFycmF5KDAsUyk7cmV0dXJue21pc3NpbmdHbHlwaHM6dyxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6c319KGYubG9jYSxmLmdseWYsayxlLFQsdixPKTtNPXQubWlzc2luZ0dseXBocztpZih4Pj02NTUzNiYmZi5tYXhwLmxlbmd0aD49MjIpe2YubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtmLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighZi5oaGVhKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWYuaGhlYS5kYXRhWzEwXSYmMD09PWYuaGhlYS5kYXRhWzExXSl7Zi5oaGVhLmRhdGFbMTBdPTI1NTtmLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IEU9e3VuaXRzUGVyRW06aW50MTYoZi5oZWFkLmRhdGFbMThdLGYuaGVhZC5kYXRhWzE5XSkseU1heDppbnQxNihmLmhlYWQuZGF0YVs0Ml0sZi5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGYuaGVhZC5kYXRhWzM4XSxmLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs0XSxmLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs2XSxmLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihmLmhoZWEuZGF0YVs4XSxmLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PUUuYXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9RS5kZXNjZW50L0UudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9RS5saW5lR2FwL0UudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvJiZ0aGlzLmNzc0ZvbnRJbmZvLmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtmLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxhLG4pe2NvbnN0IHM9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXM7Y29uc3Qgbz1zK2UubGVuZ3RoLGM9dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IGwsaCx1PSEwO3N3aXRjaChjKXtjYXNlIDY1NTM2Omw9aS5NYWNTdGFuZGFyZEdseXBoT3JkZXJpbmc7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1uKXt1PSExO2JyZWFrfWNvbnN0IHM9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe3U9ITE7YnJlYWt9cy5wdXNoKGUpfWlmKCF1KWJyZWFrO2NvbnN0IGQ9W10sZj1bXTtmb3IoO3QucG9zPG87KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2YubGVuZ3RoPWU7Zm9yKGg9MDtoPGU7KytoKWZbaF09U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7ZC5wdXNoKGYuam9pbigiIikpfWw9W107Zm9yKGg9MDtoPGU7KytoKXtjb25zdCBlPXNbaF07ZTwyNTg/bC5wdXNoKGkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nW2VdKTpsLnB1c2goZFtlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6KDAsci53YXJuKSgiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIitjKTt1PSExO2EuZGVmYXVsdEVuY29kaW5nJiYobD1hLmRlZmF1bHRFbmNvZGluZyl9YS5nbHlwaE5hbWVzPWw7cmV0dXJuIHV9KGYucG9zdCxhLGspO2YucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShhKX07Y29uc3QgRD1bXTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hTVtlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oYSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoYSxuLCEwKSk7aWYobj42NTUzNSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1uOnZvaWQgMCE9PWVbbl0mJihpPWVbbl0pO2k+PTAmJmk8ayYmaGFzR2x5cGgoaSkmJihEW2FdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxhLG4pe2lmKCFlKXsoMCxyLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKSxzPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGg9ITE7aWYoIWN8fGMucGxhdGZvcm1JZCE9PXJ8fGMuZW5jb2RpbmdJZCE9PWkpe2lmKDAhPT1yfHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1yJiYwPT09aSloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1pfHwhbiYmYyl7aWYoYSYmMz09PXImJjA9PT1pKXtoPSEwO2xldCBhPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGE9ITEpfWEmJihsPSEwKX19ZWxzZXtoPSEwO2F8fChsPSEwKX1lbHNlIGg9ITA7aCYmKGM9e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOmksb2Zmc2V0OnN9KTtpZihsKWJyZWFrfX1jJiYodC5wb3M9cytjLm9mZnNldCk7aWYoIWN8fC0xPT09dC5wZWVrQnl0ZSgpKXsoMCxyLndhcm4pKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBoPXQuZ2V0VWludDE2KCk7bGV0IHU9ITE7Y29uc3QgZD1bXTtsZXQgZixnO2lmKDA9PT1oKXt0LnNraXAoNCk7Zm9yKGY9MDtmPDI1NjtmKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmZC5wdXNoKHtjaGFyQ29kZTpmLGdseXBoSWQ6ZX0pfXU9ITB9ZWxzZSBpZigyPT09aCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2c9dC5nZXRVaW50MTYoKTtkLnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpnfSl9ZWxzZXtjb25zdCBuPXJbZVthXV07Zm9yKGY9MDtmPG4uZW50cnlDb3VudDtmKyspe2NvbnN0IGU9KGE8PDgpK2Yrbi5maXJzdENvZGU7dC5wb3M9bi5pZFJhbmdlUG9zKzIqZjtnPXQuZ2V0VWludDE2KCk7MCE9PWcmJihnPShnK24uaWREZWx0YSklNjU1MzYpO2QucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmd9KX19fWVsc2UgaWYoND09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGY9MDtmPG87ZisrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtzPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7bj1pLm9mZnNldEluZGV4O2ZvcihmPXM7Zjw9ZTtmKyspaWYoNjU1MzUhPT1mKXtnPW48MD9mOmNbbitmLXNdO2c9Zyt0JjY1NTM1O2QucHVzaCh7Y2hhckNvZGU6ZixnbHlwaElkOmd9KX19fWVsc2UgaWYoNj09PWgpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihmPTA7ZjxhO2YrKyl7Zz10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStmO2QucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmd9KX19ZWxzZXtpZigxMiE9PWgpeygwLHIud2FybikoImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitoKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihmPTA7ZjxlO2YrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKWQucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19ZC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxkLmxlbmd0aDtlKyspaWYoZFtlLTFdLmNoYXJDb2RlPT09ZFtlXS5jaGFyQ29kZSl7ZC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmQsaGFzU2hvcnRDbWFwOnV9fShmLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGEuaGFzRW5jb2RpbmcpLG49ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExOyFhLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1hLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShhLmJhc2VFbmNvZGluZ05hbWUpKTtpZihhLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1uJiYxPT09c3x8MT09PW4mJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcjtyPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShyLGUpO2xldCBkOzM9PT1uJiYxPT09cz9kPWVbb106MT09PW4mJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSk7aWYodm9pZCAwPT09ZCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe0RbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09bil7Zm9yKGNvbnN0IGUgb2YgbClEW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09biYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtEW3RdPWUuZ2x5cGhJZH1pZihhLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PURbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9YS5nbHlwaE5hbWVzLmluZGV4T2YodCk7cj4wJiZoYXNHbHlwaChyKSYmKERbZV09cil9fTA9PT1ELmxlbmd0aCYmKERbMF09MCk7bGV0IE49Qy0xO3Z8fChOPTApO2lmKCFhLmNzc0ZvbnRJbmZvKXtjb25zdCBlPWFkanVzdE1hcHBpbmcoRCxoYXNHbHlwaCxOLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZS50b0ZvbnRDaGFyO2YuY21hcD17dGFnOiJjbWFwIixkYXRhOmNyZWF0ZUNtYXBUYWJsZShlLmNoYXJDb2RlVG9HbHlwaElkLGUudG9Vbmljb2RlRXh0cmFNYXAsQyl9O2ZbIk9TLzIiXSYmZnVuY3Rpb24gdmFsaWRhdGVPUzJUYWJsZShlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCBhPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYoYTw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oZlsiT1MvMiJdLHQpfHwoZlsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUoYSxlLmNoYXJDb2RlVG9HbHlwaElkLEUpfSl9aWYoIVMpdHJ5e3c9bmV3IHkuU3RyZWFtKGZbIkNGRiAiXS5kYXRhKTtiPW5ldyBuLkNGRlBhcnNlcih3LGEsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpLnBhcnNlKCk7Yi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgbi5DRkZDb21waWxlcihiKTtmWyJDRkYgIl0uZGF0YT1lLmNvbXBpbGUoKX1jYXRjaChlKXsoMCxyLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrYS5sb2FkZWROYW1lKX1pZihmLm5hbWUpe2NvbnN0IHQ9cmVhZE5hbWVUYWJsZShmLm5hbWUpO2YubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGx9ZWxzZSBmLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgUj1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKGQudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gZilSLmFkZFRhYmxlKGUsZltlXS5kYXRhKTtyZXR1cm4gUi50b0FycmF5KCl9Y29udmVydChlLHQsYSl7YS5maXhlZFBpdGNoPSExO2EuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoMD09PWUuZGlmZmVyZW5jZXMubGVuZ3RofHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW25dKSljb250aW51ZTtjb25zdCBpPXRbbl0sbz0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoaSxyKTstMSE9PW8mJihhW25dPVN0cmluZy5mcm9tQ2hhckNvZGUobykpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShhLGEuYnVpbHRJbkVuY29kaW5nKTtsZXQgbj0xO3QgaW5zdGFuY2VvZiB1LkNGRkZvbnQmJihuPXQubnVtR2x5cGhzLTEpO2NvbnN0IGw9dC5nZXRHbHlwaE1hcHBpbmcoYSk7bGV0IGQ9bnVsbCxmPWwsZz1udWxsO2lmKCFhLmNzc0ZvbnRJbmZvKXtkPWFkanVzdE1hcHBpbmcobCx0Lmhhc0dseXBoSWQuYmluZCh0KSxuLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9ZC50b0ZvbnRDaGFyO2Y9ZC5jaGFyQ29kZVRvR2x5cGhJZDtnPWQudG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgcD10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgYT1udWxsO2Zvcihjb25zdCByIGluIGUpaWYodD09PWVbcl0pe2F8fChhPVtdKTthLnB1c2goMHxyKX1yZXR1cm4gYX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBhIGluIGUpaWYodD09PWVbYV0pcmV0dXJuIDB8YTtkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gZC5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgYj10LnNlYWNzO2lmKGQmJmkuU0VBQ19BTkFMWVNJU19FTkFCTEVEJiZiJiZiLmxlbmd0aCl7Y29uc3QgZT1hLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgsbj10LmdldENoYXJzZXQoKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIGIpe3R8PTA7Y29uc3QgYT1iW3RdLHI9Yy5TdGFuZGFyZEVuY29kaW5nW2FbMl1dLHM9Yy5TdGFuZGFyZEVuY29kaW5nW2FbM11dLG89bi5pbmRleE9mKHIpLGg9bi5pbmRleE9mKHMpO2lmKG88MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6YVswXSplWzBdK2FbMV0qZVsyXStlWzRdLHk6YVswXSplWzFdK2FbMV0qZVszXStlWzVdfSxmPWdldENoYXJDb2RlcyhsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLGE9Y3JlYXRlQ2hhckNvZGUodCxvKSxyPWNyZWF0ZUNoYXJDb2RlKHQsaCk7aVtlXT17YmFzZUZvbnRDaGFyQ29kZTphLGFjY2VudEZvbnRDaGFyQ29kZTpyLGFjY2VudE9mZnNldDp1fX19YS5zZWFjTWFwPWl9Y29uc3QgeT0xLyhhLmZvbnRNYXRyaXh8fHIuRk9OVF9JREVOVElUWV9NQVRSSVgpWzBdLHc9bmV3IG0uT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3cuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dy5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUoYSxmKSk7dy5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKGYsZyxwKSk7dy5hZGRUYWJsZSgiaGVhZCIsIlwwAVwwXDBcMFwwEFwwXDBcMFwwXDBfDzzDtVwwXDAiK3NhZmVTdHJpbmcxNih5KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK3NhZmVTdHJpbmcxNihhLmRlc2NlbnQpKyIPw78iK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc3RyaW5nMTYoYS5pdGFsaWNBbmdsZT8yOjApKyJcMBFcMFwwXDBcMFwwXDAiKTt3LmFkZFRhYmxlKCJoaGVhIiwiXDABXDBcMCIrc2FmZVN0cmluZzE2KGEuYXNjZW50KStzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK3NhZmVTdHJpbmcxNihhLmNhcEhlaWdodCkrc2FmZVN0cmluZzE2KE1hdGgudGFuKGEuaXRhbGljQW5nbGUpKmEueEhlaWdodCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCIrc3RyaW5nMTYocCkpO3cuYWRkVGFibGUoImhtdHgiLGZ1bmN0aW9uIGZvbnRGaWVsZHNIbXR4KCl7Y29uc3QgZT10LmNoYXJzdHJpbmdzLGE9dC5jZmY/dC5jZmYud2lkdGhzOm51bGw7bGV0IHI9IlwwXDBcMFwwIjtmb3IobGV0IHQ9MSxuPXA7dDxuO3QrKyl7bGV0IG49MDtpZihlKXtjb25zdCBhPWVbdC0xXTtuPSJ3aWR0aCJpbiBhP2Eud2lkdGg6MH1lbHNlIGEmJihuPU1hdGguY2VpbChhW3RdfHwwKSk7cis9c3RyaW5nMTYobikrc3RyaW5nMTYoMCl9cmV0dXJuIHJ9KCkpO3cuYWRkVGFibGUoIm1heHAiLCJcMFwwUFwwIitzdHJpbmcxNihwKSk7dy5hZGRUYWJsZSgibmFtZSIsY3JlYXRlTmFtZVRhYmxlKGUpKTt3LmFkZFRhYmxlKCJwb3N0IixjcmVhdGVQb3N0VGFibGUoYSkpO3JldHVybiB3LnRvQXJyYXkoKX1nZXQgc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9KDAsby5nZXRHbHlwaHNVbmljb2RlKSgpW2FdO2xldCByPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7cj10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhlLHIpKX0hciYmdGhpcy50b1VuaWNvZGUmJihyPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO3I8PTAmJihyPWUpO3Q9dGhpcy53aWR0aHNbcl07aWYodClicmVha310PXR8fHRoaXMuZGVmYXVsdFdpZHRoO3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJzcGFjZVdpZHRoIix0KX1fY2hhclRvR2x5cGgoZSx0PSExKXtsZXQgYSxuLGksbz10aGlzLl9nbHlwaENhY2hlW2VdO2lmKG8mJm8uaXNTcGFjZT09PXQpcmV0dXJuIG87bGV0IGM9ZTtpZih0aGlzLmNNYXAmJnRoaXMuY01hcC5jb250YWlucyhlKSl7Yz10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYyYmKGM9Y29udmVydENpZFN0cmluZyhlLGMpKX1uPXRoaXMud2lkdGhzW2NdOyJudW1iZXIiIT10eXBlb2YgbiYmKG49dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IGw9dGhpcy52bWV0cmljcyYmdGhpcy52bWV0cmljc1tjXTtsZXQgaD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBoJiYoaD1TdHJpbmcuZnJvbUNoYXJDb2RlKGgpKTtsZXQgdT12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07YT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChhPTMyKTthPSgwLHMubWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMpKGEpfXRoaXMuaXNUeXBlM0ZvbnQmJihpPWEpO2xldCBkPW51bGw7aWYodGhpcy5zZWFjTWFwJiZ0aGlzLnNlYWNNYXBbZV0pe3U9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07YT10LmJhc2VGb250Q2hhckNvZGU7ZD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGY9IiI7Im51bWJlciI9PXR5cGVvZiBhJiYoYTw9MTExNDExMT9mPVN0cmluZy5mcm9tQ29kZVBvaW50KGEpOigwLHIud2FybikoYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7YX1gKSk7bz1uZXcgR2x5cGgoZSxmLGgsZCxuLGwsaSx0LHUpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW99Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsbixhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDppfT1hO24rPWk7Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1pJiYzMj09PWUuY2hhckNvZGVBdChuLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxuPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2gobil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBuPWEubGVuZ3RoO3QucHVzaChbcixyK25dKTtyKz1ufX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9ZS5jb2RlUG9pbnRBdChuKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJm4rKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1yKGkpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChhLmpvaW4oIiIpKTthLmxlbmd0aD0wfWEucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChpKSl9dC5wdXNoKGEuam9pbigiIikpO3JldHVybiB0fX07dC5FcnJvckZvbnQ9Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDM0KSxpPWEoMzUpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPTM5MSxjPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGw9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLG49dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChuLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qobi5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmosdT1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO3UmJihlLmZvbnRNYXRyaXg9dSk7Y29uc3QgZD1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihkKXtlLmFzY2VudD1NYXRoLm1heChkWzNdLGRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihkWzFdLGRbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBmLGc7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGMuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGE9MCxyPWUuY291bnQ7YTxyOysrYSl7Y29uc3Qgcj1lLmdldChhKSxuPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KHIpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KG4pO3QuZmRBcnJheS5wdXNoKG4pfWc9bnVsbDtmPXRoaXMucGFyc2VDaGFyc2V0cyhjLmdldEJ5TmFtZSgiY2hhcnNldCIpLGguY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChjLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxoLmNvdW50KX1lbHNle2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITEpO2c9dGhpcy5wYXJzZUVuY29kaW5nKGMuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLGYuY2hhcnNldCl9dC5jaGFyc2V0PWY7dC5lbmNvZGluZz1nO2NvbnN0IHA9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpoLGxvY2FsU3VickluZGV4OmMucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6cy5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpjLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz1wLmNoYXJTdHJpbmdzO3Quc2VhY3M9cC5zZWFjczt0LndpZHRocz1wLndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTx0JiYxIT09ZVthXTspKythO2lmKGE+PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXsoMCxyLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCBuPWVbMF0saT1lWzFdLHM9ZVsyXSxvPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKG4saSxzLG8pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsbj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0saT1lLmxlbmd0aDtmb3IoO3Q8aTspe2NvbnN0IGk9ZVt0KytdLHM9aT4+NCxvPTE1Jmk7aWYocz09PXIpYnJlYWs7YSs9bltzXTtpZihvPT09cilicmVhazthKz1uW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1lW3QrK107YT0oYTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7KDAsci53YXJuKSgnQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCBuPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7bi5wdXNoKFtyLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIG59cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLG49W107bGV0IGkscyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKGk9MCxzPXIrMTtpPHM7KytpKXtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDsrK24pe3I8PD04O3IrPWFbZSsrXX1uLnB1c2goYytyKX1vPW5bcl19Zm9yKGk9MCxzPW4ubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1uW2ldLHI9bltpKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLG49ZS5jb3VudDthPG47KythKXtjb25zdCBuPWUuZ2V0KGEpO3QucHVzaCgoMCxyLmJ5dGVzVG9TdHJpbmcpKG4pKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAsbj1lLmNvdW50O2E8bjsrK2Epe2NvbnN0IG49ZS5nZXQoYSk7dC5hZGQoKDAsci5ieXRlc1RvU3RyaW5nKShuKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxuKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrLG89dC5sZW5ndGg7Zm9yKGxldCBoPTA7aDxvOyl7Y29uc3Qgbz10W2grK107bGV0IHU9bnVsbDtpZigxMj09PW8pe2NvbnN0IGU9dFtoKytdO2lmKDA9PT1lKXt0W2gtMl09MTM5O3RbaC0xXT0yMjtpPTB9ZWxzZSB1PWxbZV19ZWxzZSBpZigyOD09PW8pe3NbaV09KHRbaF08PDI0fHRbaCsxXTw8MTYpPj4xNjtoKz0yO2krK31lbHNlIGlmKDE0PT09byl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19dT1jW29dfWVsc2UgaWYobz49MzImJm88PTI0Nil7c1tpXT1vLTEzOTtpKyt9ZWxzZSBpZihvPj0yNDcmJm88PTI1NCl7c1tpXT1vPDI1MT8oby0yNDc8PDgpK3RbaF0rMTA4Oi0oby0yNTE8PDgpLXRbaF0tMTA4O2grKztpKyt9ZWxzZSBpZigyNTU9PT1vKXtzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2O2grPTQ7aSsrfWVsc2UgaWYoMTk9PT1vfHwyMD09PW8pe2UuaGludHMrPWk+PjE7aCs9ZS5oaW50cys3Pj4zO2klPTI7dT1jW29dfWVsc2V7aWYoMTA9PT1vfHwyOT09PW8pe2xldCB0O3Q9MTA9PT1vP2E6bjtpZighdCl7dT1jW29dOygwLHIud2FybikoIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIit1LmlkKTtyZXR1cm4hMX1sZXQgbD0zMjc2ODt0LmNvdW50PDEyNDA/bD0xMDc6dC5jb3VudDwzMzkwMCYmKGw9MTEzMSk7Y29uc3QgaD1zWy0taV0rbDtpZihoPDB8fGg+PXQuY291bnR8fGlzTmFOKGgpKXt1PWNbb107KDAsci53YXJuKSgiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrdS5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9aTtlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KGgpLGEsbikpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtpPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09byl7ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1pZigwPT09byYmaD09PXQubGVuZ3RoKXt0W2gtMV09MTQ7dT1jWzE0XX1lbHNlIHU9Y1tvXX1pZih1KXtpZih1LnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PW98fDIzPT09byllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PW98fDE4PT09bykpeygwLHIud2FybikoIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3RbaC0xXT0xPT09bz8zOjIzfX1pZigibWluImluIHUmJiFlLnVuZGVmU3RhY2smJmk8dS5taW4peygwLHIud2FybikoIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIit1LmlkKyI7IGFjdHVhbDogIitpKyIsIGV4cGVjdGVkOiAiK3UubWluKTtpZigwPT09aSl7dFtoLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZ1LnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO2ktPXUubWluO2k+PTImJnUuc3RlbT9pJT0yOmk+MSYmKDAsci53YXJuKSgiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO2k+MCYmKGUud2lkdGg9c1tpLTFdKX1pZigic3RhY2tEZWx0YSJpbiB1KXsic3RhY2tGbiJpbiB1JiZ1LnN0YWNrRm4ocyxpKTtpKz11LnN0YWNrRGVsdGF9ZWxzZSBpZih1LnN0YWNrQ2xlYXJpbmcpaT0wO2Vsc2UgaWYodS5yZXNldFN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYodS51bmRlZlN0YWNrKXtpPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19ZS5zdGFja1NpemU9aTtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmEsZmRTZWxlY3Q6bixmZEFycmF5OmkscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG89W10sYz1bXSxsPWUuY291bnQ7Zm9yKGxldCBoPTA7aDxsO2grKyl7Y29uc3QgbD1lLmdldChoKSx1PXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGQ9ITAsZj1udWxsLGc9cztpZihuJiZpLmxlbmd0aCl7Y29uc3QgZT1uLmdldEZESW5kZXgoaCk7aWYoLTE9PT1lKXsoMCxyLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2Q9ITF9aWYoZT49aS5sZW5ndGgpeygwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2Q9ITF9aWYoZCl7Zz1pW2VdLnByaXZhdGVEaWN0O2Y9Zy5zdWJyc0luZGV4fX1lbHNlIHQmJihmPXQpO2QmJihkPXRoaXMucGFyc2VDaGFyU3RyaW5nKHUsbCxmLGEpKTtpZihudWxsIT09dS53aWR0aCl7Y29uc3QgZT1nLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO2NbaF09ZSt1LndpZHRofWVsc2V7Y29uc3QgZT1nLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO2NbaF09ZX1udWxsIT09dS5zZWFjJiYob1toXT11LnNlYWMpO2R8fGUuc2V0KGgsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm8sd2lkdGhzOmN9fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGE9dFswXSxyPXRbMV07aWYoMD09PWF8fHI+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IG49cithLGk9dGhpcy5ieXRlcy5zdWJhcnJheShyLG4pLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QscyxlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bztpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGM9by5nZXRCeU5hbWUoIlN1YnJzIiksbD1yK2M7aWYoMD09PWN8fGw+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IGg9dGhpcy5wYXJzZUluZGV4KGwpO28uc3VicnNJbmRleD1oLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxhLGkpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxkLklTT19BRE9CRSxuLklTT0Fkb2JlQ2hhcnNldCk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJULG4uRXhwZXJ0Q2hhcnNldCk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLGQuRVhQRVJUX1NVQlNFVCxuLkV4cGVydFN1YnNldENoYXJzZXQpO2NvbnN0IHM9dGhpcy5ieXRlcyxvPWUsYz1zW2UrK10sbD1baT8wOiIubm90ZGVmIl07bGV0IGgsdSxmO3QtPTE7c3dpdGNoKGMpe2Nhc2UgMDpmb3IoZj0wO2Y8dDtmKyspe2g9c1tlKytdPDw4fHNbZSsrXTtsLnB1c2goaT9oOmEuZ2V0KGgpKX1icmVhaztjYXNlIDE6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTtmb3IoZj0wO2Y8PXU7ZisrKWwucHVzaChpP2grKzphLmdldChoKyspKX1icmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspe2g9c1tlKytdPDw4fHNbZSsrXTt1PXNbZSsrXTw8OHxzW2UrK107Zm9yKGY9MDtmPD11O2YrKylsLnB1c2goaT9oKys6YS5nZXQoaCsrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IGc9ZSxwPXMuc3ViYXJyYXkobyxnKTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEsYyxsLHApfXBhcnNlRW5jb2RpbmcoZSx0LGEsbil7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpLG89dGhpcy5ieXRlcztsZXQgYyxsLGgsdT0hMSxkPW51bGw7aWYoMD09PWV8fDE9PT1lKXt1PSEwO2M9ZTtjb25zdCB0PWU/aS5FeHBlcnRFbmNvZGluZzppLlN0YW5kYXJkRW5jb2Rpbmc7Zm9yKGw9MCxoPW4ubGVuZ3RoO2w8aDtsKyspe2NvbnN0IGU9dC5pbmRleE9mKG5bbF0pOy0xIT09ZSYmKHNbZV09bCl9fWVsc2V7Y29uc3QgdD1lO2M9b1tlKytdO3N3aXRjaCgxMjcmYyl7Y2FzZSAwOmNvbnN0IHQ9b1tlKytdO2ZvcihsPTE7bDw9dDtsKyspc1tvW2UrK11dPWw7YnJlYWs7Y2FzZSAxOmNvbnN0IGE9b1tlKytdO2xldCBuPTE7Zm9yKGw9MDtsPGE7bCsrKXtjb25zdCB0PW9bZSsrXSxhPW9bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKXNbZV09bisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke2N9IGluIENGRmApfWNvbnN0IGk9ZTtpZigxMjgmYyl7b1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9b1tlKytdO2ZvcihsPTA7bDx0O2wrKyl7Y29uc3QgdD1vW2UrK10scj0ob1tlKytdPDw4KSsoMjU1Jm9bZSsrXSk7c1t0XT1uLmluZGV4T2YoYS5nZXQocikpfX0oKX1kPW8uc3ViYXJyYXkodCxpKX1jJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyh1LGMscyxkKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgYT10aGlzLmJ5dGVzLG49YVtlKytdLGk9W107bGV0IHM7c3dpdGNoKG4pe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9YVtlKytdO2kucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbz1hW2UrK108PDh8YVtlKytdO2ZvcihzPTA7czxvOysrcyl7bGV0IHQ9YVtlKytdPDw4fGFbZSsrXTtpZigwPT09cyYmMCE9PXQpeygwLHIud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3Qgbj1hW2UrK10sbz1hW2VdPDw4fGFbZSsxXTtmb3IobGV0IGU9dDtlPG87KytlKWkucHVzaChuKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke259Ii5gKX1pZihpLmxlbmd0aCE9PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QobixpKX19O2NsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXsoMCxyLndhcm4pKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19dC5DRkY9Q0ZGO2NsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX10LkNGRkhlYWRlcj1DRkZIZWFkZXI7Y2xhc3MgQ0ZGU3RyaW5nc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RyaW5ncz1bXX1nZXQoZSl7cmV0dXJuIGU+PTAmJmU8PTM5MD9zW2VdOmUtbzw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1vXTpzWzBdfWdldFNJRChlKXtsZXQgdD1zLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrbzotMX1hZGQoZSl7dGhpcy5zdHJpbmdzLnB1c2goZSl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuc3RyaW5ncy5sZW5ndGh9fXQuQ0ZGU3RyaW5ncz1DRkZTdHJpbmdzO2NsYXNzIENGRkluZGV4e2NvbnN0cnVjdG9yKCl7dGhpcy5vYmplY3RzPVtdO3RoaXMubGVuZ3RoPTB9YWRkKGUpe3RoaXMubGVuZ3RoKz1lLmxlbmd0aDt0aGlzLm9iamVjdHMucHVzaChlKX1zZXQoZSx0KXt0aGlzLmxlbmd0aCs9dC5sZW5ndGgtdGhpcy5vYmplY3RzW2VdLmxlbmd0aDt0aGlzLm9iamVjdHNbZV09dH1nZXQoZSl7cmV0dXJuIHRoaXMub2JqZWN0c1tlXX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5vYmplY3RzLmxlbmd0aH19dC5DRkZJbmRleD1DRkZJbmRleDtjbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7KDAsci53YXJuKShgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgJHtlfSJgKTtjb25zdCB0PXRoaXMubmFtZVRvS2V5TWFwW2VdO3JldHVybiB0IGluIHRoaXMudmFsdWVzP3RoaXMudmFsdWVzW3RdOnRoaXMuZGVmYXVsdHNbdF19cmVtb3ZlQnlOYW1lKGUpe2RlbGV0ZSB0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV19c3RhdGljIGNyZWF0ZVRhYmxlcyhlKXtjb25zdCB0PXtrZXlUb05hbWVNYXA6e30sbmFtZVRvS2V5TWFwOnt9LGRlZmF1bHRzOnt9LHR5cGVzOnt9LG9wY29kZXM6e30sb3JkZXI6W119O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9QXJyYXkuaXNBcnJheShhWzBdKT8oYVswXVswXTw8OCkrYVswXVsxXTphWzBdO3Qua2V5VG9OYW1lTWFwW2VdPWFbMV07dC5uYW1lVG9LZXlNYXBbYVsxXV09ZTt0LnR5cGVzW2VdPWFbMl07dC5kZWZhdWx0c1tlXT1hWzNdO3Qub3Bjb2Rlc1tlXT1BcnJheS5pc0FycmF5KGFbMF0pP2FbMF06W2FbMF1dO3Qub3JkZXIucHVzaChlKX1yZXR1cm4gdH19Y29uc3QgaD1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoaCkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlRvcERpY3QudGFibGVzLGUpO3RoaXMucHJpdmF0ZURpY3Q9bnVsbH19dC5DRkZUb3BEaWN0PUNGRlRvcERpY3Q7Y29uc3QgdT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHUpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZQcml2YXRlRGljdC50YWJsZXMsZSk7dGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Q0ZGUHJpdmF0ZURpY3Q7Y29uc3QgZD17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWE7dGhpcy5yYXc9cn19dC5DRkZDaGFyc2V0PUNGRkNoYXJzZXQ7Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWE7dGhpcy5yYXc9cn19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9Q0ZGRkRTZWxlY3Q7Y2xhc3MgQ0ZGT2Zmc2V0VHJhY2tlcntjb25zdHJ1Y3Rvcigpe3RoaXMub2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpfWlzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IG49YS5kYXRhLGk9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhOysrZSl7Y29uc3QgYT01KmUraSxzPWErMSxvPWErMixjPWErMyxsPWErNDtpZigyOSE9PW5bYV18fDAhPT1uW3NdfHwwIT09bltvXXx8MCE9PW5bY118fDAhPT1uW2xdKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGg9dFtlXTtuW2FdPTI5O25bc109aD4+MjQmMjU1O25bb109aD4+MTYmMjU1O25bY109aD4+OCYyNTU7bltsXT0yNTUmaH19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD17ZGF0YTpbXSxsZW5ndGg6MCxhZGQoZSl7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSk7dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCBuPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChuKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9ci5VdGlsLnRyYW5zZm9ybShlLGEuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTthLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IGk9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO2kmJmkubGVuZ3RoPjE2JiZlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJYVUlEIik7ZS50b3BEaWN0LnNldEJ5TmFtZSgiY2hhcnNldCIsMCk7bGV0IHM9dGhpcy5jb21waWxlVG9wRGljdHMoW2UudG9wRGljdF0sdC5sZW5ndGgsZS5pc0NJREZvbnQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBvPXMudHJhY2tlcnNbMF0sYz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5hZGQoYyk7Y29uc3QgbD10aGlzLmNvbXBpbGVJbmRleChlLmdsb2JhbFN1YnJJbmRleCk7dC5hZGQobCk7aWYoZS5lbmNvZGluZyYmZS50b3BEaWN0Lmhhc05hbWUoIkVuY29kaW5nIikpaWYoZS5lbmNvZGluZy5wcmVkZWZpbmVkKW8uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFtlLmVuY29kaW5nLmZvcm1hdF0sdCk7ZWxzZXtjb25zdCBhPXRoaXMuY29tcGlsZUVuY29kaW5nKGUuZW5jb2RpbmcpO28uc2V0RW50cnlMb2NhdGlvbigiRW5jb2RpbmciLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYSl9Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7by5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2NvbnN0IHU9dGhpcy5jb21waWxlQ2hhclN0cmluZ3MoZS5jaGFyU3RyaW5ncyk7by5zZXRFbnRyeUxvY2F0aW9uKCJDaGFyU3RyaW5ncyIsW3QubGVuZ3RoXSx0KTt0LmFkZCh1KTtpZihlLmlzQ0lERm9udCl7by5zZXRFbnRyeUxvY2F0aW9uKCJGRFNlbGVjdCIsW3QubGVuZ3RoXSx0KTtjb25zdCBhPXRoaXMuY29tcGlsZUZEU2VsZWN0KGUuZmRTZWxlY3QpO3QuYWRkKGEpO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtvLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IHI9cy50cmFja2Vyczt0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoZS5mZEFycmF5LHIsdCl9dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKFtlLnRvcERpY3RdLFtvXSx0KTt0LmFkZChbMF0pO3JldHVybiB0LmRhdGF9ZW5jb2RlTnVtYmVyKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpP3RoaXMuZW5jb2RlSW50ZWdlcihlKTp0aGlzLmVuY29kZUZsb2F0KGUpfXN0YXRpYyBnZXQgRW5jb2RlRmxvYXRSZWdFeHAoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLG4saT0iIjtmb3Iocj0wLG49dC5sZW5ndGg7cjxuOysrcil7Y29uc3QgZT10W3JdO2krPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLG49aS5sZW5ndGg7cjxuO3IrPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCBuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO25bdF09ZX1uPW4uam9pbigiIik7IiI9PT1uJiYobj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKCgwLHIuc3RyaW5nVG9CeXRlcykobikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IG49bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpe2lmKGEpe2kucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO2kucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtpLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtpLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtpLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7ci5wdXNoKGUpO24uYWRkKHMpO2Uub2Zmc2V0KHQpfW49dGhpcy5jb21waWxlSW5kZXgobixyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6bn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKXtjb25zdCBpPWVbbl0scz1pLnByaXZhdGVEaWN0O2lmKCFzfHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbz1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixjPXRoaXMuY29tcGlsZURpY3QocyxvKTtsZXQgbD1hLmxlbmd0aDtvLm9mZnNldChsKTtjLmxlbmd0aHx8KGw9MCk7dFtuXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbYy5sZW5ndGgsbF0sYSk7YS5hZGQoYyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtvLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbYy5sZW5ndGhdLGEpO2EuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBhPVtdO2Zvcihjb25zdCBuIG9mIGUub3JkZXIpe2lmKCEobiBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IGk9ZS52YWx1ZXNbbl0scz1lLnR5cGVzW25dO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpZigwIT09aS5sZW5ndGgpe2ZvcihsZXQgbz0wLGM9cy5sZW5ndGg7bzxjOysrbyl7Y29uc3QgYz1zW29dLGw9aVtvXTtzd2l0Y2goYyl7Y2FzZSJudW0iOmNhc2Uic2lkIjphLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIobCkpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW25dO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGEubGVuZ3RoKTthLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTtmb3IobGV0IGU9MSx0PWkubGVuZ3RoO2U8dDsrK2UpYS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGlbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmtub3duIGRhdGEgdHlwZSBvZiAke2N9YCl9fWEucHVzaCguLi5lLm9wY29kZXNbbl0pfX1yZXR1cm4gYX1jb21waWxlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl0LmFkZCgoMCxyLnN0cmluZ1RvQnl0ZXMpKGEpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUdsb2JhbFN1YnJJbmRleCgpe2NvbnN0IGU9dGhpcy5jZmYuZ2xvYmFsU3VickluZGV4O3RoaXMub3V0LndyaXRlQnl0ZUFycmF5KHRoaXMuY29tcGlsZUluZGV4KGUpKX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEsbil7bGV0IGk7Y29uc3Qgcz10LTE7aWYobilpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyk7aVswXT0wO2xldCB0PTA7Y29uc3Qgbj1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PG4pe2NvbnN0IG49ZS5jaGFyc2V0W3QrK107Yz1hLmdldFNJRChuKTtpZigtMT09PWMpe2M9MDtpZighbyl7bz0hMDsoMCxyLndhcm4pKGBDb3VsZG4ndCBmaW5kICR7bn0gaW4gQ0ZGIHN0cmluZ3NgKX19fWlbc109Yz4+OCYyNTU7aVtzKzFdPTI1NSZjfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBhLHI7c3dpdGNoKHQpe2Nhc2UgMDphPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2FbMF09dDtmb3Iocj0wO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKWFbcisxXT1lLmZkU2VsZWN0W3JdO2JyZWFrO2Nhc2UgMzpjb25zdCBuPTA7bGV0IGk9ZS5mZFNlbGVjdFswXTtjb25zdCBzPVt0LDAsMCxuPj44JjI1NSwyNTUmbixpXTtmb3Iocj0xO3I8ZS5mZFNlbGVjdC5sZW5ndGg7cisrKXtjb25zdCB0PWUuZmRTZWxlY3Rbcl07aWYodCE9PWkpe3MucHVzaChyPj44JjI1NSwyNTUmcix0KTtpPXR9fWNvbnN0IG89KHMubGVuZ3RoLTMpLzM7c1sxXT1vPj44JjI1NTtzWzJdPTI1NSZvO3MucHVzaChyPj44JjI1NSwyNTUmcik7YT1uZXcgVWludDhBcnJheShzKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShhKX1jb21waWxlVHlwZWRBcnJheShlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0W2FdPWVbYV07cmV0dXJuIHR9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBuPVtyPj44JjI1NSwyNTUmcl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPHI7KytpKW8rPWFbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7bi5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPHIrMTtpKyspezE9PT1zP24ucHVzaCgyNTUmYyk6Mj09PXM/bi5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9uLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTpuLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2FbaV0mJihjKz1hW2ldLmxlbmd0aCl9Zm9yKGk9MDtpPHI7aSsrKXt0W2ldJiZ0W2ldLm9mZnNldChuLmxlbmd0aCk7bi5wdXNoKC4uLmFbaV0pfXJldHVybiBufX10LkNGRkNvbXBpbGVyPUNGRkNvbXBpbGVyfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMDt0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdO3QuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwO3QuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIG47Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPWE7Y29uc3Qgcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLG49WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9bjtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDA7dC5nZXRGb250VHlwZT1mdW5jdGlvbiBnZXRGb250VHlwZShlLHQsYT0hMSl7c3dpdGNoKGUpe2Nhc2UiVHlwZTEiOnJldHVybiBhP3IuRm9udFR5cGUuVFlQRTFTVEFOREFSRDoiVHlwZTFDIj09PXQ/ci5Gb250VHlwZS5UWVBFMUM6ci5Gb250VHlwZS5UWVBFMTtjYXNlIkNJREZvbnRUeXBlMCI6cmV0dXJuIkNJREZvbnRUeXBlMEMiPT09dD9yLkZvbnRUeXBlLkNJREZPTlRUWVBFMEM6ci5Gb250VHlwZS5DSURGT05UVFlQRTA7Y2FzZSJPcGVuVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuT1BFTlRZUEU7Y2FzZSJUcnVlVHlwZSI6cmV0dXJuIHIuRm9udFR5cGUuVFJVRVRZUEU7Y2FzZSJDSURGb250VHlwZTIiOnJldHVybiByLkZvbnRUeXBlLkNJREZPTlRUWVBFMjtjYXNlIk1NVHlwZTEiOnJldHVybiByLkZvbnRUeXBlLk1NVFlQRTE7Y2FzZSJUeXBlMCI6cmV0dXJuIHIuRm9udFR5cGUuVFlQRTA7ZGVmYXVsdDpyZXR1cm4gci5Gb250VHlwZS5VTktOT1dOfX07dC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLF9dL2csIi0iKS5yZXBsYWNlKC9ccy9nLCIiKX07dC5yZWNvdmVyR2x5cGhOYW1lPXJlY292ZXJHbHlwaE5hbWU7dC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHMsYyxsO2NvbnN0IGg9ISEoZS5mbGFncyZvLlN5bWJvbGljKTtpZihlLmlzSW50ZXJuYWxGb250KXtsPXQ7Zm9yKGM9MDtjPGwubGVuZ3RoO2MrKyl7cz1hLmluZGV4T2YobFtjXSk7cltjXT1zPj0wP3M6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe2w9KDAsbi5nZXRFbmNvZGluZykoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1lbHNlIGlmKGgpZm9yKGMgaW4gdClyW2NdPXRbY107ZWxzZXtsPW4uU3RhbmRhcmRFbmNvZGluZztmb3IoYz0wO2M8bC5sZW5ndGg7YysrKXtzPWEuaW5kZXhPZihsW2NdKTtyW2NdPXM+PTA/czowfX1jb25zdCB1PWUuZGlmZmVyZW5jZXM7bGV0IGQ7aWYodSlmb3IoYyBpbiB1KXtjb25zdCBlPXVbY107cz1hLmluZGV4T2YoZSk7aWYoLTE9PT1zKXtkfHwoZD0oMCxpLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGQpO3QhPT1lJiYocz1hLmluZGV4T2YodCkpfXJbY109cz49MD9zOjB9cmV0dXJuIHJ9O3ZhciByPWEoMiksbj1hKDM1KSxpPWEoMzcpLHM9YSgzOCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTt0LkZvbnRGbGFncz1vO3QuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBhPSgwLHMuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09YSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1hKXJldHVybiBlOygwLHIuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9fSwoZSx0LGEpPT57YS5yKHQpO2EuZCh0LHtnZXREaW5nYmF0c0dseXBoc1VuaWNvZGU6KCk9PmksZ2V0R2x5cGhzVW5pY29kZTooKT0+bn0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldEFycmF5TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oKXtyZXR1cm5bIkEiLDY1LCJBRSIsMTk4LCJBRWFjdXRlIiw1MDgsIkFFbWFjcm9uIiw0ODIsIkFFc21hbGwiLDYzNDYyLCJBYWN1dGUiLDE5MywiQWFjdXRlc21hbGwiLDYzNDU3LCJBYnJldmUiLDI1OCwiQWJyZXZlYWN1dGUiLDc4NTQsIkFicmV2ZWN5cmlsbGljIiwxMjMyLCJBYnJldmVkb3RiZWxvdyIsNzg2MiwiQWJyZXZlZ3JhdmUiLDc4NTYsIkFicmV2ZWhvb2thYm92ZSIsNzg1OCwiQWJyZXZldGlsZGUiLDc4NjAsIkFjYXJvbiIsNDYxLCJBY2lyY2xlIiw5Mzk4LCJBY2lyY3VtZmxleCIsMTk0LCJBY2lyY3VtZmxleGFjdXRlIiw3ODQ0LCJBY2lyY3VtZmxleGRvdGJlbG93Iiw3ODUyLCJBY2lyY3VtZmxleGdyYXZlIiw3ODQ2LCJBY2lyY3VtZmxleGhvb2thYm92ZSIsNzg0OCwiQWNpcmN1bWZsZXhzbWFsbCIsNjM0NTgsIkFjaXJjdW1mbGV4dGlsZGUiLDc4NTAsIkFjdXRlIiw2MzE3NywiQWN1dGVzbWFsbCIsNjM0MTIsIkFjeXJpbGxpYyIsMTA0MCwiQWRibGdyYXZlIiw1MTIsIkFkaWVyZXNpcyIsMTk2LCJBZGllcmVzaXNjeXJpbGxpYyIsMTIzNCwiQWRpZXJlc2lzbWFjcm9uIiw0NzgsIkFkaWVyZXNpc3NtYWxsIiw2MzQ2MCwiQWRvdGJlbG93Iiw3ODQwLCJBZG90bWFjcm9uIiw0ODAsIkFncmF2ZSIsMTkyLCJBZ3JhdmVzbWFsbCIsNjM0NTYsIkFob29rYWJvdmUiLDc4NDIsIkFpZWN5cmlsbGljIiwxMjM2LCJBaW52ZXJ0ZWRicmV2ZSIsNTE0LCJBbHBoYSIsOTEzLCJBbHBoYXRvbm9zIiw5MDIsIkFtYWNyb24iLDI1NiwiQW1vbm9zcGFjZSIsNjUzMTMsIkFvZ29uZWsiLDI2MCwiQXJpbmciLDE5NywiQXJpbmdhY3V0ZSIsNTA2LCJBcmluZ2JlbG93Iiw3NjgwLCJBcmluZ3NtYWxsIiw2MzQ2MSwiQXNtYWxsIiw2MzMyOSwiQXRpbGRlIiwxOTUsIkF0aWxkZXNtYWxsIiw2MzQ1OSwiQXliYXJtZW5pYW4iLDEzMjksIkIiLDY2LCJCY2lyY2xlIiw5Mzk5LCJCZG90YWNjZW50Iiw3NjgyLCJCZG90YmVsb3ciLDc2ODQsIkJlY3lyaWxsaWMiLDEwNDEsIkJlbmFybWVuaWFuIiwxMzMwLCJCZXRhIiw5MTQsIkJob29rIiwzODUsIkJsaW5lYmVsb3ciLDc2ODYsIkJtb25vc3BhY2UiLDY1MzE0LCJCcmV2ZXNtYWxsIiw2MzIyMCwiQnNtYWxsIiw2MzMzMCwiQnRvcGJhciIsMzg2LCJDIiw2NywiQ2Fhcm1lbmlhbiIsMTM0MiwiQ2FjdXRlIiwyNjIsIkNhcm9uIiw2MzE3OCwiQ2Fyb25zbWFsbCIsNjMyMjEsIkNjYXJvbiIsMjY4LCJDY2VkaWxsYSIsMTk5LCJDY2VkaWxsYWFjdXRlIiw3Njg4LCJDY2VkaWxsYXNtYWxsIiw2MzQ2MywiQ2NpcmNsZSIsOTQwMCwiQ2NpcmN1bWZsZXgiLDI2NCwiQ2RvdCIsMjY2LCJDZG90YWNjZW50IiwyNjYsIkNlZGlsbGFzbWFsbCIsNjM0MTYsIkNoYWFybWVuaWFuIiwxMzUzLCJDaGVhYmtoYXNpYW5jeXJpbGxpYyIsMTIxMiwiQ2hlY3lyaWxsaWMiLDEwNjMsIkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljIiwxMjE0LCJDaGVkZXNjZW5kZXJjeXJpbGxpYyIsMTIwNiwiQ2hlZGllcmVzaXNjeXJpbGxpYyIsMTI2OCwiQ2hlaGFybWVuaWFuIiwxMzQ3LCJDaGVraGFrYXNzaWFuY3lyaWxsaWMiLDEyMjcsIkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMiLDEyMDgsIkNoaSIsOTM1LCJDaG9vayIsMzkxLCJDaXJjdW1mbGV4c21hbGwiLDYzMjIyLCJDbW9ub3NwYWNlIiw2NTMxNSwiQ29hcm1lbmlhbiIsMTM2MSwiQ3NtYWxsIiw2MzMzMSwiRCIsNjgsIkRaIiw0OTcsIkRaY2Fyb24iLDQ1MiwiRGFhcm1lbmlhbiIsMTMzMiwiRGFmcmljYW4iLDM5MywiRGNhcm9uIiwyNzAsIkRjZWRpbGxhIiw3Njk2LCJEY2lyY2xlIiw5NDAxLCJEY2lyY3VtZmxleGJlbG93Iiw3Njk4LCJEY3JvYXQiLDI3MiwiRGRvdGFjY2VudCIsNzY5MCwiRGRvdGJlbG93Iiw3NjkyLCJEZWN5cmlsbGljIiwxMDQ0LCJEZWljb3B0aWMiLDEwMDYsIkRlbHRhIiw4NzEwLCJEZWx0YWdyZWVrIiw5MTYsIkRob29rIiwzOTQsIkRpZXJlc2lzIiw2MzE3OSwiRGllcmVzaXNBY3V0ZSIsNjMxODAsIkRpZXJlc2lzR3JhdmUiLDYzMTgxLCJEaWVyZXNpc3NtYWxsIiw2MzQwMCwiRGlnYW1tYWdyZWVrIiw5ODgsIkRqZWN5cmlsbGljIiwxMDI2LCJEbGluZWJlbG93Iiw3Njk0LCJEbW9ub3NwYWNlIiw2NTMxNiwiRG90YWNjZW50c21hbGwiLDYzMjIzLCJEc2xhc2giLDI3MiwiRHNtYWxsIiw2MzMzMiwiRHRvcGJhciIsMzk1LCJEeiIsNDk4LCJEemNhcm9uIiw0NTMsIkR6ZWFia2hhc2lhbmN5cmlsbGljIiwxMjQ4LCJEemVjeXJpbGxpYyIsMTAyOSwiRHpoZWN5cmlsbGljIiwxMDM5LCJFIiw2OSwiRWFjdXRlIiwyMDEsIkVhY3V0ZXNtYWxsIiw2MzQ2NSwiRWJyZXZlIiwyNzYsIkVjYXJvbiIsMjgyLCJFY2VkaWxsYWJyZXZlIiw3NzA4LCJFY2hhcm1lbmlhbiIsMTMzMywiRWNpcmNsZSIsOTQwMiwiRWNpcmN1bWZsZXgiLDIwMiwiRWNpcmN1bWZsZXhhY3V0ZSIsNzg3MCwiRWNpcmN1bWZsZXhiZWxvdyIsNzcwNCwiRWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg3OCwiRWNpcmN1bWZsZXhncmF2ZSIsNzg3MiwiRWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NzQsIkVjaXJjdW1mbGV4c21hbGwiLDYzNDY2LCJFY2lyY3VtZmxleHRpbGRlIiw3ODc2LCJFY3lyaWxsaWMiLDEwMjgsIkVkYmxncmF2ZSIsNTE2LCJFZGllcmVzaXMiLDIwMywiRWRpZXJlc2lzc21hbGwiLDYzNDY3LCJFZG90IiwyNzgsIkVkb3RhY2NlbnQiLDI3OCwiRWRvdGJlbG93Iiw3ODY0LCJFZmN5cmlsbGljIiwxMDYwLCJFZ3JhdmUiLDIwMCwiRWdyYXZlc21hbGwiLDYzNDY0LCJFaGFybWVuaWFuIiwxMzM1LCJFaG9va2Fib3ZlIiw3ODY2LCJFaWdodHJvbWFuIiw4NTUxLCJFaW52ZXJ0ZWRicmV2ZSIsNTE4LCJFaW90aWZpZWRjeXJpbGxpYyIsMTEyNCwiRWxjeXJpbGxpYyIsMTA1MSwiRWxldmVucm9tYW4iLDg1NTQsIkVtYWNyb24iLDI3NCwiRW1hY3JvbmFjdXRlIiw3NzAyLCJFbWFjcm9uZ3JhdmUiLDc3MDAsIkVtY3lyaWxsaWMiLDEwNTIsIkVtb25vc3BhY2UiLDY1MzE3LCJFbmN5cmlsbGljIiwxMDUzLCJFbmRlc2NlbmRlcmN5cmlsbGljIiwxMTg2LCJFbmciLDMzMCwiRW5naGVjeXJpbGxpYyIsMTE4OCwiRW5ob29rY3lyaWxsaWMiLDEyMjMsIkVvZ29uZWsiLDI4MCwiRW9wZW4iLDQwMCwiRXBzaWxvbiIsOTE3LCJFcHNpbG9udG9ub3MiLDkwNCwiRXJjeXJpbGxpYyIsMTA1NiwiRXJldmVyc2VkIiwzOTgsIkVyZXZlcnNlZGN5cmlsbGljIiwxMDY5LCJFc2N5cmlsbGljIiwxMDU3LCJFc2Rlc2NlbmRlcmN5cmlsbGljIiwxMTk0LCJFc2giLDQyNSwiRXNtYWxsIiw2MzMzMywiRXRhIiw5MTksIkV0YXJtZW5pYW4iLDEzMzYsIkV0YXRvbm9zIiw5MDUsIkV0aCIsMjA4LCJFdGhzbWFsbCIsNjM0NzIsIkV0aWxkZSIsNzg2OCwiRXRpbGRlYmVsb3ciLDc3MDYsIkV1cm8iLDgzNjQsIkV6aCIsNDM5LCJFemhjYXJvbiIsNDk0LCJFemhyZXZlcnNlZCIsNDQwLCJGIiw3MCwiRmNpcmNsZSIsOTQwMywiRmRvdGFjY2VudCIsNzcxMCwiRmVoYXJtZW5pYW4iLDEzNjYsIkZlaWNvcHRpYyIsOTk2LCJGaG9vayIsNDAxLCJGaXRhY3lyaWxsaWMiLDExMzgsIkZpdmVyb21hbiIsODU0OCwiRm1vbm9zcGFjZSIsNjUzMTgsIkZvdXJyb21hbiIsODU0NywiRnNtYWxsIiw2MzMzNCwiRyIsNzEsIkdCc3F1YXJlIiwxMzE5MSwiR2FjdXRlIiw1MDAsIkdhbW1hIiw5MTUsIkdhbW1hYWZyaWNhbiIsNDA0LCJHYW5naWFjb3B0aWMiLDEwMDIsIkdicmV2ZSIsMjg2LCJHY2Fyb24iLDQ4NiwiR2NlZGlsbGEiLDI5MCwiR2NpcmNsZSIsOTQwNCwiR2NpcmN1bWZsZXgiLDI4NCwiR2NvbW1hYWNjZW50IiwyOTAsIkdkb3QiLDI4OCwiR2RvdGFjY2VudCIsMjg4LCJHZWN5cmlsbGljIiwxMDQzLCJHaGFkYXJtZW5pYW4iLDEzNDYsIkdoZW1pZGRsZWhvb2tjeXJpbGxpYyIsMTE3MiwiR2hlc3Ryb2tlY3lyaWxsaWMiLDExNzAsIkdoZXVwdHVybmN5cmlsbGljIiwxMTY4LCJHaG9vayIsNDAzLCJHaW1hcm1lbmlhbiIsMTMzMSwiR2plY3lyaWxsaWMiLDEwMjcsIkdtYWNyb24iLDc3MTIsIkdtb25vc3BhY2UiLDY1MzE5LCJHcmF2ZSIsNjMxODIsIkdyYXZlc21hbGwiLDYzMzI4LCJHc21hbGwiLDYzMzM1LCJHc21hbGxob29rIiw2NjcsIkdzdHJva2UiLDQ4NCwiSCIsNzIsIkgxODUzMyIsOTY3OSwiSDE4NTQzIiw5NjQyLCJIMTg1NTEiLDk2NDMsIkgyMjA3MyIsOTYzMywiSFBzcXVhcmUiLDEzMjU5LCJIYWFia2hhc2lhbmN5cmlsbGljIiwxMTkyLCJIYWRlc2NlbmRlcmN5cmlsbGljIiwxMjAyLCJIYXJkc2lnbmN5cmlsbGljIiwxMDY2LCJIYmFyIiwyOTQsIkhicmV2ZWJlbG93Iiw3NzIyLCJIY2VkaWxsYSIsNzcyMCwiSGNpcmNsZSIsOTQwNSwiSGNpcmN1bWZsZXgiLDI5MiwiSGRpZXJlc2lzIiw3NzE4LCJIZG90YWNjZW50Iiw3NzE0LCJIZG90YmVsb3ciLDc3MTYsIkhtb25vc3BhY2UiLDY1MzIwLCJIb2FybWVuaWFuIiwxMzQ0LCJIb3JpY29wdGljIiwxZTMsIkhzbWFsbCIsNjMzMzYsIkh1bmdhcnVtbGF1dCIsNjMxODMsIkh1bmdhcnVtbGF1dHNtYWxsIiw2MzIyNCwiSHpzcXVhcmUiLDEzMjAwLCJJIiw3MywiSUFjeXJpbGxpYyIsMTA3MSwiSUoiLDMwNiwiSVVjeXJpbGxpYyIsMTA3MCwiSWFjdXRlIiwyMDUsIklhY3V0ZXNtYWxsIiw2MzQ2OSwiSWJyZXZlIiwzMDAsIkljYXJvbiIsNDYzLCJJY2lyY2xlIiw5NDA2LCJJY2lyY3VtZmxleCIsMjA2LCJJY2lyY3VtZmxleHNtYWxsIiw2MzQ3MCwiSWN5cmlsbGljIiwxMDMwLCJJZGJsZ3JhdmUiLDUyMCwiSWRpZXJlc2lzIiwyMDcsIklkaWVyZXNpc2FjdXRlIiw3NzI2LCJJZGllcmVzaXNjeXJpbGxpYyIsMTI1MiwiSWRpZXJlc2lzc21hbGwiLDYzNDcxLCJJZG90IiwzMDQsIklkb3RhY2NlbnQiLDMwNCwiSWRvdGJlbG93Iiw3ODgyLCJJZWJyZXZlY3lyaWxsaWMiLDEyMzgsIkllY3lyaWxsaWMiLDEwNDUsIklmcmFrdHVyIiw4NDY1LCJJZ3JhdmUiLDIwNCwiSWdyYXZlc21hbGwiLDYzNDY4LCJJaG9va2Fib3ZlIiw3ODgwLCJJaWN5cmlsbGljIiwxMDQ4LCJJaW52ZXJ0ZWRicmV2ZSIsNTIyLCJJaXNob3J0Y3lyaWxsaWMiLDEwNDksIkltYWNyb24iLDI5OCwiSW1hY3JvbmN5cmlsbGljIiwxMjUwLCJJbW9ub3NwYWNlIiw2NTMyMSwiSW5pYXJtZW5pYW4iLDEzMzksIklvY3lyaWxsaWMiLDEwMjUsIklvZ29uZWsiLDMwMiwiSW90YSIsOTIxLCJJb3RhYWZyaWNhbiIsNDA2LCJJb3RhZGllcmVzaXMiLDkzOCwiSW90YXRvbm9zIiw5MDYsIklzbWFsbCIsNjMzMzcsIklzdHJva2UiLDQwNywiSXRpbGRlIiwyOTYsIkl0aWxkZWJlbG93Iiw3NzI0LCJJemhpdHNhY3lyaWxsaWMiLDExNDAsIkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljIiwxMTQyLCJKIiw3NCwiSmFhcm1lbmlhbiIsMTM0NSwiSmNpcmNsZSIsOTQwNywiSmNpcmN1bWZsZXgiLDMwOCwiSmVjeXJpbGxpYyIsMTAzMiwiSmhlaGFybWVuaWFuIiwxMzU1LCJKbW9ub3NwYWNlIiw2NTMyMiwiSnNtYWxsIiw2MzMzOCwiSyIsNzUsIktCc3F1YXJlIiwxMzE4OSwiS0tzcXVhcmUiLDEzMjYxLCJLYWJhc2hraXJjeXJpbGxpYyIsMTE4NCwiS2FjdXRlIiw3NzI4LCJLYWN5cmlsbGljIiwxMDUwLCJLYWRlc2NlbmRlcmN5cmlsbGljIiwxMTc4LCJLYWhvb2tjeXJpbGxpYyIsMTIxOSwiS2FwcGEiLDkyMiwiS2FzdHJva2VjeXJpbGxpYyIsMTE4MiwiS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMTgwLCJLY2Fyb24iLDQ4OCwiS2NlZGlsbGEiLDMxMCwiS2NpcmNsZSIsOTQwOCwiS2NvbW1hYWNjZW50IiwzMTAsIktkb3RiZWxvdyIsNzczMCwiS2VoYXJtZW5pYW4iLDEzNjQsIktlbmFybWVuaWFuIiwxMzQzLCJLaGFjeXJpbGxpYyIsMTA2MSwiS2hlaWNvcHRpYyIsOTk4LCJLaG9vayIsNDA4LCJLamVjeXJpbGxpYyIsMTAzNiwiS2xpbmViZWxvdyIsNzczMiwiS21vbm9zcGFjZSIsNjUzMjMsIktvcHBhY3lyaWxsaWMiLDExNTIsIktvcHBhZ3JlZWsiLDk5MCwiS3NpY3lyaWxsaWMiLDExMzQsIktzbWFsbCIsNjMzMzksIkwiLDc2LCJMSiIsNDU1LCJMTCIsNjMxNjcsIkxhY3V0ZSIsMzEzLCJMYW1iZGEiLDkyMywiTGNhcm9uIiwzMTcsIkxjZWRpbGxhIiwzMTUsIkxjaXJjbGUiLDk0MDksIkxjaXJjdW1mbGV4YmVsb3ciLDc3NDAsIkxjb21tYWFjY2VudCIsMzE1LCJMZG90IiwzMTksIkxkb3RhY2NlbnQiLDMxOSwiTGRvdGJlbG93Iiw3NzM0LCJMZG90YmVsb3dtYWNyb24iLDc3MzYsIkxpd25hcm1lbmlhbiIsMTM0MCwiTGoiLDQ1NiwiTGplY3lyaWxsaWMiLDEwMzMsIkxsaW5lYmVsb3ciLDc3MzgsIkxtb25vc3BhY2UiLDY1MzI0LCJMc2xhc2giLDMyMSwiTHNsYXNoc21hbGwiLDYzMjI1LCJMc21hbGwiLDYzMzQwLCJNIiw3NywiTUJzcXVhcmUiLDEzMTkwLCJNYWNyb24iLDYzMTg0LCJNYWNyb25zbWFsbCIsNjM0MDcsIk1hY3V0ZSIsNzc0MiwiTWNpcmNsZSIsOTQxMCwiTWRvdGFjY2VudCIsNzc0NCwiTWRvdGJlbG93Iiw3NzQ2LCJNZW5hcm1lbmlhbiIsMTM0OCwiTW1vbm9zcGFjZSIsNjUzMjUsIk1zbWFsbCIsNjMzNDEsIk10dXJuZWQiLDQxMiwiTXUiLDkyNCwiTiIsNzgsIk5KIiw0NTgsIk5hY3V0ZSIsMzIzLCJOY2Fyb24iLDMyNywiTmNlZGlsbGEiLDMyNSwiTmNpcmNsZSIsOTQxMSwiTmNpcmN1bWZsZXhiZWxvdyIsNzc1NCwiTmNvbW1hYWNjZW50IiwzMjUsIk5kb3RhY2NlbnQiLDc3NDgsIk5kb3RiZWxvdyIsNzc1MCwiTmhvb2tsZWZ0Iiw0MTMsIk5pbmVyb21hbiIsODU1MiwiTmoiLDQ1OSwiTmplY3lyaWxsaWMiLDEwMzQsIk5saW5lYmVsb3ciLDc3NTIsIk5tb25vc3BhY2UiLDY1MzI2LCJOb3dhcm1lbmlhbiIsMTM1MCwiTnNtYWxsIiw2MzM0MiwiTnRpbGRlIiwyMDksIk50aWxkZXNtYWxsIiw2MzQ3MywiTnUiLDkyNSwiTyIsNzksIk9FIiwzMzgsIk9Fc21hbGwiLDYzMjI2LCJPYWN1dGUiLDIxMSwiT2FjdXRlc21hbGwiLDYzNDc1LCJPYmFycmVkY3lyaWxsaWMiLDEyNTYsIk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljIiwxMjU4LCJPYnJldmUiLDMzNCwiT2Nhcm9uIiw0NjUsIk9jZW50ZXJlZHRpbGRlIiw0MTUsIk9jaXJjbGUiLDk0MTIsIk9jaXJjdW1mbGV4IiwyMTIsIk9jaXJjdW1mbGV4YWN1dGUiLDc4ODgsIk9jaXJjdW1mbGV4ZG90YmVsb3ciLDc4OTYsIk9jaXJjdW1mbGV4Z3JhdmUiLDc4OTAsIk9jaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODkyLCJPY2lyY3VtZmxleHNtYWxsIiw2MzQ3NiwiT2NpcmN1bWZsZXh0aWxkZSIsNzg5NCwiT2N5cmlsbGljIiwxMDU0LCJPZGJsYWN1dGUiLDMzNiwiT2RibGdyYXZlIiw1MjQsIk9kaWVyZXNpcyIsMjE0LCJPZGllcmVzaXNjeXJpbGxpYyIsMTI1NCwiT2RpZXJlc2lzc21hbGwiLDYzNDc4LCJPZG90YmVsb3ciLDc4ODQsIk9nb25la3NtYWxsIiw2MzIyNywiT2dyYXZlIiwyMTAsIk9ncmF2ZXNtYWxsIiw2MzQ3NCwiT2hhcm1lbmlhbiIsMTM2NSwiT2htIiw4NDg2LCJPaG9va2Fib3ZlIiw3ODg2LCJPaG9ybiIsNDE2LCJPaG9ybmFjdXRlIiw3ODk4LCJPaG9ybmRvdGJlbG93Iiw3OTA2LCJPaG9ybmdyYXZlIiw3OTAwLCJPaG9ybmhvb2thYm92ZSIsNzkwMiwiT2hvcm50aWxkZSIsNzkwNCwiT2h1bmdhcnVtbGF1dCIsMzM2LCJPaSIsNDE4LCJPaW52ZXJ0ZWRicmV2ZSIsNTI2LCJPbWFjcm9uIiwzMzIsIk9tYWNyb25hY3V0ZSIsNzc2MiwiT21hY3JvbmdyYXZlIiw3NzYwLCJPbWVnYSIsODQ4NiwiT21lZ2FjeXJpbGxpYyIsMTEyMCwiT21lZ2FncmVlayIsOTM3LCJPbWVnYXJvdW5kY3lyaWxsaWMiLDExNDYsIk9tZWdhdGl0bG9jeXJpbGxpYyIsMTE0OCwiT21lZ2F0b25vcyIsOTExLCJPbWljcm9uIiw5MjcsIk9taWNyb250b25vcyIsOTA4LCJPbW9ub3NwYWNlIiw2NTMyNywiT25lcm9tYW4iLDg1NDQsIk9vZ29uZWsiLDQ5MCwiT29nb25la21hY3JvbiIsNDkyLCJPb3BlbiIsMzkwLCJPc2xhc2giLDIxNiwiT3NsYXNoYWN1dGUiLDUxMCwiT3NsYXNoc21hbGwiLDYzNDgwLCJPc21hbGwiLDYzMzQzLCJPc3Ryb2tlYWN1dGUiLDUxMCwiT3RjeXJpbGxpYyIsMTE1MCwiT3RpbGRlIiwyMTMsIk90aWxkZWFjdXRlIiw3NzU2LCJPdGlsZGVkaWVyZXNpcyIsNzc1OCwiT3RpbGRlc21hbGwiLDYzNDc3LCJQIiw4MCwiUGFjdXRlIiw3NzY0LCJQY2lyY2xlIiw5NDEzLCJQZG90YWNjZW50Iiw3NzY2LCJQZWN5cmlsbGljIiwxMDU1LCJQZWhhcm1lbmlhbiIsMTM1NCwiUGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTAsIlBoaSIsOTM0LCJQaG9vayIsNDIwLCJQaSIsOTI4LCJQaXdyYXJtZW5pYW4iLDEzNjMsIlBtb25vc3BhY2UiLDY1MzI4LCJQc2kiLDkzNiwiUHNpY3lyaWxsaWMiLDExMzYsIlBzbWFsbCIsNjMzNDQsIlEiLDgxLCJRY2lyY2xlIiw5NDE0LCJRbW9ub3NwYWNlIiw2NTMyOSwiUXNtYWxsIiw2MzM0NSwiUiIsODIsIlJhYXJtZW5pYW4iLDEzNTYsIlJhY3V0ZSIsMzQwLCJSY2Fyb24iLDM0NCwiUmNlZGlsbGEiLDM0MiwiUmNpcmNsZSIsOTQxNSwiUmNvbW1hYWNjZW50IiwzNDIsIlJkYmxncmF2ZSIsNTI4LCJSZG90YWNjZW50Iiw3NzY4LCJSZG90YmVsb3ciLDc3NzAsIlJkb3RiZWxvd21hY3JvbiIsNzc3MiwiUmVoYXJtZW5pYW4iLDEzNjAsIlJmcmFrdHVyIiw4NDc2LCJSaG8iLDkyOSwiUmluZ3NtYWxsIiw2MzIyOCwiUmludmVydGVkYnJldmUiLDUzMCwiUmxpbmViZWxvdyIsNzc3NCwiUm1vbm9zcGFjZSIsNjUzMzAsIlJzbWFsbCIsNjMzNDYsIlJzbWFsbGludmVydGVkIiw2NDEsIlJzbWFsbGludmVydGVkc3VwZXJpb3IiLDY5NCwiUyIsODMsIlNGMDEwMDAwIiw5NDg0LCJTRjAyMDAwMCIsOTQ5MiwiU0YwMzAwMDAiLDk0ODgsIlNGMDQwMDAwIiw5NDk2LCJTRjA1MDAwMCIsOTUzMiwiU0YwNjAwMDAiLDk1MTYsIlNGMDcwMDAwIiw5NTI0LCJTRjA4MDAwMCIsOTUwMCwiU0YwOTAwMDAiLDk1MDgsIlNGMTAwMDAwIiw5NDcyLCJTRjExMDAwMCIsOTQ3NCwiU0YxOTAwMDAiLDk1NjksIlNGMjAwMDAwIiw5NTcwLCJTRjIxMDAwMCIsOTU1OCwiU0YyMjAwMDAiLDk1NTcsIlNGMjMwMDAwIiw5NTcxLCJTRjI0MDAwMCIsOTU1MywiU0YyNTAwMDAiLDk1NTksIlNGMjYwMDAwIiw5NTY1LCJTRjI3MDAwMCIsOTU2NCwiU0YyODAwMDAiLDk1NjMsIlNGMzYwMDAwIiw5NTY2LCJTRjM3MDAwMCIsOTU2NywiU0YzODAwMDAiLDk1NjIsIlNGMzkwMDAwIiw5NTU2LCJTRjQwMDAwMCIsOTU3NywiU0Y0MTAwMDAiLDk1NzQsIlNGNDIwMDAwIiw5NTY4LCJTRjQzMDAwMCIsOTU1MiwiU0Y0NDAwMDAiLDk1ODAsIlNGNDUwMDAwIiw5NTc1LCJTRjQ2MDAwMCIsOTU3NiwiU0Y0NzAwMDAiLDk1NzIsIlNGNDgwMDAwIiw5NTczLCJTRjQ5MDAwMCIsOTU2MSwiU0Y1MDAwMDAiLDk1NjAsIlNGNTEwMDAwIiw5NTU0LCJTRjUyMDAwMCIsOTU1NSwiU0Y1MzAwMDAiLDk1NzksIlNGNTQwMDAwIiw5NTc4LCJTYWN1dGUiLDM0NiwiU2FjdXRlZG90YWNjZW50Iiw3NzgwLCJTYW1waWdyZWVrIiw5OTIsIlNjYXJvbiIsMzUyLCJTY2Fyb25kb3RhY2NlbnQiLDc3ODIsIlNjYXJvbnNtYWxsIiw2MzIyOSwiU2NlZGlsbGEiLDM1MCwiU2Nod2EiLDM5OSwiU2Nod2FjeXJpbGxpYyIsMTI0MCwiU2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQyLCJTY2lyY2xlIiw5NDE2LCJTY2lyY3VtZmxleCIsMzQ4LCJTY29tbWFhY2NlbnQiLDUzNiwiU2RvdGFjY2VudCIsNzc3NiwiU2RvdGJlbG93Iiw3Nzc4LCJTZG90YmVsb3dkb3RhY2NlbnQiLDc3ODQsIlNlaGFybWVuaWFuIiwxMzU3LCJTZXZlbnJvbWFuIiw4NTUwLCJTaGFhcm1lbmlhbiIsMTM1MSwiU2hhY3lyaWxsaWMiLDEwNjQsIlNoY2hhY3lyaWxsaWMiLDEwNjUsIlNoZWljb3B0aWMiLDk5NCwiU2hoYWN5cmlsbGljIiwxMjEwLCJTaGltYWNvcHRpYyIsMTAwNCwiU2lnbWEiLDkzMSwiU2l4cm9tYW4iLDg1NDksIlNtb25vc3BhY2UiLDY1MzMxLCJTb2Z0c2lnbmN5cmlsbGljIiwxMDY4LCJTc21hbGwiLDYzMzQ3LCJTdGlnbWFncmVlayIsOTg2LCJUIiw4NCwiVGF1Iiw5MzIsIlRiYXIiLDM1OCwiVGNhcm9uIiwzNTYsIlRjZWRpbGxhIiwzNTQsIlRjaXJjbGUiLDk0MTcsIlRjaXJjdW1mbGV4YmVsb3ciLDc3OTIsIlRjb21tYWFjY2VudCIsMzU0LCJUZG90YWNjZW50Iiw3Nzg2LCJUZG90YmVsb3ciLDc3ODgsIlRlY3lyaWxsaWMiLDEwNTgsIlRlZGVzY2VuZGVyY3lyaWxsaWMiLDExOTYsIlRlbnJvbWFuIiw4NTUzLCJUZXRzZWN5cmlsbGljIiwxMjA0LCJUaGV0YSIsOTIwLCJUaG9vayIsNDI4LCJUaG9ybiIsMjIyLCJUaG9ybnNtYWxsIiw2MzQ4NiwiVGhyZWVyb21hbiIsODU0NiwiVGlsZGVzbWFsbCIsNjMyMzAsIlRpd25hcm1lbmlhbiIsMTM1OSwiVGxpbmViZWxvdyIsNzc5MCwiVG1vbm9zcGFjZSIsNjUzMzIsIlRvYXJtZW5pYW4iLDEzMzcsIlRvbmVmaXZlIiw0NDQsIlRvbmVzaXgiLDM4OCwiVG9uZXR3byIsNDIzLCJUcmV0cm9mbGV4aG9vayIsNDMwLCJUc2VjeXJpbGxpYyIsMTA2MiwiVHNoZWN5cmlsbGljIiwxMDM1LCJUc21hbGwiLDYzMzQ4LCJUd2VsdmVyb21hbiIsODU1NSwiVHdvcm9tYW4iLDg1NDUsIlUiLDg1LCJVYWN1dGUiLDIxOCwiVWFjdXRlc21hbGwiLDYzNDgyLCJVYnJldmUiLDM2NCwiVWNhcm9uIiw0NjcsIlVjaXJjbGUiLDk0MTgsIlVjaXJjdW1mbGV4IiwyMTksIlVjaXJjdW1mbGV4YmVsb3ciLDc3OTgsIlVjaXJjdW1mbGV4c21hbGwiLDYzNDgzLCJVY3lyaWxsaWMiLDEwNTksIlVkYmxhY3V0ZSIsMzY4LCJVZGJsZ3JhdmUiLDUzMiwiVWRpZXJlc2lzIiwyMjAsIlVkaWVyZXNpc2FjdXRlIiw0NzEsIlVkaWVyZXNpc2JlbG93Iiw3Nzk0LCJVZGllcmVzaXNjYXJvbiIsNDczLCJVZGllcmVzaXNjeXJpbGxpYyIsMTI2NCwiVWRpZXJlc2lzZ3JhdmUiLDQ3NSwiVWRpZXJlc2lzbWFjcm9uIiw0NjksIlVkaWVyZXNpc3NtYWxsIiw2MzQ4NCwiVWRvdGJlbG93Iiw3OTA4LCJVZ3JhdmUiLDIxNywiVWdyYXZlc21hbGwiLDYzNDgxLCJVaG9va2Fib3ZlIiw3OTEwLCJVaG9ybiIsNDMxLCJVaG9ybmFjdXRlIiw3OTEyLCJVaG9ybmRvdGJlbG93Iiw3OTIwLCJVaG9ybmdyYXZlIiw3OTE0LCJVaG9ybmhvb2thYm92ZSIsNzkxNiwiVWhvcm50aWxkZSIsNzkxOCwiVWh1bmdhcnVtbGF1dCIsMzY4LCJVaHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjYsIlVpbnZlcnRlZGJyZXZlIiw1MzQsIlVrY3lyaWxsaWMiLDExNDQsIlVtYWNyb24iLDM2MiwiVW1hY3JvbmN5cmlsbGljIiwxMjYyLCJVbWFjcm9uZGllcmVzaXMiLDc4MDIsIlVtb25vc3BhY2UiLDY1MzMzLCJVb2dvbmVrIiwzNzAsIlVwc2lsb24iLDkzMywiVXBzaWxvbjEiLDk3OCwiVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrIiw5NzksIlVwc2lsb25hZnJpY2FuIiw0MzMsIlVwc2lsb25kaWVyZXNpcyIsOTM5LCJVcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWsiLDk4MCwiVXBzaWxvbmhvb2tzeW1ib2wiLDk3OCwiVXBzaWxvbnRvbm9zIiw5MTAsIlVyaW5nIiwzNjYsIlVzaG9ydGN5cmlsbGljIiwxMDM4LCJVc21hbGwiLDYzMzQ5LCJVc3RyYWlnaHRjeXJpbGxpYyIsMTE5OCwiVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMiLDEyMDAsIlV0aWxkZSIsMzYwLCJVdGlsZGVhY3V0ZSIsNzgwMCwiVXRpbGRlYmVsb3ciLDc3OTYsIlYiLDg2LCJWY2lyY2xlIiw5NDE5LCJWZG90YmVsb3ciLDc4MDYsIlZlY3lyaWxsaWMiLDEwNDIsIlZld2FybWVuaWFuIiwxMzU4LCJWaG9vayIsNDM0LCJWbW9ub3NwYWNlIiw2NTMzNCwiVm9hcm1lbmlhbiIsMTM1MiwiVnNtYWxsIiw2MzM1MCwiVnRpbGRlIiw3ODA0LCJXIiw4NywiV2FjdXRlIiw3ODEwLCJXY2lyY2xlIiw5NDIwLCJXY2lyY3VtZmxleCIsMzcyLCJXZGllcmVzaXMiLDc4MTIsIldkb3RhY2NlbnQiLDc4MTQsIldkb3RiZWxvdyIsNzgxNiwiV2dyYXZlIiw3ODA4LCJXbW9ub3NwYWNlIiw2NTMzNSwiV3NtYWxsIiw2MzM1MSwiWCIsODgsIlhjaXJjbGUiLDk0MjEsIlhkaWVyZXNpcyIsNzgyMCwiWGRvdGFjY2VudCIsNzgxOCwiWGVoYXJtZW5pYW4iLDEzNDEsIlhpIiw5MjYsIlhtb25vc3BhY2UiLDY1MzM2LCJYc21hbGwiLDYzMzUyLCJZIiw4OSwiWWFjdXRlIiwyMjEsIllhY3V0ZXNtYWxsIiw2MzQ4NSwiWWF0Y3lyaWxsaWMiLDExMjIsIlljaXJjbGUiLDk0MjIsIlljaXJjdW1mbGV4IiwzNzQsIllkaWVyZXNpcyIsMzc2LCJZZGllcmVzaXNzbWFsbCIsNjM0ODcsIllkb3RhY2NlbnQiLDc4MjIsIllkb3RiZWxvdyIsNzkyNCwiWWVyaWN5cmlsbGljIiwxMDY3LCJZZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MiwiWWdyYXZlIiw3OTIyLCJZaG9vayIsNDM1LCJZaG9va2Fib3ZlIiw3OTI2LCJZaWFybWVuaWFuIiwxMzQ5LCJZaWN5cmlsbGljIiwxMDMxLCJZaXduYXJtZW5pYW4iLDEzNjIsIlltb25vc3BhY2UiLDY1MzM3LCJZc21hbGwiLDYzMzUzLCJZdGlsZGUiLDc5MjgsIll1c2JpZ2N5cmlsbGljIiwxMTMwLCJZdXNiaWdpb3RpZmllZGN5cmlsbGljIiwxMTMyLCJZdXNsaXR0bGVjeXJpbGxpYyIsMTEyNiwiWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYyIsMTEyOCwiWiIsOTAsIlphYXJtZW5pYW4iLDEzMzQsIlphY3V0ZSIsMzc3LCJaY2Fyb24iLDM4MSwiWmNhcm9uc21hbGwiLDYzMjMxLCJaY2lyY2xlIiw5NDIzLCJaY2lyY3VtZmxleCIsNzgyNCwiWmRvdCIsMzc5LCJaZG90YWNjZW50IiwzNzksIlpkb3RiZWxvdyIsNzgyNiwiWmVjeXJpbGxpYyIsMTA0NywiWmVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NiwiWmVkaWVyZXNpc2N5cmlsbGljIiwxMjQ2LCJaZXRhIiw5MTgsIlpoZWFybWVuaWFuIiwxMzM4LCJaaGVicmV2ZWN5cmlsbGljIiwxMjE3LCJaaGVjeXJpbGxpYyIsMTA0NiwiWmhlZGVzY2VuZGVyY3lyaWxsaWMiLDExNzQsIlpoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDQsIlpsaW5lYmVsb3ciLDc4MjgsIlptb25vc3BhY2UiLDY1MzM4LCJac21hbGwiLDYzMzU0LCJac3Ryb2tlIiw0MzcsImEiLDk3LCJhYWJlbmdhbGkiLDI0MzgsImFhY3V0ZSIsMjI1LCJhYWRldmEiLDIzMTAsImFhZ3VqYXJhdGkiLDI2OTQsImFhZ3VybXVraGkiLDI1NjYsImFhbWF0cmFndXJtdWtoaSIsMjYyMiwiYWFydXNxdWFyZSIsMTMwNTksImFhdm93ZWxzaWduYmVuZ2FsaSIsMjQ5NCwiYWF2b3dlbHNpZ25kZXZhIiwyMzY2LCJhYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzUwLCJhYmJyZXZpYXRpb25tYXJrYXJtZW5pYW4iLDEzNzUsImFiYnJldmlhdGlvbnNpZ25kZXZhIiwyNDE2LCJhYmVuZ2FsaSIsMjQzNywiYWJvcG9tb2ZvIiwxMjU3MCwiYWJyZXZlIiwyNTksImFicmV2ZWFjdXRlIiw3ODU1LCJhYnJldmVjeXJpbGxpYyIsMTIzMywiYWJyZXZlZG90YmVsb3ciLDc4NjMsImFicmV2ZWdyYXZlIiw3ODU3LCJhYnJldmVob29rYWJvdmUiLDc4NTksImFicmV2ZXRpbGRlIiw3ODYxLCJhY2Fyb24iLDQ2MiwiYWNpcmNsZSIsOTQyNCwiYWNpcmN1bWZsZXgiLDIyNiwiYWNpcmN1bWZsZXhhY3V0ZSIsNzg0NSwiYWNpcmN1bWZsZXhkb3RiZWxvdyIsNzg1MywiYWNpcmN1bWZsZXhncmF2ZSIsNzg0NywiYWNpcmN1bWZsZXhob29rYWJvdmUiLDc4NDksImFjaXJjdW1mbGV4dGlsZGUiLDc4NTEsImFjdXRlIiwxODAsImFjdXRlYmVsb3djbWIiLDc5MSwiYWN1dGVjbWIiLDc2OSwiYWN1dGVjb21iIiw3NjksImFjdXRlZGV2YSIsMjM4OCwiYWN1dGVsb3dtb2QiLDcxOSwiYWN1dGV0b25lY21iIiw4MzMsImFjeXJpbGxpYyIsMTA3MiwiYWRibGdyYXZlIiw1MTMsImFkZGFrZ3VybXVraGkiLDI2NzMsImFkZXZhIiwyMzA5LCJhZGllcmVzaXMiLDIyOCwiYWRpZXJlc2lzY3lyaWxsaWMiLDEyMzUsImFkaWVyZXNpc21hY3JvbiIsNDc5LCJhZG90YmVsb3ciLDc4NDEsImFkb3RtYWNyb24iLDQ4MSwiYWUiLDIzMCwiYWVhY3V0ZSIsNTA5LCJhZWtvcmVhbiIsMTI2MjQsImFlbWFjcm9uIiw0ODMsImFmaWkwMDIwOCIsODIxMywiYWZpaTA4OTQxIiw4MzU2LCJhZmlpMTAwMTciLDEwNDAsImFmaWkxMDAxOCIsMTA0MSwiYWZpaTEwMDE5IiwxMDQyLCJhZmlpMTAwMjAiLDEwNDMsImFmaWkxMDAyMSIsMTA0NCwiYWZpaTEwMDIyIiwxMDQ1LCJhZmlpMTAwMjMiLDEwMjUsImFmaWkxMDAyNCIsMTA0NiwiYWZpaTEwMDI1IiwxMDQ3LCJhZmlpMTAwMjYiLDEwNDgsImFmaWkxMDAyNyIsMTA0OSwiYWZpaTEwMDI4IiwxMDUwLCJhZmlpMTAwMjkiLDEwNTEsImFmaWkxMDAzMCIsMTA1MiwiYWZpaTEwMDMxIiwxMDUzLCJhZmlpMTAwMzIiLDEwNTQsImFmaWkxMDAzMyIsMTA1NSwiYWZpaTEwMDM0IiwxMDU2LCJhZmlpMTAwMzUiLDEwNTcsImFmaWkxMDAzNiIsMTA1OCwiYWZpaTEwMDM3IiwxMDU5LCJhZmlpMTAwMzgiLDEwNjAsImFmaWkxMDAzOSIsMTA2MSwiYWZpaTEwMDQwIiwxMDYyLCJhZmlpMTAwNDEiLDEwNjMsImFmaWkxMDA0MiIsMTA2NCwiYWZpaTEwMDQzIiwxMDY1LCJhZmlpMTAwNDQiLDEwNjYsImFmaWkxMDA0NSIsMTA2NywiYWZpaTEwMDQ2IiwxMDY4LCJhZmlpMTAwNDciLDEwNjksImFmaWkxMDA0OCIsMTA3MCwiYWZpaTEwMDQ5IiwxMDcxLCJhZmlpMTAwNTAiLDExNjgsImFmaWkxMDA1MSIsMTAyNiwiYWZpaTEwMDUyIiwxMDI3LCJhZmlpMTAwNTMiLDEwMjgsImFmaWkxMDA1NCIsMTAyOSwiYWZpaTEwMDU1IiwxMDMwLCJhZmlpMTAwNTYiLDEwMzEsImFmaWkxMDA1NyIsMTAzMiwiYWZpaTEwMDU4IiwxMDMzLCJhZmlpMTAwNTkiLDEwMzQsImFmaWkxMDA2MCIsMTAzNSwiYWZpaTEwMDYxIiwxMDM2LCJhZmlpMTAwNjIiLDEwMzgsImFmaWkxMDA2MyIsNjMxNzIsImFmaWkxMDA2NCIsNjMxNzMsImFmaWkxMDA2NSIsMTA3MiwiYWZpaTEwMDY2IiwxMDczLCJhZmlpMTAwNjciLDEwNzQsImFmaWkxMDA2OCIsMTA3NSwiYWZpaTEwMDY5IiwxMDc2LCJhZmlpMTAwNzAiLDEwNzcsImFmaWkxMDA3MSIsMTEwNSwiYWZpaTEwMDcyIiwxMDc4LCJhZmlpMTAwNzMiLDEwNzksImFmaWkxMDA3NCIsMTA4MCwiYWZpaTEwMDc1IiwxMDgxLCJhZmlpMTAwNzYiLDEwODIsImFmaWkxMDA3NyIsMTA4MywiYWZpaTEwMDc4IiwxMDg0LCJhZmlpMTAwNzkiLDEwODUsImFmaWkxMDA4MCIsMTA4NiwiYWZpaTEwMDgxIiwxMDg3LCJhZmlpMTAwODIiLDEwODgsImFmaWkxMDA4MyIsMTA4OSwiYWZpaTEwMDg0IiwxMDkwLCJhZmlpMTAwODUiLDEwOTEsImFmaWkxMDA4NiIsMTA5MiwiYWZpaTEwMDg3IiwxMDkzLCJhZmlpMTAwODgiLDEwOTQsImFmaWkxMDA4OSIsMTA5NSwiYWZpaTEwMDkwIiwxMDk2LCJhZmlpMTAwOTEiLDEwOTcsImFmaWkxMDA5MiIsMTA5OCwiYWZpaTEwMDkzIiwxMDk5LCJhZmlpMTAwOTQiLDExMDAsImFmaWkxMDA5NSIsMTEwMSwiYWZpaTEwMDk2IiwxMTAyLCJhZmlpMTAwOTciLDExMDMsImFmaWkxMDA5OCIsMTE2OSwiYWZpaTEwMDk5IiwxMTA2LCJhZmlpMTAxMDAiLDExMDcsImFmaWkxMDEwMSIsMTEwOCwiYWZpaTEwMTAyIiwxMTA5LCJhZmlpMTAxMDMiLDExMTAsImFmaWkxMDEwNCIsMTExMSwiYWZpaTEwMTA1IiwxMTEyLCJhZmlpMTAxMDYiLDExMTMsImFmaWkxMDEwNyIsMTExNCwiYWZpaTEwMTA4IiwxMTE1LCJhZmlpMTAxMDkiLDExMTYsImFmaWkxMDExMCIsMTExOCwiYWZpaTEwMTQ1IiwxMDM5LCJhZmlpMTAxNDYiLDExMjIsImFmaWkxMDE0NyIsMTEzOCwiYWZpaTEwMTQ4IiwxMTQwLCJhZmlpMTAxOTIiLDYzMTc0LCJhZmlpMTAxOTMiLDExMTksImFmaWkxMDE5NCIsMTEyMywiYWZpaTEwMTk1IiwxMTM5LCJhZmlpMTAxOTYiLDExNDEsImFmaWkxMDgzMSIsNjMxNzUsImFmaWkxMDgzMiIsNjMxNzYsImFmaWkxMDg0NiIsMTI0MSwiYWZpaTI5OSIsODIwNiwiYWZpaTMwMCIsODIwNywiYWZpaTMwMSIsODIwNSwiYWZpaTU3MzgxIiwxNjQyLCJhZmlpNTczODgiLDE1NDgsImFmaWk1NzM5MiIsMTYzMiwiYWZpaTU3MzkzIiwxNjMzLCJhZmlpNTczOTQiLDE2MzQsImFmaWk1NzM5NSIsMTYzNSwiYWZpaTU3Mzk2IiwxNjM2LCJhZmlpNTczOTciLDE2MzcsImFmaWk1NzM5OCIsMTYzOCwiYWZpaTU3Mzk5IiwxNjM5LCJhZmlpNTc0MDAiLDE2NDAsImFmaWk1NzQwMSIsMTY0MSwiYWZpaTU3NDAzIiwxNTYzLCJhZmlpNTc0MDciLDE1NjcsImFmaWk1NzQwOSIsMTU2OSwiYWZpaTU3NDEwIiwxNTcwLCJhZmlpNTc0MTEiLDE1NzEsImFmaWk1NzQxMiIsMTU3MiwiYWZpaTU3NDEzIiwxNTczLCJhZmlpNTc0MTQiLDE1NzQsImFmaWk1NzQxNSIsMTU3NSwiYWZpaTU3NDE2IiwxNTc2LCJhZmlpNTc0MTciLDE1NzcsImFmaWk1NzQxOCIsMTU3OCwiYWZpaTU3NDE5IiwxNTc5LCJhZmlpNTc0MjAiLDE1ODAsImFmaWk1NzQyMSIsMTU4MSwiYWZpaTU3NDIyIiwxNTgyLCJhZmlpNTc0MjMiLDE1ODMsImFmaWk1NzQyNCIsMTU4NCwiYWZpaTU3NDI1IiwxNTg1LCJhZmlpNTc0MjYiLDE1ODYsImFmaWk1NzQyNyIsMTU4NywiYWZpaTU3NDI4IiwxNTg4LCJhZmlpNTc0MjkiLDE1ODksImFmaWk1NzQzMCIsMTU5MCwiYWZpaTU3NDMxIiwxNTkxLCJhZmlpNTc0MzIiLDE1OTIsImFmaWk1NzQzMyIsMTU5MywiYWZpaTU3NDM0IiwxNTk0LCJhZmlpNTc0NDAiLDE2MDAsImFmaWk1NzQ0MSIsMTYwMSwiYWZpaTU3NDQyIiwxNjAyLCJhZmlpNTc0NDMiLDE2MDMsImFmaWk1NzQ0NCIsMTYwNCwiYWZpaTU3NDQ1IiwxNjA1LCJhZmlpNTc0NDYiLDE2MDYsImFmaWk1NzQ0OCIsMTYwOCwiYWZpaTU3NDQ5IiwxNjA5LCJhZmlpNTc0NTAiLDE2MTAsImFmaWk1NzQ1MSIsMTYxMSwiYWZpaTU3NDUyIiwxNjEyLCJhZmlpNTc0NTMiLDE2MTMsImFmaWk1NzQ1NCIsMTYxNCwiYWZpaTU3NDU1IiwxNjE1LCJhZmlpNTc0NTYiLDE2MTYsImFmaWk1NzQ1NyIsMTYxNywiYWZpaTU3NDU4IiwxNjE4LCJhZmlpNTc0NzAiLDE2MDcsImFmaWk1NzUwNSIsMTcwMCwiYWZpaTU3NTA2IiwxNjYyLCJhZmlpNTc1MDciLDE2NzAsImFmaWk1NzUwOCIsMTY4OCwiYWZpaTU3NTA5IiwxNzExLCJhZmlpNTc1MTEiLDE2NTcsImFmaWk1NzUxMiIsMTY3MiwiYWZpaTU3NTEzIiwxNjgxLCJhZmlpNTc1MTQiLDE3MjIsImFmaWk1NzUxOSIsMTc0NiwiYWZpaTU3NTM0IiwxNzQ5LCJhZmlpNTc2MzYiLDgzNjIsImFmaWk1NzY0NSIsMTQ3MCwiYWZpaTU3NjU4IiwxNDc1LCJhZmlpNTc2NjQiLDE0ODgsImFmaWk1NzY2NSIsMTQ4OSwiYWZpaTU3NjY2IiwxNDkwLCJhZmlpNTc2NjciLDE0OTEsImFmaWk1NzY2OCIsMTQ5MiwiYWZpaTU3NjY5IiwxNDkzLCJhZmlpNTc2NzAiLDE0OTQsImFmaWk1NzY3MSIsMTQ5NSwiYWZpaTU3NjcyIiwxNDk2LCJhZmlpNTc2NzMiLDE0OTcsImFmaWk1NzY3NCIsMTQ5OCwiYWZpaTU3Njc1IiwxNDk5LCJhZmlpNTc2NzYiLDE1MDAsImFmaWk1NzY3NyIsMTUwMSwiYWZpaTU3Njc4IiwxNTAyLCJhZmlpNTc2NzkiLDE1MDMsImFmaWk1NzY4MCIsMTUwNCwiYWZpaTU3NjgxIiwxNTA1LCJhZmlpNTc2ODIiLDE1MDYsImFmaWk1NzY4MyIsMTUwNywiYWZpaTU3Njg0IiwxNTA4LCJhZmlpNTc2ODUiLDE1MDksImFmaWk1NzY4NiIsMTUxMCwiYWZpaTU3Njg3IiwxNTExLCJhZmlpNTc2ODgiLDE1MTIsImFmaWk1NzY4OSIsMTUxMywiYWZpaTU3NjkwIiwxNTE0LCJhZmlpNTc2OTQiLDY0Mjk4LCJhZmlpNTc2OTUiLDY0Mjk5LCJhZmlpNTc3MDAiLDY0MzMxLCJhZmlpNTc3MDUiLDY0Mjg3LCJhZmlpNTc3MTYiLDE1MjAsImFmaWk1NzcxNyIsMTUyMSwiYWZpaTU3NzE4IiwxNTIyLCJhZmlpNTc3MjMiLDY0MzA5LCJhZmlpNTc3OTMiLDE0NjAsImFmaWk1Nzc5NCIsMTQ2MSwiYWZpaTU3Nzk1IiwxNDYyLCJhZmlpNTc3OTYiLDE0NjcsImFmaWk1Nzc5NyIsMTQ2NCwiYWZpaTU3Nzk4IiwxNDYzLCJhZmlpNTc3OTkiLDE0NTYsImFmaWk1NzgwMCIsMTQ1OCwiYWZpaTU3ODAxIiwxNDU3LCJhZmlpNTc4MDIiLDE0NTksImFmaWk1NzgwMyIsMTQ3NCwiYWZpaTU3ODA0IiwxNDczLCJhZmlpNTc4MDYiLDE0NjUsImFmaWk1NzgwNyIsMTQ2OCwiYWZpaTU3ODM5IiwxNDY5LCJhZmlpNTc4NDEiLDE0NzEsImFmaWk1Nzg0MiIsMTQ3MiwiYWZpaTU3OTI5Iiw3MDAsImFmaWk2MTI0OCIsODQ1MywiYWZpaTYxMjg5Iiw4NDY3LCJhZmlpNjEzNTIiLDg0NzAsImFmaWk2MTU3MyIsODIzNiwiYWZpaTYxNTc0Iiw4MjM3LCJhZmlpNjE1NzUiLDgyMzgsImFmaWk2MTY2NCIsODIwNCwiYWZpaTYzMTY3IiwxNjQ1LCJhZmlpNjQ5MzciLDcwMSwiYWdyYXZlIiwyMjQsImFndWphcmF0aSIsMjY5MywiYWd1cm11a2hpIiwyNTY1LCJhaGlyYWdhbmEiLDEyMzU0LCJhaG9va2Fib3ZlIiw3ODQzLCJhaWJlbmdhbGkiLDI0NDgsImFpYm9wb21vZm8iLDEyNTc0LCJhaWRldmEiLDIzMjAsImFpZWN5cmlsbGljIiwxMjM3LCJhaWd1amFyYXRpIiwyNzA0LCJhaWd1cm11a2hpIiwyNTc2LCJhaW1hdHJhZ3VybXVraGkiLDI2MzIsImFpbmFyYWJpYyIsMTU5MywiYWluZmluYWxhcmFiaWMiLDY1MjI2LCJhaW5pbml0aWFsYXJhYmljIiw2NTIyNywiYWlubWVkaWFsYXJhYmljIiw2NTIyOCwiYWludmVydGVkYnJldmUiLDUxNSwiYWl2b3dlbHNpZ25iZW5nYWxpIiwyNTA0LCJhaXZvd2Vsc2lnbmRldmEiLDIzNzYsImFpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjAsImFrYXRha2FuYSIsMTI0NTAsImFrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTMsImFrb3JlYW4iLDEyNjIzLCJhbGVmIiwxNDg4LCJhbGVmYXJhYmljIiwxNTc1LCJhbGVmZGFnZXNoaGVicmV3Iiw2NDMwNCwiYWxlZmZpbmFsYXJhYmljIiw2NTE2NiwiYWxlZmhhbXphYWJvdmVhcmFiaWMiLDE1NzEsImFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU2LCJhbGVmaGFtemFiZWxvd2FyYWJpYyIsMTU3MywiYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUxNjAsImFsZWZoZWJyZXciLDE0ODgsImFsZWZsYW1lZGhlYnJldyIsNjQzMzUsImFsZWZtYWRkYWFib3ZlYXJhYmljIiwxNTcwLCJhbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTE1NCwiYWxlZm1ha3N1cmFhcmFiaWMiLDE2MDksImFsZWZtYWtzdXJhZmluYWxhcmFiaWMiLDY1MjY0LCJhbGVmbWFrc3VyYWluaXRpYWxhcmFiaWMiLDY1MjY3LCJhbGVmbWFrc3VyYW1lZGlhbGFyYWJpYyIsNjUyNjgsImFsZWZwYXRhaGhlYnJldyIsNjQzMDIsImFsZWZxYW1hdHNoZWJyZXciLDY0MzAzLCJhbGVwaCIsODUwMSwiYWxsZXF1YWwiLDg3ODAsImFscGhhIiw5NDUsImFscGhhdG9ub3MiLDk0MCwiYW1hY3JvbiIsMjU3LCJhbW9ub3NwYWNlIiw2NTM0NSwiYW1wZXJzYW5kIiwzOCwiYW1wZXJzYW5kbW9ub3NwYWNlIiw2NTI4NiwiYW1wZXJzYW5kc21hbGwiLDYzMjcwLCJhbXNxdWFyZSIsMTMyNTAsImFuYm9wb21vZm8iLDEyNTc4LCJhbmdib3BvbW9mbyIsMTI1ODAsImFuZ2JyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nYnJhY2tldHJpZ2h0IiwxMjI5NywiYW5na2hhbmtodXRoYWkiLDM2NzQsImFuZ2xlIiw4NzM2LCJhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5NiwiYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NywiYW5nbGVicmFja2V0cmlnaHQiLDEyMjk3LCJhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4OCwiYW5nbGVsZWZ0Iiw5MDAxLCJhbmdsZXJpZ2h0Iiw5MDAyLCJhbmdzdHJvbSIsODQ5MSwiYW5vdGVsZWlhIiw5MDMsImFudWRhdHRhZGV2YSIsMjM4NiwiYW51c3ZhcmFiZW5nYWxpIiwyNDM0LCJhbnVzdmFyYWRldmEiLDIzMDYsImFudXN2YXJhZ3VqYXJhdGkiLDI2OTAsImFvZ29uZWsiLDI2MSwiYXBhYXRvc3F1YXJlIiwxMzA1NiwiYXBhcmVuIiw5MzcyLCJhcG9zdHJvcGhlYXJtZW5pYW4iLDEzNzAsImFwb3N0cm9waGVtb2QiLDcwMCwiYXBwbGUiLDYzNzQzLCJhcHByb2FjaGVzIiw4Nzg0LCJhcHByb3hlcXVhbCIsODc3NiwiYXBwcm94ZXF1YWxvcmltYWdlIiw4Nzg2LCJhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3NzMsImFyYWVhZWtvcmVhbiIsMTI2ODYsImFyYWVha29yZWFuIiwxMjY4NSwiYXJjIiw4OTc4LCJhcmlnaHRoYWxmcmluZyIsNzgzNCwiYXJpbmciLDIyOSwiYXJpbmdhY3V0ZSIsNTA3LCJhcmluZ2JlbG93Iiw3NjgxLCJhcnJvd2JvdGgiLDg1OTYsImFycm93ZGFzaGRvd24iLDg2NzUsImFycm93ZGFzaGxlZnQiLDg2NzIsImFycm93ZGFzaHJpZ2h0Iiw4Njc0LCJhcnJvd2Rhc2h1cCIsODY3MywiYXJyb3dkYmxib3RoIiw4NjYwLCJhcnJvd2RibGRvd24iLDg2NTksImFycm93ZGJsbGVmdCIsODY1NiwiYXJyb3dkYmxyaWdodCIsODY1OCwiYXJyb3dkYmx1cCIsODY1NywiYXJyb3dkb3duIiw4NTk1LCJhcnJvd2Rvd25sZWZ0Iiw4NjAxLCJhcnJvd2Rvd25yaWdodCIsODYwMCwiYXJyb3dkb3dud2hpdGUiLDg2ODEsImFycm93aGVhZGRvd25tb2QiLDcwOSwiYXJyb3doZWFkbGVmdG1vZCIsNzA2LCJhcnJvd2hlYWRyaWdodG1vZCIsNzA3LCJhcnJvd2hlYWR1cG1vZCIsNzA4LCJhcnJvd2hvcml6ZXgiLDYzNzE5LCJhcnJvd2xlZnQiLDg1OTIsImFycm93bGVmdGRibCIsODY1NiwiYXJyb3dsZWZ0ZGJsc3Ryb2tlIiw4NjUzLCJhcnJvd2xlZnRvdmVycmlnaHQiLDg2NDYsImFycm93bGVmdHdoaXRlIiw4Njc4LCJhcnJvd3JpZ2h0Iiw4NTk0LCJhcnJvd3JpZ2h0ZGJsc3Ryb2tlIiw4NjU1LCJhcnJvd3JpZ2h0aGVhdnkiLDEwMTQyLCJhcnJvd3JpZ2h0b3ZlcmxlZnQiLDg2NDQsImFycm93cmlnaHR3aGl0ZSIsODY4MCwiYXJyb3d0YWJsZWZ0Iiw4Njc2LCJhcnJvd3RhYnJpZ2h0Iiw4Njc3LCJhcnJvd3VwIiw4NTkzLCJhcnJvd3VwZG4iLDg1OTcsImFycm93dXBkbmJzZSIsODYxNiwiYXJyb3d1cGRvd25iYXNlIiw4NjE2LCJhcnJvd3VwbGVmdCIsODU5OCwiYXJyb3d1cGxlZnRvZmRvd24iLDg2NDUsImFycm93dXByaWdodCIsODU5OSwiYXJyb3d1cHdoaXRlIiw4Njc5LCJhcnJvd3ZlcnRleCIsNjM3MTgsImFzY2lpY2lyY3VtIiw5NCwiYXNjaWljaXJjdW1tb25vc3BhY2UiLDY1MzQyLCJhc2NpaXRpbGRlIiwxMjYsImFzY2lpdGlsZGVtb25vc3BhY2UiLDY1Mzc0LCJhc2NyaXB0Iiw1OTMsImFzY3JpcHR0dXJuZWQiLDU5NCwiYXNtYWxsaGlyYWdhbmEiLDEyMzUzLCJhc21hbGxrYXRha2FuYSIsMTI0NDksImFzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4MywiYXN0ZXJpc2siLDQyLCJhc3Rlcmlza2FsdG9uZWFyYWJpYyIsMTY0NSwiYXN0ZXJpc2thcmFiaWMiLDE2NDUsImFzdGVyaXNrbWF0aCIsODcyNywiYXN0ZXJpc2ttb25vc3BhY2UiLDY1MjkwLCJhc3Rlcmlza3NtYWxsIiw2NTEyMSwiYXN0ZXJpc20iLDgyNTgsImFzdXBlcmlvciIsNjMyMDksImFzeW1wdG90aWNhbGx5ZXF1YWwiLDg3NzEsImF0Iiw2NCwiYXRpbGRlIiwyMjcsImF0bW9ub3NwYWNlIiw2NTMxMiwiYXRzbWFsbCIsNjUxMzEsImF0dXJuZWQiLDU5MiwiYXViZW5nYWxpIiwyNDUyLCJhdWJvcG9tb2ZvIiwxMjU3NiwiYXVkZXZhIiwyMzI0LCJhdWd1amFyYXRpIiwyNzA4LCJhdWd1cm11a2hpIiwyNTgwLCJhdWxlbmd0aG1hcmtiZW5nYWxpIiwyNTE5LCJhdW1hdHJhZ3VybXVraGkiLDI2MzYsImF1dm93ZWxzaWduYmVuZ2FsaSIsMjUwOCwiYXV2b3dlbHNpZ25kZXZhIiwyMzgwLCJhdXZvd2Vsc2lnbmd1amFyYXRpIiwyNzY0LCJhdmFncmFoYWRldmEiLDIzNjUsImF5YmFybWVuaWFuIiwxMzc3LCJheWluIiwxNTA2LCJheWluYWx0b25laGVicmV3Iiw2NDI4OCwiYXlpbmhlYnJldyIsMTUwNiwiYiIsOTgsImJhYmVuZ2FsaSIsMjQ3NiwiYmFja3NsYXNoIiw5MiwiYmFja3NsYXNobW9ub3NwYWNlIiw2NTM0MCwiYmFkZXZhIiwyMzQ4LCJiYWd1amFyYXRpIiwyNzMyLCJiYWd1cm11a2hpIiwyNjA0LCJiYWhpcmFnYW5hIiwxMjQwMCwiYmFodHRoYWkiLDM2NDcsImJha2F0YWthbmEiLDEyNDk2LCJiYXIiLDEyNCwiYmFybW9ub3NwYWNlIiw2NTM3MiwiYmJvcG9tb2ZvIiwxMjU0OSwiYmNpcmNsZSIsOTQyNSwiYmRvdGFjY2VudCIsNzY4MywiYmRvdGJlbG93Iiw3Njg1LCJiZWFtZWRzaXh0ZWVudGhub3RlcyIsOTgzNiwiYmVjYXVzZSIsODc1NywiYmVjeXJpbGxpYyIsMTA3MywiYmVoYXJhYmljIiwxNTc2LCJiZWhmaW5hbGFyYWJpYyIsNjUxNjgsImJlaGluaXRpYWxhcmFiaWMiLDY1MTY5LCJiZWhpcmFnYW5hIiwxMjQwOSwiYmVobWVkaWFsYXJhYmljIiw2NTE3MCwiYmVobWVlbWluaXRpYWxhcmFiaWMiLDY0NjcxLCJiZWhtZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIwLCJiZWhub29uZmluYWxhcmFiaWMiLDY0NjIxLCJiZWthdGFrYW5hIiwxMjUwNSwiYmVuYXJtZW5pYW4iLDEzNzgsImJldCIsMTQ4OSwiYmV0YSIsOTQ2LCJiZXRhc3ltYm9sZ3JlZWsiLDk3NiwiYmV0ZGFnZXNoIiw2NDMwNSwiYmV0ZGFnZXNoaGVicmV3Iiw2NDMwNSwiYmV0aGVicmV3IiwxNDg5LCJiZXRyYWZlaGVicmV3Iiw2NDMzMiwiYmhhYmVuZ2FsaSIsMjQ3NywiYmhhZGV2YSIsMjM0OSwiYmhhZ3VqYXJhdGkiLDI3MzMsImJoYWd1cm11a2hpIiwyNjA1LCJiaG9vayIsNTk1LCJiaWhpcmFnYW5hIiwxMjQwMywiYmlrYXRha2FuYSIsMTI0OTksImJpbGFiaWFsY2xpY2siLDY2NCwiYmluZGlndXJtdWtoaSIsMjU2MiwiYmlydXNxdWFyZSIsMTMxMDUsImJsYWNrY2lyY2xlIiw5Njc5LCJibGFja2RpYW1vbmQiLDk2NzAsImJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGUiLDk2NjAsImJsYWNrbGVmdHBvaW50aW5ncG9pbnRlciIsOTY2OCwiYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZSIsOTY2NCwiYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQiLDEyMzA0LCJibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4MywiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMwNSwiYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDg0LCJibGFja2xvd2VybGVmdHRyaWFuZ2xlIiw5Njk5LCJibGFja2xvd2VycmlnaHR0cmlhbmdsZSIsOTY5OCwiYmxhY2tyZWN0YW5nbGUiLDk2NDQsImJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXIiLDk2NTgsImJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlIiw5NjU0LCJibGFja3NtYWxsc3F1YXJlIiw5NjQyLCJibGFja3NtaWxpbmdmYWNlIiw5Nzg3LCJibGFja3NxdWFyZSIsOTYzMiwiYmxhY2tzdGFyIiw5NzMzLCJibGFja3VwcGVybGVmdHRyaWFuZ2xlIiw5NzAwLCJibGFja3VwcGVycmlnaHR0cmlhbmdsZSIsOTcwMSwiYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1MiwiYmxhY2t1cHBvaW50aW5ndHJpYW5nbGUiLDk2NTAsImJsYW5rIiw5MjUxLCJibGluZWJlbG93Iiw3Njg3LCJibG9jayIsOTYwOCwiYm1vbm9zcGFjZSIsNjUzNDYsImJvYmFpbWFpdGhhaSIsMzYxMCwiYm9oaXJhZ2FuYSIsMTI0MTIsImJva2F0YWthbmEiLDEyNTA4LCJicGFyZW4iLDkzNzMsImJxc3F1YXJlIiwxMzI1MSwiYnJhY2VleCIsNjM3MzIsImJyYWNlbGVmdCIsMTIzLCJicmFjZWxlZnRidCIsNjM3MzEsImJyYWNlbGVmdG1pZCIsNjM3MzAsImJyYWNlbGVmdG1vbm9zcGFjZSIsNjUzNzEsImJyYWNlbGVmdHNtYWxsIiw2NTExNSwiYnJhY2VsZWZ0dHAiLDYzNzI5LCJicmFjZWxlZnR2ZXJ0aWNhbCIsNjUwNzksImJyYWNlcmlnaHQiLDEyNSwiYnJhY2VyaWdodGJ0Iiw2Mzc0MiwiYnJhY2VyaWdodG1pZCIsNjM3NDEsImJyYWNlcmlnaHRtb25vc3BhY2UiLDY1MzczLCJicmFjZXJpZ2h0c21hbGwiLDY1MTE2LCJicmFjZXJpZ2h0dHAiLDYzNzQwLCJicmFjZXJpZ2h0dmVydGljYWwiLDY1MDgwLCJicmFja2V0bGVmdCIsOTEsImJyYWNrZXRsZWZ0YnQiLDYzNzI4LCJicmFja2V0bGVmdGV4Iiw2MzcyNywiYnJhY2tldGxlZnRtb25vc3BhY2UiLDY1MzM5LCJicmFja2V0bGVmdHRwIiw2MzcyNiwiYnJhY2tldHJpZ2h0Iiw5MywiYnJhY2tldHJpZ2h0YnQiLDYzNzM5LCJicmFja2V0cmlnaHRleCIsNjM3MzgsImJyYWNrZXRyaWdodG1vbm9zcGFjZSIsNjUzNDEsImJyYWNrZXRyaWdodHRwIiw2MzczNywiYnJldmUiLDcyOCwiYnJldmViZWxvd2NtYiIsODE0LCJicmV2ZWNtYiIsNzc0LCJicmV2ZWludmVydGVkYmVsb3djbWIiLDgxNSwiYnJldmVpbnZlcnRlZGNtYiIsNzg1LCJicmV2ZWludmVydGVkZG91YmxlY21iIiw4NjUsImJyaWRnZWJlbG93Y21iIiw4MTAsImJyaWRnZWludmVydGVkYmVsb3djbWIiLDgyNiwiYnJva2VuYmFyIiwxNjYsImJzdHJva2UiLDM4NCwiYnN1cGVyaW9yIiw2MzIxMCwiYnRvcGJhciIsMzg3LCJidWhpcmFnYW5hIiwxMjQwNiwiYnVrYXRha2FuYSIsMTI1MDIsImJ1bGxldCIsODIyNiwiYnVsbGV0aW52ZXJzZSIsOTY4OCwiYnVsbGV0b3BlcmF0b3IiLDg3MjksImJ1bGxzZXllIiw5Njc4LCJjIiw5OSwiY2Fhcm1lbmlhbiIsMTM5MCwiY2FiZW5nYWxpIiwyNDU4LCJjYWN1dGUiLDI2MywiY2FkZXZhIiwyMzMwLCJjYWd1amFyYXRpIiwyNzE0LCJjYWd1cm11a2hpIiwyNTg2LCJjYWxzcXVhcmUiLDEzMTkyLCJjYW5kcmFiaW5kdWJlbmdhbGkiLDI0MzMsImNhbmRyYWJpbmR1Y21iIiw3ODQsImNhbmRyYWJpbmR1ZGV2YSIsMjMwNSwiY2FuZHJhYmluZHVndWphcmF0aSIsMjY4OSwiY2Fwc2xvY2siLDg2ODIsImNhcmVvZiIsODQ1MywiY2Fyb24iLDcxMSwiY2Fyb25iZWxvd2NtYiIsODEyLCJjYXJvbmNtYiIsNzgwLCJjYXJyaWFnZXJldHVybiIsODYyOSwiY2JvcG9tb2ZvIiwxMjU2OCwiY2Nhcm9uIiwyNjksImNjZWRpbGxhIiwyMzEsImNjZWRpbGxhYWN1dGUiLDc2ODksImNjaXJjbGUiLDk0MjYsImNjaXJjdW1mbGV4IiwyNjUsImNjdXJsIiw1OTcsImNkb3QiLDI2NywiY2RvdGFjY2VudCIsMjY3LCJjZHNxdWFyZSIsMTMyNTMsImNlZGlsbGEiLDE4NCwiY2VkaWxsYWNtYiIsODA3LCJjZW50IiwxNjIsImNlbnRpZ3JhZGUiLDg0NTEsImNlbnRpbmZlcmlvciIsNjMxOTksImNlbnRtb25vc3BhY2UiLDY1NTA0LCJjZW50b2xkc3R5bGUiLDYzMzk0LCJjZW50c3VwZXJpb3IiLDYzMjAwLCJjaGFhcm1lbmlhbiIsMTQwMSwiY2hhYmVuZ2FsaSIsMjQ1OSwiY2hhZGV2YSIsMjMzMSwiY2hhZ3VqYXJhdGkiLDI3MTUsImNoYWd1cm11a2hpIiwyNTg3LCJjaGJvcG9tb2ZvIiwxMjU2NCwiY2hlYWJraGFzaWFuY3lyaWxsaWMiLDEyMTMsImNoZWNrbWFyayIsMTAwMDMsImNoZWN5cmlsbGljIiwxMDk1LCJjaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYyIsMTIxNSwiY2hlZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDcsImNoZWRpZXJlc2lzY3lyaWxsaWMiLDEyNjksImNoZWhhcm1lbmlhbiIsMTM5NSwiY2hla2hha2Fzc2lhbmN5cmlsbGljIiwxMjI4LCJjaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljIiwxMjA5LCJjaGkiLDk2NywiY2hpZXVjaGFjaXJjbGVrb3JlYW4iLDEyOTE5LCJjaGlldWNoYXBhcmVua29yZWFuIiwxMjgyMywiY2hpZXVjaGNpcmNsZWtvcmVhbiIsMTI5MDUsImNoaWV1Y2hrb3JlYW4iLDEyNjE4LCJjaGlldWNocGFyZW5rb3JlYW4iLDEyODA5LCJjaG9jaGFuZ3RoYWkiLDM1OTQsImNob2NoYW50aGFpIiwzNTkyLCJjaG9jaGluZ3RoYWkiLDM1OTMsImNob2Nob2V0aGFpIiwzNTk2LCJjaG9vayIsMzkyLCJjaWV1Y2FjaXJjbGVrb3JlYW4iLDEyOTE4LCJjaWV1Y2FwYXJlbmtvcmVhbiIsMTI4MjIsImNpZXVjY2lyY2xla29yZWFuIiwxMjkwNCwiY2lldWNrb3JlYW4iLDEyNjE2LCJjaWV1Y3BhcmVua29yZWFuIiwxMjgwOCwiY2lldWN1cGFyZW5rb3JlYW4iLDEyODI4LCJjaXJjbGUiLDk2NzUsImNpcmNsZWNvcHlydCIsMTY5LCJjaXJjbGVtdWx0aXBseSIsODg1NSwiY2lyY2xlb3QiLDg4NTcsImNpcmNsZXBsdXMiLDg4NTMsImNpcmNsZXBvc3RhbG1hcmsiLDEyMzQyLCJjaXJjbGV3aXRobGVmdGhhbGZibGFjayIsOTY4MCwiY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrIiw5NjgxLCJjaXJjdW1mbGV4Iiw3MTAsImNpcmN1bWZsZXhiZWxvd2NtYiIsODEzLCJjaXJjdW1mbGV4Y21iIiw3NzAsImNsZWFyIiw4OTk5LCJjbGlja2FsdmVvbGFyIiw0NTAsImNsaWNrZGVudGFsIiw0NDgsImNsaWNrbGF0ZXJhbCIsNDQ5LCJjbGlja3JldHJvZmxleCIsNDUxLCJjbHViIiw5ODI3LCJjbHVic3VpdGJsYWNrIiw5ODI3LCJjbHVic3VpdHdoaXRlIiw5ODMxLCJjbWN1YmVkc3F1YXJlIiwxMzIyMCwiY21vbm9zcGFjZSIsNjUzNDcsImNtc3F1YXJlZHNxdWFyZSIsMTMyMTYsImNvYXJtZW5pYW4iLDE0MDksImNvbG9uIiw1OCwiY29sb25tb25ldGFyeSIsODM1MywiY29sb25tb25vc3BhY2UiLDY1MzA2LCJjb2xvbnNpZ24iLDgzNTMsImNvbG9uc21hbGwiLDY1MTA5LCJjb2xvbnRyaWFuZ3VsYXJoYWxmbW9kIiw3MjEsImNvbG9udHJpYW5ndWxhcm1vZCIsNzIwLCJjb21tYSIsNDQsImNvbW1hYWJvdmVjbWIiLDc4NywiY29tbWFhYm92ZXJpZ2h0Y21iIiw3ODksImNvbW1hYWNjZW50Iiw2MzE3MSwiY29tbWFhcmFiaWMiLDE1NDgsImNvbW1hYXJtZW5pYW4iLDEzNzMsImNvbW1haW5mZXJpb3IiLDYzMjAxLCJjb21tYW1vbm9zcGFjZSIsNjUyOTIsImNvbW1hcmV2ZXJzZWRhYm92ZWNtYiIsNzg4LCJjb21tYXJldmVyc2VkbW9kIiw3MDEsImNvbW1hc21hbGwiLDY1MTA0LCJjb21tYXN1cGVyaW9yIiw2MzIwMiwiY29tbWF0dXJuZWRhYm92ZWNtYiIsNzg2LCJjb21tYXR1cm5lZG1vZCIsNjk5LCJjb21wYXNzIiw5Nzg4LCJjb25ncnVlbnQiLDg3NzMsImNvbnRvdXJpbnRlZ3JhbCIsODc1MCwiY29udHJvbCIsODk2MywiY29udHJvbEFDSyIsNiwiY29udHJvbEJFTCIsNywiY29udHJvbEJTIiw4LCJjb250cm9sQ0FOIiwyNCwiY29udHJvbENSIiwxMywiY29udHJvbERDMSIsMTcsImNvbnRyb2xEQzIiLDE4LCJjb250cm9sREMzIiwxOSwiY29udHJvbERDNCIsMjAsImNvbnRyb2xERUwiLDEyNywiY29udHJvbERMRSIsMTYsImNvbnRyb2xFTSIsMjUsImNvbnRyb2xFTlEiLDUsImNvbnRyb2xFT1QiLDQsImNvbnRyb2xFU0MiLDI3LCJjb250cm9sRVRCIiwyMywiY29udHJvbEVUWCIsMywiY29udHJvbEZGIiwxMiwiY29udHJvbEZTIiwyOCwiY29udHJvbEdTIiwyOSwiY29udHJvbEhUIiw5LCJjb250cm9sTEYiLDEwLCJjb250cm9sTkFLIiwyMSwiY29udHJvbE5VTEwiLDAsImNvbnRyb2xSUyIsMzAsImNvbnRyb2xTSSIsMTUsImNvbnRyb2xTTyIsMTQsImNvbnRyb2xTT1QiLDIsImNvbnRyb2xTVFgiLDEsImNvbnRyb2xTVUIiLDI2LCJjb250cm9sU1lOIiwyMiwiY29udHJvbFVTIiwzMSwiY29udHJvbFZUIiwxMSwiY29weXJpZ2h0IiwxNjksImNvcHlyaWdodHNhbnMiLDYzNzIxLCJjb3B5cmlnaHRzZXJpZiIsNjMxOTMsImNvcm5lcmJyYWNrZXRsZWZ0IiwxMjMwMCwiY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGgiLDY1Mzc4LCJjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4OSwiY29ybmVyYnJhY2tldHJpZ2h0IiwxMjMwMSwiY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoIiw2NTM3OSwiY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkwLCJjb3Jwb3JhdGlvbnNxdWFyZSIsMTMxODMsImNvc3F1YXJlIiwxMzI1NSwiY292ZXJrZ3NxdWFyZSIsMTMyNTQsImNwYXJlbiIsOTM3NCwiY3J1emVpcm8iLDgzNTQsImNzdHJldGNoZWQiLDY2MywiY3VybHlhbmQiLDg5MTEsImN1cmx5b3IiLDg5MTAsImN1cnJlbmN5IiwxNjQsImN5ckJyZXZlIiw2MzE4NSwiY3lyRmxleCIsNjMxODYsImN5cmJyZXZlIiw2MzE4OCwiY3lyZmxleCIsNjMxODksImQiLDEwMCwiZGFhcm1lbmlhbiIsMTM4MCwiZGFiZW5nYWxpIiwyNDcwLCJkYWRhcmFiaWMiLDE1OTAsImRhZGV2YSIsMjM0MiwiZGFkZmluYWxhcmFiaWMiLDY1MjE0LCJkYWRpbml0aWFsYXJhYmljIiw2NTIxNSwiZGFkbWVkaWFsYXJhYmljIiw2NTIxNiwiZGFnZXNoIiwxNDY4LCJkYWdlc2hoZWJyZXciLDE0NjgsImRhZ2dlciIsODIyNCwiZGFnZ2VyZGJsIiw4MjI1LCJkYWd1amFyYXRpIiwyNzI2LCJkYWd1cm11a2hpIiwyNTk4LCJkYWhpcmFnYW5hIiwxMjM4NCwiZGFrYXRha2FuYSIsMTI0ODAsImRhbGFyYWJpYyIsMTU4MywiZGFsZXQiLDE0OTEsImRhbGV0ZGFnZXNoIiw2NDMwNywiZGFsZXRkYWdlc2hoZWJyZXciLDY0MzA3LCJkYWxldGhlYnJldyIsMTQ5MSwiZGFsZmluYWxhcmFiaWMiLDY1MTk0LCJkYW1tYWFyYWJpYyIsMTYxNSwiZGFtbWFsb3dhcmFiaWMiLDE2MTUsImRhbW1hdGFuYWx0b25lYXJhYmljIiwxNjEyLCJkYW1tYXRhbmFyYWJpYyIsMTYxMiwiZGFuZGEiLDI0MDQsImRhcmdhaGVicmV3IiwxNDQ3LCJkYXJnYWxlZnRoZWJyZXciLDE0NDcsImRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1NywiZGJsR3JhdmUiLDYzMTg3LCJkYmxhbmdsZWJyYWNrZXRsZWZ0IiwxMjI5OCwiZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsIiw2NTA4NSwiZGJsYW5nbGVicmFja2V0cmlnaHQiLDEyMjk5LCJkYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4NiwiZGJsYXJjaGludmVydGVkYmVsb3djbWIiLDgxMSwiZGJsYXJyb3dsZWZ0Iiw4NjYwLCJkYmxhcnJvd3JpZ2h0Iiw4NjU4LCJkYmxkYW5kYSIsMjQwNSwiZGJsZ3JhdmUiLDYzMTkwLCJkYmxncmF2ZWNtYiIsNzgzLCJkYmxpbnRlZ3JhbCIsODc0OCwiZGJsbG93bGluZSIsODIxNSwiZGJsbG93bGluZWNtYiIsODE5LCJkYmxvdmVybGluZWNtYiIsODMxLCJkYmxwcmltZW1vZCIsNjk4LCJkYmx2ZXJ0aWNhbGJhciIsODIxNCwiZGJsdmVydGljYWxsaW5lYWJvdmVjbWIiLDc4MiwiZGJvcG9tb2ZvIiwxMjU1MywiZGJzcXVhcmUiLDEzMjU2LCJkY2Fyb24iLDI3MSwiZGNlZGlsbGEiLDc2OTcsImRjaXJjbGUiLDk0MjcsImRjaXJjdW1mbGV4YmVsb3ciLDc2OTksImRjcm9hdCIsMjczLCJkZGFiZW5nYWxpIiwyNDY1LCJkZGFkZXZhIiwyMzM3LCJkZGFndWphcmF0aSIsMjcyMSwiZGRhZ3VybXVraGkiLDI1OTMsImRkYWxhcmFiaWMiLDE2NzIsImRkYWxmaW5hbGFyYWJpYyIsNjQzOTMsImRkZGhhZGV2YSIsMjM5NiwiZGRoYWJlbmdhbGkiLDI0NjYsImRkaGFkZXZhIiwyMzM4LCJkZGhhZ3VqYXJhdGkiLDI3MjIsImRkaGFndXJtdWtoaSIsMjU5NCwiZGRvdGFjY2VudCIsNzY5MSwiZGRvdGJlbG93Iiw3NjkzLCJkZWNpbWFsc2VwYXJhdG9yYXJhYmljIiwxNjQzLCJkZWNpbWFsc2VwYXJhdG9ycGVyc2lhbiIsMTY0MywiZGVjeXJpbGxpYyIsMTA3NiwiZGVncmVlIiwxNzYsImRlaGloZWJyZXciLDE0NTMsImRlaGlyYWdhbmEiLDEyMzkxLCJkZWljb3B0aWMiLDEwMDcsImRla2F0YWthbmEiLDEyNDg3LCJkZWxldGVsZWZ0Iiw5MDAzLCJkZWxldGVyaWdodCIsODk5OCwiZGVsdGEiLDk0OCwiZGVsdGF0dXJuZWQiLDM5NywiZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGkiLDI1NTIsImRlemgiLDY3NiwiZGhhYmVuZ2FsaSIsMjQ3MSwiZGhhZGV2YSIsMjM0MywiZGhhZ3VqYXJhdGkiLDI3MjcsImRoYWd1cm11a2hpIiwyNTk5LCJkaG9vayIsNTk5LCJkaWFseXRpa2F0b25vcyIsOTAxLCJkaWFseXRpa2F0b25vc2NtYiIsODM2LCJkaWFtb25kIiw5ODMwLCJkaWFtb25kc3VpdHdoaXRlIiw5ODI2LCJkaWVyZXNpcyIsMTY4LCJkaWVyZXNpc2FjdXRlIiw2MzE5MSwiZGllcmVzaXNiZWxvd2NtYiIsODA0LCJkaWVyZXNpc2NtYiIsNzc2LCJkaWVyZXNpc2dyYXZlIiw2MzE5MiwiZGllcmVzaXN0b25vcyIsOTAxLCJkaWhpcmFnYW5hIiwxMjM4NiwiZGlrYXRha2FuYSIsMTI0ODIsImRpdHRvbWFyayIsMTIyOTEsImRpdmlkZSIsMjQ3LCJkaXZpZGVzIiw4NzM5LCJkaXZpc2lvbnNsYXNoIiw4NzI1LCJkamVjeXJpbGxpYyIsMTEwNiwiZGtzaGFkZSIsOTYxOSwiZGxpbmViZWxvdyIsNzY5NSwiZGxzcXVhcmUiLDEzMjA3LCJkbWFjcm9uIiwyNzMsImRtb25vc3BhY2UiLDY1MzQ4LCJkbmJsb2NrIiw5NjA0LCJkb2NoYWRhdGhhaSIsMzU5OCwiZG9kZWt0aGFpIiwzNjA0LCJkb2hpcmFnYW5hIiwxMjM5MywiZG9rYXRha2FuYSIsMTI0ODksImRvbGxhciIsMzYsImRvbGxhcmluZmVyaW9yIiw2MzIwMywiZG9sbGFybW9ub3NwYWNlIiw2NTI4NCwiZG9sbGFyb2xkc3R5bGUiLDYzMjY4LCJkb2xsYXJzbWFsbCIsNjUxMjksImRvbGxhcnN1cGVyaW9yIiw2MzIwNCwiZG9uZyIsODM2MywiZG9ydXNxdWFyZSIsMTMwOTQsImRvdGFjY2VudCIsNzI5LCJkb3RhY2NlbnRjbWIiLDc3NSwiZG90YmVsb3djbWIiLDgwMywiZG90YmVsb3djb21iIiw4MDMsImRvdGthdGFrYW5hIiwxMjUzOSwiZG90bGVzc2kiLDMwNSwiZG90bGVzc2oiLDYzMTY2LCJkb3RsZXNzanN0cm9rZWhvb2siLDY0NCwiZG90bWF0aCIsODkwMSwiZG90dGVkY2lyY2xlIiw5Njc2LCJkb3VibGV5b2RwYXRhaCIsNjQyODcsImRvdWJsZXlvZHBhdGFoaGVicmV3Iiw2NDI4NywiZG93bnRhY2tiZWxvd2NtYiIsNzk4LCJkb3dudGFja21vZCIsNzI1LCJkcGFyZW4iLDkzNzUsImRzdXBlcmlvciIsNjMyMTEsImR0YWlsIiw1OTgsImR0b3BiYXIiLDM5NiwiZHVoaXJhZ2FuYSIsMTIzODksImR1a2F0YWthbmEiLDEyNDg1LCJkeiIsNDk5LCJkemFsdG9uZSIsNjc1LCJkemNhcm9uIiw0NTQsImR6Y3VybCIsNjc3LCJkemVhYmtoYXNpYW5jeXJpbGxpYyIsMTI0OSwiZHplY3lyaWxsaWMiLDExMDksImR6aGVjeXJpbGxpYyIsMTExOSwiZSIsMTAxLCJlYWN1dGUiLDIzMywiZWFydGgiLDk3OTMsImViZW5nYWxpIiwyNDQ3LCJlYm9wb21vZm8iLDEyNTcyLCJlYnJldmUiLDI3NywiZWNhbmRyYWRldmEiLDIzMTcsImVjYW5kcmFndWphcmF0aSIsMjcwMSwiZWNhbmRyYXZvd2Vsc2lnbmRldmEiLDIzNzMsImVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aSIsMjc1NywiZWNhcm9uIiwyODMsImVjZWRpbGxhYnJldmUiLDc3MDksImVjaGFybWVuaWFuIiwxMzgxLCJlY2h5aXduYXJtZW5pYW4iLDE0MTUsImVjaXJjbGUiLDk0MjgsImVjaXJjdW1mbGV4IiwyMzQsImVjaXJjdW1mbGV4YWN1dGUiLDc4NzEsImVjaXJjdW1mbGV4YmVsb3ciLDc3MDUsImVjaXJjdW1mbGV4ZG90YmVsb3ciLDc4NzksImVjaXJjdW1mbGV4Z3JhdmUiLDc4NzMsImVjaXJjdW1mbGV4aG9va2Fib3ZlIiw3ODc1LCJlY2lyY3VtZmxleHRpbGRlIiw3ODc3LCJlY3lyaWxsaWMiLDExMDgsImVkYmxncmF2ZSIsNTE3LCJlZGV2YSIsMjMxOSwiZWRpZXJlc2lzIiwyMzUsImVkb3QiLDI3OSwiZWRvdGFjY2VudCIsMjc5LCJlZG90YmVsb3ciLDc4NjUsImVlZ3VybXVraGkiLDI1NzUsImVlbWF0cmFndXJtdWtoaSIsMjYzMSwiZWZjeXJpbGxpYyIsMTA5MiwiZWdyYXZlIiwyMzIsImVndWphcmF0aSIsMjcwMywiZWhhcm1lbmlhbiIsMTM4MywiZWhib3BvbW9mbyIsMTI1NzMsImVoaXJhZ2FuYSIsMTIzNjAsImVob29rYWJvdmUiLDc4NjcsImVpYm9wb21vZm8iLDEyNTc1LCJlaWdodCIsNTYsImVpZ2h0YXJhYmljIiwxNjQwLCJlaWdodGJlbmdhbGkiLDI1NDIsImVpZ2h0Y2lyY2xlIiw5MzE5LCJlaWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI5LCJlaWdodGRldmEiLDI0MTQsImVpZ2h0ZWVuY2lyY2xlIiw5MzI5LCJlaWdodGVlbnBhcmVuIiw5MzQ5LCJlaWdodGVlbnBlcmlvZCIsOTM2OSwiZWlnaHRndWphcmF0aSIsMjc5OCwiZWlnaHRndXJtdWtoaSIsMjY3MCwiZWlnaHRoYWNrYXJhYmljIiwxNjQwLCJlaWdodGhhbmd6aG91IiwxMjMyOCwiZWlnaHRobm90ZWJlYW1lZCIsOTgzNSwiZWlnaHRpZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOSwiZWlnaHRpbmZlcmlvciIsODMyOCwiZWlnaHRtb25vc3BhY2UiLDY1MzA0LCJlaWdodG9sZHN0eWxlIiw2MzI4OCwiZWlnaHRwYXJlbiIsOTMzOSwiZWlnaHRwZXJpb2QiLDkzNTksImVpZ2h0cGVyc2lhbiIsMTc4NCwiZWlnaHRyb21hbiIsODU2NywiZWlnaHRzdXBlcmlvciIsODMxMiwiZWlnaHR0aGFpIiwzNjcyLCJlaW52ZXJ0ZWRicmV2ZSIsNTE5LCJlaW90aWZpZWRjeXJpbGxpYyIsMTEyNSwiZWthdGFrYW5hIiwxMjQ1NiwiZWthdGFrYW5haGFsZndpZHRoIiw2NTM5NiwiZWtvbmthcmd1cm11a2hpIiwyNjc2LCJla29yZWFuIiwxMjYyOCwiZWxjeXJpbGxpYyIsMTA4MywiZWxlbWVudCIsODcxMiwiZWxldmVuY2lyY2xlIiw5MzIyLCJlbGV2ZW5wYXJlbiIsOTM0MiwiZWxldmVucGVyaW9kIiw5MzYyLCJlbGV2ZW5yb21hbiIsODU3MCwiZWxsaXBzaXMiLDgyMzAsImVsbGlwc2lzdmVydGljYWwiLDg5NDIsImVtYWNyb24iLDI3NSwiZW1hY3JvbmFjdXRlIiw3NzAzLCJlbWFjcm9uZ3JhdmUiLDc3MDEsImVtY3lyaWxsaWMiLDEwODQsImVtZGFzaCIsODIxMiwiZW1kYXNodmVydGljYWwiLDY1MDczLCJlbW9ub3NwYWNlIiw2NTM0OSwiZW1waGFzaXNtYXJrYXJtZW5pYW4iLDEzNzEsImVtcHR5c2V0Iiw4NzA5LCJlbmJvcG9tb2ZvIiwxMjU3OSwiZW5jeXJpbGxpYyIsMTA4NSwiZW5kYXNoIiw4MjExLCJlbmRhc2h2ZXJ0aWNhbCIsNjUwNzQsImVuZGVzY2VuZGVyY3lyaWxsaWMiLDExODcsImVuZyIsMzMxLCJlbmdib3BvbW9mbyIsMTI1ODEsImVuZ2hlY3lyaWxsaWMiLDExODksImVuaG9va2N5cmlsbGljIiwxMjI0LCJlbnNwYWNlIiw4MTk0LCJlb2dvbmVrIiwyODEsImVva29yZWFuIiwxMjYyNywiZW9wZW4iLDYwMywiZW9wZW5jbG9zZWQiLDY2NiwiZW9wZW5yZXZlcnNlZCIsNjA0LCJlb3BlbnJldmVyc2VkY2xvc2VkIiw2MDYsImVvcGVucmV2ZXJzZWRob29rIiw2MDUsImVwYXJlbiIsOTM3NiwiZXBzaWxvbiIsOTQ5LCJlcHNpbG9udG9ub3MiLDk0MSwiZXF1YWwiLDYxLCJlcXVhbG1vbm9zcGFjZSIsNjUzMDksImVxdWFsc21hbGwiLDY1MTI2LCJlcXVhbHN1cGVyaW9yIiw4MzE2LCJlcXVpdmFsZW5jZSIsODgwMSwiZXJib3BvbW9mbyIsMTI1ODIsImVyY3lyaWxsaWMiLDEwODgsImVyZXZlcnNlZCIsNjAwLCJlcmV2ZXJzZWRjeXJpbGxpYyIsMTEwMSwiZXNjeXJpbGxpYyIsMTA4OSwiZXNkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NSwiZXNoIiw2NDMsImVzaGN1cmwiLDY0NiwiZXNob3J0ZGV2YSIsMjMxOCwiZXNob3J0dm93ZWxzaWduZGV2YSIsMjM3NCwiZXNocmV2ZXJzZWRsb29wIiw0MjYsImVzaHNxdWF0cmV2ZXJzZWQiLDY0NSwiZXNtYWxsaGlyYWdhbmEiLDEyMzU5LCJlc21hbGxrYXRha2FuYSIsMTI0NTUsImVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NiwiZXN0aW1hdGVkIiw4NDk0LCJlc3VwZXJpb3IiLDYzMjEyLCJldGEiLDk1MSwiZXRhcm1lbmlhbiIsMTM4NCwiZXRhdG9ub3MiLDk0MiwiZXRoIiwyNDAsImV0aWxkZSIsNzg2OSwiZXRpbGRlYmVsb3ciLDc3MDcsImV0bmFodGFmb3VraGhlYnJldyIsMTQyNSwiZXRuYWh0YWZvdWtobGVmdGhlYnJldyIsMTQyNSwiZXRuYWh0YWhlYnJldyIsMTQyNSwiZXRuYWh0YWxlZnRoZWJyZXciLDE0MjUsImV0dXJuZWQiLDQ3NywiZXVrb3JlYW4iLDEyNjQxLCJldXJvIiw4MzY0LCJldm93ZWxzaWduYmVuZ2FsaSIsMjUwMywiZXZvd2Vsc2lnbmRldmEiLDIzNzUsImV2b3dlbHNpZ25ndWphcmF0aSIsMjc1OSwiZXhjbGFtIiwzMywiZXhjbGFtYXJtZW5pYW4iLDEzNzIsImV4Y2xhbWRibCIsODI1MiwiZXhjbGFtZG93biIsMTYxLCJleGNsYW1kb3duc21hbGwiLDYzMzkzLCJleGNsYW1tb25vc3BhY2UiLDY1MjgxLCJleGNsYW1zbWFsbCIsNjMyNjUsImV4aXN0ZW50aWFsIiw4NzA3LCJlemgiLDY1OCwiZXpoY2Fyb24iLDQ5NSwiZXpoY3VybCIsNjU5LCJlemhyZXZlcnNlZCIsNDQxLCJlemh0YWlsIiw0NDIsImYiLDEwMiwiZmFkZXZhIiwyMzk4LCJmYWd1cm11a2hpIiwyNjU0LCJmYWhyZW5oZWl0Iiw4NDU3LCJmYXRoYWFyYWJpYyIsMTYxNCwiZmF0aGFsb3dhcmFiaWMiLDE2MTQsImZhdGhhdGFuYXJhYmljIiwxNjExLCJmYm9wb21vZm8iLDEyNTUyLCJmY2lyY2xlIiw5NDI5LCJmZG90YWNjZW50Iiw3NzExLCJmZWhhcmFiaWMiLDE2MDEsImZlaGFybWVuaWFuIiwxNDE0LCJmZWhmaW5hbGFyYWJpYyIsNjUyMzQsImZlaGluaXRpYWxhcmFiaWMiLDY1MjM1LCJmZWhtZWRpYWxhcmFiaWMiLDY1MjM2LCJmZWljb3B0aWMiLDk5NywiZmVtYWxlIiw5NzkyLCJmZiIsNjQyNTYsImZfZiIsNjQyNTYsImZmaSIsNjQyNTksImZfZl9pIiw2NDI1OSwiZmZsIiw2NDI2MCwiZl9mX2wiLDY0MjYwLCJmaSIsNjQyNTcsImZfaSIsNjQyNTcsImZpZnRlZW5jaXJjbGUiLDkzMjYsImZpZnRlZW5wYXJlbiIsOTM0NiwiZmlmdGVlbnBlcmlvZCIsOTM2NiwiZmlndXJlZGFzaCIsODIxMCwiZmlsbGVkYm94Iiw5NjMyLCJmaWxsZWRyZWN0Iiw5NjQ0LCJmaW5hbGthZiIsMTQ5OCwiZmluYWxrYWZkYWdlc2giLDY0MzE0LCJmaW5hbGthZmRhZ2VzaGhlYnJldyIsNjQzMTQsImZpbmFsa2FmaGVicmV3IiwxNDk4LCJmaW5hbG1lbSIsMTUwMSwiZmluYWxtZW1oZWJyZXciLDE1MDEsImZpbmFsbnVuIiwxNTAzLCJmaW5hbG51bmhlYnJldyIsMTUwMywiZmluYWxwZSIsMTUwNywiZmluYWxwZWhlYnJldyIsMTUwNywiZmluYWx0c2FkaSIsMTUwOSwiZmluYWx0c2FkaWhlYnJldyIsMTUwOSwiZmlyc3R0b25lY2hpbmVzZSIsNzEzLCJmaXNoZXllIiw5NjczLCJmaXRhY3lyaWxsaWMiLDExMzksImZpdmUiLDUzLCJmaXZlYXJhYmljIiwxNjM3LCJmaXZlYmVuZ2FsaSIsMjUzOSwiZml2ZWNpcmNsZSIsOTMxNiwiZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI2LCJmaXZlZGV2YSIsMjQxMSwiZml2ZWVpZ2h0aHMiLDg1NDEsImZpdmVndWphcmF0aSIsMjc5NSwiZml2ZWd1cm11a2hpIiwyNjY3LCJmaXZlaGFja2FyYWJpYyIsMTYzNywiZml2ZWhhbmd6aG91IiwxMjMyNSwiZml2ZWlkZW9ncmFwaGljcGFyZW4iLDEyODM2LCJmaXZlaW5mZXJpb3IiLDgzMjUsImZpdmVtb25vc3BhY2UiLDY1MzAxLCJmaXZlb2xkc3R5bGUiLDYzMjg1LCJmaXZlcGFyZW4iLDkzMzYsImZpdmVwZXJpb2QiLDkzNTYsImZpdmVwZXJzaWFuIiwxNzgxLCJmaXZlcm9tYW4iLDg1NjQsImZpdmVzdXBlcmlvciIsODMwOSwiZml2ZXRoYWkiLDM2NjksImZsIiw2NDI1OCwiZl9sIiw2NDI1OCwiZmxvcmluIiw0MDIsImZtb25vc3BhY2UiLDY1MzUwLCJmbXNxdWFyZSIsMTMyMDksImZvZmFudGhhaSIsMzYxNSwiZm9mYXRoYWkiLDM2MTMsImZvbmdtYW50aGFpIiwzNjYzLCJmb3JhbGwiLDg3MDQsImZvdXIiLDUyLCJmb3VyYXJhYmljIiwxNjM2LCJmb3VyYmVuZ2FsaSIsMjUzOCwiZm91cmNpcmNsZSIsOTMxNSwiZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI1LCJmb3VyZGV2YSIsMjQxMCwiZm91cmd1amFyYXRpIiwyNzk0LCJmb3VyZ3VybXVraGkiLDI2NjYsImZvdXJoYWNrYXJhYmljIiwxNjM2LCJmb3VyaGFuZ3pob3UiLDEyMzI0LCJmb3VyaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzUsImZvdXJpbmZlcmlvciIsODMyNCwiZm91cm1vbm9zcGFjZSIsNjUzMDAsImZvdXJudW1lcmF0b3JiZW5nYWxpIiwyNTUxLCJmb3Vyb2xkc3R5bGUiLDYzMjg0LCJmb3VycGFyZW4iLDkzMzUsImZvdXJwZXJpb2QiLDkzNTUsImZvdXJwZXJzaWFuIiwxNzgwLCJmb3Vycm9tYW4iLDg1NjMsImZvdXJzdXBlcmlvciIsODMwOCwiZm91cnRlZW5jaXJjbGUiLDkzMjUsImZvdXJ0ZWVucGFyZW4iLDkzNDUsImZvdXJ0ZWVucGVyaW9kIiw5MzY1LCJmb3VydGhhaSIsMzY2OCwiZm91cnRodG9uZWNoaW5lc2UiLDcxNSwiZnBhcmVuIiw5Mzc3LCJmcmFjdGlvbiIsODI2MCwiZnJhbmMiLDgzNTUsImciLDEwMywiZ2FiZW5nYWxpIiwyNDU1LCJnYWN1dGUiLDUwMSwiZ2FkZXZhIiwyMzI3LCJnYWZhcmFiaWMiLDE3MTEsImdhZmZpbmFsYXJhYmljIiw2NDQwMywiZ2FmaW5pdGlhbGFyYWJpYyIsNjQ0MDQsImdhZm1lZGlhbGFyYWJpYyIsNjQ0MDUsImdhZ3VqYXJhdGkiLDI3MTEsImdhZ3VybXVraGkiLDI1ODMsImdhaGlyYWdhbmEiLDEyMzY0LCJnYWthdGFrYW5hIiwxMjQ2MCwiZ2FtbWEiLDk0NywiZ2FtbWFsYXRpbnNtYWxsIiw2MTEsImdhbW1hc3VwZXJpb3IiLDczNiwiZ2FuZ2lhY29wdGljIiwxMDAzLCJnYm9wb21vZm8iLDEyNTU3LCJnYnJldmUiLDI4NywiZ2Nhcm9uIiw0ODcsImdjZWRpbGxhIiwyOTEsImdjaXJjbGUiLDk0MzAsImdjaXJjdW1mbGV4IiwyODUsImdjb21tYWFjY2VudCIsMjkxLCJnZG90IiwyODksImdkb3RhY2NlbnQiLDI4OSwiZ2VjeXJpbGxpYyIsMTA3NSwiZ2VoaXJhZ2FuYSIsMTIzNzAsImdla2F0YWthbmEiLDEyNDY2LCJnZW9tZXRyaWNhbGx5ZXF1YWwiLDg3ODUsImdlcmVzaGFjY2VudGhlYnJldyIsMTQzNiwiZ2VyZXNoaGVicmV3IiwxNTIzLCJnZXJlc2htdXFkYW1oZWJyZXciLDE0MzcsImdlcm1hbmRibHMiLDIyMywiZ2Vyc2hheWltYWNjZW50aGVicmV3IiwxNDM4LCJnZXJzaGF5aW1oZWJyZXciLDE1MjQsImdldGFtYXJrIiwxMjMwNywiZ2hhYmVuZ2FsaSIsMjQ1NiwiZ2hhZGFybWVuaWFuIiwxMzk0LCJnaGFkZXZhIiwyMzI4LCJnaGFndWphcmF0aSIsMjcxMiwiZ2hhZ3VybXVraGkiLDI1ODQsImdoYWluYXJhYmljIiwxNTk0LCJnaGFpbmZpbmFsYXJhYmljIiw2NTIzMCwiZ2hhaW5pbml0aWFsYXJhYmljIiw2NTIzMSwiZ2hhaW5tZWRpYWxhcmFiaWMiLDY1MjMyLCJnaGVtaWRkbGVob29rY3lyaWxsaWMiLDExNzMsImdoZXN0cm9rZWN5cmlsbGljIiwxMTcxLCJnaGV1cHR1cm5jeXJpbGxpYyIsMTE2OSwiZ2hoYWRldmEiLDIzOTQsImdoaGFndXJtdWtoaSIsMjY1MCwiZ2hvb2siLDYwOCwiZ2h6c3F1YXJlIiwxMzIwMywiZ2loaXJhZ2FuYSIsMTIzNjYsImdpa2F0YWthbmEiLDEyNDYyLCJnaW1hcm1lbmlhbiIsMTM3OSwiZ2ltZWwiLDE0OTAsImdpbWVsZGFnZXNoIiw2NDMwNiwiZ2ltZWxkYWdlc2hoZWJyZXciLDY0MzA2LCJnaW1lbGhlYnJldyIsMTQ5MCwiZ2plY3lyaWxsaWMiLDExMDcsImdsb3R0YWxpbnZlcnRlZHN0cm9rZSIsNDQ2LCJnbG90dGFsc3RvcCIsNjYwLCJnbG90dGFsc3RvcGludmVydGVkIiw2NjIsImdsb3R0YWxzdG9wbW9kIiw3MDQsImdsb3R0YWxzdG9wcmV2ZXJzZWQiLDY2MSwiZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZCIsNzA1LCJnbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3IiLDc0MCwiZ2xvdHRhbHN0b3BzdHJva2UiLDY3MywiZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZCIsNjc0LCJnbWFjcm9uIiw3NzEzLCJnbW9ub3NwYWNlIiw2NTM1MSwiZ29oaXJhZ2FuYSIsMTIzNzIsImdva2F0YWthbmEiLDEyNDY4LCJncGFyZW4iLDkzNzgsImdwYXNxdWFyZSIsMTMyMjgsImdyYWRpZW50Iiw4NzExLCJncmF2ZSIsOTYsImdyYXZlYmVsb3djbWIiLDc5MCwiZ3JhdmVjbWIiLDc2OCwiZ3JhdmVjb21iIiw3NjgsImdyYXZlZGV2YSIsMjM4NywiZ3JhdmVsb3dtb2QiLDcxOCwiZ3JhdmVtb25vc3BhY2UiLDY1MzQ0LCJncmF2ZXRvbmVjbWIiLDgzMiwiZ3JlYXRlciIsNjIsImdyZWF0ZXJlcXVhbCIsODgwNSwiZ3JlYXRlcmVxdWFsb3JsZXNzIiw4OTIzLCJncmVhdGVybW9ub3NwYWNlIiw2NTMxMCwiZ3JlYXRlcm9yZXF1aXZhbGVudCIsODgxOSwiZ3JlYXRlcm9ybGVzcyIsODgyMywiZ3JlYXRlcm92ZXJlcXVhbCIsODgwNywiZ3JlYXRlcnNtYWxsIiw2NTEyNSwiZ3NjcmlwdCIsNjA5LCJnc3Ryb2tlIiw0ODUsImd1aGlyYWdhbmEiLDEyMzY4LCJndWlsbGVtb3RsZWZ0IiwxNzEsImd1aWxsZW1vdHJpZ2h0IiwxODcsImd1aWxzaW5nbGxlZnQiLDgyNDksImd1aWxzaW5nbHJpZ2h0Iiw4MjUwLCJndWthdGFrYW5hIiwxMjQ2NCwiZ3VyYW11c3F1YXJlIiwxMzA4MCwiZ3lzcXVhcmUiLDEzMjU3LCJoIiwxMDQsImhhYWJraGFzaWFuY3lyaWxsaWMiLDExOTMsImhhYWx0b25lYXJhYmljIiwxNzI5LCJoYWJlbmdhbGkiLDI0ODksImhhZGVzY2VuZGVyY3lyaWxsaWMiLDEyMDMsImhhZGV2YSIsMjM2MSwiaGFndWphcmF0aSIsMjc0NSwiaGFndXJtdWtoaSIsMjYxNywiaGFoYXJhYmljIiwxNTgxLCJoYWhmaW5hbGFyYWJpYyIsNjUxODYsImhhaGluaXRpYWxhcmFiaWMiLDY1MTg3LCJoYWhpcmFnYW5hIiwxMjM5OSwiaGFobWVkaWFsYXJhYmljIiw2NTE4OCwiaGFpdHVzcXVhcmUiLDEzMDk4LCJoYWthdGFrYW5hIiwxMjQ5NSwiaGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTgsImhhbGFudGd1cm11a2hpIiwyNjM3LCJoYW16YWFyYWJpYyIsMTU2OSwiaGFtemFsb3dhcmFiaWMiLDE1NjksImhhbmd1bGZpbGxlciIsMTI2NDQsImhhcmRzaWduY3lyaWxsaWMiLDEwOTgsImhhcnBvb25sZWZ0YmFyYnVwIiw4NjM2LCJoYXJwb29ucmlnaHRiYXJidXAiLDg2NDAsImhhc3F1YXJlIiwxMzI1OCwiaGF0YWZwYXRhaCIsMTQ1OCwiaGF0YWZwYXRhaDE2IiwxNDU4LCJoYXRhZnBhdGFoMjMiLDE0NTgsImhhdGFmcGF0YWgyZiIsMTQ1OCwiaGF0YWZwYXRhaGhlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaG5hcnJvd2hlYnJldyIsMTQ1OCwiaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NTgsImhhdGFmcGF0YWh3aWRlaGVicmV3IiwxNDU4LCJoYXRhZnFhbWF0cyIsMTQ1OSwiaGF0YWZxYW1hdHMxYiIsMTQ1OSwiaGF0YWZxYW1hdHMyOCIsMTQ1OSwiaGF0YWZxYW1hdHMzNCIsMTQ1OSwiaGF0YWZxYW1hdHNoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzbmFycm93aGVicmV3IiwxNDU5LCJoYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NTksImhhdGFmcWFtYXRzd2lkZWhlYnJldyIsMTQ1OSwiaGF0YWZzZWdvbCIsMTQ1NywiaGF0YWZzZWdvbDE3IiwxNDU3LCJoYXRhZnNlZ29sMjQiLDE0NTcsImhhdGFmc2Vnb2wzMCIsMTQ1NywiaGF0YWZzZWdvbGhlYnJldyIsMTQ1NywiaGF0YWZzZWdvbG5hcnJvd2hlYnJldyIsMTQ1NywiaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXciLDE0NTcsImhhdGFmc2Vnb2x3aWRlaGVicmV3IiwxNDU3LCJoYmFyIiwyOTUsImhib3BvbW9mbyIsMTI1NTksImhicmV2ZWJlbG93Iiw3NzIzLCJoY2VkaWxsYSIsNzcyMSwiaGNpcmNsZSIsOTQzMSwiaGNpcmN1bWZsZXgiLDI5MywiaGRpZXJlc2lzIiw3NzE5LCJoZG90YWNjZW50Iiw3NzE1LCJoZG90YmVsb3ciLDc3MTcsImhlIiwxNDkyLCJoZWFydCIsOTgyOSwiaGVhcnRzdWl0YmxhY2siLDk4MjksImhlYXJ0c3VpdHdoaXRlIiw5ODI1LCJoZWRhZ2VzaCIsNjQzMDgsImhlZGFnZXNoaGVicmV3Iiw2NDMwOCwiaGVoYWx0b25lYXJhYmljIiwxNzI5LCJoZWhhcmFiaWMiLDE2MDcsImhlaGVicmV3IiwxNDkyLCJoZWhmaW5hbGFsdG9uZWFyYWJpYyIsNjQ0MjMsImhlaGZpbmFsYWx0dHdvYXJhYmljIiw2NTI1OCwiaGVoZmluYWxhcmFiaWMiLDY1MjU4LCJoZWhoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY0NDIxLCJoZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWMiLDY0NDIwLCJoZWhpbml0aWFsYWx0b25lYXJhYmljIiw2NDQyNCwiaGVoaW5pdGlhbGFyYWJpYyIsNjUyNTksImhlaGlyYWdhbmEiLDEyNDA4LCJoZWhtZWRpYWxhbHRvbmVhcmFiaWMiLDY0NDI1LCJoZWhtZWRpYWxhcmFiaWMiLDY1MjYwLCJoZWlzZWllcmFzcXVhcmUiLDEzMTc5LCJoZWthdGFrYW5hIiwxMjUwNCwiaGVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjEsImhla3V0YWFydXNxdWFyZSIsMTMxMTAsImhlbmdob29rIiw2MTUsImhlcnV0dXNxdWFyZSIsMTMxMTMsImhldCIsMTQ5NSwiaGV0aGVicmV3IiwxNDk1LCJoaG9vayIsNjE0LCJoaG9va3N1cGVyaW9yIiw2ODksImhpZXVoYWNpcmNsZWtvcmVhbiIsMTI5MjMsImhpZXVoYXBhcmVua29yZWFuIiwxMjgyNywiaGlldWhjaXJjbGVrb3JlYW4iLDEyOTA5LCJoaWV1aGtvcmVhbiIsMTI2MjIsImhpZXVocGFyZW5rb3JlYW4iLDEyODEzLCJoaWhpcmFnYW5hIiwxMjQwMiwiaGlrYXRha2FuYSIsMTI0OTgsImhpa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE5LCJoaXJpcSIsMTQ2MCwiaGlyaXExNCIsMTQ2MCwiaGlyaXEyMSIsMTQ2MCwiaGlyaXEyZCIsMTQ2MCwiaGlyaXFoZWJyZXciLDE0NjAsImhpcmlxbmFycm93aGVicmV3IiwxNDYwLCJoaXJpcXF1YXJ0ZXJoZWJyZXciLDE0NjAsImhpcmlxd2lkZWhlYnJldyIsMTQ2MCwiaGxpbmViZWxvdyIsNzgzMCwiaG1vbm9zcGFjZSIsNjUzNTIsImhvYXJtZW5pYW4iLDEzOTIsImhvaGlwdGhhaSIsMzYyNywiaG9oaXJhZ2FuYSIsMTI0MTEsImhva2F0YWthbmEiLDEyNTA3LCJob2thdGFrYW5haGFsZndpZHRoIiw2NTQyMiwiaG9sYW0iLDE0NjUsImhvbGFtMTkiLDE0NjUsImhvbGFtMjYiLDE0NjUsImhvbGFtMzIiLDE0NjUsImhvbGFtaGVicmV3IiwxNDY1LCJob2xhbW5hcnJvd2hlYnJldyIsMTQ2NSwiaG9sYW1xdWFydGVyaGVicmV3IiwxNDY1LCJob2xhbXdpZGVoZWJyZXciLDE0NjUsImhvbm9raHVrdGhhaSIsMzYzMCwiaG9va2Fib3ZlY29tYiIsNzc3LCJob29rY21iIiw3NzcsImhvb2twYWxhdGFsaXplZGJlbG93Y21iIiw4MDEsImhvb2tyZXRyb2ZsZXhiZWxvd2NtYiIsODAyLCJob29uc3F1YXJlIiwxMzEyMiwiaG9yaWNvcHRpYyIsMTAwMSwiaG9yaXpvbnRhbGJhciIsODIxMywiaG9ybmNtYiIsNzk1LCJob3RzcHJpbmdzIiw5ODMyLCJob3VzZSIsODk2MiwiaHBhcmVuIiw5Mzc5LCJoc3VwZXJpb3IiLDY4OCwiaHR1cm5lZCIsNjEzLCJodWhpcmFnYW5hIiwxMjQwNSwiaHVpaXRvc3F1YXJlIiwxMzEwNywiaHVrYXRha2FuYSIsMTI1MDEsImh1a2F0YWthbmFoYWxmd2lkdGgiLDY1NDIwLCJodW5nYXJ1bWxhdXQiLDczMywiaHVuZ2FydW1sYXV0Y21iIiw3NzksImh2Iiw0MDUsImh5cGhlbiIsNDUsImh5cGhlbmluZmVyaW9yIiw2MzIwNSwiaHlwaGVubW9ub3NwYWNlIiw2NTI5MywiaHlwaGVuc21hbGwiLDY1MTIzLCJoeXBoZW5zdXBlcmlvciIsNjMyMDYsImh5cGhlbnR3byIsODIwOCwiaSIsMTA1LCJpYWN1dGUiLDIzNywiaWFjeXJpbGxpYyIsMTEwMywiaWJlbmdhbGkiLDI0MzksImlib3BvbW9mbyIsMTI1ODMsImlicmV2ZSIsMzAxLCJpY2Fyb24iLDQ2NCwiaWNpcmNsZSIsOTQzMiwiaWNpcmN1bWZsZXgiLDIzOCwiaWN5cmlsbGljIiwxMTEwLCJpZGJsZ3JhdmUiLDUyMSwiaWRlb2dyYXBoZWFydGhjaXJjbGUiLDEyOTQzLCJpZGVvZ3JhcGhmaXJlY2lyY2xlIiwxMjkzOSwiaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuIiwxMjg2MywiaWRlb2dyYXBoaWNjYWxscGFyZW4iLDEyODU4LCJpZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZSIsMTI5NjUsImlkZW9ncmFwaGljY2xvc2UiLDEyMjk0LCJpZGVvZ3JhcGhpY2NvbW1hIiwxMjI4OSwiaWRlb2dyYXBoaWNjb21tYWxlZnQiLDY1MzgwLCJpZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW4iLDEyODU1LCJpZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGUiLDEyOTYzLCJpZGVvZ3JhcGhpY2VhcnRocGFyZW4iLDEyODQ3LCJpZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbiIsMTI4NjEsImlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlIiwxMjk1NywiaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuIiwxMjg2NCwiaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGUiLDEyOTUwLCJpZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuIiwxMjg1NCwiaWRlb2dyYXBoaWNmaXJlcGFyZW4iLDEyODQzLCJpZGVvZ3JhcGhpY2hhdmVwYXJlbiIsMTI4NTAsImlkZW9ncmFwaGljaGlnaGNpcmNsZSIsMTI5NjQsImlkZW9ncmFwaGljaXRlcmF0aW9ubWFyayIsMTIyOTMsImlkZW9ncmFwaGljbGFib3JjaXJjbGUiLDEyOTUyLCJpZGVvZ3JhcGhpY2xhYm9ycGFyZW4iLDEyODU2LCJpZGVvZ3JhcGhpY2xlZnRjaXJjbGUiLDEyOTY3LCJpZGVvZ3JhcGhpY2xvd2NpcmNsZSIsMTI5NjYsImlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGUiLDEyOTY5LCJpZGVvZ3JhcGhpY21ldGFscGFyZW4iLDEyODQ2LCJpZGVvZ3JhcGhpY21vb25wYXJlbiIsMTI4NDIsImlkZW9ncmFwaGljbmFtZXBhcmVuIiwxMjg1MiwiaWRlb2dyYXBoaWNwZXJpb2QiLDEyMjkwLCJpZGVvZ3JhcGhpY3ByaW50Y2lyY2xlIiwxMjk1OCwiaWRlb2dyYXBoaWNyZWFjaHBhcmVuIiwxMjg2NywiaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbiIsMTI4NTcsImlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbiIsMTI4NjIsImlkZW9ncmFwaGljcmlnaHRjaXJjbGUiLDEyOTY4LCJpZGVvZ3JhcGhpY3NlY3JldGNpcmNsZSIsMTI5NTMsImlkZW9ncmFwaGljc2VsZnBhcmVuIiwxMjg2NiwiaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW4iLDEyODUxLCJpZGVvZ3JhcGhpY3NwYWNlIiwxMjI4OCwiaWRlb2dyYXBoaWNzcGVjaWFscGFyZW4iLDEyODUzLCJpZGVvZ3JhcGhpY3N0b2NrcGFyZW4iLDEyODQ5LCJpZGVvZ3JhcGhpY3N0dWR5cGFyZW4iLDEyODU5LCJpZGVvZ3JhcGhpY3N1bnBhcmVuIiwxMjg0OCwiaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbiIsMTI4NjAsImlkZW9ncmFwaGljd2F0ZXJwYXJlbiIsMTI4NDQsImlkZW9ncmFwaGljd29vZHBhcmVuIiwxMjg0NSwiaWRlb2dyYXBoaWN6ZXJvIiwxMjI5NSwiaWRlb2dyYXBobWV0YWxjaXJjbGUiLDEyOTQyLCJpZGVvZ3JhcGhtb29uY2lyY2xlIiwxMjkzOCwiaWRlb2dyYXBobmFtZWNpcmNsZSIsMTI5NDgsImlkZW9ncmFwaHN1bmNpcmNsZSIsMTI5NDQsImlkZW9ncmFwaHdhdGVyY2lyY2xlIiwxMjk0MCwiaWRlb2dyYXBod29vZGNpcmNsZSIsMTI5NDEsImlkZXZhIiwyMzExLCJpZGllcmVzaXMiLDIzOSwiaWRpZXJlc2lzYWN1dGUiLDc3MjcsImlkaWVyZXNpc2N5cmlsbGljIiwxMjUzLCJpZG90YmVsb3ciLDc4ODMsImllYnJldmVjeXJpbGxpYyIsMTIzOSwiaWVjeXJpbGxpYyIsMTA3NywiaWV1bmdhY2lyY2xla29yZWFuIiwxMjkxNywiaWV1bmdhcGFyZW5rb3JlYW4iLDEyODIxLCJpZXVuZ2NpcmNsZWtvcmVhbiIsMTI5MDMsImlldW5na29yZWFuIiwxMjYxNSwiaWV1bmdwYXJlbmtvcmVhbiIsMTI4MDcsImlncmF2ZSIsMjM2LCJpZ3VqYXJhdGkiLDI2OTUsImlndXJtdWtoaSIsMjU2NywiaWhpcmFnYW5hIiwxMjM1NiwiaWhvb2thYm92ZSIsNzg4MSwiaWliZW5nYWxpIiwyNDQwLCJpaWN5cmlsbGljIiwxMDgwLCJpaWRldmEiLDIzMTIsImlpZ3VqYXJhdGkiLDI2OTYsImlpZ3VybXVraGkiLDI1NjgsImlpbWF0cmFndXJtdWtoaSIsMjYyNCwiaWludmVydGVkYnJldmUiLDUyMywiaWlzaG9ydGN5cmlsbGljIiwxMDgxLCJpaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTYsImlpdm93ZWxzaWduZGV2YSIsMjM2OCwiaWl2b3dlbHNpZ25ndWphcmF0aSIsMjc1MiwiaWoiLDMwNywiaWthdGFrYW5hIiwxMjQ1MiwiaWthdGFrYW5haGFsZndpZHRoIiw2NTM5NCwiaWtvcmVhbiIsMTI2NDMsImlsZGUiLDczMiwiaWx1eWhlYnJldyIsMTQ1MiwiaW1hY3JvbiIsMjk5LCJpbWFjcm9uY3lyaWxsaWMiLDEyNTEsImltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWwiLDg3ODcsImltYXRyYWd1cm11a2hpIiwyNjIzLCJpbW9ub3NwYWNlIiw2NTM1MywiaW5jcmVtZW50Iiw4NzEwLCJpbmZpbml0eSIsODczNCwiaW5pYXJtZW5pYW4iLDEzODcsImludGVncmFsIiw4NzQ3LCJpbnRlZ3JhbGJvdHRvbSIsODk5MywiaW50ZWdyYWxidCIsODk5MywiaW50ZWdyYWxleCIsNjM3MzMsImludGVncmFsdG9wIiw4OTkyLCJpbnRlZ3JhbHRwIiw4OTkyLCJpbnRlcnNlY3Rpb24iLDg3NDUsImludGlzcXVhcmUiLDEzMDYxLCJpbnZidWxsZXQiLDk2ODgsImludmNpcmNsZSIsOTY4OSwiaW52c21pbGVmYWNlIiw5Nzg3LCJpb2N5cmlsbGljIiwxMTA1LCJpb2dvbmVrIiwzMDMsImlvdGEiLDk1MywiaW90YWRpZXJlc2lzIiw5NzAsImlvdGFkaWVyZXNpc3Rvbm9zIiw5MTIsImlvdGFsYXRpbiIsNjE3LCJpb3RhdG9ub3MiLDk0MywiaXBhcmVuIiw5MzgwLCJpcmlndXJtdWtoaSIsMjY3NCwiaXNtYWxsaGlyYWdhbmEiLDEyMzU1LCJpc21hbGxrYXRha2FuYSIsMTI0NTEsImlzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NCwiaXNzaGFyYmVuZ2FsaSIsMjU1NCwiaXN0cm9rZSIsNjE2LCJpc3VwZXJpb3IiLDYzMjEzLCJpdGVyYXRpb25oaXJhZ2FuYSIsMTI0NDUsIml0ZXJhdGlvbmthdGFrYW5hIiwxMjU0MSwiaXRpbGRlIiwyOTcsIml0aWxkZWJlbG93Iiw3NzI1LCJpdWJvcG9tb2ZvIiwxMjU4NSwiaXVjeXJpbGxpYyIsMTEwMiwiaXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTUsIml2b3dlbHNpZ25kZXZhIiwyMzY3LCJpdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTEsIml6aGl0c2FjeXJpbGxpYyIsMTE0MSwiaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMiLDExNDMsImoiLDEwNiwiamFhcm1lbmlhbiIsMTM5MywiamFiZW5nYWxpIiwyNDYwLCJqYWRldmEiLDIzMzIsImphZ3VqYXJhdGkiLDI3MTYsImphZ3VybXVraGkiLDI1ODgsImpib3BvbW9mbyIsMTI1NjAsImpjYXJvbiIsNDk2LCJqY2lyY2xlIiw5NDMzLCJqY2lyY3VtZmxleCIsMzA5LCJqY3Jvc3NlZHRhaWwiLDY2OSwiamRvdGxlc3NzdHJva2UiLDYwNywiamVjeXJpbGxpYyIsMTExMiwiamVlbWFyYWJpYyIsMTU4MCwiamVlbWZpbmFsYXJhYmljIiw2NTE4MiwiamVlbWluaXRpYWxhcmFiaWMiLDY1MTgzLCJqZWVtbWVkaWFsYXJhYmljIiw2NTE4NCwiamVoYXJhYmljIiwxNjg4LCJqZWhmaW5hbGFyYWJpYyIsNjQzOTUsImpoYWJlbmdhbGkiLDI0NjEsImpoYWRldmEiLDIzMzMsImpoYWd1amFyYXRpIiwyNzE3LCJqaGFndXJtdWtoaSIsMjU4OSwiamhlaGFybWVuaWFuIiwxNDAzLCJqaXMiLDEyMjkyLCJqbW9ub3NwYWNlIiw2NTM1NCwianBhcmVuIiw5MzgxLCJqc3VwZXJpb3IiLDY5MCwiayIsMTA3LCJrYWJhc2hraXJjeXJpbGxpYyIsMTE4NSwia2FiZW5nYWxpIiwyNDUzLCJrYWN1dGUiLDc3MjksImthY3lyaWxsaWMiLDEwODIsImthZGVzY2VuZGVyY3lyaWxsaWMiLDExNzksImthZGV2YSIsMjMyNSwia2FmIiwxNDk5LCJrYWZhcmFiaWMiLDE2MDMsImthZmRhZ2VzaCIsNjQzMTUsImthZmRhZ2VzaGhlYnJldyIsNjQzMTUsImthZmZpbmFsYXJhYmljIiw2NTI0Miwia2FmaGVicmV3IiwxNDk5LCJrYWZpbml0aWFsYXJhYmljIiw2NTI0Mywia2FmbWVkaWFsYXJhYmljIiw2NTI0NCwia2FmcmFmZWhlYnJldyIsNjQzMzMsImthZ3VqYXJhdGkiLDI3MDksImthZ3VybXVraGkiLDI1ODEsImthaGlyYWdhbmEiLDEyMzYzLCJrYWhvb2tjeXJpbGxpYyIsMTIyMCwia2FrYXRha2FuYSIsMTI0NTksImtha2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk4LCJrYXBwYSIsOTU0LCJrYXBwYXN5bWJvbGdyZWVrIiwxMDA4LCJrYXB5ZW91bm1pZXVta29yZWFuIiwxMjY1Nywia2FweWVvdW5waGlldXBoa29yZWFuIiwxMjY3Niwia2FweWVvdW5waWV1cGtvcmVhbiIsMTI2NjQsImthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbiIsMTI2NjUsImthcm9yaWlzcXVhcmUiLDEzMDY5LCJrYXNoaWRhYXV0b2FyYWJpYyIsMTYwMCwia2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljIiwxNjAwLCJrYXNtYWxsa2F0YWthbmEiLDEyNTMzLCJrYXNxdWFyZSIsMTMxODgsImthc3JhYXJhYmljIiwxNjE2LCJrYXNyYXRhbmFyYWJpYyIsMTYxMywia2FzdHJva2VjeXJpbGxpYyIsMTE4Mywia2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aCIsNjUzOTIsImthdmVydGljYWxzdHJva2VjeXJpbGxpYyIsMTE4MSwia2JvcG9tb2ZvIiwxMjU1OCwia2NhbHNxdWFyZSIsMTMxOTMsImtjYXJvbiIsNDg5LCJrY2VkaWxsYSIsMzExLCJrY2lyY2xlIiw5NDM0LCJrY29tbWFhY2NlbnQiLDMxMSwia2RvdGJlbG93Iiw3NzMxLCJrZWhhcm1lbmlhbiIsMTQxMiwia2VoaXJhZ2FuYSIsMTIzNjksImtla2F0YWthbmEiLDEyNDY1LCJrZWthdGFrYW5haGFsZndpZHRoIiw2NTQwMSwia2VuYXJtZW5pYW4iLDEzOTEsImtlc21hbGxrYXRha2FuYSIsMTI1MzQsImtncmVlbmxhbmRpYyIsMzEyLCJraGFiZW5nYWxpIiwyNDU0LCJraGFjeXJpbGxpYyIsMTA5Mywia2hhZGV2YSIsMjMyNiwia2hhZ3VqYXJhdGkiLDI3MTAsImtoYWd1cm11a2hpIiwyNTgyLCJraGFoYXJhYmljIiwxNTgyLCJraGFoZmluYWxhcmFiaWMiLDY1MTkwLCJraGFoaW5pdGlhbGFyYWJpYyIsNjUxOTEsImtoYWhtZWRpYWxhcmFiaWMiLDY1MTkyLCJraGVpY29wdGljIiw5OTksImtoaGFkZXZhIiwyMzkzLCJraGhhZ3VybXVraGkiLDI2NDksImtoaWV1a2hhY2lyY2xla29yZWFuIiwxMjkyMCwia2hpZXVraGFwYXJlbmtvcmVhbiIsMTI4MjQsImtoaWV1a2hjaXJjbGVrb3JlYW4iLDEyOTA2LCJraGlldWtoa29yZWFuIiwxMjYxOSwia2hpZXVraHBhcmVua29yZWFuIiwxMjgxMCwia2hva2hhaXRoYWkiLDM1ODYsImtob2tob250aGFpIiwzNTg5LCJraG9raHVhdHRoYWkiLDM1ODcsImtob2tod2FpdGhhaSIsMzU4OCwia2hvbXV0dGhhaSIsMzY3NSwia2hvb2siLDQwOSwia2hvcmFraGFuZ3RoYWkiLDM1OTAsImtoenNxdWFyZSIsMTMyMDEsImtpaGlyYWdhbmEiLDEyMzY1LCJraWthdGFrYW5hIiwxMjQ2MSwia2lrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTksImtpcm9ndXJhbXVzcXVhcmUiLDEzMDc3LCJraXJvbWVldG9ydXNxdWFyZSIsMTMwNzgsImtpcm9zcXVhcmUiLDEzMDc2LCJraXllb2thY2lyY2xla29yZWFuIiwxMjkxMCwia2l5ZW9rYXBhcmVua29yZWFuIiwxMjgxNCwia2l5ZW9rY2lyY2xla29yZWFuIiwxMjg5Niwia2l5ZW9ra29yZWFuIiwxMjU5Mywia2l5ZW9rcGFyZW5rb3JlYW4iLDEyODAwLCJraXllb2tzaW9za29yZWFuIiwxMjU5NSwia2plY3lyaWxsaWMiLDExMTYsImtsaW5lYmVsb3ciLDc3MzMsImtsc3F1YXJlIiwxMzIwOCwia21jdWJlZHNxdWFyZSIsMTMyMjIsImttb25vc3BhY2UiLDY1MzU1LCJrbXNxdWFyZWRzcXVhcmUiLDEzMjE4LCJrb2hpcmFnYW5hIiwxMjM3MSwia29obXNxdWFyZSIsMTMyNDgsImtva2FpdGhhaSIsMzU4NSwia29rYXRha2FuYSIsMTI0NjcsImtva2F0YWthbmFoYWxmd2lkdGgiLDY1NDAyLCJrb29wb3NxdWFyZSIsMTMwODYsImtvcHBhY3lyaWxsaWMiLDExNTMsImtvcmVhbnN0YW5kYXJkc3ltYm9sIiwxMjkyNywia29yb25pc2NtYiIsODM1LCJrcGFyZW4iLDkzODIsImtwYXNxdWFyZSIsMTMyMjYsImtzaWN5cmlsbGljIiwxMTM1LCJrdHNxdWFyZSIsMTMyNjMsImt0dXJuZWQiLDY3MCwia3VoaXJhZ2FuYSIsMTIzNjcsImt1a2F0YWthbmEiLDEyNDYzLCJrdWthdGFrYW5haGFsZndpZHRoIiw2NTQwMCwia3ZzcXVhcmUiLDEzMjQwLCJrd3NxdWFyZSIsMTMyNDYsImwiLDEwOCwibGFiZW5nYWxpIiwyNDgyLCJsYWN1dGUiLDMxNCwibGFkZXZhIiwyMzU0LCJsYWd1amFyYXRpIiwyNzM4LCJsYWd1cm11a2hpIiwyNjEwLCJsYWtraGFuZ3lhb3RoYWkiLDM2NTMsImxhbWFsZWZmaW5hbGFyYWJpYyIsNjUyNzYsImxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MjcyLCJsYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljIiw2NTI3MSwibGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYyIsNjUyNzQsImxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWMiLDY1MjczLCJsYW1hbGVmaXNvbGF0ZWRhcmFiaWMiLDY1Mjc1LCJsYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljIiw2NTI3MCwibGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYyIsNjUyNjksImxhbWFyYWJpYyIsMTYwNCwibGFtYmRhIiw5NTUsImxhbWJkYXN0cm9rZSIsNDExLCJsYW1lZCIsMTUwMCwibGFtZWRkYWdlc2giLDY0MzE2LCJsYW1lZGRhZ2VzaGhlYnJldyIsNjQzMTYsImxhbWVkaGVicmV3IiwxNTAwLCJsYW1maW5hbGFyYWJpYyIsNjUyNDYsImxhbWhhaGluaXRpYWxhcmFiaWMiLDY0NzE0LCJsYW1pbml0aWFsYXJhYmljIiw2NTI0NywibGFtamVlbWluaXRpYWxhcmFiaWMiLDY0NzEzLCJsYW1raGFoaW5pdGlhbGFyYWJpYyIsNjQ3MTUsImxhbWxhbWhlaGlzb2xhdGVkYXJhYmljIiw2NTAxMCwibGFtbWVkaWFsYXJhYmljIiw2NTI0OCwibGFtbWVlbWhhaGluaXRpYWxhcmFiaWMiLDY0OTA0LCJsYW1tZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MTYsImxhcmdlY2lyY2xlIiw5NzExLCJsYmFyIiw0MTAsImxiZWx0Iiw2MjAsImxib3BvbW9mbyIsMTI1NTYsImxjYXJvbiIsMzE4LCJsY2VkaWxsYSIsMzE2LCJsY2lyY2xlIiw5NDM1LCJsY2lyY3VtZmxleGJlbG93Iiw3NzQxLCJsY29tbWFhY2NlbnQiLDMxNiwibGRvdCIsMzIwLCJsZG90YWNjZW50IiwzMjAsImxkb3RiZWxvdyIsNzczNSwibGRvdGJlbG93bWFjcm9uIiw3NzM3LCJsZWZ0YW5nbGVhYm92ZWNtYiIsNzk0LCJsZWZ0dGFja2JlbG93Y21iIiw3OTIsImxlc3MiLDYwLCJsZXNzZXF1YWwiLDg4MDQsImxlc3NlcXVhbG9yZ3JlYXRlciIsODkyMiwibGVzc21vbm9zcGFjZSIsNjUzMDgsImxlc3NvcmVxdWl2YWxlbnQiLDg4MTgsImxlc3NvcmdyZWF0ZXIiLDg4MjIsImxlc3NvdmVyZXF1YWwiLDg4MDYsImxlc3NzbWFsbCIsNjUxMjQsImxlemgiLDYyMiwibGZibG9jayIsOTYxMiwibGhvb2tyZXRyb2ZsZXgiLDYyMSwibGlyYSIsODM1NiwibGl3bmFybWVuaWFuIiwxMzg4LCJsaiIsNDU3LCJsamVjeXJpbGxpYyIsMTExMywibGwiLDYzMTY4LCJsbGFkZXZhIiwyMzU1LCJsbGFndWphcmF0aSIsMjczOSwibGxpbmViZWxvdyIsNzczOSwibGxsYWRldmEiLDIzNTYsImxsdm9jYWxpY2JlbmdhbGkiLDI1MjksImxsdm9jYWxpY2RldmEiLDI0MDEsImxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzEsImxsdm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDI0MDMsImxtaWRkbGV0aWxkZSIsNjE5LCJsbW9ub3NwYWNlIiw2NTM1NiwibG1zcXVhcmUiLDEzMjY0LCJsb2NodWxhdGhhaSIsMzYyOCwibG9naWNhbGFuZCIsODc0MywibG9naWNhbG5vdCIsMTcyLCJsb2dpY2Fsbm90cmV2ZXJzZWQiLDg5NzYsImxvZ2ljYWxvciIsODc0NCwibG9saW5ndGhhaSIsMzYyMSwibG9uZ3MiLDM4MywibG93bGluZWNlbnRlcmxpbmUiLDY1MTAyLCJsb3dsaW5lY21iIiw4MTgsImxvd2xpbmVkYXNoZWQiLDY1MTAxLCJsb3plbmdlIiw5Njc0LCJscGFyZW4iLDkzODMsImxzbGFzaCIsMzIyLCJsc3F1YXJlIiw4NDY3LCJsc3VwZXJpb3IiLDYzMjE0LCJsdHNoYWRlIiw5NjE3LCJsdXRoYWkiLDM2MjIsImx2b2NhbGljYmVuZ2FsaSIsMjQ0NCwibHZvY2FsaWNkZXZhIiwyMzE2LCJsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MzAsImx2b2NhbGljdm93ZWxzaWduZGV2YSIsMjQwMiwibHhzcXVhcmUiLDEzMjY3LCJtIiwxMDksIm1hYmVuZ2FsaSIsMjQ3OCwibWFjcm9uIiwxNzUsIm1hY3JvbmJlbG93Y21iIiw4MTcsIm1hY3JvbmNtYiIsNzcyLCJtYWNyb25sb3dtb2QiLDcxNywibWFjcm9ubW9ub3NwYWNlIiw2NTUwNywibWFjdXRlIiw3NzQzLCJtYWRldmEiLDIzNTAsIm1hZ3VqYXJhdGkiLDI3MzQsIm1hZ3VybXVraGkiLDI2MDYsIm1haGFwYWtoaGVicmV3IiwxNDQ0LCJtYWhhcGFraGxlZnRoZWJyZXciLDE0NDQsIm1haGlyYWdhbmEiLDEyNDE0LCJtYWljaGF0dGF3YWxvd2xlZnR0aGFpIiw2MzYzNywibWFpY2hhdHRhd2Fsb3dyaWdodHRoYWkiLDYzNjM2LCJtYWljaGF0dGF3YXRoYWkiLDM2NTksIm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaSIsNjM2MzUsIm1haWVrbG93bGVmdHRoYWkiLDYzNjI4LCJtYWlla2xvd3JpZ2h0dGhhaSIsNjM2MjcsIm1haWVrdGhhaSIsMzY1NiwibWFpZWt1cHBlcmxlZnR0aGFpIiw2MzYyNiwibWFpaGFuYWthdGxlZnR0aGFpIiw2MzYyMCwibWFpaGFuYWthdHRoYWkiLDM2MzMsIm1haXRhaWtodWxlZnR0aGFpIiw2MzYyNSwibWFpdGFpa2h1dGhhaSIsMzY1NSwibWFpdGhvbG93bGVmdHRoYWkiLDYzNjMxLCJtYWl0aG9sb3dyaWdodHRoYWkiLDYzNjMwLCJtYWl0aG90aGFpIiwzNjU3LCJtYWl0aG91cHBlcmxlZnR0aGFpIiw2MzYyOSwibWFpdHJpbG93bGVmdHRoYWkiLDYzNjM0LCJtYWl0cmlsb3dyaWdodHRoYWkiLDYzNjMzLCJtYWl0cml0aGFpIiwzNjU4LCJtYWl0cml1cHBlcmxlZnR0aGFpIiw2MzYzMiwibWFpeWFtb2t0aGFpIiwzNjU0LCJtYWthdGFrYW5hIiwxMjUxMCwibWFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjMsIm1hbGUiLDk3OTQsIm1hbnN5b25zcXVhcmUiLDEzMTI3LCJtYXFhZmhlYnJldyIsMTQ3MCwibWFycyIsOTc5NCwibWFzb3JhY2lyY2xlaGVicmV3IiwxNDU1LCJtYXNxdWFyZSIsMTMxODcsIm1ib3BvbW9mbyIsMTI1NTEsIm1ic3F1YXJlIiwxMzI2OCwibWNpcmNsZSIsOTQzNiwibWN1YmVkc3F1YXJlIiwxMzIyMSwibWRvdGFjY2VudCIsNzc0NSwibWRvdGJlbG93Iiw3NzQ3LCJtZWVtYXJhYmljIiwxNjA1LCJtZWVtZmluYWxhcmFiaWMiLDY1MjUwLCJtZWVtaW5pdGlhbGFyYWJpYyIsNjUyNTEsIm1lZW1tZWRpYWxhcmFiaWMiLDY1MjUyLCJtZWVtbWVlbWluaXRpYWxhcmFiaWMiLDY0NzIxLCJtZWVtbWVlbWlzb2xhdGVkYXJhYmljIiw2NDU4NCwibWVldG9ydXNxdWFyZSIsMTMxMzMsIm1laGlyYWdhbmEiLDEyNDE3LCJtZWl6aWVyYXNxdWFyZSIsMTMxODIsIm1la2F0YWthbmEiLDEyNTEzLCJtZWthdGFrYW5haGFsZndpZHRoIiw2NTQyNiwibWVtIiwxNTAyLCJtZW1kYWdlc2giLDY0MzE4LCJtZW1kYWdlc2hoZWJyZXciLDY0MzE4LCJtZW1oZWJyZXciLDE1MDIsIm1lbmFybWVuaWFuIiwxMzk2LCJtZXJraGFoZWJyZXciLDE0NDUsIm1lcmtoYWtlZnVsYWhlYnJldyIsMTQ0NiwibWVya2hha2VmdWxhbGVmdGhlYnJldyIsMTQ0NiwibWVya2hhbGVmdGhlYnJldyIsMTQ0NSwibWhvb2siLDYyNSwibWh6c3F1YXJlIiwxMzIwMiwibWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGgiLDY1MzgxLCJtaWRkb3QiLDE4MywibWlldW1hY2lyY2xla29yZWFuIiwxMjkxNCwibWlldW1hcGFyZW5rb3JlYW4iLDEyODE4LCJtaWV1bWNpcmNsZWtvcmVhbiIsMTI5MDAsIm1pZXVta29yZWFuIiwxMjYwOSwibWlldW1wYW5zaW9za29yZWFuIiwxMjY1NiwibWlldW1wYXJlbmtvcmVhbiIsMTI4MDQsIm1pZXVtcGlldXBrb3JlYW4iLDEyNjU0LCJtaWV1bXNpb3Nrb3JlYW4iLDEyNjU1LCJtaWhpcmFnYW5hIiwxMjQxNSwibWlrYXRha2FuYSIsMTI1MTEsIm1pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDI0LCJtaW51cyIsODcyMiwibWludXNiZWxvd2NtYiIsODAwLCJtaW51c2NpcmNsZSIsODg1NCwibWludXNtb2QiLDcyNywibWludXNwbHVzIiw4NzIzLCJtaW51dGUiLDgyNDIsIm1pcmliYWFydXNxdWFyZSIsMTMxMzAsIm1pcmlzcXVhcmUiLDEzMTI5LCJtbG9uZ2xlZ3R1cm5lZCIsNjI0LCJtbHNxdWFyZSIsMTMyMDYsIm1tY3ViZWRzcXVhcmUiLDEzMjE5LCJtbW9ub3NwYWNlIiw2NTM1NywibW1zcXVhcmVkc3F1YXJlIiwxMzIxNSwibW9oaXJhZ2FuYSIsMTI0MTgsIm1vaG1zcXVhcmUiLDEzMjQ5LCJtb2thdGFrYW5hIiwxMjUxNCwibW9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjcsIm1vbHNxdWFyZSIsMTMyNzAsIm1vbWF0aGFpIiwzNjE3LCJtb3ZlcnNzcXVhcmUiLDEzMjIzLCJtb3ZlcnNzcXVhcmVkc3F1YXJlIiwxMzIyNCwibXBhcmVuIiw5Mzg0LCJtcGFzcXVhcmUiLDEzMjI3LCJtc3NxdWFyZSIsMTMyMzUsIm1zdXBlcmlvciIsNjMyMTUsIm10dXJuZWQiLDYyMywibXUiLDE4MSwibXUxIiwxODEsIm11YXNxdWFyZSIsMTMxODYsIm11Y2hncmVhdGVyIiw4ODExLCJtdWNobGVzcyIsODgxMCwibXVmc3F1YXJlIiwxMzE5NiwibXVncmVlayIsOTU2LCJtdWdzcXVhcmUiLDEzMTk3LCJtdWhpcmFnYW5hIiwxMjQxNiwibXVrYXRha2FuYSIsMTI1MTIsIm11a2F0YWthbmFoYWxmd2lkdGgiLDY1NDI1LCJtdWxzcXVhcmUiLDEzMjA1LCJtdWx0aXBseSIsMjE1LCJtdW1zcXVhcmUiLDEzMjExLCJtdW5haGhlYnJldyIsMTQ0MywibXVuYWhsZWZ0aGVicmV3IiwxNDQzLCJtdXNpY2Fsbm90ZSIsOTgzNCwibXVzaWNhbG5vdGVkYmwiLDk4MzUsIm11c2ljZmxhdHNpZ24iLDk4MzcsIm11c2ljc2hhcnBzaWduIiw5ODM5LCJtdXNzcXVhcmUiLDEzMjM0LCJtdXZzcXVhcmUiLDEzMjM4LCJtdXdzcXVhcmUiLDEzMjQ0LCJtdm1lZ2FzcXVhcmUiLDEzMjQxLCJtdnNxdWFyZSIsMTMyMzksIm13bWVnYXNxdWFyZSIsMTMyNDcsIm13c3F1YXJlIiwxMzI0NSwibiIsMTEwLCJuYWJlbmdhbGkiLDI0NzIsIm5hYmxhIiw4NzExLCJuYWN1dGUiLDMyNCwibmFkZXZhIiwyMzQ0LCJuYWd1amFyYXRpIiwyNzI4LCJuYWd1cm11a2hpIiwyNjAwLCJuYWhpcmFnYW5hIiwxMjM5NCwibmFrYXRha2FuYSIsMTI0OTAsIm5ha2F0YWthbmFoYWxmd2lkdGgiLDY1NDEzLCJuYXBvc3Ryb3BoZSIsMzI5LCJuYXNxdWFyZSIsMTMxODUsIm5ib3BvbW9mbyIsMTI1NTUsIm5ic3BhY2UiLDE2MCwibmNhcm9uIiwzMjgsIm5jZWRpbGxhIiwzMjYsIm5jaXJjbGUiLDk0MzcsIm5jaXJjdW1mbGV4YmVsb3ciLDc3NTUsIm5jb21tYWFjY2VudCIsMzI2LCJuZG90YWNjZW50Iiw3NzQ5LCJuZG90YmVsb3ciLDc3NTEsIm5laGlyYWdhbmEiLDEyMzk3LCJuZWthdGFrYW5hIiwxMjQ5MywibmVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTYsIm5ld3NoZXFlbHNpZ24iLDgzNjIsIm5mc3F1YXJlIiwxMzE5NSwibmdhYmVuZ2FsaSIsMjQ1NywibmdhZGV2YSIsMjMyOSwibmdhZ3VqYXJhdGkiLDI3MTMsIm5nYWd1cm11a2hpIiwyNTg1LCJuZ29uZ3V0aGFpIiwzNTkxLCJuaGlyYWdhbmEiLDEyNDM1LCJuaG9va2xlZnQiLDYyNiwibmhvb2tyZXRyb2ZsZXgiLDYyNywibmlldW5hY2lyY2xla29yZWFuIiwxMjkxMSwibmlldW5hcGFyZW5rb3JlYW4iLDEyODE1LCJuaWV1bmNpZXVja29yZWFuIiwxMjU5NywibmlldW5jaXJjbGVrb3JlYW4iLDEyODk3LCJuaWV1bmhpZXVoa29yZWFuIiwxMjU5OCwibmlldW5rb3JlYW4iLDEyNTk2LCJuaWV1bnBhbnNpb3Nrb3JlYW4iLDEyNjQ4LCJuaWV1bnBhcmVua29yZWFuIiwxMjgwMSwibmlldW5zaW9za29yZWFuIiwxMjY0NywibmlldW50aWtldXRrb3JlYW4iLDEyNjQ2LCJuaWhpcmFnYW5hIiwxMjM5NSwibmlrYXRha2FuYSIsMTI0OTEsIm5pa2F0YWthbmFoYWxmd2lkdGgiLDY1NDE0LCJuaWtoYWhpdGxlZnR0aGFpIiw2MzY0MSwibmlraGFoaXR0aGFpIiwzNjYxLCJuaW5lIiw1NywibmluZWFyYWJpYyIsMTY0MSwibmluZWJlbmdhbGkiLDI1NDMsIm5pbmVjaXJjbGUiLDkzMjAsIm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEzMCwibmluZWRldmEiLDI0MTUsIm5pbmVndWphcmF0aSIsMjc5OSwibmluZWd1cm11a2hpIiwyNjcxLCJuaW5laGFja2FyYWJpYyIsMTY0MSwibmluZWhhbmd6aG91IiwxMjMyOSwibmluZWlkZW9ncmFwaGljcGFyZW4iLDEyODQwLCJuaW5laW5mZXJpb3IiLDgzMjksIm5pbmVtb25vc3BhY2UiLDY1MzA1LCJuaW5lb2xkc3R5bGUiLDYzMjg5LCJuaW5lcGFyZW4iLDkzNDAsIm5pbmVwZXJpb2QiLDkzNjAsIm5pbmVwZXJzaWFuIiwxNzg1LCJuaW5lcm9tYW4iLDg1NjgsIm5pbmVzdXBlcmlvciIsODMxMywibmluZXRlZW5jaXJjbGUiLDkzMzAsIm5pbmV0ZWVucGFyZW4iLDkzNTAsIm5pbmV0ZWVucGVyaW9kIiw5MzcwLCJuaW5ldGhhaSIsMzY3MywibmoiLDQ2MCwibmplY3lyaWxsaWMiLDExMTQsIm5rYXRha2FuYSIsMTI1MzEsIm5rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzcsIm5sZWdyaWdodGxvbmciLDQxNCwibmxpbmViZWxvdyIsNzc1Mywibm1vbm9zcGFjZSIsNjUzNTgsIm5tc3F1YXJlIiwxMzIxMCwibm5hYmVuZ2FsaSIsMjQ2Nywibm5hZGV2YSIsMjMzOSwibm5hZ3VqYXJhdGkiLDI3MjMsIm5uYWd1cm11a2hpIiwyNTk1LCJubm5hZGV2YSIsMjM0NSwibm9oaXJhZ2FuYSIsMTIzOTgsIm5va2F0YWthbmEiLDEyNDk0LCJub2thdGFrYW5haGFsZndpZHRoIiw2NTQxNywibm9uYnJlYWtpbmdzcGFjZSIsMTYwLCJub25lbnRoYWkiLDM2MDMsIm5vbnV0aGFpIiwzNjA5LCJub29uYXJhYmljIiwxNjA2LCJub29uZmluYWxhcmFiaWMiLDY1MjU0LCJub29uZ2h1bm5hYXJhYmljIiwxNzIyLCJub29uZ2h1bm5hZmluYWxhcmFiaWMiLDY0NDE1LCJub29uaW5pdGlhbGFyYWJpYyIsNjUyNTUsIm5vb25qZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MjIsIm5vb25qZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTg3LCJub29ubWVkaWFsYXJhYmljIiw2NTI1Niwibm9vbm1lZW1pbml0aWFsYXJhYmljIiw2NDcyNSwibm9vbm1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1OTAsIm5vb25ub29uZmluYWxhcmFiaWMiLDY0NjUzLCJub3Rjb250YWlucyIsODcxNiwibm90ZWxlbWVudCIsODcxMywibm90ZWxlbWVudG9mIiw4NzEzLCJub3RlcXVhbCIsODgwMCwibm90Z3JlYXRlciIsODgxNSwibm90Z3JlYXRlcm5vcmVxdWFsIiw4ODE3LCJub3RncmVhdGVybm9ybGVzcyIsODgyNSwibm90aWRlbnRpY2FsIiw4ODAyLCJub3RsZXNzIiw4ODE0LCJub3RsZXNzbm9yZXF1YWwiLDg4MTYsIm5vdHBhcmFsbGVsIiw4NzQyLCJub3RwcmVjZWRlcyIsODgzMiwibm90c3Vic2V0Iiw4ODM2LCJub3RzdWNjZWVkcyIsODgzMywibm90c3VwZXJzZXQiLDg4MzcsIm5vd2FybWVuaWFuIiwxMzk4LCJucGFyZW4iLDkzODUsIm5zc3F1YXJlIiwxMzIzMywibnN1cGVyaW9yIiw4MzE5LCJudGlsZGUiLDI0MSwibnUiLDk1NywibnVoaXJhZ2FuYSIsMTIzOTYsIm51a2F0YWthbmEiLDEyNDkyLCJudWthdGFrYW5haGFsZndpZHRoIiw2NTQxNSwibnVrdGFiZW5nYWxpIiwyNDkyLCJudWt0YWRldmEiLDIzNjQsIm51a3RhZ3VqYXJhdGkiLDI3NDgsIm51a3RhZ3VybXVraGkiLDI2MjAsIm51bWJlcnNpZ24iLDM1LCJudW1iZXJzaWdubW9ub3NwYWNlIiw2NTI4MywibnVtYmVyc2lnbnNtYWxsIiw2NTExOSwibnVtZXJhbHNpZ25ncmVlayIsODg0LCJudW1lcmFsc2lnbmxvd2VyZ3JlZWsiLDg4NSwibnVtZXJvIiw4NDcwLCJudW4iLDE1MDQsIm51bmRhZ2VzaCIsNjQzMjAsIm51bmRhZ2VzaGhlYnJldyIsNjQzMjAsIm51bmhlYnJldyIsMTUwNCwibnZzcXVhcmUiLDEzMjM3LCJud3NxdWFyZSIsMTMyNDMsIm55YWJlbmdhbGkiLDI0NjIsIm55YWRldmEiLDIzMzQsIm55YWd1amFyYXRpIiwyNzE4LCJueWFndXJtdWtoaSIsMjU5MCwibyIsMTExLCJvYWN1dGUiLDI0Mywib2FuZ3RoYWkiLDM2MjksIm9iYXJyZWQiLDYyOSwib2JhcnJlZGN5cmlsbGljIiwxMjU3LCJvYmFycmVkZGllcmVzaXNjeXJpbGxpYyIsMTI1OSwib2JlbmdhbGkiLDI0NTEsIm9ib3BvbW9mbyIsMTI1NzEsIm9icmV2ZSIsMzM1LCJvY2FuZHJhZGV2YSIsMjMyMSwib2NhbmRyYWd1amFyYXRpIiwyNzA1LCJvY2FuZHJhdm93ZWxzaWduZGV2YSIsMjM3Nywib2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpIiwyNzYxLCJvY2Fyb24iLDQ2Niwib2NpcmNsZSIsOTQzOCwib2NpcmN1bWZsZXgiLDI0NCwib2NpcmN1bWZsZXhhY3V0ZSIsNzg4OSwib2NpcmN1bWZsZXhkb3RiZWxvdyIsNzg5Nywib2NpcmN1bWZsZXhncmF2ZSIsNzg5MSwib2NpcmN1bWZsZXhob29rYWJvdmUiLDc4OTMsIm9jaXJjdW1mbGV4dGlsZGUiLDc4OTUsIm9jeXJpbGxpYyIsMTA4Niwib2RibGFjdXRlIiwzMzcsIm9kYmxncmF2ZSIsNTI1LCJvZGV2YSIsMjMyMywib2RpZXJlc2lzIiwyNDYsIm9kaWVyZXNpc2N5cmlsbGljIiwxMjU1LCJvZG90YmVsb3ciLDc4ODUsIm9lIiwzMzksIm9la29yZWFuIiwxMjYzNCwib2dvbmVrIiw3MzEsIm9nb25la2NtYiIsODA4LCJvZ3JhdmUiLDI0Miwib2d1amFyYXRpIiwyNzA3LCJvaGFybWVuaWFuIiwxNDEzLCJvaGlyYWdhbmEiLDEyMzYyLCJvaG9va2Fib3ZlIiw3ODg3LCJvaG9ybiIsNDE3LCJvaG9ybmFjdXRlIiw3ODk5LCJvaG9ybmRvdGJlbG93Iiw3OTA3LCJvaG9ybmdyYXZlIiw3OTAxLCJvaG9ybmhvb2thYm92ZSIsNzkwMywib2hvcm50aWxkZSIsNzkwNSwib2h1bmdhcnVtbGF1dCIsMzM3LCJvaSIsNDE5LCJvaW52ZXJ0ZWRicmV2ZSIsNTI3LCJva2F0YWthbmEiLDEyNDU4LCJva2F0YWthbmFoYWxmd2lkdGgiLDY1Mzk3LCJva29yZWFuIiwxMjYzMSwib2xlaGVicmV3IiwxNDUxLCJvbWFjcm9uIiwzMzMsIm9tYWNyb25hY3V0ZSIsNzc2Mywib21hY3JvbmdyYXZlIiw3NzYxLCJvbWRldmEiLDIzODQsIm9tZWdhIiw5NjksIm9tZWdhMSIsOTgyLCJvbWVnYWN5cmlsbGljIiwxMTIxLCJvbWVnYWxhdGluY2xvc2VkIiw2MzEsIm9tZWdhcm91bmRjeXJpbGxpYyIsMTE0Nywib21lZ2F0aXRsb2N5cmlsbGljIiwxMTQ5LCJvbWVnYXRvbm9zIiw5NzQsIm9tZ3VqYXJhdGkiLDI3NjgsIm9taWNyb24iLDk1OSwib21pY3JvbnRvbm9zIiw5NzIsIm9tb25vc3BhY2UiLDY1MzU5LCJvbmUiLDQ5LCJvbmVhcmFiaWMiLDE2MzMsIm9uZWJlbmdhbGkiLDI1MzUsIm9uZWNpcmNsZSIsOTMxMiwib25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZiIsMTAxMjIsIm9uZWRldmEiLDI0MDcsIm9uZWRvdGVubGVhZGVyIiw4MjI4LCJvbmVlaWdodGgiLDg1MzksIm9uZWZpdHRlZCIsNjMxOTYsIm9uZWd1amFyYXRpIiwyNzkxLCJvbmVndXJtdWtoaSIsMjY2Mywib25laGFja2FyYWJpYyIsMTYzMywib25laGFsZiIsMTg5LCJvbmVoYW5nemhvdSIsMTIzMjEsIm9uZWlkZW9ncmFwaGljcGFyZW4iLDEyODMyLCJvbmVpbmZlcmlvciIsODMyMSwib25lbW9ub3NwYWNlIiw2NTI5Nywib25lbnVtZXJhdG9yYmVuZ2FsaSIsMjU0OCwib25lb2xkc3R5bGUiLDYzMjgxLCJvbmVwYXJlbiIsOTMzMiwib25lcGVyaW9kIiw5MzUyLCJvbmVwZXJzaWFuIiwxNzc3LCJvbmVxdWFydGVyIiwxODgsIm9uZXJvbWFuIiw4NTYwLCJvbmVzdXBlcmlvciIsMTg1LCJvbmV0aGFpIiwzNjY1LCJvbmV0aGlyZCIsODUzMSwib29nb25layIsNDkxLCJvb2dvbmVrbWFjcm9uIiw0OTMsIm9vZ3VybXVraGkiLDI1NzksIm9vbWF0cmFndXJtdWtoaSIsMjYzNSwib29wZW4iLDU5Niwib3BhcmVuIiw5Mzg2LCJvcGVuYnVsbGV0Iiw5NzAyLCJvcHRpb24iLDg5OTcsIm9yZGZlbWluaW5lIiwxNzAsIm9yZG1hc2N1bGluZSIsMTg2LCJvcnRob2dvbmFsIiw4NzM1LCJvc2hvcnRkZXZhIiwyMzIyLCJvc2hvcnR2b3dlbHNpZ25kZXZhIiwyMzc4LCJvc2xhc2giLDI0OCwib3NsYXNoYWN1dGUiLDUxMSwib3NtYWxsaGlyYWdhbmEiLDEyMzYxLCJvc21hbGxrYXRha2FuYSIsMTI0NTcsIm9zbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4Nywib3N0cm9rZWFjdXRlIiw1MTEsIm9zdXBlcmlvciIsNjMyMTYsIm90Y3lyaWxsaWMiLDExNTEsIm90aWxkZSIsMjQ1LCJvdGlsZGVhY3V0ZSIsNzc1Nywib3RpbGRlZGllcmVzaXMiLDc3NTksIm91Ym9wb21vZm8iLDEyNTc3LCJvdmVybGluZSIsODI1NCwib3ZlcmxpbmVjZW50ZXJsaW5lIiw2NTA5OCwib3ZlcmxpbmVjbWIiLDc3Mywib3ZlcmxpbmVkYXNoZWQiLDY1MDk3LCJvdmVybGluZWRibHdhdnkiLDY1MTAwLCJvdmVybGluZXdhdnkiLDY1MDk5LCJvdmVyc2NvcmUiLDE3NSwib3Zvd2Vsc2lnbmJlbmdhbGkiLDI1MDcsIm92b3dlbHNpZ25kZXZhIiwyMzc5LCJvdm93ZWxzaWduZ3VqYXJhdGkiLDI3NjMsInAiLDExMiwicGFhbXBzc3F1YXJlIiwxMzE4NCwicGFhc2VudG9zcXVhcmUiLDEzMDk5LCJwYWJlbmdhbGkiLDI0NzQsInBhY3V0ZSIsNzc2NSwicGFkZXZhIiwyMzQ2LCJwYWdlZG93biIsODY3MSwicGFnZXVwIiw4NjcwLCJwYWd1amFyYXRpIiwyNzMwLCJwYWd1cm11a2hpIiwyNjAyLCJwYWhpcmFnYW5hIiwxMjQwMSwicGFpeWFubm9pdGhhaSIsMzYzMSwicGFrYXRha2FuYSIsMTI0OTcsInBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWIiLDExNTYsInBhbG9jaGthY3lyaWxsaWMiLDEyMTYsInBhbnNpb3Nrb3JlYW4iLDEyNjcxLCJwYXJhZ3JhcGgiLDE4MiwicGFyYWxsZWwiLDg3NDEsInBhcmVubGVmdCIsNDAsInBhcmVubGVmdGFsdG9uZWFyYWJpYyIsNjQ4MzAsInBhcmVubGVmdGJ0Iiw2MzcyNSwicGFyZW5sZWZ0ZXgiLDYzNzI0LCJwYXJlbmxlZnRpbmZlcmlvciIsODMzMywicGFyZW5sZWZ0bW9ub3NwYWNlIiw2NTI4OCwicGFyZW5sZWZ0c21hbGwiLDY1MTEzLCJwYXJlbmxlZnRzdXBlcmlvciIsODMxNywicGFyZW5sZWZ0dHAiLDYzNzIzLCJwYXJlbmxlZnR2ZXJ0aWNhbCIsNjUwNzcsInBhcmVucmlnaHQiLDQxLCJwYXJlbnJpZ2h0YWx0b25lYXJhYmljIiw2NDgzMSwicGFyZW5yaWdodGJ0Iiw2MzczNiwicGFyZW5yaWdodGV4Iiw2MzczNSwicGFyZW5yaWdodGluZmVyaW9yIiw4MzM0LCJwYXJlbnJpZ2h0bW9ub3NwYWNlIiw2NTI4OSwicGFyZW5yaWdodHNtYWxsIiw2NTExNCwicGFyZW5yaWdodHN1cGVyaW9yIiw4MzE4LCJwYXJlbnJpZ2h0dHAiLDYzNzM0LCJwYXJlbnJpZ2h0dmVydGljYWwiLDY1MDc4LCJwYXJ0aWFsZGlmZiIsODcwNiwicGFzZXFoZWJyZXciLDE0NzIsInBhc2h0YWhlYnJldyIsMTQzMywicGFzcXVhcmUiLDEzMjI1LCJwYXRhaCIsMTQ2MywicGF0YWgxMSIsMTQ2MywicGF0YWgxZCIsMTQ2MywicGF0YWgyYSIsMTQ2MywicGF0YWhoZWJyZXciLDE0NjMsInBhdGFobmFycm93aGVicmV3IiwxNDYzLCJwYXRhaHF1YXJ0ZXJoZWJyZXciLDE0NjMsInBhdGFod2lkZWhlYnJldyIsMTQ2MywicGF6ZXJoZWJyZXciLDE0NDEsInBib3BvbW9mbyIsMTI1NTAsInBjaXJjbGUiLDk0MzksInBkb3RhY2NlbnQiLDc3NjcsInBlIiwxNTA4LCJwZWN5cmlsbGljIiwxMDg3LCJwZWRhZ2VzaCIsNjQzMjQsInBlZGFnZXNoaGVicmV3Iiw2NDMyNCwicGVlemlzcXVhcmUiLDEzMTE1LCJwZWZpbmFsZGFnZXNoaGVicmV3Iiw2NDMyMywicGVoYXJhYmljIiwxNjYyLCJwZWhhcm1lbmlhbiIsMTQwMiwicGVoZWJyZXciLDE1MDgsInBlaGZpbmFsYXJhYmljIiw2NDM0MywicGVoaW5pdGlhbGFyYWJpYyIsNjQzNDQsInBlaGlyYWdhbmEiLDEyNDEwLCJwZWhtZWRpYWxhcmFiaWMiLDY0MzQ1LCJwZWthdGFrYW5hIiwxMjUwNiwicGVtaWRkbGVob29rY3lyaWxsaWMiLDExOTEsInBlcmFmZWhlYnJldyIsNjQzMzQsInBlcmNlbnQiLDM3LCJwZXJjZW50YXJhYmljIiwxNjQyLCJwZXJjZW50bW9ub3NwYWNlIiw2NTI4NSwicGVyY2VudHNtYWxsIiw2NTEzMCwicGVyaW9kIiw0NiwicGVyaW9kYXJtZW5pYW4iLDE0MTcsInBlcmlvZGNlbnRlcmVkIiwxODMsInBlcmlvZGhhbGZ3aWR0aCIsNjUzNzcsInBlcmlvZGluZmVyaW9yIiw2MzIwNywicGVyaW9kbW9ub3NwYWNlIiw2NTI5NCwicGVyaW9kc21hbGwiLDY1MTA2LCJwZXJpb2RzdXBlcmlvciIsNjMyMDgsInBlcmlzcG9tZW5pZ3JlZWtjbWIiLDgzNCwicGVycGVuZGljdWxhciIsODg2OSwicGVydGhvdXNhbmQiLDgyNDAsInBlc2V0YSIsODM1OSwicGZzcXVhcmUiLDEzMTk0LCJwaGFiZW5nYWxpIiwyNDc1LCJwaGFkZXZhIiwyMzQ3LCJwaGFndWphcmF0aSIsMjczMSwicGhhZ3VybXVraGkiLDI2MDMsInBoaSIsOTY2LCJwaGkxIiw5ODEsInBoaWV1cGhhY2lyY2xla29yZWFuIiwxMjkyMiwicGhpZXVwaGFwYXJlbmtvcmVhbiIsMTI4MjYsInBoaWV1cGhjaXJjbGVrb3JlYW4iLDEyOTA4LCJwaGlldXBoa29yZWFuIiwxMjYyMSwicGhpZXVwaHBhcmVua29yZWFuIiwxMjgxMiwicGhpbGF0aW4iLDYzMiwicGhpbnRodXRoYWkiLDM2NDIsInBoaXN5bWJvbGdyZWVrIiw5ODEsInBob29rIiw0MjEsInBob3BoYW50aGFpIiwzNjE0LCJwaG9waHVuZ3RoYWkiLDM2MTIsInBob3NhbXBoYW90aGFpIiwzNjE2LCJwaSIsOTYwLCJwaWV1cGFjaXJjbGVrb3JlYW4iLDEyOTE1LCJwaWV1cGFwYXJlbmtvcmVhbiIsMTI4MTksInBpZXVwY2lldWNrb3JlYW4iLDEyNjYyLCJwaWV1cGNpcmNsZWtvcmVhbiIsMTI5MDEsInBpZXVwa2l5ZW9ra29yZWFuIiwxMjY1OCwicGlldXBrb3JlYW4iLDEyNjEwLCJwaWV1cHBhcmVua29yZWFuIiwxMjgwNSwicGlldXBzaW9za2l5ZW9ra29yZWFuIiwxMjY2MCwicGlldXBzaW9za29yZWFuIiwxMjYxMiwicGlldXBzaW9zdGlrZXV0a29yZWFuIiwxMjY2MSwicGlldXB0aGlldXRoa29yZWFuIiwxMjY2MywicGlldXB0aWtldXRrb3JlYW4iLDEyNjU5LCJwaWhpcmFnYW5hIiwxMjQwNCwicGlrYXRha2FuYSIsMTI1MDAsInBpc3ltYm9sZ3JlZWsiLDk4MiwicGl3cmFybWVuaWFuIiwxNDExLCJwbHVzIiw0MywicGx1c2JlbG93Y21iIiw3OTksInBsdXNjaXJjbGUiLDg4NTMsInBsdXNtaW51cyIsMTc3LCJwbHVzbW9kIiw3MjYsInBsdXNtb25vc3BhY2UiLDY1MjkxLCJwbHVzc21hbGwiLDY1MTIyLCJwbHVzc3VwZXJpb3IiLDgzMTQsInBtb25vc3BhY2UiLDY1MzYwLCJwbXNxdWFyZSIsMTMyNzIsInBvaGlyYWdhbmEiLDEyNDEzLCJwb2ludGluZ2luZGV4ZG93bndoaXRlIiw5NzU5LCJwb2ludGluZ2luZGV4bGVmdHdoaXRlIiw5NzU2LCJwb2ludGluZ2luZGV4cmlnaHR3aGl0ZSIsOTc1OCwicG9pbnRpbmdpbmRleHVwd2hpdGUiLDk3NTcsInBva2F0YWthbmEiLDEyNTA5LCJwb3BsYXRoYWkiLDM2MTEsInBvc3RhbG1hcmsiLDEyMzA2LCJwb3N0YWxtYXJrZmFjZSIsMTIzMjAsInBwYXJlbiIsOTM4NywicHJlY2VkZXMiLDg4MjYsInByZXNjcmlwdGlvbiIsODQ3OCwicHJpbWVtb2QiLDY5NywicHJpbWVyZXZlcnNlZCIsODI0NSwicHJvZHVjdCIsODcxOSwicHJvamVjdGl2ZSIsODk2NSwicHJvbG9uZ2Vka2FuYSIsMTI1NDAsInByb3BlbGxvciIsODk4NCwicHJvcGVyc3Vic2V0Iiw4ODM0LCJwcm9wZXJzdXBlcnNldCIsODgzNSwicHJvcG9ydGlvbiIsODc1OSwicHJvcG9ydGlvbmFsIiw4NzMzLCJwc2kiLDk2OCwicHNpY3lyaWxsaWMiLDExMzcsInBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYiIsMTE1OCwicHNzcXVhcmUiLDEzMjMyLCJwdWhpcmFnYW5hIiwxMjQwNywicHVrYXRha2FuYSIsMTI1MDMsInB2c3F1YXJlIiwxMzIzNiwicHdzcXVhcmUiLDEzMjQyLCJxIiwxMTMsInFhZGV2YSIsMjM5MiwicWFkbWFoZWJyZXciLDE0NDgsInFhZmFyYWJpYyIsMTYwMiwicWFmZmluYWxhcmFiaWMiLDY1MjM4LCJxYWZpbml0aWFsYXJhYmljIiw2NTIzOSwicWFmbWVkaWFsYXJhYmljIiw2NTI0MCwicWFtYXRzIiwxNDY0LCJxYW1hdHMxMCIsMTQ2NCwicWFtYXRzMWEiLDE0NjQsInFhbWF0czFjIiwxNDY0LCJxYW1hdHMyNyIsMTQ2NCwicWFtYXRzMjkiLDE0NjQsInFhbWF0czMzIiwxNDY0LCJxYW1hdHNkZSIsMTQ2NCwicWFtYXRzaGVicmV3IiwxNDY0LCJxYW1hdHNuYXJyb3doZWJyZXciLDE0NjQsInFhbWF0c3FhdGFuaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbm5hcnJvd2hlYnJldyIsMTQ2NCwicWFtYXRzcWF0YW5xdWFydGVyaGVicmV3IiwxNDY0LCJxYW1hdHNxYXRhbndpZGVoZWJyZXciLDE0NjQsInFhbWF0c3F1YXJ0ZXJoZWJyZXciLDE0NjQsInFhbWF0c3dpZGVoZWJyZXciLDE0NjQsInFhcm5leXBhcmFoZWJyZXciLDE0MzksInFib3BvbW9mbyIsMTI1NjEsInFjaXJjbGUiLDk0NDAsInFob29rIiw2NzIsInFtb25vc3BhY2UiLDY1MzYxLCJxb2YiLDE1MTEsInFvZmRhZ2VzaCIsNjQzMjcsInFvZmRhZ2VzaGhlYnJldyIsNjQzMjcsInFvZmhlYnJldyIsMTUxMSwicXBhcmVuIiw5Mzg4LCJxdWFydGVybm90ZSIsOTgzMywicXVidXRzIiwxNDY3LCJxdWJ1dHMxOCIsMTQ2NywicXVidXRzMjUiLDE0NjcsInF1YnV0czMxIiwxNDY3LCJxdWJ1dHNoZWJyZXciLDE0NjcsInF1YnV0c25hcnJvd2hlYnJldyIsMTQ2NywicXVidXRzcXVhcnRlcmhlYnJldyIsMTQ2NywicXVidXRzd2lkZWhlYnJldyIsMTQ2NywicXVlc3Rpb24iLDYzLCJxdWVzdGlvbmFyYWJpYyIsMTU2NywicXVlc3Rpb25hcm1lbmlhbiIsMTM3NCwicXVlc3Rpb25kb3duIiwxOTEsInF1ZXN0aW9uZG93bnNtYWxsIiw2MzQyMywicXVlc3Rpb25ncmVlayIsODk0LCJxdWVzdGlvbm1vbm9zcGFjZSIsNjUzMTEsInF1ZXN0aW9uc21hbGwiLDYzMjk1LCJxdW90ZWRibCIsMzQsInF1b3RlZGJsYmFzZSIsODIyMiwicXVvdGVkYmxsZWZ0Iiw4MjIwLCJxdW90ZWRibG1vbm9zcGFjZSIsNjUyODIsInF1b3RlZGJscHJpbWUiLDEyMzE4LCJxdW90ZWRibHByaW1lcmV2ZXJzZWQiLDEyMzE3LCJxdW90ZWRibHJpZ2h0Iiw4MjIxLCJxdW90ZWxlZnQiLDgyMTYsInF1b3RlbGVmdHJldmVyc2VkIiw4MjE5LCJxdW90ZXJldmVyc2VkIiw4MjE5LCJxdW90ZXJpZ2h0Iiw4MjE3LCJxdW90ZXJpZ2h0biIsMzI5LCJxdW90ZXNpbmdsYmFzZSIsODIxOCwicXVvdGVzaW5nbGUiLDM5LCJxdW90ZXNpbmdsZW1vbm9zcGFjZSIsNjUyODcsInIiLDExNCwicmFhcm1lbmlhbiIsMTQwNCwicmFiZW5nYWxpIiwyNDgwLCJyYWN1dGUiLDM0MSwicmFkZXZhIiwyMzUyLCJyYWRpY2FsIiw4NzMwLCJyYWRpY2FsZXgiLDYzNzE3LCJyYWRvdmVyc3NxdWFyZSIsMTMyMzAsInJhZG92ZXJzc3F1YXJlZHNxdWFyZSIsMTMyMzEsInJhZHNxdWFyZSIsMTMyMjksInJhZmUiLDE0NzEsInJhZmVoZWJyZXciLDE0NzEsInJhZ3VqYXJhdGkiLDI3MzYsInJhZ3VybXVraGkiLDI2MDgsInJhaGlyYWdhbmEiLDEyNDI1LCJyYWthdGFrYW5hIiwxMjUyMSwicmFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzEsInJhbG93ZXJkaWFnb25hbGJlbmdhbGkiLDI1NDUsInJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpIiwyNTQ0LCJyYW1zaG9ybiIsNjEyLCJyYXRpbyIsODc1OCwicmJvcG9tb2ZvIiwxMjU2NiwicmNhcm9uIiwzNDUsInJjZWRpbGxhIiwzNDMsInJjaXJjbGUiLDk0NDEsInJjb21tYWFjY2VudCIsMzQzLCJyZGJsZ3JhdmUiLDUyOSwicmRvdGFjY2VudCIsNzc2OSwicmRvdGJlbG93Iiw3NzcxLCJyZG90YmVsb3dtYWNyb24iLDc3NzMsInJlZmVyZW5jZW1hcmsiLDgyNTEsInJlZmxleHN1YnNldCIsODgzOCwicmVmbGV4c3VwZXJzZXQiLDg4MzksInJlZ2lzdGVyZWQiLDE3NCwicmVnaXN0ZXJzYW5zIiw2MzcyMCwicmVnaXN0ZXJzZXJpZiIsNjMxOTQsInJlaGFyYWJpYyIsMTU4NSwicmVoYXJtZW5pYW4iLDE0MDgsInJlaGZpbmFsYXJhYmljIiw2NTE5OCwicmVoaXJhZ2FuYSIsMTI0MjgsInJla2F0YWthbmEiLDEyNTI0LCJyZWthdGFrYW5haGFsZndpZHRoIiw2NTQzNCwicmVzaCIsMTUxMiwicmVzaGRhZ2VzaGhlYnJldyIsNjQzMjgsInJlc2hoZWJyZXciLDE1MTIsInJldmVyc2VkdGlsZGUiLDg3NjUsInJldmlhaGVicmV3IiwxNDMxLCJyZXZpYW11Z3Jhc2hoZWJyZXciLDE0MzEsInJldmxvZ2ljYWxub3QiLDg5NzYsInJmaXNoaG9vayIsNjM4LCJyZmlzaGhvb2tyZXZlcnNlZCIsNjM5LCJyaGFiZW5nYWxpIiwyNTI1LCJyaGFkZXZhIiwyMzk3LCJyaG8iLDk2MSwicmhvb2siLDYzNywicmhvb2t0dXJuZWQiLDYzNSwicmhvb2t0dXJuZWRzdXBlcmlvciIsNjkzLCJyaG9zeW1ib2xncmVlayIsMTAwOSwicmhvdGljaG9va21vZCIsNzM0LCJyaWV1bGFjaXJjbGVrb3JlYW4iLDEyOTEzLCJyaWV1bGFwYXJlbmtvcmVhbiIsMTI4MTcsInJpZXVsY2lyY2xla29yZWFuIiwxMjg5OSwicmlldWxoaWV1aGtvcmVhbiIsMTI2MDgsInJpZXVsa2l5ZW9ra29yZWFuIiwxMjYwMiwicmlldWxraXllb2tzaW9za29yZWFuIiwxMjY0OSwicmlldWxrb3JlYW4iLDEyNjAxLCJyaWV1bG1pZXVta29yZWFuIiwxMjYwMywicmlldWxwYW5zaW9za29yZWFuIiwxMjY1MiwicmlldWxwYXJlbmtvcmVhbiIsMTI4MDMsInJpZXVscGhpZXVwaGtvcmVhbiIsMTI2MDcsInJpZXVscGlldXBrb3JlYW4iLDEyNjA0LCJyaWV1bHBpZXVwc2lvc2tvcmVhbiIsMTI2NTEsInJpZXVsc2lvc2tvcmVhbiIsMTI2MDUsInJpZXVsdGhpZXV0aGtvcmVhbiIsMTI2MDYsInJpZXVsdGlrZXV0a29yZWFuIiwxMjY1MCwicmlldWx5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NTMsInJpZ2h0YW5nbGUiLDg3MzUsInJpZ2h0dGFja2JlbG93Y21iIiw3OTMsInJpZ2h0dHJpYW5nbGUiLDg4OTUsInJpaGlyYWdhbmEiLDEyNDI2LCJyaWthdGFrYW5hIiwxMjUyMiwicmlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MzIsInJpbmciLDczMCwicmluZ2JlbG93Y21iIiw4MDUsInJpbmdjbWIiLDc3OCwicmluZ2hhbGZsZWZ0Iiw3MDMsInJpbmdoYWxmbGVmdGFybWVuaWFuIiwxMzY5LCJyaW5naGFsZmxlZnRiZWxvd2NtYiIsNzk2LCJyaW5naGFsZmxlZnRjZW50ZXJlZCIsNzIzLCJyaW5naGFsZnJpZ2h0Iiw3MDIsInJpbmdoYWxmcmlnaHRiZWxvd2NtYiIsODI1LCJyaW5naGFsZnJpZ2h0Y2VudGVyZWQiLDcyMiwicmludmVydGVkYnJldmUiLDUzMSwicml0dG9ydXNxdWFyZSIsMTMxMzcsInJsaW5lYmVsb3ciLDc3NzUsInJsb25nbGVnIiw2MzYsInJsb25nbGVndHVybmVkIiw2MzQsInJtb25vc3BhY2UiLDY1MzYyLCJyb2hpcmFnYW5hIiwxMjQyOSwicm9rYXRha2FuYSIsMTI1MjUsInJva2F0YWthbmFoYWxmd2lkdGgiLDY1NDM1LCJyb3J1YXRoYWkiLDM2MTksInJwYXJlbiIsOTM4OSwicnJhYmVuZ2FsaSIsMjUyNCwicnJhZGV2YSIsMjM1MywicnJhZ3VybXVraGkiLDI2NTIsInJyZWhhcmFiaWMiLDE2ODEsInJyZWhmaW5hbGFyYWJpYyIsNjQzOTcsInJydm9jYWxpY2JlbmdhbGkiLDI1MjgsInJydm9jYWxpY2RldmEiLDI0MDAsInJydm9jYWxpY2d1amFyYXRpIiwyNzg0LCJycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNTAwLCJycnZvY2FsaWN2b3dlbHNpZ25kZXZhIiwyMzcyLCJycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aSIsMjc1NiwicnN1cGVyaW9yIiw2MzIxNywicnRibG9jayIsOTYxNiwicnR1cm5lZCIsNjMzLCJydHVybmVkc3VwZXJpb3IiLDY5MiwicnVoaXJhZ2FuYSIsMTI0MjcsInJ1a2F0YWthbmEiLDEyNTIzLCJydWthdGFrYW5haGFsZndpZHRoIiw2NTQzMywicnVwZWVtYXJrYmVuZ2FsaSIsMjU0NiwicnVwZWVzaWduYmVuZ2FsaSIsMjU0NywicnVwaWFoIiw2MzE5NywicnV0aGFpIiwzNjIwLCJydm9jYWxpY2JlbmdhbGkiLDI0NDMsInJ2b2NhbGljZGV2YSIsMjMxNSwicnZvY2FsaWNndWphcmF0aSIsMjY5OSwicnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpIiwyNDk5LCJydm9jYWxpY3Zvd2Vsc2lnbmRldmEiLDIzNzEsInJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGkiLDI3NTUsInMiLDExNSwic2FiZW5nYWxpIiwyNDg4LCJzYWN1dGUiLDM0Nywic2FjdXRlZG90YWNjZW50Iiw3NzgxLCJzYWRhcmFiaWMiLDE1ODksInNhZGV2YSIsMjM2MCwic2FkZmluYWxhcmFiaWMiLDY1MjEwLCJzYWRpbml0aWFsYXJhYmljIiw2NTIxMSwic2FkbWVkaWFsYXJhYmljIiw2NTIxMiwic2FndWphcmF0aSIsMjc0NCwic2FndXJtdWtoaSIsMjYxNiwic2FoaXJhZ2FuYSIsMTIzNzMsInNha2F0YWthbmEiLDEyNDY5LCJzYWthdGFrYW5haGFsZndpZHRoIiw2NTQwMywic2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYyIsNjUwMTgsInNhbWVraCIsMTUwNSwic2FtZWtoZGFnZXNoIiw2NDMyMSwic2FtZWtoZGFnZXNoaGVicmV3Iiw2NDMyMSwic2FtZWtoaGVicmV3IiwxNTA1LCJzYXJhYWF0aGFpIiwzNjM0LCJzYXJhYWV0aGFpIiwzNjQ5LCJzYXJhYWltYWltYWxhaXRoYWkiLDM2NTIsInNhcmFhaW1haW11YW50aGFpIiwzNjUxLCJzYXJhYW10aGFpIiwzNjM1LCJzYXJhYXRoYWkiLDM2MzIsInNhcmFldGhhaSIsMzY0OCwic2FyYWlpbGVmdHRoYWkiLDYzNjIyLCJzYXJhaWl0aGFpIiwzNjM3LCJzYXJhaWxlZnR0aGFpIiw2MzYyMSwic2FyYWl0aGFpIiwzNjM2LCJzYXJhb3RoYWkiLDM2NTAsInNhcmF1ZWVsZWZ0dGhhaSIsNjM2MjQsInNhcmF1ZWV0aGFpIiwzNjM5LCJzYXJhdWVsZWZ0dGhhaSIsNjM2MjMsInNhcmF1ZXRoYWkiLDM2MzgsInNhcmF1dGhhaSIsMzY0MCwic2FyYXV1dGhhaSIsMzY0MSwic2JvcG9tb2ZvIiwxMjU2OSwic2Nhcm9uIiwzNTMsInNjYXJvbmRvdGFjY2VudCIsNzc4Mywic2NlZGlsbGEiLDM1MSwic2Nod2EiLDYwMSwic2Nod2FjeXJpbGxpYyIsMTI0MSwic2Nod2FkaWVyZXNpc2N5cmlsbGljIiwxMjQzLCJzY2h3YWhvb2siLDYwMiwic2NpcmNsZSIsOTQ0Miwic2NpcmN1bWZsZXgiLDM0OSwic2NvbW1hYWNjZW50Iiw1MzcsInNkb3RhY2NlbnQiLDc3NzcsInNkb3RiZWxvdyIsNzc3OSwic2RvdGJlbG93ZG90YWNjZW50Iiw3Nzg1LCJzZWFndWxsYmVsb3djbWIiLDgyOCwic2Vjb25kIiw4MjQzLCJzZWNvbmR0b25lY2hpbmVzZSIsNzE0LCJzZWN0aW9uIiwxNjcsInNlZW5hcmFiaWMiLDE1ODcsInNlZW5maW5hbGFyYWJpYyIsNjUyMDIsInNlZW5pbml0aWFsYXJhYmljIiw2NTIwMywic2Vlbm1lZGlhbGFyYWJpYyIsNjUyMDQsInNlZ29sIiwxNDYyLCJzZWdvbDEzIiwxNDYyLCJzZWdvbDFmIiwxNDYyLCJzZWdvbDJjIiwxNDYyLCJzZWdvbGhlYnJldyIsMTQ2Miwic2Vnb2xuYXJyb3doZWJyZXciLDE0NjIsInNlZ29scXVhcnRlcmhlYnJldyIsMTQ2Miwic2Vnb2x0YWhlYnJldyIsMTQyNiwic2Vnb2x3aWRlaGVicmV3IiwxNDYyLCJzZWhhcm1lbmlhbiIsMTQwNSwic2VoaXJhZ2FuYSIsMTIzNzksInNla2F0YWthbmEiLDEyNDc1LCJzZWthdGFrYW5haGFsZndpZHRoIiw2NTQwNiwic2VtaWNvbG9uIiw1OSwic2VtaWNvbG9uYXJhYmljIiwxNTYzLCJzZW1pY29sb25tb25vc3BhY2UiLDY1MzA3LCJzZW1pY29sb25zbWFsbCIsNjUxMDgsInNlbWl2b2ljZWRtYXJra2FuYSIsMTI0NDQsInNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aCIsNjU0MzksInNlbnRpc3F1YXJlIiwxMzA5MCwic2VudG9zcXVhcmUiLDEzMDkxLCJzZXZlbiIsNTUsInNldmVuYXJhYmljIiwxNjM5LCJzZXZlbmJlbmdhbGkiLDI1NDEsInNldmVuY2lyY2xlIiw5MzE4LCJzZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWYiLDEwMTI4LCJzZXZlbmRldmEiLDI0MTMsInNldmVuZWlnaHRocyIsODU0Miwic2V2ZW5ndWphcmF0aSIsMjc5Nywic2V2ZW5ndXJtdWtoaSIsMjY2OSwic2V2ZW5oYWNrYXJhYmljIiwxNjM5LCJzZXZlbmhhbmd6aG91IiwxMjMyNywic2V2ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjgzOCwic2V2ZW5pbmZlcmlvciIsODMyNywic2V2ZW5tb25vc3BhY2UiLDY1MzAzLCJzZXZlbm9sZHN0eWxlIiw2MzI4Nywic2V2ZW5wYXJlbiIsOTMzOCwic2V2ZW5wZXJpb2QiLDkzNTgsInNldmVucGVyc2lhbiIsMTc4Mywic2V2ZW5yb21hbiIsODU2Niwic2V2ZW5zdXBlcmlvciIsODMxMSwic2V2ZW50ZWVuY2lyY2xlIiw5MzI4LCJzZXZlbnRlZW5wYXJlbiIsOTM0OCwic2V2ZW50ZWVucGVyaW9kIiw5MzY4LCJzZXZlbnRoYWkiLDM2NzEsInNmdGh5cGhlbiIsMTczLCJzaGFhcm1lbmlhbiIsMTM5OSwic2hhYmVuZ2FsaSIsMjQ4Niwic2hhY3lyaWxsaWMiLDEwOTYsInNoYWRkYWFyYWJpYyIsMTYxNywic2hhZGRhZGFtbWFhcmFiaWMiLDY0NjA5LCJzaGFkZGFkYW1tYXRhbmFyYWJpYyIsNjQ2MDYsInNoYWRkYWZhdGhhYXJhYmljIiw2NDYwOCwic2hhZGRha2FzcmFhcmFiaWMiLDY0NjEwLCJzaGFkZGFrYXNyYXRhbmFyYWJpYyIsNjQ2MDcsInNoYWRlIiw5NjE4LCJzaGFkZWRhcmsiLDk2MTksInNoYWRlbGlnaHQiLDk2MTcsInNoYWRlbWVkaXVtIiw5NjE4LCJzaGFkZXZhIiwyMzU4LCJzaGFndWphcmF0aSIsMjc0Miwic2hhZ3VybXVraGkiLDI2MTQsInNoYWxzaGVsZXRoZWJyZXciLDE0MjcsInNoYm9wb21vZm8iLDEyNTY1LCJzaGNoYWN5cmlsbGljIiwxMDk3LCJzaGVlbmFyYWJpYyIsMTU4OCwic2hlZW5maW5hbGFyYWJpYyIsNjUyMDYsInNoZWVuaW5pdGlhbGFyYWJpYyIsNjUyMDcsInNoZWVubWVkaWFsYXJhYmljIiw2NTIwOCwic2hlaWNvcHRpYyIsOTk1LCJzaGVxZWwiLDgzNjIsInNoZXFlbGhlYnJldyIsODM2Miwic2hldmEiLDE0NTYsInNoZXZhMTE1IiwxNDU2LCJzaGV2YTE1IiwxNDU2LCJzaGV2YTIyIiwxNDU2LCJzaGV2YTJlIiwxNDU2LCJzaGV2YWhlYnJldyIsMTQ1Niwic2hldmFuYXJyb3doZWJyZXciLDE0NTYsInNoZXZhcXVhcnRlcmhlYnJldyIsMTQ1Niwic2hldmF3aWRlaGVicmV3IiwxNDU2LCJzaGhhY3lyaWxsaWMiLDEyMTEsInNoaW1hY29wdGljIiwxMDA1LCJzaGluIiwxNTEzLCJzaGluZGFnZXNoIiw2NDMyOSwic2hpbmRhZ2VzaGhlYnJldyIsNjQzMjksInNoaW5kYWdlc2hzaGluZG90Iiw2NDMwMCwic2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXciLDY0MzAwLCJzaGluZGFnZXNoc2luZG90Iiw2NDMwMSwic2hpbmRhZ2VzaHNpbmRvdGhlYnJldyIsNjQzMDEsInNoaW5kb3RoZWJyZXciLDE0NzMsInNoaW5oZWJyZXciLDE1MTMsInNoaW5zaGluZG90Iiw2NDI5OCwic2hpbnNoaW5kb3RoZWJyZXciLDY0Mjk4LCJzaGluc2luZG90Iiw2NDI5OSwic2hpbnNpbmRvdGhlYnJldyIsNjQyOTksInNob29rIiw2NDIsInNpZ21hIiw5NjMsInNpZ21hMSIsOTYyLCJzaWdtYWZpbmFsIiw5NjIsInNpZ21hbHVuYXRlc3ltYm9sZ3JlZWsiLDEwMTAsInNpaGlyYWdhbmEiLDEyMzc1LCJzaWthdGFrYW5hIiwxMjQ3MSwic2lrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDQsInNpbHVxaGVicmV3IiwxNDY5LCJzaWx1cWxlZnRoZWJyZXciLDE0NjksInNpbWlsYXIiLDg3NjQsInNpbmRvdGhlYnJldyIsMTQ3NCwic2lvc2FjaXJjbGVrb3JlYW4iLDEyOTE2LCJzaW9zYXBhcmVua29yZWFuIiwxMjgyMCwic2lvc2NpZXVja29yZWFuIiwxMjY3MCwic2lvc2NpcmNsZWtvcmVhbiIsMTI5MDIsInNpb3NraXllb2trb3JlYW4iLDEyNjY2LCJzaW9za29yZWFuIiwxMjYxMywic2lvc25pZXVua29yZWFuIiwxMjY2Nywic2lvc3BhcmVua29yZWFuIiwxMjgwNiwic2lvc3BpZXVwa29yZWFuIiwxMjY2OSwic2lvc3Rpa2V1dGtvcmVhbiIsMTI2NjgsInNpeCIsNTQsInNpeGFyYWJpYyIsMTYzOCwic2l4YmVuZ2FsaSIsMjU0MCwic2l4Y2lyY2xlIiw5MzE3LCJzaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNywic2l4ZGV2YSIsMjQxMiwic2l4Z3VqYXJhdGkiLDI3OTYsInNpeGd1cm11a2hpIiwyNjY4LCJzaXhoYWNrYXJhYmljIiwxNjM4LCJzaXhoYW5nemhvdSIsMTIzMjYsInNpeGlkZW9ncmFwaGljcGFyZW4iLDEyODM3LCJzaXhpbmZlcmlvciIsODMyNiwic2l4bW9ub3NwYWNlIiw2NTMwMiwic2l4b2xkc3R5bGUiLDYzMjg2LCJzaXhwYXJlbiIsOTMzNywic2l4cGVyaW9kIiw5MzU3LCJzaXhwZXJzaWFuIiwxNzgyLCJzaXhyb21hbiIsODU2NSwic2l4c3VwZXJpb3IiLDgzMTAsInNpeHRlZW5jaXJjbGUiLDkzMjcsInNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaSIsMjU1Mywic2l4dGVlbnBhcmVuIiw5MzQ3LCJzaXh0ZWVucGVyaW9kIiw5MzY3LCJzaXh0aGFpIiwzNjcwLCJzbGFzaCIsNDcsInNsYXNobW9ub3NwYWNlIiw2NTI5NSwic2xvbmciLDM4Mywic2xvbmdkb3RhY2NlbnQiLDc4MzUsInNtaWxlZmFjZSIsOTc4Niwic21vbm9zcGFjZSIsNjUzNjMsInNvZnBhc3VxaGVicmV3IiwxNDc1LCJzb2Z0aHlwaGVuIiwxNzMsInNvZnRzaWduY3lyaWxsaWMiLDExMDAsInNvaGlyYWdhbmEiLDEyMzgxLCJzb2thdGFrYW5hIiwxMjQ3Nywic29rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDcsInNvbGlkdXNsb25nb3ZlcmxheWNtYiIsODI0LCJzb2xpZHVzc2hvcnRvdmVybGF5Y21iIiw4MjMsInNvcnVzaXRoYWkiLDM2MjUsInNvc2FsYXRoYWkiLDM2MjQsInNvc290aGFpIiwzNTk1LCJzb3N1YXRoYWkiLDM2MjYsInNwYWNlIiwzMiwic3BhY2VoYWNrYXJhYmljIiwzMiwic3BhZGUiLDk4MjQsInNwYWRlc3VpdGJsYWNrIiw5ODI0LCJzcGFkZXN1aXR3aGl0ZSIsOTgyOCwic3BhcmVuIiw5MzkwLCJzcXVhcmViZWxvd2NtYiIsODI3LCJzcXVhcmVjYyIsMTMyNTIsInNxdWFyZWNtIiwxMzIxMywic3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTY0MSwic3F1YXJlaG9yaXpvbnRhbGZpbGwiLDk2MzYsInNxdWFyZWtnIiwxMzE5OSwic3F1YXJla20iLDEzMjE0LCJzcXVhcmVrbWNhcGl0YWwiLDEzMjYyLCJzcXVhcmVsbiIsMTMyNjUsInNxdWFyZWxvZyIsMTMyNjYsInNxdWFyZW1nIiwxMzE5OCwic3F1YXJlbWlsIiwxMzI2OSwic3F1YXJlbW0iLDEzMjEyLCJzcXVhcmVtc3F1YXJlZCIsMTMyMTcsInNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbCIsOTYzOCwic3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbCIsOTYzOSwic3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbCIsOTY0MCwic3F1YXJldmVydGljYWxmaWxsIiw5NjM3LCJzcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrIiw5NjM1LCJzcnNxdWFyZSIsMTMyNzUsInNzYWJlbmdhbGkiLDI0ODcsInNzYWRldmEiLDIzNTksInNzYWd1amFyYXRpIiwyNzQzLCJzc2FuZ2NpZXVja29yZWFuIiwxMjYxNywic3NhbmdoaWV1aGtvcmVhbiIsMTI2NzcsInNzYW5naWV1bmdrb3JlYW4iLDEyNjcyLCJzc2FuZ2tpeWVva2tvcmVhbiIsMTI1OTQsInNzYW5nbmlldW5rb3JlYW4iLDEyNjQ1LCJzc2FuZ3BpZXVwa29yZWFuIiwxMjYxMSwic3NhbmdzaW9za29yZWFuIiwxMjYxNCwic3Nhbmd0aWtldXRrb3JlYW4iLDEyNjAwLCJzc3VwZXJpb3IiLDYzMjE4LCJzdGVybGluZyIsMTYzLCJzdGVybGluZ21vbm9zcGFjZSIsNjU1MDUsInN0cm9rZWxvbmdvdmVybGF5Y21iIiw4MjIsInN0cm9rZXNob3J0b3ZlcmxheWNtYiIsODIxLCJzdWJzZXQiLDg4MzQsInN1YnNldG5vdGVxdWFsIiw4ODQyLCJzdWJzZXRvcmVxdWFsIiw4ODM4LCJzdWNjZWVkcyIsODgyNywic3VjaHRoYXQiLDg3MTUsInN1aGlyYWdhbmEiLDEyMzc3LCJzdWthdGFrYW5hIiwxMjQ3Mywic3VrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDUsInN1a3VuYXJhYmljIiwxNjE4LCJzdW1tYXRpb24iLDg3MjEsInN1biIsOTc4OCwic3VwZXJzZXQiLDg4MzUsInN1cGVyc2V0bm90ZXF1YWwiLDg4NDMsInN1cGVyc2V0b3JlcXVhbCIsODgzOSwic3ZzcXVhcmUiLDEzMjc2LCJzeW91d2FlcmFzcXVhcmUiLDEzMTgwLCJ0IiwxMTYsInRhYmVuZ2FsaSIsMjQ2OCwidGFja2Rvd24iLDg4NjgsInRhY2tsZWZ0Iiw4ODY3LCJ0YWRldmEiLDIzNDAsInRhZ3VqYXJhdGkiLDI3MjQsInRhZ3VybXVraGkiLDI1OTYsInRhaGFyYWJpYyIsMTU5MSwidGFoZmluYWxhcmFiaWMiLDY1MjE4LCJ0YWhpbml0aWFsYXJhYmljIiw2NTIxOSwidGFoaXJhZ2FuYSIsMTIzODMsInRhaG1lZGlhbGFyYWJpYyIsNjUyMjAsInRhaXN5b3VlcmFzcXVhcmUiLDEzMTgxLCJ0YWthdGFrYW5hIiwxMjQ3OSwidGFrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDgsInRhdHdlZWxhcmFiaWMiLDE2MDAsInRhdSIsOTY0LCJ0YXYiLDE1MTQsInRhdmRhZ2VzIiw2NDMzMCwidGF2ZGFnZXNoIiw2NDMzMCwidGF2ZGFnZXNoaGVicmV3Iiw2NDMzMCwidGF2aGVicmV3IiwxNTE0LCJ0YmFyIiwzNTksInRib3BvbW9mbyIsMTI1NTQsInRjYXJvbiIsMzU3LCJ0Y2N1cmwiLDY4MCwidGNlZGlsbGEiLDM1NSwidGNoZWhhcmFiaWMiLDE2NzAsInRjaGVoZmluYWxhcmFiaWMiLDY0Mzc5LCJ0Y2hlaGluaXRpYWxhcmFiaWMiLDY0MzgwLCJ0Y2hlaG1lZGlhbGFyYWJpYyIsNjQzODEsInRjaXJjbGUiLDk0NDMsInRjaXJjdW1mbGV4YmVsb3ciLDc3OTMsInRjb21tYWFjY2VudCIsMzU1LCJ0ZGllcmVzaXMiLDc4MzEsInRkb3RhY2NlbnQiLDc3ODcsInRkb3RiZWxvdyIsNzc4OSwidGVjeXJpbGxpYyIsMTA5MCwidGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE5NywidGVoYXJhYmljIiwxNTc4LCJ0ZWhmaW5hbGFyYWJpYyIsNjUxNzQsInRlaGhhaGluaXRpYWxhcmFiaWMiLDY0Njc0LCJ0ZWhoYWhpc29sYXRlZGFyYWJpYyIsNjQ1MjQsInRlaGluaXRpYWxhcmFiaWMiLDY1MTc1LCJ0ZWhpcmFnYW5hIiwxMjM5MCwidGVoamVlbWluaXRpYWxhcmFiaWMiLDY0NjczLCJ0ZWhqZWVtaXNvbGF0ZWRhcmFiaWMiLDY0NTIzLCJ0ZWhtYXJidXRhYXJhYmljIiwxNTc3LCJ0ZWhtYXJidXRhZmluYWxhcmFiaWMiLDY1MTcyLCJ0ZWhtZWRpYWxhcmFiaWMiLDY1MTc2LCJ0ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ2NzYsInRlaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ1MjYsInRlaG5vb25maW5hbGFyYWJpYyIsNjQ2MjcsInRla2F0YWthbmEiLDEyNDg2LCJ0ZWthdGFrYW5haGFsZndpZHRoIiw2NTQxMSwidGVsZXBob25lIiw4NDgxLCJ0ZWxlcGhvbmVibGFjayIsOTc0MiwidGVsaXNoYWdlZG9sYWhlYnJldyIsMTQ0MCwidGVsaXNoYXFldGFuYWhlYnJldyIsMTQ0OSwidGVuY2lyY2xlIiw5MzIxLCJ0ZW5pZGVvZ3JhcGhpY3BhcmVuIiwxMjg0MSwidGVucGFyZW4iLDkzNDEsInRlbnBlcmlvZCIsOTM2MSwidGVucm9tYW4iLDg1NjksInRlc2giLDY3OSwidGV0IiwxNDk2LCJ0ZXRkYWdlc2giLDY0MzEyLCJ0ZXRkYWdlc2hoZWJyZXciLDY0MzEyLCJ0ZXRoZWJyZXciLDE0OTYsInRldHNlY3lyaWxsaWMiLDEyMDUsInRldmlyaGVicmV3IiwxNDM1LCJ0ZXZpcmxlZnRoZWJyZXciLDE0MzUsInRoYWJlbmdhbGkiLDI0NjksInRoYWRldmEiLDIzNDEsInRoYWd1amFyYXRpIiwyNzI1LCJ0aGFndXJtdWtoaSIsMjU5NywidGhhbGFyYWJpYyIsMTU4NCwidGhhbGZpbmFsYXJhYmljIiw2NTE5NiwidGhhbnRoYWtoYXRsb3dsZWZ0dGhhaSIsNjM2NDAsInRoYW50aGFraGF0bG93cmlnaHR0aGFpIiw2MzYzOSwidGhhbnRoYWtoYXR0aGFpIiwzNjYwLCJ0aGFudGhha2hhdHVwcGVybGVmdHRoYWkiLDYzNjM4LCJ0aGVoYXJhYmljIiwxNTc5LCJ0aGVoZmluYWxhcmFiaWMiLDY1MTc4LCJ0aGVoaW5pdGlhbGFyYWJpYyIsNjUxNzksInRoZWhtZWRpYWxhcmFiaWMiLDY1MTgwLCJ0aGVyZWV4aXN0cyIsODcwNywidGhlcmVmb3JlIiw4NzU2LCJ0aGV0YSIsOTUyLCJ0aGV0YTEiLDk3NywidGhldGFzeW1ib2xncmVlayIsOTc3LCJ0aGlldXRoYWNpcmNsZWtvcmVhbiIsMTI5MjEsInRoaWV1dGhhcGFyZW5rb3JlYW4iLDEyODI1LCJ0aGlldXRoY2lyY2xla29yZWFuIiwxMjkwNywidGhpZXV0aGtvcmVhbiIsMTI2MjAsInRoaWV1dGhwYXJlbmtvcmVhbiIsMTI4MTEsInRoaXJ0ZWVuY2lyY2xlIiw5MzI0LCJ0aGlydGVlbnBhcmVuIiw5MzQ0LCJ0aGlydGVlbnBlcmlvZCIsOTM2NCwidGhvbmFuZ21vbnRob3RoYWkiLDM2MDEsInRob29rIiw0MjksInRob3BodXRoYW90aGFpIiwzNjAyLCJ0aG9ybiIsMjU0LCJ0aG90aGFoYW50aGFpIiwzNjA3LCJ0aG90aGFudGhhaSIsMzYwMCwidGhvdGhvbmd0aGFpIiwzNjA4LCJ0aG90aHVuZ3RoYWkiLDM2MDYsInRob3VzYW5kY3lyaWxsaWMiLDExNTQsInRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYyIsMTY0NCwidGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbiIsMTY0NCwidGhyZWUiLDUxLCJ0aHJlZWFyYWJpYyIsMTYzNSwidGhyZWViZW5nYWxpIiwyNTM3LCJ0aHJlZWNpcmNsZSIsOTMxNCwidGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyNCwidGhyZWVkZXZhIiwyNDA5LCJ0aHJlZWVpZ2h0aHMiLDg1NDAsInRocmVlZ3VqYXJhdGkiLDI3OTMsInRocmVlZ3VybXVraGkiLDI2NjUsInRocmVlaGFja2FyYWJpYyIsMTYzNSwidGhyZWVoYW5nemhvdSIsMTIzMjMsInRocmVlaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzQsInRocmVlaW5mZXJpb3IiLDgzMjMsInRocmVlbW9ub3NwYWNlIiw2NTI5OSwidGhyZWVudW1lcmF0b3JiZW5nYWxpIiwyNTUwLCJ0aHJlZW9sZHN0eWxlIiw2MzI4MywidGhyZWVwYXJlbiIsOTMzNCwidGhyZWVwZXJpb2QiLDkzNTQsInRocmVlcGVyc2lhbiIsMTc3OSwidGhyZWVxdWFydGVycyIsMTkwLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiw2MzE5OCwidGhyZWVyb21hbiIsODU2MiwidGhyZWVzdXBlcmlvciIsMTc5LCJ0aHJlZXRoYWkiLDM2NjcsInRoenNxdWFyZSIsMTMyMDQsInRpaGlyYWdhbmEiLDEyMzg1LCJ0aWthdGFrYW5hIiwxMjQ4MSwidGlrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MDksInRpa2V1dGFjaXJjbGVrb3JlYW4iLDEyOTEyLCJ0aWtldXRhcGFyZW5rb3JlYW4iLDEyODE2LCJ0aWtldXRjaXJjbGVrb3JlYW4iLDEyODk4LCJ0aWtldXRrb3JlYW4iLDEyNTk5LCJ0aWtldXRwYXJlbmtvcmVhbiIsMTI4MDIsInRpbGRlIiw3MzIsInRpbGRlYmVsb3djbWIiLDgxNiwidGlsZGVjbWIiLDc3MSwidGlsZGVjb21iIiw3NzEsInRpbGRlZG91YmxlY21iIiw4NjQsInRpbGRlb3BlcmF0b3IiLDg3NjQsInRpbGRlb3ZlcmxheWNtYiIsODIwLCJ0aWxkZXZlcnRpY2FsY21iIiw4MzAsInRpbWVzY2lyY2xlIiw4ODU1LCJ0aXBlaGFoZWJyZXciLDE0MzAsInRpcGVoYWxlZnRoZWJyZXciLDE0MzAsInRpcHBpZ3VybXVraGkiLDI2NzIsInRpdGxvY3lyaWxsaWNjbWIiLDExNTUsInRpd25hcm1lbmlhbiIsMTQwNywidGxpbmViZWxvdyIsNzc5MSwidG1vbm9zcGFjZSIsNjUzNjQsInRvYXJtZW5pYW4iLDEzODUsInRvaGlyYWdhbmEiLDEyMzkyLCJ0b2thdGFrYW5hIiwxMjQ4OCwidG9rYXRha2FuYWhhbGZ3aWR0aCIsNjU0MTIsInRvbmViYXJleHRyYWhpZ2htb2QiLDc0MSwidG9uZWJhcmV4dHJhbG93bW9kIiw3NDUsInRvbmViYXJoaWdobW9kIiw3NDIsInRvbmViYXJsb3dtb2QiLDc0NCwidG9uZWJhcm1pZG1vZCIsNzQzLCJ0b25lZml2ZSIsNDQ1LCJ0b25lc2l4IiwzODksInRvbmV0d28iLDQyNCwidG9ub3MiLDkwMCwidG9uc3F1YXJlIiwxMzA5NSwidG9wYXRha3RoYWkiLDM1OTksInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMDgsInRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsIiw2NTExNywidG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDgxLCJ0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0IiwxMjMwOSwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsIiw2NTExOCwidG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsIiw2NTA4MiwidG90YW90aGFpIiwzNjA1LCJ0cGFsYXRhbGhvb2siLDQyNywidHBhcmVuIiw5MzkxLCJ0cmFkZW1hcmsiLDg0ODIsInRyYWRlbWFya3NhbnMiLDYzNzIyLCJ0cmFkZW1hcmtzZXJpZiIsNjMxOTUsInRyZXRyb2ZsZXhob29rIiw2NDgsInRyaWFnZG4iLDk2NjAsInRyaWFnbGYiLDk2NjgsInRyaWFncnQiLDk2NTgsInRyaWFndXAiLDk2NTAsInRzIiw2NzgsInRzYWRpIiwxNTEwLCJ0c2FkaWRhZ2VzaCIsNjQzMjYsInRzYWRpZGFnZXNoaGVicmV3Iiw2NDMyNiwidHNhZGloZWJyZXciLDE1MTAsInRzZWN5cmlsbGljIiwxMDk0LCJ0c2VyZSIsMTQ2MSwidHNlcmUxMiIsMTQ2MSwidHNlcmUxZSIsMTQ2MSwidHNlcmUyYiIsMTQ2MSwidHNlcmVoZWJyZXciLDE0NjEsInRzZXJlbmFycm93aGVicmV3IiwxNDYxLCJ0c2VyZXF1YXJ0ZXJoZWJyZXciLDE0NjEsInRzZXJld2lkZWhlYnJldyIsMTQ2MSwidHNoZWN5cmlsbGljIiwxMTE1LCJ0c3VwZXJpb3IiLDYzMjE5LCJ0dGFiZW5nYWxpIiwyNDYzLCJ0dGFkZXZhIiwyMzM1LCJ0dGFndWphcmF0aSIsMjcxOSwidHRhZ3VybXVraGkiLDI1OTEsInR0ZWhhcmFiaWMiLDE2NTcsInR0ZWhmaW5hbGFyYWJpYyIsNjQzNTksInR0ZWhpbml0aWFsYXJhYmljIiw2NDM2MCwidHRlaG1lZGlhbGFyYWJpYyIsNjQzNjEsInR0aGFiZW5nYWxpIiwyNDY0LCJ0dGhhZGV2YSIsMjMzNiwidHRoYWd1amFyYXRpIiwyNzIwLCJ0dGhhZ3VybXVraGkiLDI1OTIsInR0dXJuZWQiLDY0NywidHVoaXJhZ2FuYSIsMTIzODgsInR1a2F0YWthbmEiLDEyNDg0LCJ0dWthdGFrYW5haGFsZndpZHRoIiw2NTQxMCwidHVzbWFsbGhpcmFnYW5hIiwxMjM4NywidHVzbWFsbGthdGFrYW5hIiwxMjQ4MywidHVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM5MSwidHdlbHZlY2lyY2xlIiw5MzIzLCJ0d2VsdmVwYXJlbiIsOTM0MywidHdlbHZlcGVyaW9kIiw5MzYzLCJ0d2VsdmVyb21hbiIsODU3MSwidHdlbnR5Y2lyY2xlIiw5MzMxLCJ0d2VudHloYW5nemhvdSIsMjEzMTYsInR3ZW50eXBhcmVuIiw5MzUxLCJ0d2VudHlwZXJpb2QiLDkzNzEsInR3byIsNTAsInR3b2FyYWJpYyIsMTYzNCwidHdvYmVuZ2FsaSIsMjUzNiwidHdvY2lyY2xlIiw5MzEzLCJ0d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmIiwxMDEyMywidHdvZGV2YSIsMjQwOCwidHdvZG90ZW5sZWFkZXIiLDgyMjksInR3b2RvdGxlYWRlciIsODIyOSwidHdvZG90bGVhZGVydmVydGljYWwiLDY1MDcyLCJ0d29ndWphcmF0aSIsMjc5MiwidHdvZ3VybXVraGkiLDI2NjQsInR3b2hhY2thcmFiaWMiLDE2MzQsInR3b2hhbmd6aG91IiwxMjMyMiwidHdvaWRlb2dyYXBoaWNwYXJlbiIsMTI4MzMsInR3b2luZmVyaW9yIiw4MzIyLCJ0d29tb25vc3BhY2UiLDY1Mjk4LCJ0d29udW1lcmF0b3JiZW5nYWxpIiwyNTQ5LCJ0d29vbGRzdHlsZSIsNjMyODIsInR3b3BhcmVuIiw5MzMzLCJ0d29wZXJpb2QiLDkzNTMsInR3b3BlcnNpYW4iLDE3NzgsInR3b3JvbWFuIiw4NTYxLCJ0d29zdHJva2UiLDQ0MywidHdvc3VwZXJpb3IiLDE3OCwidHdvdGhhaSIsMzY2NiwidHdvdGhpcmRzIiw4NTMyLCJ1IiwxMTcsInVhY3V0ZSIsMjUwLCJ1YmFyIiw2NDksInViZW5nYWxpIiwyNDQxLCJ1Ym9wb21vZm8iLDEyNTg0LCJ1YnJldmUiLDM2NSwidWNhcm9uIiw0NjgsInVjaXJjbGUiLDk0NDQsInVjaXJjdW1mbGV4IiwyNTEsInVjaXJjdW1mbGV4YmVsb3ciLDc3OTksInVjeXJpbGxpYyIsMTA5MSwidWRhdHRhZGV2YSIsMjM4NSwidWRibGFjdXRlIiwzNjksInVkYmxncmF2ZSIsNTMzLCJ1ZGV2YSIsMjMxMywidWRpZXJlc2lzIiwyNTIsInVkaWVyZXNpc2FjdXRlIiw0NzIsInVkaWVyZXNpc2JlbG93Iiw3Nzk1LCJ1ZGllcmVzaXNjYXJvbiIsNDc0LCJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI2NSwidWRpZXJlc2lzZ3JhdmUiLDQ3NiwidWRpZXJlc2lzbWFjcm9uIiw0NzAsInVkb3RiZWxvdyIsNzkwOSwidWdyYXZlIiwyNDksInVndWphcmF0aSIsMjY5NywidWd1cm11a2hpIiwyNTY5LCJ1aGlyYWdhbmEiLDEyMzU4LCJ1aG9va2Fib3ZlIiw3OTExLCJ1aG9ybiIsNDMyLCJ1aG9ybmFjdXRlIiw3OTEzLCJ1aG9ybmRvdGJlbG93Iiw3OTIxLCJ1aG9ybmdyYXZlIiw3OTE1LCJ1aG9ybmhvb2thYm92ZSIsNzkxNywidWhvcm50aWxkZSIsNzkxOSwidWh1bmdhcnVtbGF1dCIsMzY5LCJ1aHVuZ2FydW1sYXV0Y3lyaWxsaWMiLDEyNjcsInVpbnZlcnRlZGJyZXZlIiw1MzUsInVrYXRha2FuYSIsMTI0NTQsInVrYXRha2FuYWhhbGZ3aWR0aCIsNjUzOTUsInVrY3lyaWxsaWMiLDExNDUsInVrb3JlYW4iLDEyNjM2LCJ1bWFjcm9uIiwzNjMsInVtYWNyb25jeXJpbGxpYyIsMTI2MywidW1hY3JvbmRpZXJlc2lzIiw3ODAzLCJ1bWF0cmFndXJtdWtoaSIsMjYyNSwidW1vbm9zcGFjZSIsNjUzNjUsInVuZGVyc2NvcmUiLDk1LCJ1bmRlcnNjb3JlZGJsIiw4MjE1LCJ1bmRlcnNjb3JlbW9ub3NwYWNlIiw2NTM0MywidW5kZXJzY29yZXZlcnRpY2FsIiw2NTA3NSwidW5kZXJzY29yZXdhdnkiLDY1MTAzLCJ1bmlvbiIsODc0NiwidW5pdmVyc2FsIiw4NzA0LCJ1b2dvbmVrIiwzNzEsInVwYXJlbiIsOTM5MiwidXBibG9jayIsOTYwMCwidXBwZXJkb3RoZWJyZXciLDE0NzYsInVwc2lsb24iLDk2NSwidXBzaWxvbmRpZXJlc2lzIiw5NzEsInVwc2lsb25kaWVyZXNpc3Rvbm9zIiw5NDQsInVwc2lsb25sYXRpbiIsNjUwLCJ1cHNpbG9udG9ub3MiLDk3MywidXB0YWNrYmVsb3djbWIiLDc5NywidXB0YWNrbW9kIiw3MjQsInVyYWd1cm11a2hpIiwyNjc1LCJ1cmluZyIsMzY3LCJ1c2hvcnRjeXJpbGxpYyIsMTExOCwidXNtYWxsaGlyYWdhbmEiLDEyMzU3LCJ1c21hbGxrYXRha2FuYSIsMTI0NTMsInVzbWFsbGthdGFrYW5haGFsZndpZHRoIiw2NTM4NSwidXN0cmFpZ2h0Y3lyaWxsaWMiLDExOTksInVzdHJhaWdodHN0cm9rZWN5cmlsbGljIiwxMjAxLCJ1dGlsZGUiLDM2MSwidXRpbGRlYWN1dGUiLDc4MDEsInV0aWxkZWJlbG93Iiw3Nzk3LCJ1dWJlbmdhbGkiLDI0NDIsInV1ZGV2YSIsMjMxNCwidXVndWphcmF0aSIsMjY5OCwidXVndXJtdWtoaSIsMjU3MCwidXVtYXRyYWd1cm11a2hpIiwyNjI2LCJ1dXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTgsInV1dm93ZWxzaWduZGV2YSIsMjM3MCwidXV2b3dlbHNpZ25ndWphcmF0aSIsMjc1NCwidXZvd2Vsc2lnbmJlbmdhbGkiLDI0OTcsInV2b3dlbHNpZ25kZXZhIiwyMzY5LCJ1dm93ZWxzaWduZ3VqYXJhdGkiLDI3NTMsInYiLDExOCwidmFkZXZhIiwyMzU3LCJ2YWd1amFyYXRpIiwyNzQxLCJ2YWd1cm11a2hpIiwyNjEzLCJ2YWthdGFrYW5hIiwxMjUzNSwidmF2IiwxNDkzLCJ2YXZkYWdlc2giLDY0MzA5LCJ2YXZkYWdlc2g2NSIsNjQzMDksInZhdmRhZ2VzaGhlYnJldyIsNjQzMDksInZhdmhlYnJldyIsMTQ5MywidmF2aG9sYW0iLDY0MzMxLCJ2YXZob2xhbWhlYnJldyIsNjQzMzEsInZhdnZhdmhlYnJldyIsMTUyMCwidmF2eW9kaGVicmV3IiwxNTIxLCJ2Y2lyY2xlIiw5NDQ1LCJ2ZG90YmVsb3ciLDc4MDcsInZlY3lyaWxsaWMiLDEwNzQsInZlaGFyYWJpYyIsMTcwMCwidmVoZmluYWxhcmFiaWMiLDY0MzYzLCJ2ZWhpbml0aWFsYXJhYmljIiw2NDM2NCwidmVobWVkaWFsYXJhYmljIiw2NDM2NSwidmVrYXRha2FuYSIsMTI1MzcsInZlbnVzIiw5NzkyLCJ2ZXJ0aWNhbGJhciIsMTI0LCJ2ZXJ0aWNhbGxpbmVhYm92ZWNtYiIsNzgxLCJ2ZXJ0aWNhbGxpbmViZWxvd2NtYiIsODA5LCJ2ZXJ0aWNhbGxpbmVsb3dtb2QiLDcxNiwidmVydGljYWxsaW5lbW9kIiw3MTIsInZld2FybWVuaWFuIiwxNDA2LCJ2aG9vayIsNjUxLCJ2aWthdGFrYW5hIiwxMjUzNiwidmlyYW1hYmVuZ2FsaSIsMjUwOSwidmlyYW1hZGV2YSIsMjM4MSwidmlyYW1hZ3VqYXJhdGkiLDI3NjUsInZpc2FyZ2FiZW5nYWxpIiwyNDM1LCJ2aXNhcmdhZGV2YSIsMjMwNywidmlzYXJnYWd1amFyYXRpIiwyNjkxLCJ2bW9ub3NwYWNlIiw2NTM2Niwidm9hcm1lbmlhbiIsMTQwMCwidm9pY2VkaXRlcmF0aW9uaGlyYWdhbmEiLDEyNDQ2LCJ2b2ljZWRpdGVyYXRpb25rYXRha2FuYSIsMTI1NDIsInZvaWNlZG1hcmtrYW5hIiwxMjQ0Mywidm9pY2VkbWFya2thbmFoYWxmd2lkdGgiLDY1NDM4LCJ2b2thdGFrYW5hIiwxMjUzOCwidnBhcmVuIiw5MzkzLCJ2dGlsZGUiLDc4MDUsInZ0dXJuZWQiLDY1MiwidnVoaXJhZ2FuYSIsMTI0MzYsInZ1a2F0YWthbmEiLDEyNTMyLCJ3IiwxMTksIndhY3V0ZSIsNzgxMSwid2Fla29yZWFuIiwxMjYzMywid2FoaXJhZ2FuYSIsMTI0MzEsIndha2F0YWthbmEiLDEyNTI3LCJ3YWthdGFrYW5haGFsZndpZHRoIiw2NTQzNiwid2Frb3JlYW4iLDEyNjMyLCJ3YXNtYWxsaGlyYWdhbmEiLDEyNDMwLCJ3YXNtYWxsa2F0YWthbmEiLDEyNTI2LCJ3YXR0b3NxdWFyZSIsMTMxNDMsIndhdmVkYXNoIiwxMjMxNiwid2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbCIsNjUwNzYsIndhd2FyYWJpYyIsMTYwOCwid2F3ZmluYWxhcmFiaWMiLDY1MjYyLCJ3YXdoYW16YWFib3ZlYXJhYmljIiwxNTcyLCJ3YXdoYW16YWFib3ZlZmluYWxhcmFiaWMiLDY1MTU4LCJ3YnNxdWFyZSIsMTMyNzcsIndjaXJjbGUiLDk0NDYsIndjaXJjdW1mbGV4IiwzNzMsIndkaWVyZXNpcyIsNzgxMywid2RvdGFjY2VudCIsNzgxNSwid2RvdGJlbG93Iiw3ODE3LCJ3ZWhpcmFnYW5hIiwxMjQzMywid2VpZXJzdHJhc3MiLDg0NzIsIndla2F0YWthbmEiLDEyNTI5LCJ3ZWtvcmVhbiIsMTI2MzgsIndlb2tvcmVhbiIsMTI2MzcsIndncmF2ZSIsNzgwOSwid2hpdGVidWxsZXQiLDk3MDIsIndoaXRlY2lyY2xlIiw5Njc1LCJ3aGl0ZWNpcmNsZWludmVyc2UiLDk2ODksIndoaXRlY29ybmVyYnJhY2tldGxlZnQiLDEyMzAyLCJ3aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWwiLDY1MDkxLCJ3aGl0ZWNvcm5lcmJyYWNrZXRyaWdodCIsMTIzMDMsIndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWwiLDY1MDkyLCJ3aGl0ZWRpYW1vbmQiLDk2NzEsIndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZCIsOTY3Miwid2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlIiw5NjYzLCJ3aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlIiw5NjYxLCJ3aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NjcsIndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGUiLDk2NjUsIndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0IiwxMjMxMCwid2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0IiwxMjMxMSwid2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZSIsOTY1Nywid2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGUiLDk2NTUsIndoaXRlc21hbGxzcXVhcmUiLDk2NDMsIndoaXRlc21pbGluZ2ZhY2UiLDk3ODYsIndoaXRlc3F1YXJlIiw5NjMzLCJ3aGl0ZXN0YXIiLDk3MzQsIndoaXRldGVsZXBob25lIiw5NzQzLCJ3aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdCIsMTIzMTIsIndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodCIsMTIzMTMsIndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGUiLDk2NTMsIndoaXRldXBwb2ludGluZ3RyaWFuZ2xlIiw5NjUxLCJ3aWhpcmFnYW5hIiwxMjQzMiwid2lrYXRha2FuYSIsMTI1MjgsIndpa29yZWFuIiwxMjYzOSwid21vbm9zcGFjZSIsNjUzNjcsIndvaGlyYWdhbmEiLDEyNDM0LCJ3b2thdGFrYW5hIiwxMjUzMCwid29rYXRha2FuYWhhbGZ3aWR0aCIsNjUzODIsIndvbiIsODM2MSwid29ubW9ub3NwYWNlIiw2NTUxMCwid293YWVudGhhaSIsMzYyMywid3BhcmVuIiw5Mzk0LCJ3cmluZyIsNzgzMiwid3N1cGVyaW9yIiw2OTUsInd0dXJuZWQiLDY1Mywid3lubiIsNDQ3LCJ4IiwxMjAsInhhYm92ZWNtYiIsODI5LCJ4Ym9wb21vZm8iLDEyNTYyLCJ4Y2lyY2xlIiw5NDQ3LCJ4ZGllcmVzaXMiLDc4MjEsInhkb3RhY2NlbnQiLDc4MTksInhlaGFybWVuaWFuIiwxMzg5LCJ4aSIsOTU4LCJ4bW9ub3NwYWNlIiw2NTM2OCwieHBhcmVuIiw5Mzk1LCJ4c3VwZXJpb3IiLDczOSwieSIsMTIxLCJ5YWFkb3NxdWFyZSIsMTMxMzQsInlhYmVuZ2FsaSIsMjQ3OSwieWFjdXRlIiwyNTMsInlhZGV2YSIsMjM1MSwieWFla29yZWFuIiwxMjYyNiwieWFndWphcmF0aSIsMjczNSwieWFndXJtdWtoaSIsMjYwNywieWFoaXJhZ2FuYSIsMTI0MjAsInlha2F0YWthbmEiLDEyNTE2LCJ5YWthdGFrYW5haGFsZndpZHRoIiw2NTQyOCwieWFrb3JlYW4iLDEyNjI1LCJ5YW1ha2thbnRoYWkiLDM2NjIsInlhc21hbGxoaXJhZ2FuYSIsMTI0MTksInlhc21hbGxrYXRha2FuYSIsMTI1MTUsInlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aCIsNjUzODgsInlhdGN5cmlsbGljIiwxMTIzLCJ5Y2lyY2xlIiw5NDQ4LCJ5Y2lyY3VtZmxleCIsMzc1LCJ5ZGllcmVzaXMiLDI1NSwieWRvdGFjY2VudCIsNzgyMywieWRvdGJlbG93Iiw3OTI1LCJ5ZWhhcmFiaWMiLDE2MTAsInllaGJhcnJlZWFyYWJpYyIsMTc0NiwieWVoYmFycmVlZmluYWxhcmFiaWMiLDY0NDMxLCJ5ZWhmaW5hbGFyYWJpYyIsNjUyNjYsInllaGhhbXphYWJvdmVhcmFiaWMiLDE1NzQsInllaGhhbXphYWJvdmVmaW5hbGFyYWJpYyIsNjUxNjIsInllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljIiw2NTE2MywieWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYyIsNjUxNjQsInllaGluaXRpYWxhcmFiaWMiLDY1MjY3LCJ5ZWhtZWRpYWxhcmFiaWMiLDY1MjY4LCJ5ZWhtZWVtaW5pdGlhbGFyYWJpYyIsNjQ3MzMsInllaG1lZW1pc29sYXRlZGFyYWJpYyIsNjQ2MDAsInllaG5vb25maW5hbGFyYWJpYyIsNjQ2NjAsInllaHRocmVlZG90c2JlbG93YXJhYmljIiwxNzQ1LCJ5ZWtvcmVhbiIsMTI2MzAsInllbiIsMTY1LCJ5ZW5tb25vc3BhY2UiLDY1NTA5LCJ5ZW9rb3JlYW4iLDEyNjI5LCJ5ZW9yaW5oaWV1aGtvcmVhbiIsMTI2NzgsInllcmFoYmVueW9tb2hlYnJldyIsMTQ1MCwieWVyYWhiZW55b21vbGVmdGhlYnJldyIsMTQ1MCwieWVyaWN5cmlsbGljIiwxMDk5LCJ5ZXJ1ZGllcmVzaXNjeXJpbGxpYyIsMTI3MywieWVzaWV1bmdrb3JlYW4iLDEyNjczLCJ5ZXNpZXVuZ3BhbnNpb3Nrb3JlYW4iLDEyNjc1LCJ5ZXNpZXVuZ3Npb3Nrb3JlYW4iLDEyNjc0LCJ5ZXRpdmhlYnJldyIsMTQzNCwieWdyYXZlIiw3OTIzLCJ5aG9vayIsNDM2LCJ5aG9va2Fib3ZlIiw3OTI3LCJ5aWFybWVuaWFuIiwxMzk3LCJ5aWN5cmlsbGljIiwxMTExLCJ5aWtvcmVhbiIsMTI2NDIsInlpbnlhbmciLDk3NzUsInlpd25hcm1lbmlhbiIsMTQxMCwieW1vbm9zcGFjZSIsNjUzNjksInlvZCIsMTQ5NywieW9kZGFnZXNoIiw2NDMxMywieW9kZGFnZXNoaGVicmV3Iiw2NDMxMywieW9kaGVicmV3IiwxNDk3LCJ5b2R5b2RoZWJyZXciLDE1MjIsInlvZHlvZHBhdGFoaGVicmV3Iiw2NDI4NywieW9oaXJhZ2FuYSIsMTI0MjQsInlvaWtvcmVhbiIsMTI2ODEsInlva2F0YWthbmEiLDEyNTIwLCJ5b2thdGFrYW5haGFsZndpZHRoIiw2NTQzMCwieW9rb3JlYW4iLDEyNjM1LCJ5b3NtYWxsaGlyYWdhbmEiLDEyNDIzLCJ5b3NtYWxsa2F0YWthbmEiLDEyNTE5LCJ5b3NtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1MzkwLCJ5b3RncmVlayIsMTAxMSwieW95YWVrb3JlYW4iLDEyNjgwLCJ5b3lha29yZWFuIiwxMjY3OSwieW95YWt0aGFpIiwzNjE4LCJ5b3lpbmd0aGFpIiwzNTk3LCJ5cGFyZW4iLDkzOTYsInlwb2dlZ3JhbW1lbmkiLDg5MCwieXBvZ2VncmFtbWVuaWdyZWVrY21iIiw4MzcsInlyIiw0MjIsInlyaW5nIiw3ODMzLCJ5c3VwZXJpb3IiLDY5NiwieXRpbGRlIiw3OTI5LCJ5dHVybmVkIiw2NTQsInl1aGlyYWdhbmEiLDEyNDIyLCJ5dWlrb3JlYW4iLDEyNjg0LCJ5dWthdGFrYW5hIiwxMjUxOCwieXVrYXRha2FuYWhhbGZ3aWR0aCIsNjU0MjksInl1a29yZWFuIiwxMjY0MCwieXVzYmlnY3lyaWxsaWMiLDExMzEsInl1c2JpZ2lvdGlmaWVkY3lyaWxsaWMiLDExMzMsInl1c2xpdHRsZWN5cmlsbGljIiwxMTI3LCJ5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljIiwxMTI5LCJ5dXNtYWxsaGlyYWdhbmEiLDEyNDIxLCJ5dXNtYWxsa2F0YWthbmEiLDEyNTE3LCJ5dXNtYWxsa2F0YWthbmFoYWxmd2lkdGgiLDY1Mzg5LCJ5dXlla29yZWFuIiwxMjY4MywieXV5ZW9rb3JlYW4iLDEyNjgyLCJ5eWFiZW5nYWxpIiwyNTI3LCJ5eWFkZXZhIiwyMzk5LCJ6IiwxMjIsInphYXJtZW5pYW4iLDEzODIsInphY3V0ZSIsMzc4LCJ6YWRldmEiLDIzOTUsInphZ3VybXVraGkiLDI2NTEsInphaGFyYWJpYyIsMTU5MiwiemFoZmluYWxhcmFiaWMiLDY1MjIyLCJ6YWhpbml0aWFsYXJhYmljIiw2NTIyMywiemFoaXJhZ2FuYSIsMTIzNzQsInphaG1lZGlhbGFyYWJpYyIsNjUyMjQsInphaW5hcmFiaWMiLDE1ODYsInphaW5maW5hbGFyYWJpYyIsNjUyMDAsInpha2F0YWthbmEiLDEyNDcwLCJ6YXFlZmdhZG9saGVicmV3IiwxNDI5LCJ6YXFlZnFhdGFuaGVicmV3IiwxNDI4LCJ6YXJxYWhlYnJldyIsMTQzMiwiemF5aW4iLDE0OTQsInpheWluZGFnZXNoIiw2NDMxMCwiemF5aW5kYWdlc2hoZWJyZXciLDY0MzEwLCJ6YXlpbmhlYnJldyIsMTQ5NCwiemJvcG9tb2ZvIiwxMjU2NywiemNhcm9uIiwzODIsInpjaXJjbGUiLDk0NDksInpjaXJjdW1mbGV4Iiw3ODI1LCJ6Y3VybCIsNjU3LCJ6ZG90IiwzODAsInpkb3RhY2NlbnQiLDM4MCwiemRvdGJlbG93Iiw3ODI3LCJ6ZWN5cmlsbGljIiwxMDc5LCJ6ZWRlc2NlbmRlcmN5cmlsbGljIiwxMTc3LCJ6ZWRpZXJlc2lzY3lyaWxsaWMiLDEyNDcsInplaGlyYWdhbmEiLDEyMzgwLCJ6ZWthdGFrYW5hIiwxMjQ3NiwiemVybyIsNDgsInplcm9hcmFiaWMiLDE2MzIsInplcm9iZW5nYWxpIiwyNTM0LCJ6ZXJvZGV2YSIsMjQwNiwiemVyb2d1amFyYXRpIiwyNzkwLCJ6ZXJvZ3VybXVraGkiLDI2NjIsInplcm9oYWNrYXJhYmljIiwxNjMyLCJ6ZXJvaW5mZXJpb3IiLDgzMjAsInplcm9tb25vc3BhY2UiLDY1Mjk2LCJ6ZXJvb2xkc3R5bGUiLDYzMjgwLCJ6ZXJvcGVyc2lhbiIsMTc3NiwiemVyb3N1cGVyaW9yIiw4MzA0LCJ6ZXJvdGhhaSIsMzY2NCwiemVyb3dpZHRoam9pbmVyIiw2NTI3OSwiemVyb3dpZHRobm9uam9pbmVyIiw4MjA0LCJ6ZXJvd2lkdGhzcGFjZSIsODIwMywiemV0YSIsOTUwLCJ6aGJvcG9tb2ZvIiwxMjU2MywiemhlYXJtZW5pYW4iLDEzODYsInpoZWJyZXZlY3lyaWxsaWMiLDEyMTgsInpoZWN5cmlsbGljIiwxMDc4LCJ6aGVkZXNjZW5kZXJjeXJpbGxpYyIsMTE3NSwiemhlZGllcmVzaXNjeXJpbGxpYyIsMTI0NSwiemloaXJhZ2FuYSIsMTIzNzYsInppa2F0YWthbmEiLDEyNDcyLCJ6aW5vcmhlYnJldyIsMTQ1NCwiemxpbmViZWxvdyIsNzgyOSwiem1vbm9zcGFjZSIsNjUzNzAsInpvaGlyYWdhbmEiLDEyMzgyLCJ6b2thdGFrYW5hIiwxMjQ3OCwienBhcmVuIiw5Mzk3LCJ6cmV0cm9mbGV4aG9vayIsNjU2LCJ6c3Ryb2tlIiw0MzgsInp1aGlyYWdhbmEiLDEyMzc4LCJ6dWthdGFrYW5hIiwxMjQ3NCwiLm5vdGRlZiIsMCwiYW5nYnJhY2tldGxlZnRiaWciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnIiw5MDAxLCJhbmdicmFja2V0bGVmdGJpZ2ciLDkwMDEsImFuZ2JyYWNrZXRsZWZ0QmlnZyIsOTAwMSwiYW5nYnJhY2tldHJpZ2h0QmlnIiw5MDAyLCJhbmdicmFja2V0cmlnaHRiaWciLDkwMDIsImFuZ2JyYWNrZXRyaWdodEJpZ2ciLDkwMDIsImFuZ2JyYWNrZXRyaWdodGJpZ2ciLDkwMDIsImFycm93aG9va2xlZnQiLDg2MTgsImFycm93aG9va3JpZ2h0Iiw4NjE3LCJhcnJvd2xlZnR0b3BoYWxmIiw4NjM2LCJhcnJvd2xlZnRib3RoYWxmIiw4NjM3LCJhcnJvd25vcnRoZWFzdCIsODU5OSwiYXJyb3dub3J0aHdlc3QiLDg1OTgsImFycm93cmlnaHR0b3BoYWxmIiw4NjQwLCJhcnJvd3JpZ2h0Ym90aGFsZiIsODY0MSwiYXJyb3dzb3V0aGVhc3QiLDg2MDAsImFycm93c291dGh3ZXN0Iiw4NjAxLCJiYWNrc2xhc2hiaWciLDg3MjYsImJhY2tzbGFzaEJpZyIsODcyNiwiYmFja3NsYXNoQmlnZyIsODcyNiwiYmFja3NsYXNoYmlnZyIsODcyNiwiYmFyZGJsIiw4MjE0LCJicmFjZWh0aXBkb3dubGVmdCIsNjUwNzksImJyYWNlaHRpcGRvd25yaWdodCIsNjUwNzksImJyYWNlaHRpcHVwbGVmdCIsNjUwODAsImJyYWNlaHRpcHVwcmlnaHQiLDY1MDgwLCJicmFjZWxlZnRCaWciLDEyMywiYnJhY2VsZWZ0YmlnIiwxMjMsImJyYWNlbGVmdGJpZ2ciLDEyMywiYnJhY2VsZWZ0QmlnZyIsMTIzLCJicmFjZXJpZ2h0QmlnIiwxMjUsImJyYWNlcmlnaHRiaWciLDEyNSwiYnJhY2VyaWdodGJpZ2ciLDEyNSwiYnJhY2VyaWdodEJpZ2ciLDEyNSwiYnJhY2tldGxlZnRiaWciLDkxLCJicmFja2V0bGVmdEJpZyIsOTEsImJyYWNrZXRsZWZ0YmlnZyIsOTEsImJyYWNrZXRsZWZ0QmlnZyIsOTEsImJyYWNrZXRyaWdodEJpZyIsOTMsImJyYWNrZXRyaWdodGJpZyIsOTMsImJyYWNrZXRyaWdodGJpZ2ciLDkzLCJicmFja2V0cmlnaHRCaWdnIiw5MywiY2VpbGluZ2xlZnRiaWciLDg5NjgsImNlaWxpbmdsZWZ0QmlnIiw4OTY4LCJjZWlsaW5nbGVmdEJpZ2ciLDg5NjgsImNlaWxpbmdsZWZ0YmlnZyIsODk2OCwiY2VpbGluZ3JpZ2h0YmlnIiw4OTY5LCJjZWlsaW5ncmlnaHRCaWciLDg5NjksImNlaWxpbmdyaWdodGJpZ2ciLDg5NjksImNlaWxpbmdyaWdodEJpZ2ciLDg5NjksImNpcmNsZWRvdGRpc3BsYXkiLDg4NTcsImNpcmNsZWRvdHRleHQiLDg4NTcsImNpcmNsZW11bHRpcGx5ZGlzcGxheSIsODg1NSwiY2lyY2xlbXVsdGlwbHl0ZXh0Iiw4ODU1LCJjaXJjbGVwbHVzZGlzcGxheSIsODg1MywiY2lyY2xlcGx1c3RleHQiLDg4NTMsImNvbnRpbnRlZ3JhbGRpc3BsYXkiLDg3NTAsImNvbnRpbnRlZ3JhbHRleHQiLDg3NTAsImNvcHJvZHVjdGRpc3BsYXkiLDg3MjAsImNvcHJvZHVjdHRleHQiLDg3MjAsImZsb29ybGVmdEJpZyIsODk3MCwiZmxvb3JsZWZ0YmlnIiw4OTcwLCJmbG9vcmxlZnRiaWdnIiw4OTcwLCJmbG9vcmxlZnRCaWdnIiw4OTcwLCJmbG9vcnJpZ2h0YmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnIiw4OTcxLCJmbG9vcnJpZ2h0QmlnZyIsODk3MSwiZmxvb3JyaWdodGJpZ2ciLDg5NzEsImhhdHdpZGUiLDc3MCwiaGF0d2lkZXIiLDc3MCwiaGF0d2lkZXN0Iiw3NzAsImludGVyY2FsIiw3NDg4LCJpbnRlZ3JhbGRpc3BsYXkiLDg3NDcsImludGVncmFsdGV4dCIsODc0NywiaW50ZXJzZWN0aW9uZGlzcGxheSIsODg5OCwiaW50ZXJzZWN0aW9udGV4dCIsODg5OCwibG9naWNhbGFuZGRpc3BsYXkiLDg3NDMsImxvZ2ljYWxhbmR0ZXh0Iiw4NzQzLCJsb2dpY2Fsb3JkaXNwbGF5Iiw4NzQ0LCJsb2dpY2Fsb3J0ZXh0Iiw4NzQ0LCJwYXJlbmxlZnRCaWciLDQwLCJwYXJlbmxlZnRiaWciLDQwLCJwYXJlbmxlZnRCaWdnIiw0MCwicGFyZW5sZWZ0YmlnZyIsNDAsInBhcmVucmlnaHRCaWciLDQxLCJwYXJlbnJpZ2h0YmlnIiw0MSwicGFyZW5yaWdodEJpZ2ciLDQxLCJwYXJlbnJpZ2h0YmlnZyIsNDEsInByaW1lIiw4MjQyLCJwcm9kdWN0ZGlzcGxheSIsODcxOSwicHJvZHVjdHRleHQiLDg3MTksInJhZGljYWxiaWciLDg3MzAsInJhZGljYWxCaWciLDg3MzAsInJhZGljYWxCaWdnIiw4NzMwLCJyYWRpY2FsYmlnZyIsODczMCwicmFkaWNhbGJ0Iiw4NzMwLCJyYWRpY2FsdHAiLDg3MzAsInJhZGljYWx2ZXJ0ZXgiLDg3MzAsInNsYXNoYmlnIiw0Nywic2xhc2hCaWciLDQ3LCJzbGFzaEJpZ2ciLDQ3LCJzbGFzaGJpZ2ciLDQ3LCJzdW1tYXRpb25kaXNwbGF5Iiw4NzIxLCJzdW1tYXRpb250ZXh0Iiw4NzIxLCJ0aWxkZXdpZGUiLDczMiwidGlsZGV3aWRlciIsNzMyLCJ0aWxkZXdpZGVzdCIsNzMyLCJ1bmlvbmRpc3BsYXkiLDg4OTksInVuaW9ubXVsdGlkaXNwbGF5Iiw4ODQ2LCJ1bmlvbm11bHRpdGV4dCIsODg0NiwidW5pb25zcWRpc3BsYXkiLDg4NTIsInVuaW9uc3F0ZXh0Iiw4ODUyLCJ1bmlvbnRleHQiLDg4OTksInZleHRlbmRkb3VibGUiLDg3NDEsInZleHRlbmRzaW5nbGUiLDg3MzldfSkpLGk9KDAsci5nZXRBcnJheUxvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKCl7cmV0dXJuWyJzcGFjZSIsMzIsImExIiw5OTg1LCJhMiIsOTk4NiwiYTIwMiIsOTk4NywiYTMiLDk5ODgsImE0Iiw5NzQyLCJhNSIsOTk5MCwiYTExOSIsOTk5MSwiYTExOCIsOTk5MiwiYTExNyIsOTk5MywiYTExIiw5NzU1LCJhMTIiLDk3NTgsImExMyIsOTk5NiwiYTE0Iiw5OTk3LCJhMTUiLDk5OTgsImExNiIsOTk5OSwiYTEwNSIsMWU0LCJhMTciLDEwMDAxLCJhMTgiLDEwMDAyLCJhMTkiLDEwMDAzLCJhMjAiLDEwMDA0LCJhMjEiLDEwMDA1LCJhMjIiLDEwMDA2LCJhMjMiLDEwMDA3LCJhMjQiLDEwMDA4LCJhMjUiLDEwMDA5LCJhMjYiLDEwMDEwLCJhMjciLDEwMDExLCJhMjgiLDEwMDEyLCJhNiIsMTAwMTMsImE3IiwxMDAxNCwiYTgiLDEwMDE1LCJhOSIsMTAwMTYsImExMCIsMTAwMTcsImEyOSIsMTAwMTgsImEzMCIsMTAwMTksImEzMSIsMTAwMjAsImEzMiIsMTAwMjEsImEzMyIsMTAwMjIsImEzNCIsMTAwMjMsImEzNSIsOTczMywiYTM2IiwxMDAyNSwiYTM3IiwxMDAyNiwiYTM4IiwxMDAyNywiYTM5IiwxMDAyOCwiYTQwIiwxMDAyOSwiYTQxIiwxMDAzMCwiYTQyIiwxMDAzMSwiYTQzIiwxMDAzMiwiYTQ0IiwxMDAzMywiYTQ1IiwxMDAzNCwiYTQ2IiwxMDAzNSwiYTQ3IiwxMDAzNiwiYTQ4IiwxMDAzNywiYTQ5IiwxMDAzOCwiYTUwIiwxMDAzOSwiYTUxIiwxMDA0MCwiYTUyIiwxMDA0MSwiYTUzIiwxMDA0MiwiYTU0IiwxMDA0MywiYTU1IiwxMDA0NCwiYTU2IiwxMDA0NSwiYTU3IiwxMDA0NiwiYTU4IiwxMDA0NywiYTU5IiwxMDA0OCwiYTYwIiwxMDA0OSwiYTYxIiwxMDA1MCwiYTYyIiwxMDA1MSwiYTYzIiwxMDA1MiwiYTY0IiwxMDA1MywiYTY1IiwxMDA1NCwiYTY2IiwxMDA1NSwiYTY3IiwxMDA1NiwiYTY4IiwxMDA1NywiYTY5IiwxMDA1OCwiYTcwIiwxMDA1OSwiYTcxIiw5Njc5LCJhNzIiLDEwMDYxLCJhNzMiLDk2MzIsImE3NCIsMTAwNjMsImEyMDMiLDEwMDY0LCJhNzUiLDEwMDY1LCJhMjA0IiwxMDA2NiwiYTc2Iiw5NjUwLCJhNzciLDk2NjAsImE3OCIsOTY3MCwiYTc5IiwxMDA3MCwiYTgxIiw5Njg3LCJhODIiLDEwMDcyLCJhODMiLDEwMDczLCJhODQiLDEwMDc0LCJhOTciLDEwMDc1LCJhOTgiLDEwMDc2LCJhOTkiLDEwMDc3LCJhMTAwIiwxMDA3OCwiYTEwMSIsMTAwODEsImExMDIiLDEwMDgyLCJhMTAzIiwxMDA4MywiYTEwNCIsMTAwODQsImExMDYiLDEwMDg1LCJhMTA3IiwxMDA4NiwiYTEwOCIsMTAwODcsImExMTIiLDk4MjcsImExMTEiLDk4MzAsImExMTAiLDk4MjksImExMDkiLDk4MjQsImExMjAiLDkzMTIsImExMjEiLDkzMTMsImExMjIiLDkzMTQsImExMjMiLDkzMTUsImExMjQiLDkzMTYsImExMjUiLDkzMTcsImExMjYiLDkzMTgsImExMjciLDkzMTksImExMjgiLDkzMjAsImExMjkiLDkzMjEsImExMzAiLDEwMTAyLCJhMTMxIiwxMDEwMywiYTEzMiIsMTAxMDQsImExMzMiLDEwMTA1LCJhMTM0IiwxMDEwNiwiYTEzNSIsMTAxMDcsImExMzYiLDEwMTA4LCJhMTM3IiwxMDEwOSwiYTEzOCIsMTAxMTAsImExMzkiLDEwMTExLCJhMTQwIiwxMDExMiwiYTE0MSIsMTAxMTMsImExNDIiLDEwMTE0LCJhMTQzIiwxMDExNSwiYTE0NCIsMTAxMTYsImExNDUiLDEwMTE3LCJhMTQ2IiwxMDExOCwiYTE0NyIsMTAxMTksImExNDgiLDEwMTIwLCJhMTQ5IiwxMDEyMSwiYTE1MCIsMTAxMjIsImExNTEiLDEwMTIzLCJhMTUyIiwxMDEyNCwiYTE1MyIsMTAxMjUsImExNTQiLDEwMTI2LCJhMTU1IiwxMDEyNywiYTE1NiIsMTAxMjgsImExNTciLDEwMTI5LCJhMTU4IiwxMDEzMCwiYTE1OSIsMTAxMzEsImExNjAiLDEwMTMyLCJhMTYxIiw4NTk0LCJhMTYzIiw4NTk2LCJhMTY0Iiw4NTk3LCJhMTk2IiwxMDEzNiwiYTE2NSIsMTAxMzcsImExOTIiLDEwMTM4LCJhMTY2IiwxMDEzOSwiYTE2NyIsMTAxNDAsImExNjgiLDEwMTQxLCJhMTY5IiwxMDE0MiwiYTE3MCIsMTAxNDMsImExNzEiLDEwMTQ0LCJhMTcyIiwxMDE0NSwiYTE3MyIsMTAxNDYsImExNjIiLDEwMTQ3LCJhMTc0IiwxMDE0OCwiYTE3NSIsMTAxNDksImExNzYiLDEwMTUwLCJhMTc3IiwxMDE1MSwiYTE3OCIsMTAxNTIsImExNzkiLDEwMTUzLCJhMTkzIiwxMDE1NCwiYTE4MCIsMTAxNTUsImExOTkiLDEwMTU2LCJhMTgxIiwxMDE1NywiYTIwMCIsMTAxNTgsImExODIiLDEwMTU5LCJhMjAxIiwxMDE2MSwiYTE4MyIsMTAxNjIsImExODQiLDEwMTYzLCJhMTk3IiwxMDE2NCwiYTE4NSIsMTAxNjUsImExOTQiLDEwMTY2LCJhMTk4IiwxMDE2NywiYTE4NiIsMTAxNjgsImExOTUiLDEwMTY5LCJhMTg3IiwxMDE3MCwiYTE4OCIsMTAxNzEsImExODkiLDEwMTcyLCJhMTkwIiwxMDE3MywiYTE5MSIsMTAxNzQsImE4OSIsMTAwODgsImE5MCIsMTAwODksImE5MyIsMTAwOTAsImE5NCIsMTAwOTEsImE5MSIsMTAwOTIsImE5MiIsMTAwOTMsImEyMDUiLDEwMDk0LCJhODUiLDEwMDk1LCJhMjA2IiwxMDA5NiwiYTg2IiwxMDA5NywiYTg3IiwxMDA5OCwiYTg4IiwxMDA5OSwiYTk1IiwxMDEwMCwiYTk2IiwxMDEwMSwiLm5vdGRlZiIsMF19KSl9LChlLHQsYSk9PnthLnIodCk7YS5kKHQse2NsZWFyVW5pY29kZUNhY2hlczooKT0+Y2xlYXJVbmljb2RlQ2FjaGVzLGdldENoYXJVbmljb2RlQ2F0ZWdvcnk6KCk9PmdldENoYXJVbmljb2RlQ2F0ZWdvcnksZ2V0Tm9ybWFsaXplZFVuaWNvZGVzOigpPT5zLGdldFVuaWNvZGVGb3JHbHlwaDooKT0+Z2V0VW5pY29kZUZvckdseXBoLGdldFVuaWNvZGVSYW5nZUZvcjooKT0+Z2V0VW5pY29kZVJhbmdlRm9yLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5tYXBTcGVjaWFsVW5pY29kZVZhbHVlcyxyZXZlcnNlSWZSdGw6KCk9PnJldmVyc2VJZlJ0bH0pO3ZhciByPWEoNCk7Y29uc3Qgbj0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbNjM3MjFdPTE2OTtlWzYzMTkzXT0xNjk7ZVs2MzcyMF09MTc0O2VbNjMxOTRdPTE3NDtlWzYzNzIyXT04NDgyO2VbNjMxOTVdPTg0ODI7ZVs2MzcyOV09OTEyNztlWzYzNzMwXT05MTI4O2VbNjM3MzFdPTkxMjk7ZVs2Mzc0MF09OTEzMTtlWzYzNzQxXT05MTMyO2VbNjM3NDJdPTkxMzM7ZVs2MzcyNl09OTEyMTtlWzYzNzI3XT05MTIyO2VbNjM3MjhdPTkxMjM7ZVs2MzczN109OTEyNDtlWzYzNzM4XT05MTI1O2VbNjM3MzldPTkxMjY7ZVs2MzcyM109OTExNTtlWzYzNzI0XT05MTE2O2VbNjM3MjVdPTkxMTc7ZVs2MzczNF09OTExODtlWzYzNzM1XT05MTE5O2VbNjM3MzZdPTkxMjB9KSk7ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9uKClbZV18fGU6MTczPT09ZT80NTplfWZ1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBpPVt7YmVnaW46MCxlbmQ6MTI3fSx7YmVnaW46MTI4LGVuZDoyNTV9LHtiZWdpbjoyNTYsZW5kOjM4M30se2JlZ2luOjM4NCxlbmQ6NTkxfSx7YmVnaW46NTkyLGVuZDo2ODd9LHtiZWdpbjo2ODgsZW5kOjc2N30se2JlZ2luOjc2OCxlbmQ6ODc5fSx7YmVnaW46ODgwLGVuZDoxMDIzfSx7YmVnaW46MTEzOTIsZW5kOjExNTE5fSx7YmVnaW46MTAyNCxlbmQ6MTI3OX0se2JlZ2luOjEzMjgsZW5kOjE0MjN9LHtiZWdpbjoxNDI0LGVuZDoxNTM1fSx7YmVnaW46NDIyNDAsZW5kOjQyNTU5fSx7YmVnaW46MTUzNixlbmQ6MTc5MX0se2JlZ2luOjE5ODQsZW5kOjIwNDd9LHtiZWdpbjoyMzA0LGVuZDoyNDMxfSx7YmVnaW46MjQzMixlbmQ6MjU1OX0se2JlZ2luOjI1NjAsZW5kOjI2ODd9LHtiZWdpbjoyNjg4LGVuZDoyODE1fSx7YmVnaW46MjgxNixlbmQ6Mjk0M30se2JlZ2luOjI5NDQsZW5kOjMwNzF9LHtiZWdpbjozMDcyLGVuZDozMTk5fSx7YmVnaW46MzIwMCxlbmQ6MzMyN30se2JlZ2luOjMzMjgsZW5kOjM0NTV9LHtiZWdpbjozNTg0LGVuZDozNzExfSx7YmVnaW46MzcxMixlbmQ6MzgzOX0se2JlZ2luOjQyNTYsZW5kOjQzNTF9LHtiZWdpbjo2OTEyLGVuZDo3MDM5fSx7YmVnaW46NDM1MixlbmQ6NDYwN30se2JlZ2luOjc2ODAsZW5kOjc5MzV9LHtiZWdpbjo3OTM2LGVuZDo4MTkxfSx7YmVnaW46ODE5MixlbmQ6ODMwM30se2JlZ2luOjgzMDQsZW5kOjgzNTF9LHtiZWdpbjo4MzUyLGVuZDo4Mzk5fSx7YmVnaW46ODQwMCxlbmQ6ODQ0N30se2JlZ2luOjg0NDgsZW5kOjg1Mjd9LHtiZWdpbjo4NTI4LGVuZDo4NTkxfSx7YmVnaW46ODU5MixlbmQ6ODcwM30se2JlZ2luOjg3MDQsZW5kOjg5NTl9LHtiZWdpbjo4OTYwLGVuZDo5MjE1fSx7YmVnaW46OTIxNixlbmQ6OTI3OX0se2JlZ2luOjkyODAsZW5kOjkzMTF9LHtiZWdpbjo5MzEyLGVuZDo5NDcxfSx7YmVnaW46OTQ3MixlbmQ6OTU5OX0se2JlZ2luOjk2MDAsZW5kOjk2MzF9LHtiZWdpbjo5NjMyLGVuZDo5NzI3fSx7YmVnaW46OTcyOCxlbmQ6OTk4M30se2JlZ2luOjk5ODQsZW5kOjEwMTc1fSx7YmVnaW46MTIyODgsZW5kOjEyMzUxfSx7YmVnaW46MTIzNTIsZW5kOjEyNDQ3fSx7YmVnaW46MTI0NDgsZW5kOjEyNTQzfSx7YmVnaW46MTI1NDQsZW5kOjEyNTkxfSx7YmVnaW46MTI1OTIsZW5kOjEyNjg3fSx7YmVnaW46NDMwNzIsZW5kOjQzMTM1fSx7YmVnaW46MTI4MDAsZW5kOjEzMDU1fSx7YmVnaW46MTMwNTYsZW5kOjEzMzExfSx7YmVnaW46NDQwMzIsZW5kOjU1MjE1fSx7YmVnaW46NTUyOTYsZW5kOjU3MzQzfSx7YmVnaW46Njc4NDAsZW5kOjY3ODcxfSx7YmVnaW46MTk5NjgsZW5kOjQwOTU5fSx7YmVnaW46NTczNDQsZW5kOjYzNzQzfSx7YmVnaW46MTI3MzYsZW5kOjEyNzgzfSx7YmVnaW46NjQyNTYsZW5kOjY0MzM1fSx7YmVnaW46NjQzMzYsZW5kOjY1MDIzfSx7YmVnaW46NjUwNTYsZW5kOjY1MDcxfSx7YmVnaW46NjUwNDAsZW5kOjY1MDU1fSx7YmVnaW46NjUxMDQsZW5kOjY1MTM1fSx7YmVnaW46NjUxMzYsZW5kOjY1Mjc5fSx7YmVnaW46NjUyODAsZW5kOjY1NTE5fSx7YmVnaW46NjU1MjAsZW5kOjY1NTM1fSx7YmVnaW46Mzg0MCxlbmQ6NDA5NX0se2JlZ2luOjE3OTIsZW5kOjE4NzF9LHtiZWdpbjoxOTIwLGVuZDoxOTgzfSx7YmVnaW46MzQ1NixlbmQ6MzU4M30se2JlZ2luOjQwOTYsZW5kOjQyNTV9LHtiZWdpbjo0NjA4LGVuZDo0OTkxfSx7YmVnaW46NTAyNCxlbmQ6NTExOX0se2JlZ2luOjUxMjAsZW5kOjU3NTl9LHtiZWdpbjo1NzYwLGVuZDo1NzkxfSx7YmVnaW46NTc5MixlbmQ6NTg4N30se2JlZ2luOjYwMTYsZW5kOjYxNDN9LHtiZWdpbjo2MTQ0LGVuZDo2MzE5fSx7YmVnaW46MTAyNDAsZW5kOjEwNDk1fSx7YmVnaW46NDA5NjAsZW5kOjQyMTI3fSx7YmVnaW46NTg4OCxlbmQ6NTkxOX0se2JlZ2luOjY2MzA0LGVuZDo2NjM1MX0se2JlZ2luOjY2MzUyLGVuZDo2NjM4M30se2JlZ2luOjY2NTYwLGVuZDo2NjYzOX0se2JlZ2luOjExODc4NCxlbmQ6MTE5MDM5fSx7YmVnaW46MTE5ODA4LGVuZDoxMjA4MzF9LHtiZWdpbjoxMDQ0NDgwLGVuZDoxMDQ4NTczfSx7YmVnaW46NjUwMjQsZW5kOjY1MDM5fSx7YmVnaW46OTE3NTA0LGVuZDo5MTc2MzF9LHtiZWdpbjo2NDAwLGVuZDo2NDc5fSx7YmVnaW46NjQ4MCxlbmQ6NjUyN30se2JlZ2luOjY1MjgsZW5kOjY2MjN9LHtiZWdpbjo2NjU2LGVuZDo2Njg3fSx7YmVnaW46MTEyNjQsZW5kOjExMzU5fSx7YmVnaW46MTE1NjgsZW5kOjExNjQ3fSx7YmVnaW46MTk5MDQsZW5kOjE5OTY3fSx7YmVnaW46NDMwMDgsZW5kOjQzMDU1fSx7YmVnaW46NjU1MzYsZW5kOjY1NjYzfSx7YmVnaW46NjU4NTYsZW5kOjY1OTM1fSx7YmVnaW46NjY0MzIsZW5kOjY2NDYzfSx7YmVnaW46NjY0NjQsZW5kOjY2NTI3fSx7YmVnaW46NjY2NDAsZW5kOjY2Njg3fSx7YmVnaW46NjY2ODgsZW5kOjY2NzM1fSx7YmVnaW46Njc1ODQsZW5kOjY3NjQ3fSx7YmVnaW46NjgwOTYsZW5kOjY4MTkxfSx7YmVnaW46MTE5NTUyLGVuZDoxMTk2NDd9LHtiZWdpbjo3MzcyOCxlbmQ6NzQ3NTF9LHtiZWdpbjoxMTk2NDgsZW5kOjExOTY3OX0se2JlZ2luOjcwNDAsZW5kOjcxMDN9LHtiZWdpbjo3MTY4LGVuZDo3MjQ3fSx7YmVnaW46NzI0OCxlbmQ6NzI5NX0se2JlZ2luOjQzMTM2LGVuZDo0MzIzMX0se2JlZ2luOjQzMjY0LGVuZDo0MzMxMX0se2JlZ2luOjQzMzEyLGVuZDo0MzM1OX0se2JlZ2luOjQzNTIwLGVuZDo0MzYxNX0se2JlZ2luOjY1OTM2LGVuZDo2NTk5OX0se2JlZ2luOjY2ZTMsZW5kOjY2MDQ3fSx7YmVnaW46NjYyMDgsZW5kOjY2MjcxfSx7YmVnaW46MTI3MDI0LGVuZDoxMjcxMzV9XTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSl7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWlbdF07aWYoZT49YS5iZWdpbiYmZTxhLmVuZClyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBzPSgwLHIuZ2V0QXJyYXlMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbigpe3JldHVyblsiwqgiLCIgzIgiLCLCryIsIiDMhCIsIsK0IiwiIMyBIiwiwrUiLCLOvCIsIsK4IiwiIMynIiwixLIiLCJJSiIsIsSzIiwiaWoiLCLEvyIsIkzCtyIsIsWAIiwibMK3IiwixYkiLCLKvG4iLCLFvyIsInMiLCLHhCIsIkTFvSIsIseFIiwiRMW+Iiwix4YiLCJkxb4iLCLHhyIsIkxKIiwix4giLCJMaiIsIseJIiwibGoiLCLHiiIsIk5KIiwix4siLCJOaiIsIseMIiwibmoiLCLHsSIsIkRaIiwix7IiLCJEeiIsIsezIiwiZHoiLCLLmCIsIiDMhiIsIsuZIiwiIMyHIiwiy5oiLCIgzIoiLCLLmyIsIiDMqCIsIsucIiwiIMyDIiwiy50iLCIgzIsiLCLNuiIsIiDNhSIsIs6EIiwiIMyBIiwiz5AiLCLOsiIsIs+RIiwizrgiLCLPkiIsIs6lIiwiz5UiLCLPhiIsIs+WIiwiz4AiLCLPsCIsIs66Iiwiz7EiLCLPgSIsIs+yIiwiz4IiLCLPtCIsIs6YIiwiz7UiLCLOtSIsIs+5IiwizqMiLCLWhyIsItWl1oIiLCLZtSIsItin2bQiLCLZtiIsItmI2bQiLCLZtyIsItuH2bQiLCLZuCIsItmK2bQiLCLguLMiLCLguY3guLIiLCLgurMiLCLgu43gurIiLCLgu5wiLCLguqvgupkiLCLgu50iLCLguqvguqEiLCLgvbciLCLgvrLgvoEiLCLgvbkiLCLgvrPgvoEiLCLhupoiLCJhyr4iLCLhvr0iLCIgzJMiLCLhvr8iLCIgzJMiLCLhv4AiLCIgzYIiLCLhv74iLCIgzJQiLCLigIIiLCIgIiwi4oCDIiwiICIsIuKAhCIsIiAiLCLigIUiLCIgIiwi4oCGIiwiICIsIuKAiCIsIiAiLCLigIkiLCIgIiwi4oCKIiwiICIsIuKAlyIsIiDMsyIsIuKApCIsIi4iLCLigKUiLCIuLiIsIuKApiIsIi4uLiIsIuKAsyIsIuKAsuKAsiIsIuKAtCIsIuKAsuKAsuKAsiIsIuKAtiIsIuKAteKAtSIsIuKAtyIsIuKAteKAteKAtSIsIuKAvCIsIiEhIiwi4oC+IiwiIMyFIiwi4oGHIiwiPz8iLCLigYgiLCI/ISIsIuKBiSIsIiE/Iiwi4oGXIiwi4oCy4oCy4oCy4oCyIiwi4oGfIiwiICIsIuKCqCIsIlJzIiwi4oSAIiwiYS9jIiwi4oSBIiwiYS9zIiwi4oSDIiwiwrBDIiwi4oSFIiwiYy9vIiwi4oSGIiwiYy91Iiwi4oSHIiwixpAiLCLihIkiLCLCsEYiLCLihJYiLCJObyIsIuKEoSIsIlRFTCIsIuKEtSIsIteQIiwi4oS2Iiwi15EiLCLihLciLCLXkiIsIuKEuCIsIteTIiwi4oS7IiwiRkFYIiwi4oWgIiwiSSIsIuKFoSIsIklJIiwi4oWiIiwiSUlJIiwi4oWjIiwiSVYiLCLihaQiLCJWIiwi4oWlIiwiVkkiLCLihaYiLCJWSUkiLCLihaciLCJWSUlJIiwi4oWoIiwiSVgiLCLihakiLCJYIiwi4oWqIiwiWEkiLCLihasiLCJYSUkiLCLihawiLCJMIiwi4oWtIiwiQyIsIuKFriIsIkQiLCLiha8iLCJNIiwi4oWwIiwiaSIsIuKFsSIsImlpIiwi4oWyIiwiaWlpIiwi4oWzIiwiaXYiLCLihbQiLCJ2Iiwi4oW1IiwidmkiLCLihbYiLCJ2aWkiLCLihbciLCJ2aWlpIiwi4oW4IiwiaXgiLCLihbkiLCJ4Iiwi4oW6IiwieGkiLCLihbsiLCJ4aWkiLCLihbwiLCJsIiwi4oW9IiwiYyIsIuKFviIsImQiLCLihb8iLCJtIiwi4oisIiwi4oir4oirIiwi4oitIiwi4oir4oir4oirIiwi4oivIiwi4oiu4oiuIiwi4oiwIiwi4oiu4oiu4oiuIiwi4pG0IiwiKDEpIiwi4pG1IiwiKDIpIiwi4pG2IiwiKDMpIiwi4pG3IiwiKDQpIiwi4pG4IiwiKDUpIiwi4pG5IiwiKDYpIiwi4pG6IiwiKDcpIiwi4pG7IiwiKDgpIiwi4pG8IiwiKDkpIiwi4pG9IiwiKDEwKSIsIuKRviIsIigxMSkiLCLikb8iLCIoMTIpIiwi4pKAIiwiKDEzKSIsIuKSgSIsIigxNCkiLCLikoIiLCIoMTUpIiwi4pKDIiwiKDE2KSIsIuKShCIsIigxNykiLCLikoUiLCIoMTgpIiwi4pKGIiwiKDE5KSIsIuKShyIsIigyMCkiLCLikogiLCIxLiIsIuKSiSIsIjIuIiwi4pKKIiwiMy4iLCLikosiLCI0LiIsIuKSjCIsIjUuIiwi4pKNIiwiNi4iLCLiko4iLCI3LiIsIuKSjyIsIjguIiwi4pKQIiwiOS4iLCLikpEiLCIxMC4iLCLikpIiLCIxMS4iLCLikpMiLCIxMi4iLCLikpQiLCIxMy4iLCLikpUiLCIxNC4iLCLikpYiLCIxNS4iLCLikpciLCIxNi4iLCLikpgiLCIxNy4iLCLikpkiLCIxOC4iLCLikpoiLCIxOS4iLCLikpsiLCIyMC4iLCLikpwiLCIoYSkiLCLikp0iLCIoYikiLCLikp4iLCIoYykiLCLikp8iLCIoZCkiLCLikqAiLCIoZSkiLCLikqEiLCIoZikiLCLikqIiLCIoZykiLCLikqMiLCIoaCkiLCLikqQiLCIoaSkiLCLikqUiLCIoaikiLCLikqYiLCIoaykiLCLikqciLCIobCkiLCLikqgiLCIobSkiLCLikqkiLCIobikiLCLikqoiLCIobykiLCLikqsiLCIocCkiLCLikqwiLCIocSkiLCLikq0iLCIocikiLCLikq4iLCIocykiLCLikq8iLCIodCkiLCLikrAiLCIodSkiLCLikrEiLCIodikiLCLikrIiLCIodykiLCLikrMiLCIoeCkiLCLikrQiLCIoeSkiLCLikrUiLCIoeikiLCLiqIwiLCLiiKviiKviiKviiKsiLCLiqbQiLCI6Oj0iLCLiqbUiLCI9PSIsIuKptiIsIj09PSIsIuK6nyIsIuavjSIsIuK7syIsIum+nyIsIuK8gCIsIuS4gCIsIuK8gSIsIuS4qCIsIuK8giIsIuS4tiIsIuK8gyIsIuS4vyIsIuK8hCIsIuS5mSIsIuK8hSIsIuS6hSIsIuK8hiIsIuS6jCIsIuK8hyIsIuS6oCIsIuK8iCIsIuS6uiIsIuK8iSIsIuWEvyIsIuK8iiIsIuWFpSIsIuK8iyIsIuWFqyIsIuK8jCIsIuWGgiIsIuK8jSIsIuWGliIsIuK8jiIsIuWGqyIsIuK8jyIsIuWHoCIsIuK8kCIsIuWHtSIsIuK8kSIsIuWIgCIsIuK8kiIsIuWKmyIsIuK8kyIsIuWLuSIsIuK8lCIsIuWMlSIsIuK8lSIsIuWMmiIsIuK8liIsIuWMuCIsIuK8lyIsIuWNgSIsIuK8mCIsIuWNnCIsIuK8mSIsIuWNqSIsIuK8miIsIuWOgiIsIuK8myIsIuWOtiIsIuK8nCIsIuWPiCIsIuK8nSIsIuWPoyIsIuK8niIsIuWblyIsIuK8nyIsIuWcnyIsIuK8oCIsIuWjqyIsIuK8oSIsIuWkgiIsIuK8oiIsIuWkiiIsIuK8oyIsIuWklSIsIuK8pCIsIuWkpyIsIuK8pSIsIuWlsyIsIuK8piIsIuWtkCIsIuK8pyIsIuWugCIsIuK8qCIsIuWvuCIsIuK8qSIsIuWwjyIsIuK8qiIsIuWwoiIsIuK8qyIsIuWwuCIsIuK8rCIsIuWxriIsIuK8rSIsIuWxsSIsIuK8riIsIuW3myIsIuK8ryIsIuW3pSIsIuK8sCIsIuW3sSIsIuK8sSIsIuW3viIsIuK8siIsIuW5siIsIuK8syIsIuW5uiIsIuK8tCIsIuW5vyIsIuK8tSIsIuW7tCIsIuK8tiIsIuW7viIsIuK8tyIsIuW8iyIsIuK8uCIsIuW8kyIsIuK8uSIsIuW9kCIsIuK8uiIsIuW9oSIsIuK8uyIsIuW9syIsIuK8vCIsIuW/gyIsIuK8vSIsIuaIiCIsIuK8viIsIuaItiIsIuK8vyIsIuaJiyIsIuK9gCIsIuaUryIsIuK9gSIsIuaUtCIsIuK9giIsIuaWhyIsIuK9gyIsIuaWlyIsIuK9hCIsIuaWpCIsIuK9hSIsIuaWuSIsIuK9hiIsIuaXoCIsIuK9hyIsIuaXpSIsIuK9iCIsIuabsCIsIuK9iSIsIuaciCIsIuK9iiIsIuacqCIsIuK9iyIsIuasoCIsIuK9jCIsIuatoiIsIuK9jSIsIuatuSIsIuK9jiIsIuausyIsIuK9jyIsIuaviyIsIuK9kCIsIuavlCIsIuK9kSIsIuavmyIsIuK9kiIsIuawjyIsIuK9kyIsIuawlCIsIuK9lCIsIuawtCIsIuK9lSIsIueBqyIsIuK9liIsIueIqiIsIuK9lyIsIueItiIsIuK9mCIsIueIuyIsIuK9mSIsIueIvyIsIuK9miIsIueJhyIsIuK9myIsIueJmSIsIuK9nCIsIueJmyIsIuK9nSIsIueKrCIsIuK9niIsIueOhCIsIuK9nyIsIueOiSIsIuK9oCIsIueTnCIsIuK9oSIsIueTpiIsIuK9oiIsIueUmCIsIuK9oyIsIueUnyIsIuK9pCIsIueUqCIsIuK9pSIsIueUsCIsIuK9piIsIueWiyIsIuK9pyIsIueWkiIsIuK9qCIsIueZtiIsIuK9qSIsIueZvSIsIuK9qiIsIueariIsIuK9qyIsIueavyIsIuK9rCIsIuebriIsIuK9rSIsIuefmyIsIuK9riIsIuefoiIsIuK9ryIsIuefsyIsIuK9sCIsIuekuiIsIuK9sSIsIuemuCIsIuK9siIsIuemviIsIuK9syIsIueptCIsIuK9tCIsIueriyIsIuK9tSIsIueruSIsIuK9tiIsIuexsyIsIuK9tyIsIuezuCIsIuK9uCIsIue8tiIsIuK9uSIsIue9kSIsIuK9uiIsIue+iiIsIuK9uyIsIue+vSIsIuK9vCIsIuiAgSIsIuK9vSIsIuiAjCIsIuK9viIsIuiAkiIsIuK9vyIsIuiAsyIsIuK+gCIsIuiBvyIsIuK+gSIsIuiCiSIsIuK+giIsIuiHoyIsIuK+gyIsIuiHqiIsIuK+hCIsIuiHsyIsIuK+hSIsIuiHvCIsIuK+hiIsIuiIjCIsIuK+hyIsIuiImyIsIuK+iCIsIuiInyIsIuK+iSIsIuiJriIsIuK+iiIsIuiJsiIsIuK+iyIsIuiJuCIsIuK+jCIsIuiZjSIsIuK+jSIsIuiZqyIsIuK+jiIsIuihgCIsIuK+jyIsIuihjCIsIuK+kCIsIuihoyIsIuK+kSIsIuilviIsIuK+kiIsIuimiyIsIuK+kyIsIuinkiIsIuK+lCIsIuiogCIsIuK+lSIsIuiwtyIsIuK+liIsIuixhiIsIuK+lyIsIuixlSIsIuK+mCIsIuixuCIsIuK+mSIsIuiynSIsIuK+miIsIui1pCIsIuK+myIsIui1sCIsIuK+nCIsIui2syIsIuK+nSIsIui6qyIsIuK+niIsIui7iiIsIuK+nyIsIui+myIsIuK+oCIsIui+sCIsIuK+oSIsIui+tSIsIuK+oiIsIumCkSIsIuK+oyIsIumFiSIsIuK+pCIsIumHhiIsIuK+pSIsIumHjCIsIuK+piIsIumHkSIsIuK+pyIsIumVtyIsIuK+qCIsIumWgCIsIuK+qSIsIumYnCIsIuK+qiIsIumatiIsIuK+qyIsIumauSIsIuK+rCIsIumbqCIsIuK+rSIsIumdkSIsIuK+riIsIumdniIsIuK+ryIsIumdoiIsIuK+sCIsIumdqSIsIuK+sSIsIumfiyIsIuK+siIsIumfrSIsIuK+syIsIumfsyIsIuK+tCIsIumggSIsIuK+tSIsIumiqCIsIuK+tiIsIumjmyIsIuK+tyIsIumjnyIsIuK+uCIsIummliIsIuK+uSIsIummmSIsIuK+uiIsIummrCIsIuK+uyIsIumqqCIsIuK+vCIsIumrmCIsIuK+vSIsIumrnyIsIuK+viIsIumspSIsIuK+vyIsIumsryIsIuK/gCIsIumssiIsIuK/gSIsIumsvCIsIuK/giIsIumtmiIsIuK/gyIsIumzpSIsIuK/hCIsIum5tSIsIuK/hSIsIum5vyIsIuK/hiIsIum6pSIsIuK/hyIsIum6uyIsIuK/iCIsIum7gyIsIuK/iSIsIum7jSIsIuK/iiIsIum7kSIsIuK/iyIsIum7uSIsIuK/jCIsIum7vSIsIuK/jSIsIum8jiIsIuK/jiIsIum8kyIsIuK/jyIsIum8oCIsIuK/kCIsIum8uyIsIuK/kSIsIum9iiIsIuK/kiIsIum9kiIsIuK/kyIsIum+jSIsIuK/lCIsIum+nCIsIuK/lSIsIum+oCIsIuOAtiIsIuOAkiIsIuOAuCIsIuWNgSIsIuOAuSIsIuWNhCIsIuOAuiIsIuWNhSIsIuOCmyIsIiDjgpkiLCLjgpwiLCIg44KaIiwi44SxIiwi4YSAIiwi44SyIiwi4YSBIiwi44SzIiwi4YaqIiwi44S0Iiwi4YSCIiwi44S1Iiwi4YasIiwi44S2Iiwi4YatIiwi44S3Iiwi4YSDIiwi44S4Iiwi4YSEIiwi44S5Iiwi4YSFIiwi44S6Iiwi4YawIiwi44S7Iiwi4YaxIiwi44S8Iiwi4YayIiwi44S9Iiwi4YazIiwi44S+Iiwi4Ya0Iiwi44S/Iiwi4Ya1Iiwi44WAIiwi4YSaIiwi44WBIiwi4YSGIiwi44WCIiwi4YSHIiwi44WDIiwi4YSIIiwi44WEIiwi4YShIiwi44WFIiwi4YSJIiwi44WGIiwi4YSKIiwi44WHIiwi4YSLIiwi44WIIiwi4YSMIiwi44WJIiwi4YSNIiwi44WKIiwi4YSOIiwi44WLIiwi4YSPIiwi44WMIiwi4YSQIiwi44WNIiwi4YSRIiwi44WOIiwi4YSSIiwi44WPIiwi4YWhIiwi44WQIiwi4YWiIiwi44WRIiwi4YWjIiwi44WSIiwi4YWkIiwi44WTIiwi4YWlIiwi44WUIiwi4YWmIiwi44WVIiwi4YWnIiwi44WWIiwi4YWoIiwi44WXIiwi4YWpIiwi44WYIiwi4YWqIiwi44WZIiwi4YWrIiwi44WaIiwi4YWsIiwi44WbIiwi4YWtIiwi44WcIiwi4YWuIiwi44WdIiwi4YWvIiwi44WeIiwi4YWwIiwi44WfIiwi4YWxIiwi44WgIiwi4YWyIiwi44WhIiwi4YWzIiwi44WiIiwi4YW0Iiwi44WjIiwi4YW1Iiwi44WkIiwi4YWgIiwi44WlIiwi4YSUIiwi44WmIiwi4YSVIiwi44WnIiwi4YeHIiwi44WoIiwi4YeIIiwi44WpIiwi4YeMIiwi44WqIiwi4YeOIiwi44WrIiwi4YeTIiwi44WsIiwi4YeXIiwi44WtIiwi4YeZIiwi44WuIiwi4YScIiwi44WvIiwi4YedIiwi44WwIiwi4YefIiwi44WxIiwi4YSdIiwi44WyIiwi4YSeIiwi44WzIiwi4YSgIiwi44W0Iiwi4YSiIiwi44W1Iiwi4YSjIiwi44W2Iiwi4YSnIiwi44W3Iiwi4YSpIiwi44W4Iiwi4YSrIiwi44W5Iiwi4YSsIiwi44W6Iiwi4YStIiwi44W7Iiwi4YSuIiwi44W8Iiwi4YSvIiwi44W9Iiwi4YSyIiwi44W+Iiwi4YS2Iiwi44W/Iiwi4YWAIiwi44aAIiwi4YWHIiwi44aBIiwi4YWMIiwi44aCIiwi4YexIiwi44aDIiwi4YeyIiwi44aEIiwi4YWXIiwi44aFIiwi4YWYIiwi44aGIiwi4YWZIiwi44aHIiwi4YaEIiwi44aIIiwi4YaFIiwi44aJIiwi4YaIIiwi44aKIiwi4YaRIiwi44aLIiwi4YaSIiwi44aMIiwi4YaUIiwi44aNIiwi4YaeIiwi44aOIiwi4YahIiwi44iAIiwiKOGEgCkiLCLjiIEiLCIo4YSCKSIsIuOIgiIsIijhhIMpIiwi44iDIiwiKOGEhSkiLCLjiIQiLCIo4YSGKSIsIuOIhSIsIijhhIcpIiwi44iGIiwiKOGEiSkiLCLjiIciLCIo4YSLKSIsIuOIiCIsIijhhIwpIiwi44iJIiwiKOGEjikiLCLjiIoiLCIo4YSPKSIsIuOIiyIsIijhhJApIiwi44iMIiwiKOGEkSkiLCLjiI0iLCIo4YSSKSIsIuOIjiIsIijhhIDhhaEpIiwi44iPIiwiKOGEguGFoSkiLCLjiJAiLCIo4YSD4YWhKSIsIuOIkSIsIijhhIXhhaEpIiwi44iSIiwiKOGEhuGFoSkiLCLjiJMiLCIo4YSH4YWhKSIsIuOIlCIsIijhhInhhaEpIiwi44iVIiwiKOGEi+GFoSkiLCLjiJYiLCIo4YSM4YWhKSIsIuOIlyIsIijhhI7hhaEpIiwi44iYIiwiKOGEj+GFoSkiLCLjiJkiLCIo4YSQ4YWhKSIsIuOImiIsIijhhJHhhaEpIiwi44ibIiwiKOGEkuGFoSkiLCLjiJwiLCIo4YSM4YWuKSIsIuOInSIsIijhhIvhhanhhIzhhaXhhqspIiwi44ieIiwiKOGEi+GFqeGEkuGFrikiLCLjiKAiLCIo5LiAKSIsIuOIoSIsIijkuowpIiwi44iiIiwiKOS4iSkiLCLjiKMiLCIo5ZubKSIsIuOIpCIsIijkupQpIiwi44ilIiwiKOWFrSkiLCLjiKYiLCIo5LiDKSIsIuOIpyIsIijlhaspIiwi44ioIiwiKOS5nSkiLCLjiKkiLCIo5Y2BKSIsIuOIqiIsIijmnIgpIiwi44irIiwiKOeBqykiLCLjiKwiLCIo5rC0KSIsIuOIrSIsIijmnKgpIiwi44iuIiwiKOmHkSkiLCLjiK8iLCIo5ZyfKSIsIuOIsCIsIijml6UpIiwi44ixIiwiKOagqikiLCLjiLIiLCIo5pyJKSIsIuOIsyIsIijnpL4pIiwi44i0IiwiKOWQjSkiLCLjiLUiLCIo54m5KSIsIuOItiIsIijosqEpIiwi44i3IiwiKOelnSkiLCLjiLgiLCIo5Yq0KSIsIuOIuSIsIijku6MpIiwi44i6IiwiKOWRvCkiLCLjiLsiLCIo5a2mKSIsIuOIvCIsIijnm6MpIiwi44i9IiwiKOS8gSkiLCLjiL4iLCIo6LOHKSIsIuOIvyIsIijljZQpIiwi44mAIiwiKOelrSkiLCLjiYEiLCIo5LyRKSIsIuOJgiIsIijoh6opIiwi44mDIiwiKOiHsykiLCLji4AiLCIx5pyIIiwi44uBIiwiMuaciCIsIuOLgiIsIjPmnIgiLCLji4MiLCI05pyIIiwi44uEIiwiNeaciCIsIuOLhSIsIjbmnIgiLCLji4YiLCI35pyIIiwi44uHIiwiOOaciCIsIuOLiCIsIjnmnIgiLCLji4kiLCIxMOaciCIsIuOLiiIsIjEx5pyIIiwi44uLIiwiMTLmnIgiLCLjjZgiLCIw54K5Iiwi442ZIiwiMeeCuSIsIuONmiIsIjLngrkiLCLjjZsiLCIz54K5Iiwi442cIiwiNOeCuSIsIuONnSIsIjXngrkiLCLjjZ4iLCI254K5Iiwi442fIiwiN+eCuSIsIuONoCIsIjjngrkiLCLjjaEiLCI554K5Iiwi442iIiwiMTDngrkiLCLjjaMiLCIxMeeCuSIsIuONpCIsIjEy54K5Iiwi442lIiwiMTPngrkiLCLjjaYiLCIxNOeCuSIsIuONpyIsIjE154K5Iiwi442oIiwiMTbngrkiLCLjjakiLCIxN+eCuSIsIuONqiIsIjE454K5Iiwi442rIiwiMTnngrkiLCLjjawiLCIyMOeCuSIsIuONrSIsIjIx54K5Iiwi442uIiwiMjLngrkiLCLjja8iLCIyM+eCuSIsIuONsCIsIjI054K5Iiwi44+gIiwiMeaXpSIsIuOPoSIsIjLml6UiLCLjj6IiLCIz5pelIiwi44+jIiwiNOaXpSIsIuOPpCIsIjXml6UiLCLjj6UiLCI25pelIiwi44+mIiwiN+aXpSIsIuOPpyIsIjjml6UiLCLjj6giLCI55pelIiwi44+pIiwiMTDml6UiLCLjj6oiLCIxMeaXpSIsIuOPqyIsIjEy5pelIiwi44+sIiwiMTPml6UiLCLjj60iLCIxNOaXpSIsIuOPriIsIjE15pelIiwi44+vIiwiMTbml6UiLCLjj7AiLCIxN+aXpSIsIuOPsSIsIjE45pelIiwi44+yIiwiMTnml6UiLCLjj7MiLCIyMOaXpSIsIuOPtCIsIjIx5pelIiwi44+1IiwiMjLml6UiLCLjj7YiLCIyM+aXpSIsIuOPtyIsIjI05pelIiwi44+4IiwiMjXml6UiLCLjj7kiLCIyNuaXpSIsIuOPuiIsIjI35pelIiwi44+7IiwiMjjml6UiLCLjj7wiLCIyOeaXpSIsIuOPvSIsIjMw5pelIiwi44++IiwiMzHml6UiLCLvrIAiLCJmZiIsIu+sgSIsImZpIiwi76yCIiwiZmwiLCLvrIMiLCJmZmkiLCLvrIQiLCJmZmwiLCLvrIUiLCLFv3QiLCLvrIYiLCJzdCIsIu+skyIsItW01bYiLCLvrJQiLCLVtNWlIiwi76yVIiwi1bTVqyIsIu+sliIsItW+1bYiLCLvrJciLCLVtNWtIiwi762PIiwi15DXnCIsIu+tkCIsItmxIiwi762RIiwi2bEiLCLvrZIiLCLZuyIsIu+tkyIsItm7Iiwi762UIiwi2bsiLCLvrZUiLCLZuyIsIu+tliIsItm+Iiwi762XIiwi2b4iLCLvrZgiLCLZviIsIu+tmSIsItm+Iiwi762aIiwi2oAiLCLvrZsiLCLagCIsIu+tnCIsItqAIiwi762dIiwi2oAiLCLvrZ4iLCLZuiIsIu+tnyIsItm6Iiwi762gIiwi2boiLCLvraEiLCLZuiIsIu+toiIsItm/Iiwi762jIiwi2b8iLCLvraQiLCLZvyIsIu+tpSIsItm/Iiwi762mIiwi2bkiLCLvraciLCLZuSIsIu+tqCIsItm5Iiwi762pIiwi2bkiLCLvraoiLCLapCIsIu+tqyIsItqkIiwi762sIiwi2qQiLCLvra0iLCLapCIsIu+triIsItqmIiwi762vIiwi2qYiLCLvrbAiLCLapiIsIu+tsSIsItqmIiwi762yIiwi2oQiLCLvrbMiLCLahCIsIu+ttCIsItqEIiwi7621Iiwi2oQiLCLvrbYiLCLagyIsIu+ttyIsItqDIiwi7624Iiwi2oMiLCLvrbkiLCLagyIsIu+tuiIsItqGIiwi7627Iiwi2oYiLCLvrbwiLCLahiIsIu+tvSIsItqGIiwi762+Iiwi2ociLCLvrb8iLCLahyIsIu+ugCIsItqHIiwi766BIiwi2ociLCLvroIiLCLajSIsIu+ugyIsItqNIiwi766EIiwi2owiLCLvroUiLCLajCIsIu+uhiIsItqOIiwi766HIiwi2o4iLCLvrogiLCLaiCIsIu+uiSIsItqIIiwi766KIiwi2pgiLCLvrosiLCLamCIsIu+ujCIsItqRIiwi766NIiwi2pEiLCLvro4iLCLaqSIsIu+ujyIsItqpIiwi766QIiwi2qkiLCLvrpEiLCLaqSIsIu+ukiIsItqvIiwi766TIiwi2q8iLCLvrpQiLCLaryIsIu+ulSIsItqvIiwi766WIiwi2rMiLCLvrpciLCLasyIsIu+umCIsItqzIiwi766ZIiwi2rMiLCLvrpoiLCLasSIsIu+umyIsItqxIiwi766cIiwi2rEiLCLvrp0iLCLasSIsIu+uniIsItq6Iiwi766fIiwi2roiLCLvrqAiLCLauyIsIu+uoSIsItq7Iiwi766iIiwi2rsiLCLvrqMiLCLauyIsIu+upCIsItuAIiwi766lIiwi24AiLCLvrqYiLCLbgSIsIu+upyIsItuBIiwi766oIiwi24EiLCLvrqkiLCLbgSIsIu+uqiIsItq+Iiwi766rIiwi2r4iLCLvrqwiLCLaviIsIu+urSIsItq+Iiwi766uIiwi25IiLCLvrq8iLCLbkiIsIu+usCIsItuTIiwi766xIiwi25MiLCLvr5MiLCLarSIsIu+vlCIsItqtIiwi76+VIiwi2q0iLCLvr5YiLCLarSIsIu+vlyIsItuHIiwi76+YIiwi24ciLCLvr5kiLCLbhiIsIu+vmiIsItuGIiwi76+bIiwi24giLCLvr5wiLCLbiCIsIu+vnSIsItm3Iiwi76+eIiwi24siLCLvr58iLCLbiyIsIu+voCIsItuFIiwi76+hIiwi24UiLCLvr6IiLCLbiSIsIu+voyIsItuJIiwi76+kIiwi25AiLCLvr6UiLCLbkCIsIu+vpiIsItuQIiwi76+nIiwi25AiLCLvr6giLCLZiSIsIu+vqSIsItmJIiwi76+qIiwi2KbYpyIsIu+vqyIsItim2KciLCLvr6wiLCLYptuVIiwi76+tIiwi2KbblSIsIu+vriIsItim2YgiLCLvr68iLCLYptmIIiwi76+wIiwi2KbbhyIsIu+vsSIsItim24ciLCLvr7IiLCLYptuGIiwi76+zIiwi2KbbhiIsIu+vtCIsItim24giLCLvr7UiLCLYptuIIiwi76+2Iiwi2KbbkCIsIu+vtyIsItim25AiLCLvr7giLCLYptuQIiwi76+5Iiwi2KbZiSIsIu+vuiIsItim2YkiLCLvr7siLCLYptmJIiwi76+8Iiwi24wiLCLvr70iLCLbjCIsIu+vviIsItuMIiwi76+/Iiwi24wiLCLvsIAiLCLYptisIiwi77CBIiwi2KbYrSIsIu+wgiIsItim2YUiLCLvsIMiLCLYptmJIiwi77CEIiwi2KbZiiIsIu+whSIsItio2KwiLCLvsIYiLCLYqNitIiwi77CHIiwi2KjYriIsIu+wiCIsItio2YUiLCLvsIkiLCLYqNmJIiwi77CKIiwi2KjZiiIsIu+wiyIsItiq2KwiLCLvsIwiLCLYqtitIiwi77CNIiwi2KrYriIsIu+wjiIsItiq2YUiLCLvsI8iLCLYqtmJIiwi77CQIiwi2KrZiiIsIu+wkSIsItir2KwiLCLvsJIiLCLYq9mFIiwi77CTIiwi2KvZiSIsIu+wlCIsItir2YoiLCLvsJUiLCLYrNitIiwi77CWIiwi2KzZhSIsIu+wlyIsItit2KwiLCLvsJgiLCLYrdmFIiwi77CZIiwi2K7YrCIsIu+wmiIsItiu2K0iLCLvsJsiLCLYrtmFIiwi77CcIiwi2LPYrCIsIu+wnSIsItiz2K0iLCLvsJ4iLCLYs9iuIiwi77CfIiwi2LPZhSIsIu+woCIsIti12K0iLCLvsKEiLCLYtdmFIiwi77CiIiwi2LbYrCIsIu+woyIsIti22K0iLCLvsKQiLCLYttiuIiwi77ClIiwi2LbZhSIsIu+wpiIsIti32K0iLCLvsKciLCLYt9mFIiwi77CoIiwi2LjZhSIsIu+wqSIsIti52KwiLCLvsKoiLCLYudmFIiwi77CrIiwi2LrYrCIsIu+wrCIsIti62YUiLCLvsK0iLCLZgdisIiwi77CuIiwi2YHYrSIsIu+wryIsItmB2K4iLCLvsLAiLCLZgdmFIiwi77CxIiwi2YHZiSIsIu+wsiIsItmB2YoiLCLvsLMiLCLZgtitIiwi77C0Iiwi2YLZhSIsIu+wtSIsItmC2YkiLCLvsLYiLCLZgtmKIiwi77C3Iiwi2YPYpyIsIu+wuCIsItmD2KwiLCLvsLkiLCLZg9itIiwi77C6Iiwi2YPYriIsIu+wuyIsItmD2YQiLCLvsLwiLCLZg9mFIiwi77C9Iiwi2YPZiSIsIu+wviIsItmD2YoiLCLvsL8iLCLZhNisIiwi77GAIiwi2YTYrSIsIu+xgSIsItmE2K4iLCLvsYIiLCLZhNmFIiwi77GDIiwi2YTZiSIsIu+xhCIsItmE2YoiLCLvsYUiLCLZhdisIiwi77GGIiwi2YXYrSIsIu+xhyIsItmF2K4iLCLvsYgiLCLZhdmFIiwi77GJIiwi2YXZiSIsIu+xiiIsItmF2YoiLCLvsYsiLCLZhtisIiwi77GMIiwi2YbYrSIsIu+xjSIsItmG2K4iLCLvsY4iLCLZhtmFIiwi77GPIiwi2YbZiSIsIu+xkCIsItmG2YoiLCLvsZEiLCLZh9isIiwi77GSIiwi2YfZhSIsIu+xkyIsItmH2YkiLCLvsZQiLCLZh9mKIiwi77GVIiwi2YrYrCIsIu+xliIsItmK2K0iLCLvsZciLCLZitiuIiwi77GYIiwi2YrZhSIsIu+xmSIsItmK2YkiLCLvsZoiLCLZitmKIiwi77GbIiwi2LDZsCIsIu+xnCIsItix2bAiLCLvsZ0iLCLZidmwIiwi77GeIiwiINmM2ZEiLCLvsZ8iLCIg2Y3ZkSIsIu+xoCIsIiDZjtmRIiwi77GhIiwiINmP2ZEiLCLvsaIiLCIg2ZDZkSIsIu+xoyIsIiDZkdmwIiwi77GkIiwi2KbYsSIsIu+xpSIsItim2LIiLCLvsaYiLCLYptmFIiwi77GnIiwi2KbZhiIsIu+xqCIsItim2YkiLCLvsakiLCLYptmKIiwi77GqIiwi2KjYsSIsIu+xqyIsItio2LIiLCLvsawiLCLYqNmFIiwi77GtIiwi2KjZhiIsIu+xriIsItio2YkiLCLvsa8iLCLYqNmKIiwi77GwIiwi2KrYsSIsIu+xsSIsItiq2LIiLCLvsbIiLCLYqtmFIiwi77GzIiwi2KrZhiIsIu+xtCIsItiq2YkiLCLvsbUiLCLYqtmKIiwi77G2Iiwi2KvYsSIsIu+xtyIsItir2LIiLCLvsbgiLCLYq9mFIiwi77G5Iiwi2KvZhiIsIu+xuiIsItir2YkiLCLvsbsiLCLYq9mKIiwi77G8Iiwi2YHZiSIsIu+xvSIsItmB2YoiLCLvsb4iLCLZgtmJIiwi77G/Iiwi2YLZiiIsIu+ygCIsItmD2KciLCLvsoEiLCLZg9mEIiwi77KCIiwi2YPZhSIsIu+ygyIsItmD2YkiLCLvsoQiLCLZg9mKIiwi77KFIiwi2YTZhSIsIu+yhiIsItmE2YkiLCLvsociLCLZhNmKIiwi77KIIiwi2YXYpyIsIu+yiSIsItmF2YUiLCLvsooiLCLZhtixIiwi77KLIiwi2YbYsiIsIu+yjCIsItmG2YUiLCLvso0iLCLZhtmGIiwi77KOIiwi2YbZiSIsIu+yjyIsItmG2YoiLCLvspAiLCLZidmwIiwi77KRIiwi2YrYsSIsIu+ykiIsItmK2LIiLCLvspMiLCLZitmFIiwi77KUIiwi2YrZhiIsIu+ylSIsItmK2YkiLCLvspYiLCLZitmKIiwi77KXIiwi2KbYrCIsIu+ymCIsItim2K0iLCLvspkiLCLYptiuIiwi77KaIiwi2KbZhSIsIu+ymyIsItim2YciLCLvspwiLCLYqNisIiwi77KdIiwi2KjYrSIsIu+yniIsItio2K4iLCLvsp8iLCLYqNmFIiwi77KgIiwi2KjZhyIsIu+yoSIsItiq2KwiLCLvsqIiLCLYqtitIiwi77KjIiwi2KrYriIsIu+ypCIsItiq2YUiLCLvsqUiLCLYqtmHIiwi77KmIiwi2KvZhSIsIu+ypyIsItis2K0iLCLvsqgiLCLYrNmFIiwi77KpIiwi2K3YrCIsIu+yqiIsItit2YUiLCLvsqsiLCLYrtisIiwi77KsIiwi2K7ZhSIsIu+yrSIsItiz2KwiLCLvsq4iLCLYs9itIiwi77KvIiwi2LPYriIsIu+ysCIsItiz2YUiLCLvsrEiLCLYtditIiwi77KyIiwi2LXYriIsIu+ysyIsIti12YUiLCLvsrQiLCLYttisIiwi77K1Iiwi2LbYrSIsIu+ytiIsIti22K4iLCLvsrciLCLYttmFIiwi77K4Iiwi2LfYrSIsIu+yuSIsIti42YUiLCLvsroiLCLYudisIiwi77K7Iiwi2LnZhSIsIu+yvCIsIti62KwiLCLvsr0iLCLYutmFIiwi77K+Iiwi2YHYrCIsIu+yvyIsItmB2K0iLCLvs4AiLCLZgdiuIiwi77OBIiwi2YHZhSIsIu+zgiIsItmC2K0iLCLvs4MiLCLZgtmFIiwi77OEIiwi2YPYrCIsIu+zhSIsItmD2K0iLCLvs4YiLCLZg9iuIiwi77OHIiwi2YPZhCIsIu+ziCIsItmD2YUiLCLvs4kiLCLZhNisIiwi77OKIiwi2YTYrSIsIu+ziyIsItmE2K4iLCLvs4wiLCLZhNmFIiwi77ONIiwi2YTZhyIsIu+zjiIsItmF2KwiLCLvs48iLCLZhditIiwi77OQIiwi2YXYriIsIu+zkSIsItmF2YUiLCLvs5IiLCLZhtisIiwi77OTIiwi2YbYrSIsIu+zlCIsItmG2K4iLCLvs5UiLCLZhtmFIiwi77OWIiwi2YbZhyIsIu+zlyIsItmH2KwiLCLvs5giLCLZh9mFIiwi77OZIiwi2YfZsCIsIu+zmiIsItmK2KwiLCLvs5siLCLZititIiwi77OcIiwi2YrYriIsIu+znSIsItmK2YUiLCLvs54iLCLZitmHIiwi77OfIiwi2KbZhSIsIu+zoCIsItim2YciLCLvs6EiLCLYqNmFIiwi77OiIiwi2KjZhyIsIu+zoyIsItiq2YUiLCLvs6QiLCLYqtmHIiwi77OlIiwi2KvZhSIsIu+zpiIsItir2YciLCLvs6ciLCLYs9mFIiwi77OoIiwi2LPZhyIsIu+zqSIsIti02YUiLCLvs6oiLCLYtNmHIiwi77OrIiwi2YPZhCIsIu+zrCIsItmD2YUiLCLvs60iLCLZhNmFIiwi77OuIiwi2YbZhSIsIu+zryIsItmG2YciLCLvs7AiLCLZitmFIiwi77OxIiwi2YrZhyIsIu+zsiIsItmA2Y7ZkSIsIu+zsyIsItmA2Y/ZkSIsIu+ztCIsItmA2ZDZkSIsIu+ztSIsIti32YkiLCLvs7YiLCLYt9mKIiwi77O3Iiwi2LnZiSIsIu+zuCIsIti52YoiLCLvs7kiLCLYutmJIiwi77O6Iiwi2LrZiiIsIu+zuyIsItiz2YkiLCLvs7wiLCLYs9mKIiwi77O9Iiwi2LTZiSIsIu+zviIsIti02YoiLCLvs78iLCLYrdmJIiwi77SAIiwi2K3ZiiIsIu+0gSIsItis2YkiLCLvtIIiLCLYrNmKIiwi77SDIiwi2K7ZiSIsIu+0hCIsItiu2YoiLCLvtIUiLCLYtdmJIiwi77SGIiwi2LXZiiIsIu+0hyIsIti22YkiLCLvtIgiLCLYttmKIiwi77SJIiwi2LTYrCIsIu+0iiIsIti02K0iLCLvtIsiLCLYtNiuIiwi77SMIiwi2LTZhSIsIu+0jSIsIti02LEiLCLvtI4iLCLYs9ixIiwi77SPIiwi2LXYsSIsIu+0kCIsIti22LEiLCLvtJEiLCLYt9mJIiwi77SSIiwi2LfZiiIsIu+0kyIsIti52YkiLCLvtJQiLCLYudmKIiwi77SVIiwi2LrZiSIsIu+0liIsIti62YoiLCLvtJciLCLYs9mJIiwi77SYIiwi2LPZiiIsIu+0mSIsIti02YkiLCLvtJoiLCLYtNmKIiwi77SbIiwi2K3ZiSIsIu+0nCIsItit2YoiLCLvtJ0iLCLYrNmJIiwi77SeIiwi2KzZiiIsIu+0nyIsItiu2YkiLCLvtKAiLCLYrtmKIiwi77ShIiwi2LXZiSIsIu+0oiIsIti12YoiLCLvtKMiLCLYttmJIiwi77SkIiwi2LbZiiIsIu+0pSIsIti02KwiLCLvtKYiLCLYtNitIiwi77SnIiwi2LTYriIsIu+0qCIsIti02YUiLCLvtKkiLCLYtNixIiwi77SqIiwi2LPYsSIsIu+0qyIsIti12LEiLCLvtKwiLCLYttixIiwi77StIiwi2LTYrCIsIu+0riIsIti02K0iLCLvtK8iLCLYtNiuIiwi77SwIiwi2LTZhSIsIu+0sSIsItiz2YciLCLvtLIiLCLYtNmHIiwi77SzIiwi2LfZhSIsIu+0tCIsItiz2KwiLCLvtLUiLCLYs9itIiwi77S2Iiwi2LPYriIsIu+0tyIsIti02KwiLCLvtLgiLCLYtNitIiwi77S5Iiwi2LTYriIsIu+0uiIsIti32YUiLCLvtLsiLCLYuNmFIiwi77S8Iiwi2KfZiyIsIu+0vSIsItin2YsiLCLvtZAiLCLYqtis2YUiLCLvtZEiLCLYqtit2KwiLCLvtZIiLCLYqtit2KwiLCLvtZMiLCLYqtit2YUiLCLvtZQiLCLYqtiu2YUiLCLvtZUiLCLYqtmF2KwiLCLvtZYiLCLYqtmF2K0iLCLvtZciLCLYqtmF2K4iLCLvtZgiLCLYrNmF2K0iLCLvtZkiLCLYrNmF2K0iLCLvtZoiLCLYrdmF2YoiLCLvtZsiLCLYrdmF2YkiLCLvtZwiLCLYs9it2KwiLCLvtZ0iLCLYs9is2K0iLCLvtZ4iLCLYs9is2YkiLCLvtZ8iLCLYs9mF2K0iLCLvtaAiLCLYs9mF2K0iLCLvtaEiLCLYs9mF2KwiLCLvtaIiLCLYs9mF2YUiLCLvtaMiLCLYs9mF2YUiLCLvtaQiLCLYtdit2K0iLCLvtaUiLCLYtdit2K0iLCLvtaYiLCLYtdmF2YUiLCLvtaciLCLYtNit2YUiLCLvtagiLCLYtNit2YUiLCLvtakiLCLYtNis2YoiLCLvtaoiLCLYtNmF2K4iLCLvtasiLCLYtNmF2K4iLCLvtawiLCLYtNmF2YUiLCLvta0iLCLYtNmF2YUiLCLvta4iLCLYttit2YkiLCLvta8iLCLYttiu2YUiLCLvtbAiLCLYttiu2YUiLCLvtbEiLCLYt9mF2K0iLCLvtbIiLCLYt9mF2K0iLCLvtbMiLCLYt9mF2YUiLCLvtbQiLCLYt9mF2YoiLCLvtbUiLCLYudis2YUiLCLvtbYiLCLYudmF2YUiLCLvtbciLCLYudmF2YUiLCLvtbgiLCLYudmF2YkiLCLvtbkiLCLYutmF2YUiLCLvtboiLCLYutmF2YoiLCLvtbsiLCLYutmF2YkiLCLvtbwiLCLZgdiu2YUiLCLvtb0iLCLZgdiu2YUiLCLvtb4iLCLZgtmF2K0iLCLvtb8iLCLZgtmF2YUiLCLvtoAiLCLZhNit2YUiLCLvtoEiLCLZhNit2YoiLCLvtoIiLCLZhNit2YkiLCLvtoMiLCLZhNis2KwiLCLvtoQiLCLZhNis2KwiLCLvtoUiLCLZhNiu2YUiLCLvtoYiLCLZhNiu2YUiLCLvtociLCLZhNmF2K0iLCLvtogiLCLZhNmF2K0iLCLvtokiLCLZhdit2KwiLCLvtooiLCLZhdit2YUiLCLvtosiLCLZhdit2YoiLCLvtowiLCLZhdis2K0iLCLvto0iLCLZhdis2YUiLCLvto4iLCLZhdiu2KwiLCLvto8iLCLZhdiu2YUiLCLvtpIiLCLZhdis2K4iLCLvtpMiLCLZh9mF2KwiLCLvtpQiLCLZh9mF2YUiLCLvtpUiLCLZhtit2YUiLCLvtpYiLCLZhtit2YkiLCLvtpciLCLZhtis2YUiLCLvtpgiLCLZhtis2YUiLCLvtpkiLCLZhtis2YkiLCLvtpoiLCLZhtmF2YoiLCLvtpsiLCLZhtmF2YkiLCLvtpwiLCLZitmF2YUiLCLvtp0iLCLZitmF2YUiLCLvtp4iLCLYqNiu2YoiLCLvtp8iLCLYqtis2YoiLCLvtqAiLCLYqtis2YkiLCLvtqEiLCLYqtiu2YoiLCLvtqIiLCLYqtiu2YkiLCLvtqMiLCLYqtmF2YoiLCLvtqQiLCLYqtmF2YkiLCLvtqUiLCLYrNmF2YoiLCLvtqYiLCLYrNit2YkiLCLvtqciLCLYrNmF2YkiLCLvtqgiLCLYs9iu2YkiLCLvtqkiLCLYtdit2YoiLCLvtqoiLCLYtNit2YoiLCLvtqsiLCLYttit2YoiLCLvtqwiLCLZhNis2YoiLCLvtq0iLCLZhNmF2YoiLCLvtq4iLCLZitit2YoiLCLvtq8iLCLZitis2YoiLCLvtrAiLCLZitmF2YoiLCLvtrEiLCLZhdmF2YoiLCLvtrIiLCLZgtmF2YoiLCLvtrMiLCLZhtit2YoiLCLvtrQiLCLZgtmF2K0iLCLvtrUiLCLZhNit2YUiLCLvtrYiLCLYudmF2YoiLCLvtrciLCLZg9mF2YoiLCLvtrgiLCLZhtis2K0iLCLvtrkiLCLZhdiu2YoiLCLvtroiLCLZhNis2YUiLCLvtrsiLCLZg9mF2YUiLCLvtrwiLCLZhNis2YUiLCLvtr0iLCLZhtis2K0iLCLvtr4iLCLYrNit2YoiLCLvtr8iLCLYrdis2YoiLCLvt4AiLCLZhdis2YoiLCLvt4EiLCLZgdmF2YoiLCLvt4IiLCLYqNit2YoiLCLvt4MiLCLZg9mF2YUiLCLvt4QiLCLYudis2YUiLCLvt4UiLCLYtdmF2YUiLCLvt4YiLCLYs9iu2YoiLCLvt4ciLCLZhtis2YoiLCLvuYkiLCLigL4iLCLvuYoiLCLigL4iLCLvuYsiLCLigL4iLCLvuYwiLCLigL4iLCLvuY0iLCJfIiwi77mOIiwiXyIsIu+5jyIsIl8iLCLvuoAiLCLYoSIsIu+6gSIsItiiIiwi77qCIiwi2KIiLCLvuoMiLCLYoyIsIu+6hCIsItijIiwi77qFIiwi2KQiLCLvuoYiLCLYpCIsIu+6hyIsItilIiwi77qIIiwi2KUiLCLvuokiLCLYpiIsIu+6iiIsItimIiwi77qLIiwi2KYiLCLvuowiLCLYpiIsIu+6jSIsItinIiwi77qOIiwi2KciLCLvuo8iLCLYqCIsIu+6kCIsItioIiwi77qRIiwi2KgiLCLvupIiLCLYqCIsIu+6kyIsItipIiwi77qUIiwi2KkiLCLvupUiLCLYqiIsIu+6liIsItiqIiwi77qXIiwi2KoiLCLvupgiLCLYqiIsIu+6mSIsItirIiwi77qaIiwi2KsiLCLvupsiLCLYqyIsIu+6nCIsItirIiwi77qdIiwi2KwiLCLvup4iLCLYrCIsIu+6nyIsItisIiwi77qgIiwi2KwiLCLvuqEiLCLYrSIsIu+6oiIsItitIiwi77qjIiwi2K0iLCLvuqQiLCLYrSIsIu+6pSIsItiuIiwi77qmIiwi2K4iLCLvuqciLCLYriIsIu+6qCIsItiuIiwi77qpIiwi2K8iLCLvuqoiLCLYryIsIu+6qyIsItiwIiwi77qsIiwi2LAiLCLvuq0iLCLYsSIsIu+6riIsItixIiwi77qvIiwi2LIiLCLvurAiLCLYsiIsIu+6sSIsItizIiwi77qyIiwi2LMiLCLvurMiLCLYsyIsIu+6tCIsItizIiwi77q1Iiwi2LQiLCLvurYiLCLYtCIsIu+6tyIsIti0Iiwi77q4Iiwi2LQiLCLvurkiLCLYtSIsIu+6uiIsIti1Iiwi77q7Iiwi2LUiLCLvurwiLCLYtSIsIu+6vSIsIti2Iiwi77q+Iiwi2LYiLCLvur8iLCLYtiIsIu+7gCIsIti2Iiwi77uBIiwi2LciLCLvu4IiLCLYtyIsIu+7gyIsIti3Iiwi77uEIiwi2LciLCLvu4UiLCLYuCIsIu+7hiIsIti4Iiwi77uHIiwi2LgiLCLvu4giLCLYuCIsIu+7iSIsIti5Iiwi77uKIiwi2LkiLCLvu4siLCLYuSIsIu+7jCIsIti5Iiwi77uNIiwi2LoiLCLvu44iLCLYuiIsIu+7jyIsIti6Iiwi77uQIiwi2LoiLCLvu5EiLCLZgSIsIu+7kiIsItmBIiwi77uTIiwi2YEiLCLvu5QiLCLZgSIsIu+7lSIsItmCIiwi77uWIiwi2YIiLCLvu5ciLCLZgiIsIu+7mCIsItmCIiwi77uZIiwi2YMiLCLvu5oiLCLZgyIsIu+7myIsItmDIiwi77ucIiwi2YMiLCLvu50iLCLZhCIsIu+7niIsItmEIiwi77ufIiwi2YQiLCLvu6AiLCLZhCIsIu+7oSIsItmFIiwi77uiIiwi2YUiLCLvu6MiLCLZhSIsIu+7pCIsItmFIiwi77ulIiwi2YYiLCLvu6YiLCLZhiIsIu+7pyIsItmGIiwi77uoIiwi2YYiLCLvu6kiLCLZhyIsIu+7qiIsItmHIiwi77urIiwi2YciLCLvu6wiLCLZhyIsIu+7rSIsItmIIiwi77uuIiwi2YgiLCLvu68iLCLZiSIsIu+7sCIsItmJIiwi77uxIiwi2YoiLCLvu7IiLCLZiiIsIu+7syIsItmKIiwi77u0Iiwi2YoiLCLvu7UiLCLZhNiiIiwi77u2Iiwi2YTYoiIsIu+7tyIsItmE2KMiLCLvu7giLCLZhNijIiwi77u5Iiwi2YTYpSIsIu+7uiIsItmE2KUiLCLvu7siLCLZhNinIiwi77u8Iiwi2YTYpyJdfSkpO2Z1bmN0aW9uIHJldmVyc2VJZlJ0bChlKXtjb25zdCB0PWUubGVuZ3RoO2lmKHQ8PTF8fCFmdW5jdGlvbiBpc1JUTFJhbmdlRm9yKGUpe2xldCB0PWlbMTNdO2lmKGU+PXQuYmVnaW4mJmU8dC5lbmQpcmV0dXJuITA7dD1pWzExXTtyZXR1cm4gZT49dC5iZWdpbiYmZTx0LmVuZH0oZS5jaGFyQ29kZUF0KDApKSlyZXR1cm4gZTtjb25zdCBhPVtdO2ZvcihsZXQgcj10LTE7cj49MDtyLS0pYS5wdXNoKGVbcl0pO3JldHVybiBhLmpvaW4oIiIpfWNvbnN0IG89bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLGM9bmV3IE1hcDtmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9Yy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPWUubWF0Y2gobykscj17aXNXaGl0ZXNwYWNlOiEoIWF8fCFhWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKCFhfHwhYVsyXSksaXNJbnZpc2libGVGb3JtYXRNYXJrOiEoIWF8fCFhWzNdKX07Yy5zZXQoZSxyKTtyZXR1cm4gcn1mdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXtjLmNsZWFyKCl9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuZ2V0U2VyaWZGb250cz10LmdldE5vblN0ZEZvbnRNYXA9dC5nZXRHbHlwaE1hcEZvclN0YW5kYXJkRm9udHM9dC5nZXRGb250TmFtZVRvRmlsZU1hcD12b2lkIDA7dC5nZXRTdGFuZGFyZEZvbnROYW1lPWZ1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD0oMCxuLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfTt0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwO3ZhciByPWEoNCksbj1hKDM2KTtjb25zdCBpPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSkpO3QuZ2V0U3RkRm9udE1hcD1pO2NvbnN0IHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9IkZveGl0Rml4ZWQucGZiIjtlWyJDb3VyaWVyLUJvbGQiXT0iRm94aXRGaXhlZEJvbGQucGZiIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkZveGl0Rml4ZWRCb2xkSXRhbGljLnBmYiI7ZVsiQ291cmllci1PYmxpcXVlIl09IkZveGl0Rml4ZWRJdGFsaWMucGZiIjtlLkhlbHZldGljYT0iRm94aXRTYW5zLnBmYiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iRm94aXRTYW5zQm9sZC5wZmIiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJGb3hpdFNhbnNCb2xkSXRhbGljLnBmYiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iRm94aXRTYW5zSXRhbGljLnBmYiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKTt0LmdldEZvbnROYW1lVG9GaWxlTWFwPXM7Y29uc3Qgbz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EiO2UuV2luZ2RpbmdzPSJaYXBmRGluZ2JhdHMiO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09IlphcGZEaW5nYmF0cyJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwfSkpO3QuZ2V0U3ltYm9sc0ZvbnRzPWw7Y29uc3QgaD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIHI9YSgyKTt0LlRvVW5pY29kZU1hcD1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgYSBpbiB0KWlmKHRbYV09PT1lKXJldHVybiAwfGE7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19O3QuSWRlbnRpdHlUb1VuaWNvZGVNYXA9Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixhPXRoaXMubGFzdENoYXI7dDw9YTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7KDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNGRkZvbnQ9dm9pZCAwO3ZhciByPWEoMzMpLG49YSgzNiksaT1hKDIpO3QuQ0ZGRm9udD1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgYT1uZXcgci5DRkZQYXJzZXIoZSx0LG4uU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1hLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IHIuQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChhKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbjtpZihhJiZhLmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAscj1hLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWFbZV07dm9pZCAwIT09ciYmKHRbcl09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobz0wO288aS5sZW5ndGg7bysrKXtjb25zdCBlPWlbb107bj1yLmNoYXJDb2RlT2YoZSk7dCYmdm9pZCAwIT09dFtuXSYmKG49dFtuXSk7c1tuXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKXtuPXIuY2hhckNvZGVPZihvKTtzW25dPW99cmV0dXJuIHN9bGV0IGM9ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKGM9dC5kZWZhdWx0RW5jb2RpbmcpO3M9KDAsbi50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsYyxpKTtyZXR1cm4gc31oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2Rpbmcsbj1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihuW2VdPXIpfX1uLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1uKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRm9udFJlbmRlcmVyRmFjdG9yeT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMzMpLGk9YSgzNykscz1hKDM1KSxvPWEoOCk7ZnVuY3Rpb24gZ2V0VWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGdldFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBnZXRJbnQxNihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2KT4+MTZ9ZnVuY3Rpb24gZ2V0SW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZ2V0SW50MTYoZSx0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTMyNzY4O3Q8MTI0MD9hPTEwNzp0PDMzOTAwJiYoYT0xMTMxKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZUNtYXAoZSx0LGEpe2NvbnN0IG49MT09PWdldFVpbnQxNihlLHQrMik/Z2V0VWludDMyKGUsdCs4KTpnZXRVaW50MzIoZSx0KzE2KSxpPWdldFVpbnQxNihlLHQrbik7bGV0IHMsbyxjO2lmKDQ9PT1pKXtnZXRVaW50MTYoZSx0K24rMik7Y29uc3QgYT1nZXRVaW50MTYoZSx0K24rNik+PjE7bz10K24rMTQ7cz1bXTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdPXtlbmQ6Z2V0VWludDE2KGUsbyl9O28rPTI7Zm9yKGM9MDtjPGE7YysrLG8rPTIpc1tjXS5zdGFydD1nZXRVaW50MTYoZSxvKTtmb3IoYz0wO2M8YTtjKyssbys9MilzW2NdLmlkRGVsdGE9Z2V0VWludDE2KGUsbyk7Zm9yKGM9MDtjPGE7YysrLG8rPTIpe2xldCB0PWdldFVpbnQxNihlLG8pO2lmKDAhPT10KXtzW2NdLmlkcz1bXTtmb3IobGV0IGE9MCxyPXNbY10uZW5kLXNbY10uc3RhcnQrMTthPHI7YSsrKXtzW2NdLmlkc1thXT1nZXRVaW50MTYoZSxvK3QpO3QrPTJ9fX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IGE9Z2V0VWludDMyKGUsdCtuKzEyKTtvPXQrbisxNjtzPVtdO2ZvcihjPTA7YzxhO2MrKyl7dD1nZXRVaW50MzIoZSxvKTtzLnB1c2goe3N0YXJ0OnQsZW5kOmdldFVpbnQzMihlLG8rNCksaWREZWx0YTpnZXRVaW50MzIoZSxvKzgpLXR9KTtvKz0xMn1yZXR1cm4gc310aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtpfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxhLHIpe2NvbnN0IGk9bmV3IG4uQ0ZGUGFyc2VyKG5ldyBvLlN0cmVhbShlLHQsYS10KSx7fSxyKS5wYXJzZSgpO3JldHVybntnbHlwaHM6aS5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOmkudG9wRGljdC5wcml2YXRlRGljdCYmaS50b3BEaWN0LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgmJmkudG9wRGljdC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4JiZpLmdsb2JhbFN1YnJJbmRleC5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsbj0wLGk9ZS5sZW5ndGgtMTtmb3IoO248aTspe2NvbnN0IHQ9bitpKzE+PjE7YTxlW3RdLnN0YXJ0P2k9dC0xOm49dH1lW25dLnN0YXJ0PD1hJiZhPD1lW25dLmVuZCYmKHI9ZVtuXS5pZERlbHRhKyhlW25dLmlkcz9lW25dLmlkc1thLWVbbl0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5wdXNoKHtjbWQ6ImxpbmVUbyIsYXJnczpbZSxhXX0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxhLHIsbil7dC5wdXNoKHtjbWQ6InF1YWRyYXRpY0N1cnZlVG8iLGFyZ3M6W2UsYSxyLG5dfSl9bGV0IHI9MDtjb25zdCBuPWdldEludDE2KGUscik7bGV0IGkscz0wLG89MDtyKz0xMDtpZihuPDApZG97aT1nZXRVaW50MTYoZSxyKTtjb25zdCBuPWdldFVpbnQxNihlLHIrMik7cis9NDtsZXQgYyxsO2lmKDEmaSl7aWYoMiZpKXtjPWdldEludDE2KGUscik7bD1nZXRJbnQxNihlLHIrMil9ZWxzZXtjPWdldFVpbnQxNihlLHIpO2w9Z2V0VWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZpKXtjPWdldEludDgoZSxyKyspO2w9Z2V0SW50OChlLHIrKyl9ZWxzZXtjPWVbcisrXTtsPWVbcisrXX1pZigyJmkpe3M9YztvPWx9ZWxzZXtzPTA7bz0wfWxldCBoPTEsdT0xLGQ9MCxmPTA7aWYoOCZpKXtoPXU9Z2V0RmxvYXQyMTQoZSxyKTtyKz0yfWVsc2UgaWYoNjQmaSl7aD1nZXRGbG9hdDIxNChlLHIpO3U9Z2V0RmxvYXQyMTQoZSxyKzIpO3IrPTR9ZWxzZSBpZigxMjgmaSl7aD1nZXRGbG9hdDIxNChlLHIpO2Q9Z2V0RmxvYXQyMTQoZSxyKzIpO2Y9Z2V0RmxvYXQyMTQoZSxyKzQpO3U9Z2V0RmxvYXQyMTQoZSxyKzYpO3IrPTh9Y29uc3QgZz1hLmdseXBoc1tuXTtpZihnKXt0LnB1c2goe2NtZDoic2F2ZSJ9LHtjbWQ6InRyYW5zZm9ybSIsYXJnczpbaCxkLGYsdSxzLG9dfSk7Y29tcGlsZUdseWYoZyx0LGEpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pfX13aGlsZSgzMiZpKTtlbHNle2NvbnN0IHQ9W107bGV0IGEsYztmb3IoYT0wO2E8bjthKyspe3QucHVzaChnZXRVaW50MTYoZSxyKSk7cis9Mn1yKz0yK2dldFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe2k9ZVtyKytdO2xldCB0PTE7OCZpJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczppfSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOnMrPWdldEludDE2KGUscik7cis9MjticmVhaztjYXNlIDI6cy09ZVtyKytdO2JyZWFrO2Nhc2UgMTg6cys9ZVtyKytdfWhbYV0ueD1zfWZvcihhPTA7YTxsO2ErKyl7c3dpdGNoKDM2JmhbYV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSA0Om8tPWVbcisrXTticmVhaztjYXNlIDM2Om8rPWVbcisrXX1oW2FdLnk9b31sZXQgdT0wO2ZvcihyPTA7cjxuO3IrKyl7Y29uc3QgZT10W3JdLG49aC5zbGljZSh1LGUrMSk7aWYoMSZuWzBdLmZsYWdzKW4ucHVzaChuWzBdKTtlbHNlIGlmKDEmbi5hdCgtMSkuZmxhZ3Mpbi51bnNoaWZ0KG4uYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooblswXS54K24uYXQoLTEpLngpLzIseTooblswXS55K24uYXQoLTEpLnkpLzJ9O24udW5zaGlmdChlKTtuLnB1c2goZSl9bW92ZVRvKG5bMF0ueCxuWzBdLnkpO2ZvcihhPTEsYz1uLmxlbmd0aDthPGM7YSsrKWlmKDEmblthXS5mbGFncylsaW5lVG8oblthXS54LG5bYV0ueSk7ZWxzZSBpZigxJm5bYSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhuW2FdLngsblthXS55LG5bYSsxXS54LG5bYSsxXS55KTthKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKG5bYV0ueCxuW2FdLnksKG5bYV0ueCtuW2ErMV0ueCkvMiwoblthXS55K25bYSsxXS55KS8yKTt1PWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxhLG4pe2Z1bmN0aW9uIG1vdmVUbyhlLGEpe3QucHVzaCh7Y21kOiJtb3ZlVG8iLGFyZ3M6W2UsYV19KX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLGFdfSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGEscixuLGkscyl7dC5wdXNoKHtjbWQ6ImJlemllckN1cnZlVG8iLGFyZ3M6W2UsYSxyLG4saSxzXX0pfWNvbnN0IGk9W107bGV0IG89MCxjPTAsbD0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgaD0wO2Zvcig7aDxlLmxlbmd0aDspe2xldCB1LGQsZixnLHAsbSxiLHksdyxTPSExLHg9ZVtoKytdO3N3aXRjaCh4KXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpsKz1pLmxlbmd0aD4+MTtTPSEwO2JyZWFrO2Nhc2UgNDpjKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSA1OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyl9YnJlYWs7Y2FzZSA2OmZvcig7aS5sZW5ndGg+MDspe28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKTtpZigwPT09aS5sZW5ndGgpYnJlYWs7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpfWJyZWFrO2Nhc2UgNzpmb3IoO2kubGVuZ3RoPjA7KXtjKz1pLnNoaWZ0KCk7bGluZVRvKG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO28rPWkuc2hpZnQoKTtsaW5lVG8obyxjKX1icmVhaztjYXNlIDg6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAxMDp5PWkucG9wKCk7dz1udWxsO2lmKGEuaXNDRkZDSURGb250KXtjb25zdCBlPWEuZmRTZWxlY3QuZ2V0RkRJbmRleChuKTtpZihlPj0wJiZlPGEuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9YS5mZEFycmF5W2VdO2xldCByO3QucHJpdmF0ZURpY3QmJnQucHJpdmF0ZURpY3Quc3VicnNJbmRleCYmKHI9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKHIpe3krPWdldFN1YnJvdXRpbmVCaWFzKHIpO3c9clt5XX19ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1hLnN1YnJzW3krYS5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6eD1lW2grK107c3dpdGNoKHgpe2Nhc2UgMzQ6dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsYyxkLHAsbyxwKTt1PW8raS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUscCxkLGMsbyxjKTticmVhaztjYXNlIDM1OnU9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO3U9bytpLnNoaWZ0KCk7Zj1jK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtjPWcraS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjp1PW8raS5zaGlmdCgpO3A9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTttPXAraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LHAsZCxtLG8sbSk7dT1vK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO2I9bStpLnNoaWZ0KCk7bz1kK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsbSxkLGIsbyxjKTticmVhaztjYXNlIDM3OmNvbnN0IGU9byx0PWM7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZytpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7dT1vK2kuc2hpZnQoKTtmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nO01hdGguYWJzKG8tZSk+TWF0aC5hYnMoYy10KT9vKz1pLnNoaWZ0KCk6Yys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7eH1gKX1icmVhaztjYXNlIDE0OmlmKGkubGVuZ3RoPj00KXtjb25zdCBlPWkucG9wKCkscj1pLnBvcCgpO2M9aS5wb3AoKTtvPWkucG9wKCk7dC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W28sY119KTtsZXQgbj1sb29rdXBDbWFwKGEuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tuLmdseXBoSWRdLHQsYSxuLmdseXBoSWQpO3QucHVzaCh7Y21kOiJyZXN0b3JlIn0pO249bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtzLlN0YW5kYXJkRW5jb2Rpbmdbcl1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoYS5nbHlwaHNbbi5nbHlwaElkXSx0LGEsbi5nbHlwaElkKX1yZXR1cm47Y2FzZSAxOTpjYXNlIDIwOmwrPWkubGVuZ3RoPj4xO2grPWwrNz4+MztTPSEwO2JyZWFrO2Nhc2UgMjE6Yys9aS5wb3AoKTtvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyMjpvKz1pLnBvcCgpO21vdmVUbyhvLGMpO1M9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2kubGVuZ3RoPjI7KXt1PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1vKz1pLnNoaWZ0KCk7Yys9aS5zaGlmdCgpO2xpbmVUbyhvLGMpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtpLmxlbmd0aD42Oyl7bys9aS5zaGlmdCgpO2MrPWkuc2hpZnQoKTtsaW5lVG8obyxjKX11PW8raS5zaGlmdCgpO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKTticmVhaztjYXNlIDI2OmkubGVuZ3RoJTImJihvKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQ7Yz1nK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI3OmkubGVuZ3RoJTImJihjKz1pLnNoaWZ0KCkpO2Zvcig7aS5sZW5ndGg+MDspe3U9bytpLnNoaWZ0KCk7Zj1jO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZztiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztjYXNlIDI4OmkucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNik+PjE2KTtoKz0yO2JyZWFrO2Nhc2UgMjk6eT1pLnBvcCgpK2EuZ3N1YnJzQmlhczt3PWEuZ3N1YnJzW3ldO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7dT1vO2Y9YytpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO289ZCtpLnNoaWZ0KCk7Yz1nKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8odSxmLGQsZyxvLGMpO2lmKDA9PT1pLmxlbmd0aClicmVhazt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXt1PW8raS5zaGlmdCgpO2Y9YztkPXUraS5zaGlmdCgpO2c9ZitpLnNoaWZ0KCk7Yz1nK2kuc2hpZnQoKTtvPWQrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyh1LGYsZCxnLG8sYyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3U9bztmPWMraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7Zz1mK2kuc2hpZnQoKTtvPWQraS5zaGlmdCgpO2M9ZysoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKHUsZixkLGcsbyxjKX1icmVhaztkZWZhdWx0OmlmKHg8MzIpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7eH1gKTtpZih4PDI0NylpLnB1c2goeC0xMzkpO2Vsc2UgaWYoeDwyNTEpaS5wdXNoKDI1NiooeC0yNDcpK2VbaCsrXSsxMDgpO2Vsc2UgaWYoeDwyNTUpaS5wdXNoKDI1NiotKHgtMjUxKS1lW2grK10tMTA4KTtlbHNle2kucHVzaCgoZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdKS82NTUzNik7aCs9NH19UyYmKGkubGVuZ3RoPTApfX0oZSl9Y29uc3QgYz1bXTtjbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUNvbXBpbGVkRm9udCYmKDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIENvbXBpbGVkRm9udC4iKTt0aGlzLmZvbnRNYXRyaXg9ZTt0aGlzLmNvbXBpbGVkR2x5cGhzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkPU9iamVjdC5jcmVhdGUobnVsbCl9Z2V0UGF0aEpzKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDphfT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtsZXQgcj10aGlzLmNvbXBpbGVkR2x5cGhzW2FdO2lmKCFyKXRyeXtyPXRoaXMuY29tcGlsZUdseXBoKHRoaXMuZ2x5cGhzW2FdLGEpO3RoaXMuY29tcGlsZWRHbHlwaHNbYV09cn1jYXRjaChlKXt0aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWM7dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3Rocm93IGV9dm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPWEpO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gYztsZXQgYT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7YT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHIuRk9OVF9JREVOVElUWV9NQVRSSVh9ZWxzZSgwLHIud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IG49W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6YS5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsbix0KTtuLnB1c2goe2NtZDoicmVzdG9yZSJ9KTtyZXR1cm4gbn1jb21waWxlR2x5cGhJbXBsKCl7KDAsci51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihhfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1yfHwoMCxpLmdldEdseXBoc1VuaWNvZGUpKCk7dGhpcy5nc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuZ3N1YnJzKTt0aGlzLnN1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLnN1YnJzKTt0aGlzLmlzQ0ZGQ0lERm9udD1lLmlzQ0ZGQ0lERm9udDt0aGlzLmZkU2VsZWN0PWUuZmRTZWxlY3Q7dGhpcy5mZEFycmF5PWUuZmRBcnJheX1jb21waWxlR2x5cGhJbXBsKGUsdCxhKXtjb21waWxlQ2hhclN0cmluZyhlLHQsdGhpcyxhKX19dC5Gb250UmVuZGVyZXJGYWN0b3J5PWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgbixpLHMsbyxjLGw7Y29uc3QgaD1nZXRVaW50MTYoYSw0KTtmb3IobGV0IGU9MCx1PTEyO2U8aDtlKyssdSs9MTYpe2NvbnN0IGU9KDAsci5ieXRlc1RvU3RyaW5nKShhLnN1YmFycmF5KHUsdSs0KSksaD1nZXRVaW50MzIoYSx1KzgpLGQ9Z2V0VWludDMyKGEsdSsxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6bj1wYXJzZUNtYXAoYSxoKTticmVhaztjYXNlImdseWYiOmk9YS5zdWJhcnJheShoLGgrZCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWEuc3ViYXJyYXkoaCxoK2QpO2JyZWFrO2Nhc2UiaGVhZCI6bD1nZXRVaW50MTYoYSxoKzE4KTtjPWdldFVpbnQxNihhLGgrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bz1wYXJzZUNmZihhLGgsaCtkLHQpfX1pZihpKXtjb25zdCB0PWw/WzEvbCwwLDAsMS9sLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsbjtpZihhKXtyPTQ7bj1nZXRVaW50MzJ9ZWxzZXtyPTI7bj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBpPVtdO2xldCBzPW4odCwwKTtmb3IobGV0IGE9cjthPHQubGVuZ3RoO2ErPXIpe2NvbnN0IHI9bih0LGEpO2kucHVzaChlLnN1YmFycmF5KHMscikpO3M9cn1yZXR1cm4gaX0oaSxzLGMpLG4sdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG8sbixlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5nZXRNZXRyaWNzPXQuZ2V0Rm9udEJhc2ljTWV0cmljcz12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMDtlWyJDb3VyaWVyLUJvbGQiXT02MDA7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMDtlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDA7ZS5IZWx2ZXRpY2E9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlLlN5bWJvbD0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnVuaXZlcnNhbD03MTM7ZS5udW1iZXJzaWduPTUwMDtlLmV4aXN0ZW50aWFsPTU0OTtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnN1Y2h0aGF0PTQzOTtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrbWF0aD01MDA7ZS5wbHVzPTU0OTtlLmNvbW1hPTI1MDtlLm1pbnVzPTU0OTtlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU0OTtlLmVxdWFsPTU0OTtlLmdyZWF0ZXI9NTQ5O2UucXVlc3Rpb249NDQ0O2UuY29uZ3J1ZW50PTU0OTtlLkFscGhhPTcyMjtlLkJldGE9NjY3O2UuQ2hpPTcyMjtlLkRlbHRhPTYxMjtlLkVwc2lsb249NjExO2UuUGhpPTc2MztlLkdhbW1hPTYwMztlLkV0YT03MjI7ZS5Jb3RhPTMzMztlLnRoZXRhMT02MzE7ZS5LYXBwYT03MjI7ZS5MYW1iZGE9Njg2O2UuTXU9ODg5O2UuTnU9NzIyO2UuT21pY3Jvbj03MjI7ZS5QaT03Njg7ZS5UaGV0YT03NDE7ZS5SaG89NTU2O2UuU2lnbWE9NTkyO2UuVGF1PTYxMTtlLlVwc2lsb249NjkwO2Uuc2lnbWExPTQzOTtlLk9tZWdhPTc2ODtlLlhpPTY0NTtlLlBzaT03OTU7ZS5aZXRhPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLnRoZXJlZm9yZT04NjM7ZS5icmFja2V0cmlnaHQ9MzMzO2UucGVycGVuZGljdWxhcj02NTg7ZS51bmRlcnNjb3JlPTUwMDtlLnJhZGljYWxleD01MDA7ZS5hbHBoYT02MzE7ZS5iZXRhPTU0OTtlLmNoaT01NDk7ZS5kZWx0YT00OTQ7ZS5lcHNpbG9uPTQzOTtlLnBoaT01MjE7ZS5nYW1tYT00MTE7ZS5ldGE9NjAzO2UuaW90YT0zMjk7ZS5waGkxPTYwMztlLmthcHBhPTU0OTtlLmxhbWJkYT01NDk7ZS5tdT01NzY7ZS5udT01MjE7ZS5vbWljcm9uPTU0OTtlLnBpPTU0OTtlLnRoZXRhPTUyMTtlLnJobz01NDk7ZS5zaWdtYT02MDM7ZS50YXU9NDM5O2UudXBzaWxvbj01NzY7ZS5vbWVnYTE9NzEzO2Uub21lZ2E9Njg2O2UueGk9NDkzO2UucHNpPTY4NjtlLnpldGE9NDk0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLnNpbWlsYXI9NTQ5O2UuRXVybz03NTA7ZS5VcHNpbG9uMT02MjA7ZS5taW51dGU9MjQ3O2UubGVzc2VxdWFsPTU0OTtlLmZyYWN0aW9uPTE2NztlLmluZmluaXR5PTcxMztlLmZsb3Jpbj01MDA7ZS5jbHViPTc1MztlLmRpYW1vbmQ9NzUzO2UuaGVhcnQ9NzUzO2Uuc3BhZGU9NzUzO2UuYXJyb3dib3RoPTEwNDI7ZS5hcnJvd2xlZnQ9OTg3O2UuYXJyb3d1cD02MDM7ZS5hcnJvd3JpZ2h0PTk4NztlLmFycm93ZG93bj02MDM7ZS5kZWdyZWU9NDAwO2UucGx1c21pbnVzPTU0OTtlLnNlY29uZD00MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UubXVsdGlwbHk9NTQ5O2UucHJvcG9ydGlvbmFsPTcxMztlLnBhcnRpYWxkaWZmPTQ5NDtlLmJ1bGxldD00NjA7ZS5kaXZpZGU9NTQ5O2Uubm90ZXF1YWw9NTQ5O2UuZXF1aXZhbGVuY2U9NTQ5O2UuYXBwcm94ZXF1YWw9NTQ5O2UuZWxsaXBzaXM9MWUzO2UuYXJyb3d2ZXJ0ZXg9NjAzO2UuYXJyb3dob3JpemV4PTFlMztlLmNhcnJpYWdlcmV0dXJuPTY1ODtlLmFsZXBoPTgyMztlLklmcmFrdHVyPTY4NjtlLlJmcmFrdHVyPTc5NTtlLndlaWVyc3RyYXNzPTk4NztlLmNpcmNsZW11bHRpcGx5PTc2ODtlLmNpcmNsZXBsdXM9NzY4O2UuZW1wdHlzZXQ9ODIzO2UuaW50ZXJzZWN0aW9uPTc2ODtlLnVuaW9uPTc2ODtlLnByb3BlcnN1cGVyc2V0PTcxMztlLnJlZmxleHN1cGVyc2V0PTcxMztlLm5vdHN1YnNldD03MTM7ZS5wcm9wZXJzdWJzZXQ9NzEzO2UucmVmbGV4c3Vic2V0PTcxMztlLmVsZW1lbnQ9NzEzO2Uubm90ZWxlbWVudD03MTM7ZS5hbmdsZT03Njg7ZS5ncmFkaWVudD03MTM7ZS5yZWdpc3RlcnNlcmlmPTc5MDtlLmNvcHlyaWdodHNlcmlmPTc5MDtlLnRyYWRlbWFya3NlcmlmPTg5MDtlLnByb2R1Y3Q9ODIzO2UucmFkaWNhbD01NDk7ZS5kb3RtYXRoPTI1MDtlLmxvZ2ljYWxub3Q9NzEzO2UubG9naWNhbGFuZD02MDM7ZS5sb2dpY2Fsb3I9NjAzO2UuYXJyb3dkYmxib3RoPTEwNDI7ZS5hcnJvd2RibGxlZnQ9OTg3O2UuYXJyb3dkYmx1cD02MDM7ZS5hcnJvd2RibHJpZ2h0PTk4NztlLmFycm93ZGJsZG93bj02MDM7ZS5sb3plbmdlPTQ5NDtlLmFuZ2xlbGVmdD0zMjk7ZS5yZWdpc3RlcnNhbnM9NzkwO2UuY29weXJpZ2h0c2Fucz03OTA7ZS50cmFkZW1hcmtzYW5zPTc4NjtlLnN1bW1hdGlvbj03MTM7ZS5wYXJlbmxlZnR0cD0zODQ7ZS5wYXJlbmxlZnRleD0zODQ7ZS5wYXJlbmxlZnRidD0zODQ7ZS5icmFja2V0bGVmdHRwPTM4NDtlLmJyYWNrZXRsZWZ0ZXg9Mzg0O2UuYnJhY2tldGxlZnRidD0zODQ7ZS5icmFjZWxlZnR0cD00OTQ7ZS5icmFjZWxlZnRtaWQ9NDk0O2UuYnJhY2VsZWZ0YnQ9NDk0O2UuYnJhY2VleD00OTQ7ZS5hbmdsZXJpZ2h0PTMyOTtlLmludGVncmFsPTI3NDtlLmludGVncmFsdHA9Njg2O2UuaW50ZWdyYWxleD02ODY7ZS5pbnRlZ3JhbGJ0PTY4NjtlLnBhcmVucmlnaHR0cD0zODQ7ZS5wYXJlbnJpZ2h0ZXg9Mzg0O2UucGFyZW5yaWdodGJ0PTM4NDtlLmJyYWNrZXRyaWdodHRwPTM4NDtlLmJyYWNrZXRyaWdodGV4PTM4NDtlLmJyYWNrZXRyaWdodGJ0PTM4NDtlLmJyYWNlcmlnaHR0cD00OTQ7ZS5icmFjZXJpZ2h0bWlkPTQ5NDtlLmJyYWNlcmlnaHRidD00OTQ7ZS5hcHBsZT03OTB9KSk7ZVsiVGltZXMtUm9tYW4iXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGQiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxyLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTM4OTtlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD04MzI7ZS5BPTY2NztlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjY3O2UuRj02Njc7ZS5HPTcyMjtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9NjY3O2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9ODg5O2UuWD02Njc7ZS5ZPTYxMTtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01NzA7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTU2O2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01NTY7ZS52PTQ0NDtlLnc9NjY3O2UueD01MDA7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTM0ODtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM0ODtlLmFzY2lpdGlsZGU9NTcwO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9OTQ0O2Uub3JkZmVtaW5pbmU9MjY2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzAwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz02MTE7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTYxMTtlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTYwODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zNjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01NzY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zODI7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTYwNjtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02MDY7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2VbIlRpbWVzLUl0YWxpYyJdPSgwLHIuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZS5aYXBmRGluZ2JhdHM9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1uO2NvbnN0IGk9KDAsci5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5HbHlmVGFibGU9dm9pZCAwO3QuR2x5ZlRhYmxlPWNsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6YSxudW1HbHlwaHM6cn0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IG49bmV3IERhdGFWaWV3KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpLGk9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLHM9dD80OjI7bGV0IG89dD9uLmdldFVpbnQzMigwKToyKm4uZ2V0VWludDE2KDApLGM9MDtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjKz1zO2NvbnN0IGU9dD9uLmdldFVpbnQzMihjKToyKm4uZ2V0VWludDE2KGMpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGE9R2x5cGgucGFyc2UobyxpKTt0aGlzLmdseXBocy5wdXNoKGEpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksYT1lPjEzMTA3MCxyPWE/NDoyLG49bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKnIpKTthP24uc2V0VWludDMyKDAsMCk6bi5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7aSs9ZS53cml0ZShpLHQpO2k9aSszJi00O3MrPXI7YT9uLnNldFVpbnQzMihzLGkpOm4uc2V0VWludDE2KHMsaT4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmEsbG9jYTpuZXcgVWludDhBcnJheShuLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGE9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8YTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fTtjbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixuXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKG4pO2lmKCEoMzImbi5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3Qgbj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6bn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBhPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWEud3JpdGUoZSx0KTtyZXR1cm4gZS1hfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcylhLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46YSx4TWF4OnIseU1heDpufSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWE7dGhpcy54TWF4PXI7dGhpcy55TWF4PW59c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOmF9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWE7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsYSl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MDtuPGE7bisrKXtjb25zdCBhPXQuZ2V0VWludDE2KGUpO2UrPTI7ci5wdXNoKGEpfWNvbnN0IG49clthLTFdKzEsaT10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWk7Y29uc3Qgbz1bXTtmb3IobGV0IGE9MDthPG47ZSsrLGErKyl7bGV0IHI9dC5nZXRVaW50OChlKTtvLnB1c2gocik7aWYoOCZyKXtjb25zdCBuPXQuZ2V0VWludDgoKytlKTtyXj04O2ZvcihsZXQgZT0wO2U8bjtlKyspby5wdXNoKHIpO2ErPW59fWNvbnN0IGM9W107bGV0IGw9W10saD1bXSx1PVtdO2NvbnN0IGQ9W107bGV0IGY9MCxnPTA7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgbj1vW2FdO2lmKDImbil7Y29uc3QgYT10LmdldFVpbnQ4KGUrKyk7Zys9MTYmbj9hOi1hO2wucHVzaChnKX1lbHNlIGlmKDE2Jm4pbC5wdXNoKGcpO2Vsc2V7Zys9dC5nZXRJbnQxNihlKTtlKz0yO2wucHVzaChnKX1pZihyW2ZdPT09YSl7ZisrO2MucHVzaChsKTtsPVtdfX1nPTA7Zj0wO2ZvcihsZXQgYT0wO2E8bjthKyspe2NvbnN0IG49b1thXTtpZig0Jm4pe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTMyJm4/YTotYTtoLnB1c2goZyl9ZWxzZSBpZigzMiZuKWgucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goZyl9dS5wdXNoKDEmbnw2NCZuKTtpZihyW2ZdPT09YSl7bD1jW2ZdO2YrKztkLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOnUseENvb3JkaW5hdGVzOmwseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTt1PVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpkLGluc3RydWN0aW9uczpzfSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGE9MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtlKz1yLmZsYWdzLmxlbmd0aDtmb3IobGV0IG49MCxpPXIueENvb3JkaW5hdGVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXIueENvb3JkaW5hdGVzW25dLHM9ci55Q29vcmRpbmF0ZXNbbl07bGV0IG89TWF0aC5hYnMoaS10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9aTtvPU1hdGguYWJzKHMtYSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTthPXN9fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lLHI9W10sbj1bXSxpPVtdO2xldCBzPTAsbz0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmxhZ3NbZV07Y29uc3QgYz1hLnhDb29yZGluYXRlc1tlXTtsZXQgbD1jLXM7aWYoMD09PWwpe3R8PTE2O3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7aWYoZTw9MjU1KXt0fD1sPj0wPzE4OjI7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGwpfXM9Yztjb25zdCBoPWEueUNvb3JkaW5hdGVzW2VdO2w9aC1vO2lmKDA9PT1sKXt0fD0zMjtuLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8zNjo0O24ucHVzaChlKX1lbHNlIG4ucHVzaChsKX1vPWg7aS5wdXNoKHQpfXQuc2V0VWludDE2KGUsci5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgYSBvZiBpKXQuc2V0VWludDgoZSsrLGEpO2ZvcihsZXQgYT0wLG49ci5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1yW2FdLHM9aVthXTtpZigyJnMpdC5zZXRVaW50OChlKyssbik7ZWxzZSBpZighKDE2JnMpKXt0LnNldEludDE2KGUsbik7ZSs9Mn19Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW5bYV0scz1pW2FdO2lmKDQmcyl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMzImcykpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpcy5jb250b3VycylpZigwIT09YS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgcj0wLG49YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8bjtyKyspYS54Q29vcmRpbmF0ZXNbcl09TWF0aC5yb3VuZChlKyhhLnhDb29yZGluYXRlc1tyXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTphLGFyZ3VtZW50MjpyLHRyYW5zZjpuLGluc3RydWN0aW9uczppfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWE7dGhpcy5hcmd1bWVudDI9cjt0aGlzLnRyYW5zZj1uO3RoaXMuaW5zdHJ1Y3Rpb25zPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgYT1lLHI9W107bGV0IG49dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IHMsbztpZigxJm4pe2lmKDImbil7cz10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7cz10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtuXj0xfWVsc2V7aWYoMiZuKXtzPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7cz10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZuKXtyLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGM9bnVsbDtpZigyNTYmbil7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO2M9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2EpO2UrPWF9cmV0dXJuW2UtYSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOm4sZ2x5cGhJbmRleDppLGFyZ3VtZW50MTpzLGFyZ3VtZW50MjpvLHRyYW5zZjpyLGluc3RydWN0aW9uczpjfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgYT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWF9c2NhbGUoZSx0KXt9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9dm9pZCAwO3ZhciByPWEoNCksbj1hKDIpO2Z1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGEpe2VbdF09YT4+OCYyNTU7ZVt0KzFdPTI1NSZhfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGEpe2VbdF09YT4+MjQmMjU1O2VbdCsxXT1hPj4xNiYyNTU7ZVt0KzJdPWE+PjgmMjU1O2VbdCszXT0yNTUmYX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGEpe2lmKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGEsdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEpZm9yKGxldCByPTAsbj1hLmxlbmd0aDtyPG47cisrKWVbdCsrXT0yNTUmYS5jaGFyQ29kZUF0KHIpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgYSllW3QrK109MjU1JnJ9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgYT0xLHI9MDtmb3IoOyhhXmUpPmE7KXthPDw9MTtyKyt9Y29uc3Qgbj1hKnQ7cmV0dXJue3JhbmdlOm4sZW50cnk6cixyYW5nZVNoaWZ0OnQqZS1ufX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsYT1PYmplY3Qua2V5cyh0KTthLnNvcnQoKTtjb25zdCBpPWEubGVuZ3RoO2xldCBzLG8sYyxsLGgsdT0xMisxNippO2NvbnN0IGQ9W3VdO2ZvcihzPTA7czxpO3MrKyl7bD10W2Fbc11dO3UrPShsLmxlbmd0aCszJi00KT4+PjA7ZC5wdXNoKHUpfWNvbnN0IGY9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKHM9MDtzPGk7cysrKXtsPXRbYVtzXV07d3JpdGVEYXRhKGYsZFtzXSxsKX0idHJ1ZSI9PT1lJiYoZT0oMCxuLnN0cmluZzMyKSg2NTUzNikpO2ZbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtmWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7ZlsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2ZbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGYsNCxpKTtjb25zdCBnPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGksMTYpO3dyaXRlSW50MTYoZiw2LGcucmFuZ2UpO3dyaXRlSW50MTYoZiw4LGcuZW50cnkpO3dyaXRlSW50MTYoZiwxMCxnLnJhbmdlU2hpZnQpO3U9MTI7Zm9yKHM9MDtzPGk7cysrKXtoPWFbc107Zlt1XT0yNTUmaC5jaGFyQ29kZUF0KDApO2ZbdSsxXT0yNTUmaC5jaGFyQ29kZUF0KDEpO2ZbdSsyXT0yNTUmaC5jaGFyQ29kZUF0KDIpO2ZbdSszXT0yNTUmaC5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKG89ZFtzXSxjPWRbcysxXTtvPGM7bys9NCl7ZT1lKygwLHIucmVhZFVpbnQzMikoZixvKT4+PjB9d3JpdGVJbnQzMihmLHUrNCxlKTt3cml0ZUludDMyKGYsdSs4LGRbc10pO3dyaXRlSW50MzIoZix1KzEyLHRbaF0ubGVuZ3RoKTt1Kz0xNn1yZXR1cm4gZn1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fXQuT3BlblR5cGVGaWxlQnVpbGRlcj1PcGVuVHlwZUZpbGVCdWlsZGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVHlwZTFGb250PXZvaWQgMDt2YXIgcj1hKDMzKSxuPWEoMiksaT1hKDM2KSxzPWEoNCksbz1hKDgpLGM9YSg0Nyk7ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxhKXtjb25zdCByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT1yLW47bGV0IG89YSxjPSExO2Zvcig7bzxpOyl7bGV0IGE9MDtmb3IoO2E8biYmZVtvK2FdPT09dFthXTspYSsrO2lmKGE+PW4pe28rPWE7Zm9yKDtvPHImJigwLHMuaXNXaGl0ZVNwYWNlKShlW29dKTspbysrO2M9ITA7YnJlYWt9bysrfXJldHVybntmb3VuZDpjLGxlbmd0aDpvfX10LlR5cGUxRm9udD1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGEpe2xldCByPWEubGVuZ3RoMSxzPWEubGVuZ3RoMixsPXQucGVla0J5dGVzKDYpO2NvbnN0IGg9MTI4PT09bFswXSYmMT09PWxbMV07aWYoaCl7dC5za2lwKDYpO3I9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBhPVsxMDEsMTAxLDEyMCwxMDEsOTldLHI9ZS5wb3M7bGV0IGkscyxjLGw7dHJ5e2k9ZS5nZXRCeXRlcyh0KTtzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCl7Yz1maW5kQmxvY2soaSxhLHQtMiphLmxlbmd0aCk7aWYoYy5mb3VuZCYmYy5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fX0oMCxuLndhcm4pKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtjPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1jLmxlbmd0aClicmVhaztlLnBvcys9Yy5sZW5ndGg7aWYoYy5mb3VuZCl7bD1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKGwpcmV0dXJue3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyhsKSksbGVuZ3RoOmx9OygwLG4ud2FybikoJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxyKTtuZXcgYy5UeXBlMVBhcnNlcih1LnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYoaCl7bD10LmdldEJ5dGVzKDYpO3M9bFs1XTw8MjR8bFs0XTw8MTZ8bFszXTw8OHxsWzJdfWNvbnN0IGQ9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShhKSxsZW5ndGg6YS5sZW5ndGh9fSh0KSxmPW5ldyBjLlR5cGUxUGFyc2VyKGQuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gZi5wcm9wZXJ0aWVzKWFbZV09Zi5wcm9wZXJ0aWVzW2VdO2NvbnN0IGc9Zi5jaGFyc3RyaW5ncyxwPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhnKSxtPXRoaXMuZ2V0VHlwZTJTdWJycyhmLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWc7dGhpcy5kYXRhPXRoaXMud3JhcChlLHAsdGhpcy5jaGFyc3RyaW5ncyxtLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhmLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLG47Zm9yKG49MDtuPHQubGVuZ3RoO24rKylhLnB1c2godFtuXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe249YS5pbmRleE9mKHNbZV0pO24+PTAmJihyW2VdPW4pfX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxyLGEpfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLm51bUdseXBocylyZXR1cm4hMTtpZigwPT09ZSlyZXR1cm4hMDtyZXR1cm4gdGhpcy5jaGFyc3RyaW5nc1tlLTFdLmNoYXJzdHJpbmcubGVuZ3RoPjB9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZVthXTtyLnNlYWMmJih0W2ErMV09ci5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgb2YgZSl0LnB1c2goYS5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3QgYT1lLmxlbmd0aDt0PWE8MTEzMz8xMDc6YTwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IHI9W107bGV0IG47Zm9yKG49MDtuPHQ7bisrKXIucHVzaChbMTFdKTtmb3Iobj0wO248YTtuKyspci5wdXNoKGVbbl0pO3JldHVybiByfXdyYXAoZSx0LGEsbixpKXtjb25zdCBzPW5ldyByLkNGRjtzLmhlYWRlcj1uZXcgci5DRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgci5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpO28uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Mik7by5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpO28uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpO28uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSk7by5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKTtvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KTtvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCk7by5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpO28uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCk7by5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpO3MudG9wRGljdD1vO2NvbnN0IGM9bmV3IHIuQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIik7Yy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtjLmFkZChlKTtjLmFkZChlKTtjLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPWM7cy5nbG9iYWxTdWJySW5kZXg9bmV3IHIuQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPWFbdV0uZ2x5cGhOYW1lOy0xPT09ci5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSk7aC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgci5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgci5DRkZJbmRleDtmLmFkZChbMTM5LDE0XSk7Zm9yKHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyByLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgci5DRkZJbmRleDtmb3IodT0wLGQ9bi5sZW5ndGg7dTxkO3UrKyltLmFkZChuW3VdKTtnLnN1YnJzSW5kZXg9bTtyZXR1cm4gbmV3IHIuQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5UeXBlMVBhcnNlcj12b2lkIDA7dmFyIHI9YSgzNSksbj1hKDQpLGk9YSg4KSxzPWEoMik7Y29uc3Qgbz1bNF0sYz1bNV0sbD1bNl0saD1bN10sdT1bOF0sZD1bMTIsMzVdLGY9WzE0XSxnPVsyMV0scD1bMjJdLG09WzMwXSxiPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbixpLHksdz0hMTtmb3IobGV0IFM9MDtTPHI7UysrKXtsZXQgcj1lW1NdO2lmKHI8MzIpezEyPT09ciYmKHI9KHI8PDgpK2VbKytTXSk7c3dpdGNoKHIpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLG8pO2JyZWFrO2Nhc2UgNTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixjKTticmVhaztjYXNlIDY6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbCk7YnJlYWs7Y2FzZSA3Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLGgpO2JyZWFrO2Nhc2UgODp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNix1KTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3ldKXt3PSEwO2JyZWFrfXc9dGhpcy5jb252ZXJ0KHRbeV0sdCxhKTticmVhaztjYXNlIDExOnJldHVybiB3O2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPWk7dGhpcy53aWR0aD1uO3RoaXMuc3RhY2sucHVzaChuLGkpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLHApO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChmWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhazt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfXc9dGhpcy5leGVjdXRlQ29tbWFuZCgxLHApO2JyZWFrO2Nhc2UgMzA6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbSk7YnJlYWs7Y2FzZSAzMTp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxiKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgwLGYpfWVsc2Ugdz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsZik7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe3c9ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtuPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1pO3RoaXMud2lkdGg9bjt0aGlzLnN0YWNrLnB1c2gobixpLGUpO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgzLGcpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWNvbnN0IFM9dGhpcy5zdGFjay5wb3AoKSx4PXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKHgvUyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9eT10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGs9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09eSYmMz09PWspe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UodGhpcy5zdGFjay5sZW5ndGgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTt3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PWsmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytyKyciJyl9aWYodylicmVha31lbHNle3I8PTI0Nj9yLT0xMzk6cj1yPD0yNTA/MjU2KihyLTI0NykrZVsrK1NdKzEwODpyPD0yNTQ/LTI1Niooci0yNTEpLWVbKytTXS0xMDg6KDI1NSZlWysrU10pPDwyNHwoMjU1JmVbKytTXSk8PDE2fCgyNTUmZVsrK1NdKTw8OHwoMjU1JmVbKytTXSk8PDA7dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gd31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3Qgbj1yLWU7Zm9yKGxldCBlPW47ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShuLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgcixuLGk9MHx0O2ZvcihyPTA7cjxhO3IrKylpPTUyODQ1KihlW3JdK2kpKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsbj0wO248cztyKyssbisrKXtjb25zdCB0PWVbcl07b1tuXT10Xmk+Pjg7aT01Mjg0NSoodCtpKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGEpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLGE9ISgoaXNIZXhEaWdpdCh0WzBdKXx8KDAsbi5pc1doaXRlU3BhY2UpKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgaS5TdHJlYW0oYT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxhKXtsZXQgcj0wfHQ7Y29uc3Qgbj1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KG4+Pj4xKTtsZXQgcyxvO2ZvcihzPTAsbz0wO3M8bjtzKyspe2NvbnN0IHQ9ZVtzXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtzKys7bGV0IGE7Zm9yKDtzPG4mJiFpc0hleERpZ2l0KGE9ZVtzXSk7KXMrKztpZihzPG4pe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGEpLDE2KTtpW28rK109ZV5yPj44O3I9NTI4NDUqKGUrcikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKGEsbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWE7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsbi5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBhPSIiO2Rve2ErPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmISgwLG4uaXNXaGl0ZVNwYWNlKSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGF9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1bXSxyPVtdLG49T2JqZWN0LmNyZWF0ZShudWxsKTtuLmxlbklWPTQ7Y29uc3QgaT17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6bn19O2xldCBzLG8sYyxsO2Zvcig7bnVsbCE9PShzPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXMpe3M9dGhpcy5nZXRUb2tlbigpO3N3aXRjaChzKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtzPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09c3x8ImVuZCI9PT1zKWJyZWFrO2lmKCIvIiE9PXMpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Yz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBhPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpO3M9dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1zP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1zJiZ0aGlzLnByZXZDaGFyKCk7ci5wdXNoKHtnbHlwaDplLGVuY29kZWQ6YX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXMmJnRoaXMuZ2V0VG9rZW4oKTthW2VdPXJ9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKTticmVhaztjYXNlIkZvcmNlQm9sZCI6aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW3NdPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpufW9mIHIpe2NvbnN0IHI9bmV3IFR5cGUxQ2hhclN0cmluZyxzPXIuY29udmVydCh0LGEsdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1yLm91dHB1dDtzJiYobz1bMTRdKTtjb25zdCBjPXtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOm8sd2lkdGg6ci53aWR0aCxsc2I6ci5sc2Isc2VhYzpyLnNlYWN9OyIubm90ZGVmIj09PW4/aS5jaGFyc3RyaW5ncy51bnNoaWZ0KGMpOmkuY2hhcnN0cmluZ3MucHVzaChjKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKG4pO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPXIud2lkdGgpfX1yZXR1cm4gaX1leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBhPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWE7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3Qgbj10aGlzLmdldFRva2VuKCk7bGV0IGk7aWYoL15cZCskLy50ZXN0KG4pKXtpPVtdO2NvbnN0IGU9MHxwYXJzZUludChuLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBhPTA7YTxlO2ErKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgYT10aGlzLmdldFRva2VuKCk7aVtlXT1hO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSBpPSgwLHIuZ2V0RW5jb2RpbmcpKG4pO2UuYnVpbHRJbkVuY29kaW5nPWk7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUGF0dGVybj12b2lkIDA7dC5nZXRUaWxpbmdQYXR0ZXJuSVI9ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxhKXtjb25zdCBuPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9ci5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyR7aX1dLmApO3JldHVyblsiVGlsaW5nUGF0dGVybiIsYSxlLG4saSxzLG8sYyxsXX07dmFyIHI9YSgyKSxuPWEoNSksaT1hKDEyKSxzPWEoNCk7Y29uc3Qgbz0yLGM9MyxsPTQsaD01LHU9NixkPTc7dC5QYXR0ZXJuPWNsYXNzIFBhdHRlcm57Y29uc3RydWN0b3IoKXsoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgcGFyc2VTaGFkaW5nKGUsdCxhLGksZixnKXtjb25zdCBwPWUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0/ZS5kaWN0OmUsbT1wLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG0pe2Nhc2UgbzpjYXNlIGM6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocCx0LGEsZixnKTtjYXNlIGw6Y2FzZSBoOmNhc2UgdTpjYXNlIGQ6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsYSxmLGcpO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK20pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygcy5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2kuc2VuZCgiVW5zdXBwb3J0ZWRGZWF0dXJlIix7ZmVhdHVyZUlkOnIuVU5TVVBQT1JURURfRkVBVFVSRVMuc2hhZGluZ1BhdHRlcm59KTsoMCxyLndhcm4pKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19O2NsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBnZXQgU01BTExfTlVNQkVSKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIlNNQUxMX05VTUJFUiIsMWUtNil9Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpeygwLHIudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLG4scyl7c3VwZXIoKTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IG89aS5Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5Om4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pLGw9ZS5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QobCk6dGhpcy5iYm94PW51bGw7bGV0IGg9MCx1PTE7aWYoZS5oYXMoIkRvbWFpbiIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2g9dFswXTt1PXRbMV19bGV0IGQ9ITEsZj0hMTtpZihlLmhhcygiRXh0ZW5kIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRXh0ZW5kIik7ZD10WzBdO2Y9dFsxXX1pZighKHRoaXMuc2hhZGluZ1R5cGUhPT1jfHxkJiZmKSl7Y29uc3RbZSx0LGEsbixpLHNdPXRoaXMuY29vcmRzQXJyLG89TWF0aC5oeXBvdChlLW4sdC1pKTthPD1zK28mJnM8PWErbyYmKDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgcmFkaWFsIGdyYWRpZW50LiIpfXRoaXMuZXh0ZW5kU3RhcnQ9ZDt0aGlzLmV4dGVuZEVuZD1mO2NvbnN0IGc9ZS5nZXRSYXcoIkZ1bmN0aW9uIikscD1uLmNyZWF0ZUZyb21BcnJheShnKSxtPSh1LWgpLzEwLGI9dGhpcy5jb2xvclN0b3BzPVtdO2lmKGg+PXV8fG08PTApeygwLHIuaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KG8ubnVtQ29tcHMpLHc9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgUztmb3IobGV0IGU9MDtlPD0xMDtlKyspe3dbMF09aCtlKm07cCh3LDAseSwwKTtTPW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1yLlV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtiLnB1c2goW2UvMTAsdF0pfWxldCB4PSJ0cmFuc3BhcmVudCI7aWYoZS5oYXMoIkJhY2tncm91bmQiKSl7Uz1vLmdldFJnYihlLmdldCgiQmFja2dyb3VuZCIpLDApO3g9ci5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSl9aWYoIWQpe2IudW5zaGlmdChbMCx4XSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFmKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSx4XSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdCBlPXRoaXMuY29vcmRzQXJyLHQ9dGhpcy5zaGFkaW5nVHlwZTtsZXQgYSxuLGkscyxsO2lmKHQ9PT1vKXtuPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07cz1udWxsO2w9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09Yyl7bj1bZVswXSxlWzFdXTtpPVtlWzNdLGVbNF1dO3M9ZVsyXTtsPWVbNV07YT0icmFkaWFsIn1lbHNlKDAsci51bnJlYWNoYWJsZSkoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsYSx0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLG4saSxzLGxdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3QgYT10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShhKTtjb25zdCByPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkocik6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlckxlbmd0aDtpZigzMj09PWUpe2lmKDA9PT1hKXJldHVybih0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSk+Pj4wO3Q9dDw8MjR8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwxNnx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PGEpLTE7cmV0dXJuKHQ8PDgtYXwoMjU1JmUpPj5hKT4+PjB9aWYoOD09PWUmJjA9PT1hKXJldHVybiB0aGlzLnN0cmVhbS5nZXRCeXRlKCk7Zm9yKDthPGU7KXt0PXQ8PDh8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2ErPTh9YS09ZTt0aGlzLmJ1ZmZlckxlbmd0aD1hO3RoaXMuYnVmZmVyPXQmKDE8PGEpLTE7cmV0dXJuIHQ+PmF9YWxpZ24oKXt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTB9cmVhZEZsYWcoKXtyZXR1cm4gdGhpcy5yZWFkQml0cyh0aGlzLmNvbnRleHQuYml0c1BlckZsYWcpfXJlYWRDb29yZGluYXRlKCl7Y29uc3QgZT10aGlzLmNvbnRleHQuYml0c1BlckNvb3JkaW5hdGUsdD10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj1lPDMyPzEvKCgxPDxlKS0xKToyLjMyODMwNjQzNjUzODY5NjNlLTEwO3JldHVyblt0Km4qKHJbMV0tclswXSkrclswXSxhKm4qKHJbM10tclsyXSkrclsyXV19cmVhZENvbXBvbmVudHMoKXtjb25zdCBlPXRoaXMuY29udGV4dC5udW1Db21wcyx0PXRoaXMuY29udGV4dC5iaXRzUGVyQ29tcG9uZW50LGE9dDwzMj8xLygoMTw8dCktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxyPXRoaXMuY29udGV4dC5kZWNvZGUsbj10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgaT0wLHM9NDtpPGU7aSsrLHMrPTIpe2NvbnN0IGU9dGhpcy5yZWFkQml0cyh0KTtuW2ldPWUqYSoocltzKzFdLXJbc10pK3Jbc119Y29uc3QgaT10aGlzLnRtcENzQ29tcHNCdWY7dGhpcy5jb250ZXh0LmNvbG9yRm4mJnRoaXMuY29udGV4dC5jb2xvckZuKG4sMCxpLDApO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JTcGFjZS5nZXRSZ2IoaSwwKX19Y29uc3QgZj1mdW5jdGlvbiBnZXRCQ2xvc3VyZSgpe2NvbnN0IGU9W107cmV0dXJuIGZ1bmN0aW9uKHQpe2VbdF18fChlW3RdPWZ1bmN0aW9uIGJ1aWxkQihlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8PWU7YSsrKXtjb25zdCByPWEvZSxuPTEtcjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbbipuKm4sMypyKm4qbiwzKnIqcipuLHIqcipyXSkpfXJldHVybiB0fSh0KSk7cmV0dXJuIGVbdF19fSgpO2NsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIGdldCBNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMyl9c3RhdGljIGdldCBNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCIsMjApfXN0YXRpYyBnZXQgVFJJQU5HTEVfREVOU0lUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJUUklBTkdMRV9ERU5TSVRZIiwyMCl9Y29uc3RydWN0b3IoZSx0LGEscyxvKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBjPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPWMuZ2V0KCJTaGFkaW5nVHlwZSIpO2NvbnN0IGY9Yy5nZXRBcnJheSgiQkJveCIpO0FycmF5LmlzQXJyYXkoZikmJjQ9PT1mLmxlbmd0aD90aGlzLmJib3g9ci5VdGlsLm5vcm1hbGl6ZVJlY3QoZik6dGhpcy5iYm94PW51bGw7Y29uc3QgZz1pLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/Zy5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IHA9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksbT1wP3MuY3JlYXRlRnJvbUFycmF5KHApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGI9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjptLGNvbG9yU3BhY2U6ZyxudW1Db21wczptPzE6Zy5udW1Db21wc30seT1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGIpO2xldCB3PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGw6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHkpO2JyZWFrO2Nhc2UgaDpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHksZSk7YnJlYWs7Y2FzZSB1OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyh5KTt3PSEwO2JyZWFrO2Nhc2UgZDp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcoeSk7dz0hMDticmVhaztkZWZhdWx0OigwLHIudW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYodyl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSk7cz0xfW4ucHVzaChvKX1pLnB1c2godC5sZW5ndGgpO3QucHVzaChjKTthLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxuPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7bi5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KG4pLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxuPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IGE9MCxyPTAhPT1zPzg6MTI7YTxyO2ErKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPWEubGVuZ3RoO2ZvcihsZXQgdD0wLHI9MCE9PXM/Mjo0O3Q8cjt0KyspYS5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDpuWzEyXT1vKzM7blsxM109bys0O25bMTRdPW8rNTtuWzE1XT1vKzY7bls4XT1vKzI7blsxMV09bys3O25bNF09bysxO25bN109bys4O25bMF09bztuWzFdPW8rMTE7blsyXT1vKzEwO25bM109bys5O2lbMl09YysxO2lbM109YysyO2lbMF09YztpWzFdPWMrMzticmVhaztjYXNlIDE6bD1uWzEyXTtoPW5bMTNdO3U9blsxNF07ZD1uWzE1XTtuWzEyXT1kO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09dTtuWzExXT1vKzM7bls0XT1oO25bN109bys0O25bMF09bDtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtsPWlbMl07aD1pWzNdO2lbMl09aDtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMjpsPW5bMTVdO2g9blsxMV07blsxMl09blszXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bN107blsxMV09byszO25bNF09aDtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzNdO2lbMl09aVsxXTtpWzNdPWM7aVswXT1sO2lbMV09YysxO2JyZWFrO2Nhc2UgMzpuWzEyXT1uWzBdO25bMTNdPW8rMDtuWzE0XT1vKzE7blsxNV09bysyO25bOF09blsxXTtuWzExXT1vKzM7bls0XT1uWzJdO25bN109bys0O25bMF09blszXTtuWzFdPW8rNztuWzJdPW8rNjtuWzNdPW8rNTtpWzJdPWlbMF07aVszXT1jO2lbMF09aVsxXTtpWzFdPWMrMX1uWzVdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblswXV1bMF0tdFtuWzE1XV1bMF0rNioodFtuWzRdXVswXSt0W25bMV1dWzBdKS0yKih0W25bMTJdXVswXSt0W25bM11dWzBdKSszKih0W25bMTNdXVswXSt0W25bN11dWzBdKSkvOSwoLTQqdFtuWzBdXVsxXS10W25bMTVdXVsxXSs2Kih0W25bNF1dWzFdK3RbblsxXV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsxM11dWzFdK3Rbbls3XV1bMV0pKS85XSk7bls2XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W25bM11dWzBdLXRbblsxMl1dWzBdKzYqKHRbblsyXV1bMF0rdFtuWzddXVswXSktMioodFtuWzBdXVswXSt0W25bMTVdXVswXSkrMyoodFtuWzRdXVswXSt0W25bMTRdXVswXSkpLzksKC00KnRbblszXV1bMV0tdFtuWzEyXV1bMV0rNioodFtuWzJdXVsxXSt0W25bN11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bNF1dWzFdK3RbblsxNF1dWzFdKSkvOV0pO25bOV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtuWzEyXV1bMF0tdFtuWzNdXVswXSs2Kih0W25bOF1dWzBdK3RbblsxM11dWzBdKS0yKih0W25bMF1dWzBdK3RbblsxNV1dWzBdKSszKih0W25bMTFdXVswXSt0W25bMV1dWzBdKSkvOSwoLTQqdFtuWzEyXV1bMV0tdFtuWzNdXVsxXSs2Kih0W25bOF1dWzFdK3RbblsxM11dWzFdKS0yKih0W25bMF1dWzFdK3RbblsxNV1dWzFdKSszKih0W25bMTFdXVsxXSt0W25bMV1dWzFdKSkvOV0pO25bMTBdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbblsxNV1dWzBdLXRbblswXV1bMF0rNioodFtuWzExXV1bMF0rdFtuWzE0XV1bMF0pLTIqKHRbblsxMl1dWzBdK3RbblszXV1bMF0pKzMqKHRbblsyXV1bMF0rdFtuWzhdXVswXSkpLzksKC00KnRbblsxNV1dWzFdLXRbblswXV1bMV0rNioodFtuWzExXV1bMV0rdFtuWzE0XV1bMV0pLTIqKHRbblsxMl1dWzFdK3RbblszXV1bMV0pKzMqKHRbblsyXV1bMV0rdFtuWzhdXVsxXSkpLzldKTt0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShuKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMsbj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09cz8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09cz8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOm5bMTJdPW8rMztuWzEzXT1vKzQ7blsxNF09bys1O25bMTVdPW8rNjtuWzhdPW8rMjtuWzldPW8rMTM7blsxMF09bysxNDtuWzExXT1vKzc7bls0XT1vKzE7bls1XT1vKzEyO25bNl09bysxNTtuWzddPW8rODtuWzBdPW87blsxXT1vKzExO25bMl09bysxMDtuWzNdPW8rOTtpWzJdPWMrMTtpWzNdPWMrMjtpWzBdPWM7aVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9blsxMl07aD1uWzEzXTt1PW5bMTRdO2Q9blsxNV07blsxMl09ZDtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPXU7bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1oO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPWw7blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7bD1pWzJdO2g9aVszXTtpWzJdPWg7aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDI6bD1uWzE1XTtoPW5bMTFdO25bMTJdPW5bM107blsxM109byswO25bMTRdPW8rMTtuWzE1XT1vKzI7bls4XT1uWzddO25bOV09bys5O25bMTBdPW8rMTA7blsxMV09byszO25bNF09aDtuWzVdPW8rODtuWzZdPW8rMTE7bls3XT1vKzQ7blswXT1sO25bMV09bys3O25bMl09bys2O25bM109bys1O2w9aVszXTtpWzJdPWlbMV07aVszXT1jO2lbMF09bDtpWzFdPWMrMTticmVhaztjYXNlIDM6blsxMl09blswXTtuWzEzXT1vKzA7blsxNF09bysxO25bMTVdPW8rMjtuWzhdPW5bMV07bls5XT1vKzk7blsxMF09bysxMDtuWzExXT1vKzM7bls0XT1uWzJdO25bNV09bys4O25bNl09bysxMTtuWzddPW8rNDtuWzBdPW5bM107blsxXT1vKzc7blsyXT1vKzY7blszXT1vKzU7aVsyXT1pWzBdO2lbM109YztpWzBdPWlbMV07aVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkobiksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxyLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLGM9TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxsPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksaD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO3U9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsdSkpO2xldCBkPU1hdGguY2VpbCgoaC1jKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO2Q9TWF0aC5tYXgoTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWF0aC5taW4oTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZCkpO2NvbnN0IGc9dSsxLHA9bmV3IEludDMyQXJyYXkoKGQrMSkqZyksbT1uZXcgSW50MzJBcnJheSgoZCsxKSpnKTtsZXQgYj0wO2NvbnN0IHk9bmV3IFVpbnQ4QXJyYXkoMyksdz1uZXcgVWludDhBcnJheSgzKSxTPW5bc1swXV0seD1uW3NbMV1dLGs9bltzWzJdXSxDPW5bc1szXV0sdj1mKGQpLEY9Zih1KTtmb3IobGV0IGU9MDtlPD1kO2UrKyl7eVswXT0oU1swXSooZC1lKStrWzBdKmUpL2R8MDt5WzFdPShTWzFdKihkLWUpK2tbMV0qZSkvZHwwO3lbMl09KFNbMl0qKGQtZSkra1syXSplKS9kfDA7d1swXT0oeFswXSooZC1lKStDWzBdKmUpL2R8MDt3WzFdPSh4WzFdKihkLWUpK0NbMV0qZSkvZHwwO3dbMl09KHhbMl0qKGQtZSkrQ1syXSplKS9kfDA7Zm9yKGxldCB0PTA7dDw9dTt0KyssYisrKXtpZighKDAhPT1lJiZlIT09ZHx8MCE9PXQmJnQhPT11KSljb250aW51ZTtsZXQgcj0wLHM9MCxvPTA7Zm9yKGxldCBuPTA7bjw9MztuKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bbl0qRlt0XVtjXTtyKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfXBbYl09YS5sZW5ndGg7YS5wdXNoKFtyLHNdKTttW2JdPW4ubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0oeVswXSoodS10KSt3WzBdKnQpL3V8MDtjWzFdPSh5WzFdKih1LXQpK3dbMV0qdCkvdXwwO2NbMl09KHlbMl0qKHUtdCkrd1syXSp0KS91fDA7bi5wdXNoKGMpfX1wWzBdPWlbMF07bVswXT1zWzBdO3BbdV09aVszXTttW3VdPXNbMV07cFtnKmRdPWlbMTJdO21bZypkXT1zWzJdO3BbZypkK3VdPWlbMTVdO21bZypkK3VdPXNbM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6cCxjb2xvcnM6bSx2ZXJ0aWNlc1BlclJvdzpnfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxhPWUscj10O2ZvcihsZXQgbj0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbbl1bMF0scz10aGlzLmNvb3Jkc1tuXVsxXTtlPWU+aT9pOmU7dD10PnM/czp0O2E9YTxpP2k6YTtyPXI8cz9zOnJ9dGhpcy5ib3VuZHM9W2UsdCxhLHJdfV9wYWNrRGF0YSgpe2xldCBlLHQsYSxyO2NvbnN0IG49dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqbi5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1uW2VdO2lbYSsrXT10WzBdO2lbYSsrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAsYT0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bYSsrXT10WzBdO29bYSsrXT10WzFdO29bYSsrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxuPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKGE9MCxyPW4ubGVuZ3RoO2E8cjthKyspe25bYV0qPTI7aVthXSo9M319fWdldElSKCl7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyx0aGlzLmJvdW5kcyx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmdldFhmYUZvbnREaWN0PWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6YSxiYXNlTWFwcGluZzpyLGZhY3RvcnM6bn09dDtsZXQgaTtpPW4/YS5tYXAoKChlLHQpPT5lKm5bdF0pKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtzLnB1c2goaVt0XSk7bys9MX1lbHNle289ZTtzPVtpW3RdXTtjLnB1c2goZSxzKX1yZXR1cm4gY30oZSksYT1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsbi5OYW1lLmdldChlKSk7YS5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkZvbnQiKSk7YS5zZXQoIlN1YnR5cGUiLG4uTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLG4uTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7YS5zZXQoIkNJRFRvR0lETWFwIixuLk5hbWUuZ2V0KCJJZGVudGl0eSIpKTthLnNldCgiVyIsdCk7YS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7YS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3Qgcj1uZXcgbi5EaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgbi5EaWN0KG51bGwpO2kuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7aS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtpLnNldCgiU3VwcGxlbWVudCIsMCk7YS5zZXQoIkNJRFN5c3RlbUluZm8iLGkpO3JldHVybiBhfTt0LmdldFhmYUZvbnROYW1lPWdldFhmYUZvbnROYW1lO3ZhciByPWEoNTApLG49YSgzKSxpPWEoNTEpLHM9YSg1Miksbz1hKDUzKSxjPWEoNTQpLGw9YSg0KSxoPWEoMzYpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc307ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9O2VbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc307ZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ307ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ307ZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9O2VbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnIuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpUmVndWxhck1ldHJpY3N9O2VbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZE1ldHJpY3N9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpyLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOnIuQ2FsaWJyaUl0YWxpY01ldHJpY3N9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOnIuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6ci5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9O2VbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9O2VbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9KDAsaC5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuIHUoKVt0XX19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuQ2FsaWJyaVJlZ3VsYXJNZXRyaWNzPXQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPXQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9dC5DYWxpYnJpSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljTWV0cmljcz10LkNhbGlicmlCb2xkSXRhbGljRmFjdG9ycz10LkNhbGlicmlCb2xkRmFjdG9ycz12b2lkIDA7dC5DYWxpYnJpQm9sZEZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9O3QuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlJdGFsaWNGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTU0MywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzIzNDYsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5MjQ5LC44NDExOCwuNzc0NTIsLjg1Mzc0LC43NTE4NiwuNjc3ODksLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MzA5LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM4MzEzLDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjkyNDUsLjkyNDUsLjgzMjAzLC45MjQ1LC44NTg2NSwxLjA5ODQyLC45MjQ1LC45MjQ1LDEuMDMyOTcsMS4wNzY5MiwuOTA5MTgsMS4wMzI5NywuOTQ5NTksLjkyNDUsLjkyMjc0LC45MjQ1LC45MjQ1LDEuMDI5MzMsLjc3ODMyLDEuMjA1NjIsLjkyNDUsLjg5MTYsLjk4OTg2LC44NjYyMSwuODk0NTMsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4xNjM1OSwuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MjM0NiwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkyNDksLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODUyODQsLjg0NTU3LC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44NDg0MywuODMyMDMsLjg1ODY1LC44NTg2NSwuODU4NjUsLjg1ODY1LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjkyNDUsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTA3NDcsLjg2NjUxLC45MjQ1LC45MjQ1LC45MjQ1LC45MjQ1LC44OTQ1MywuOTI0NSwuODk0NTMsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjg2NzUsLjkyNDUsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuODUxOTMsLjg4NzUsLjg2NDc3LC45OTAzNCwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsMSwxLC44NjI3NSwuOTI0NSwuOTA4NzIsLjkzNTkxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwxLjAzMjk3LC45MDY4NSwuODI2MDEsLjc3ODk2LDEuMDU2MTEsLjYzNzcsMS4wNzY5MiwxLDEsLjkwOTE4LC43NTU5MywxLjAzMjk3LDEsMSwuNzYwMzIsLjkzNzUsLjk4MTU2LC45MzQwNywuNzcyNjEsMS4xMTQyOSwuODkyNDksLjkyNDUsMSwxLC44OTI0OSwuOTI0NSwuOTI1MzQsLjg2Njk4LC45MjQ1LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NjY3LC44NjI5MSwuNzUxODYsMS4wMjkzMywxLDEsLjc1MTg2LDEuMDI5MzMsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwxLDEsLjc5Nzc2LC45NzY1NSwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuOTI0NSwuNzYzMTgsLjg0ODQzLC44NDU1NywuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjcwMDksLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2NzUsLjkwODYxLC42MTkyLC43MzYzLC42NDgyNCwuODI0MTEsLjU2MzIxLC44NTY5NiwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzI4NiwuODQxMzQsLjczMjA2LC43NjY1OSwuODYyNzUsLjg0MzY5LC45MDY4NSwuNzc4OTIsLjg1ODcxLDEuMDI2MzgsLjg5MjQ5LC43NTgyOCwuODQxMTgsLjg1OTg0LC43NzQ1MiwuNzY0NjYsLjc5Nzc2LC43MzA2LC45MDc4MiwuNzc4MTgsLjkwMywuODcyOTEsLjkwNjg1LC43MzA2LC45OTA1OCwxLjAzNjY3LC45NDYzNSwxLjIzNTE2LC45ODQ5LC45OTA1OCwuOTIzOTMsLjg5MTYsLjk0MiwxLjAzNjY3LC43NTAyNiwuOTQ2MzUsMS4wMjk3LDEuMjM1MTYsLjkwOTE4LC45NDA0OCwuOTgyMTcsLjg5NzQ2LC44NDE1MywuOTIyNzQsLjgyNTA3LC44ODgzMiwuODQ0MzgsLjg4MTc4LDEuMDM1MjUsLjk4NDksMS4wMDIyNSwuNzgwODYsLjk3MjQ4LC44OTQwNCwxLjIzNTE2LC45ODQ5LC45MjI3NCwuOTg0OSwuODk0MDQsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTY5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODU4NjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwOTMzLDEsMSwxLDEsMSwxLC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC43MzA2LC44OTQ1MywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjg5OTQsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45Nzg1OCwuODI2MTYsLjkxMTMzLC44MzQzNywuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDU3MiwxLjgxMDU1LC45MDc0OSwxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1Mjg0LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkNhbGlicmlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fTt0LkNhbGlicmlSZWd1bGFyRmFjdG9ycz1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5DYWxpYnJpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXQuSGVsdmV0aWNhUmVndWxhckZhY3RvcnM9dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRNZXRyaWNzPXQuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz10LkhlbHZldGljYUJvbGRGYWN0b3JzPXZvaWQgMDt0LkhlbHZldGljYUJvbGRGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsLjk5OTk4LC45OTk3NCwuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzcsMS4wMDA4NywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsMS4wMDAyNiwuOTk5OSwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwuOTk5NzMsLjk5OTc3LDEuMDAwMjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTk4LDEuMDAwNiwuOTk5OTgsMS4wMDAwMywuOTk5NzMsLjk5OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5OTgsMS4wMDAyNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsLjk5OTczLDEuMDAwNiwuOTk5ODIsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NTksLjk5OTczLC45OTk5OCwxLjAwMDI2LC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzMsMSwuOTk5NTksMS4wMDA3NywuOTk5NTksMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNzcsLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk3MywxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wNjQwOSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LDEuMDA0NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDEwMTEsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTc3LDEsMSwxLjAwMDI2LC45OTk2OSwuOTk5NzIsLjk5OTgxLC45OTk4LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsLjkxMTU1LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5NjYsMS4wMDAyMiwxLjAwMDMyLDEuMDAwMDEsLjk5OTQ0LDEuMDAwMjYsMS4wMDAwMSwuOTk5NjgsMS4wMDAwMSwxLjAwMDQ3LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTgxLDEuMDAxMDEsMS4wMDAyNiwxLjAwMDYsLjk5OTQ4LC45OTk4MSwxLjAwMDY0LC45OTk3MywuOTk5NDIsMS4wMDEwMSwxLjAwMDYxLDEuMDAwMjYsMS4wMDA2OSwxLjAwMDYsMS4wMDAxNCwuOTk5NzMsMS4wMTMyMiwuOTk5NzMsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMTIsLjk5OTIzLDEsMS4wMDA2NCwxLjAwMDc2LC45OTk0OCwxLjAwMDU1LDEuMDAwNjMsMS4wMDAwNywuOTk5NDMsMS4wMDA2LC45OTk0OCwxLjAwMDI2LC45OTk0OCwuOTk5NDMsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjksMS4wMDAzOCwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTc4LDEuMDAwMDEsMS4wMDA1NywuOTk5ODksLjk5OTY3LC45OTk2NCwuOTk5NjcsLjk5OTc3LC45OTk5OSwuOTk5NzcsMS4wMDAzOCwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDA2NiwuOTk5NjcsLjk5OTY3LDEuMDAwNDEsLjk5OTk4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwuOTk5NjcsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NjQsMS4wMDAzMSwxLjAwMDAxLC45OTk5OSwuOTk5OTksMSwxLjAwMDIzLDEsMSwuOTk5OTksMS4wMDAzNSwxLjAwMDAxLC45OTk5OSwuOTk5NzMsLjk5OTc3LC45OTk5OSwxLjAwMDU4LC45OTk3MywuOTk5NzMsLjk5OTU1LC45OTk1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45OTk4OSwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsLjQ1OTk4LC45OTk3MywxLjAwMDI2LC45OTk3MywxLjAwMDAxLC45OTk5OSwuOTk5ODIsLjk5OTk0LC45OTk5NiwxLDEuMDAwNDIsMS4wMDA0NCwxLjAwMDI5LDEuMDAwMjMsLjk5OTczLC45OTk3MywxLjAwMDI2LC45OTk0OSwxLjAwMDAyLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk4Njg1LC45OTk3MywxLjAwMDI2LDEsMSwuOTk5NjYsMS4wMDA0NCwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTcxLC45OTk3OCwxLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwOTgsMSwxLDEsMS4wMDA0OSwxLDEsLjk5OTcyLDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDE1LDEsLjk5NTYxLDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MiwuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfTt0LkhlbHZldGljYUl0YWxpY0ZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjAyODgsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LC45OTk0NiwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wNjMxMSwuOTk5NzMsMS4wMDAyNCwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNDEsLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODk1NDcsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAwMSwxLDEuMDAwNTQsLjk5OTc3LDEuMDAwODQsMS4wMDAwNywuOTk5NzMsMS4wMDAxMywuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLC45OTk0NSwuOTEyMjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDEsLjk5OTk5LC45OTk3NywuOTk5MzMsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsMS4wMDA2NSwxLjAwMDI2LDEuMDAwMDEsMS4wMDAxLDEuMDAwMDEsMS4wMDA1MiwxLDEuMDAwNiwxLjAwMDAxLC45OTk0NSwuOTk4OTcsLjk5OTY4LC45OTkyNCwxLjAwMDM2LC45OTk0NSwuOTk5NDksMSwxLjAwMDYsLjk5ODk3LC45OTkxOCwuOTk5NjgsLjk5OTExLC45OTkyNCwxLC45OTk2MiwxLjAxNDg3LDEsMS4wMDA1LC45OTk3MywxLjAwMDEyLDEuMDAwNDMsMSwuOTk5OTUsLjk5OTk0LDEuMDAwMzYsLjk5OTQ3LDEuMDAwMTksMS4wMDA2MywxLjAwMDI1LC45OTkyNCwxLjAwMDM2LC45OTk3MywxLjAwMDM2LDEuMDAwMjUsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjcsMS4wMDAxLDEuMDAwNjgsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsMS4wMDAwOCwuOTk5NTcsLjk5OTcyLC45OTk0LC45OTk1NCwuOTk5NzUsMS4wMDA1MSwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwxLjAwMDEsLjk5OTg2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDM4LC45OTk1NCwuOTk5NTQsLjk5OTQsMS4wMDA2NiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk3NSwxLjAwMDEsMS4wMDAwMSwuOTk5OTMsLjk5OTUsLjk5OTU1LDEuMDAwMTYsLjk5OTc4LC45OTk3NCwxLjAwMDE5LDEuMDAwMjIsLjk5OTU1LDEuMDAwNTMsLjk5OTczLDEuMDAwODksMS4wMDAwNSwuOTk5NjcsMS4wMDA0OCwuOTk5NzMsMS4wMDAwMiwxLjAwMDM0LC45OTk3MywuOTk5NzMsLjk5OTY0LDEuMDAwMDYsMS4wMDA2NiwuOTk5NDcsLjk5OTczLC45ODg5NCwuOTk5NzMsMSwuNDQ4OTgsMSwuOTk5NDYsMSwxLjAwMDM5LDEuMDAwODIsLjk5OTkxLC45OTk5MSwuOTk5ODUsMS4wMDAyMiwxLjAwMDIzLDEuMDAwNjEsMS4wMDAwNiwuOTk5NjYsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDAxOSwxLjAwMDgsMSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5ODMsMS4wMDA0NCwuOTk5NzMsLjk5OTY0LC45ODMzMiwxLC45OTk3MywxLDEsLjk5OTYyLC45OTg5NSwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywxLjAwNDIzLC45OTkyNSwuOTk5OTksMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA0OSwxLDEuMDAyNDUsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwxLjAwMDAzLDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5IZWx2ZXRpY2FJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn07dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDQ1OTYsLjk5OTc3LC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTkyNCwxLjAwMDYsMS4wMDA2LDEuMDAwMTksMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDI1NzIsLjk5OTczLDEuMDAwMDUsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5OTksLjk5OTgsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEsMS4wMDAxNiwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwuODQ1MzMsMS4wMDAyNiwxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsLjk5OTI0LC45OTk3MywxLjAwMDAxLC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTI4LDEsLjk5OTc3LDEuMDAwMTMsMS4wMDA1NSwuOTk5NDcsLjk5OTQ1LC45OTk0MSwuOTk5MjQsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNCwuOTE2MjEsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwxLjAwMDAxLDEuMDAwMDUsLjk5OTk5LC45OTk3NywxLjAwMDE1LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsLjk5OTQ2LDEsMS4wMDA2LDEuMDAwMDEsLjk5OTc4LDEuMDAwNDUsLjk5OTczLC45OTkyNCwxLjAwMDIzLC45OTk3OCwuOTk5NjYsMSwxLjAwMDY1LDEuMDAwNDUsMS4wMDAxOSwuOTk5NzMsLjk5OTczLC45OTkyNCwxLDEsLjk2NDk5LDEsMS4wMDA1NSwuOTk5NzMsMS4wMDAwOCwxLjAwMDI3LDEsLjk5OTcsLjk5OTk1LDEuMDAwMjMsLjk5OTMzLDEuMDAwMTksMS4wMDAxNSwxLjAwMDMxLC45OTkyNCwxLjAwMDIzLC45OTk3MywxLjAwMDIzLDEuMDAwMzEsMS4wMDAwMSwuOTk5MjgsMS4wMDAyOSwxLjAwMDkyLDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEsLjk5OTg4LC45OTk3NSwxLDEuMDAwODIsLjk5NTYxLC45OTk2LDEuMDAwMzUsMS4wMDAwMSwuOTk5NjIsMS4wMDAwMSwxLjAwMDkyLC45OTk2NCwxLjAwMDAxLC45OTk2MywuOTk5OTksMS4wMDAzNSwxLjAwMDM1LDEuMDAwODIsLjk5OTYyLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTYsLjk5OTY3LDEuMDAwMDEsMS4wMDAzNCwxLjAwMDc0LDEuMDAwNTQsMS4wMDA1MywxLjAwMDYzLC45OTk3MSwuOTk5NjIsMS4wMDAzNSwuOTk5NzUsLjk5OTc3LC45OTk3MywxLjAwMDQzLC45OTk1MywxLjAwMDcsLjk5OTE1LC45OTk3MywxLjAwMDA4LC45OTg5MiwxLjAwMDczLDEuMDAwNzMsMS4wMDExNCwuOTk5MTUsMS4wMDA3MywuOTk5NTUsLjk5OTczLDEuMDAwOTIsLjk5OTczLDEsLjk5OTk4LDEsMS4wMDAzLDEsMS4wMDA0MywxLjAwMDAxLC45OTk2OSwxLjAwMDMsMSwxLjAwMDM1LDEuMDAwMDEsLjk5OTUsMSwxLjAwMDkyLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNywuOTk5NSwxLC45OTkyNCwxLjAwMDYsLjk5OTI0LC45OTk3MiwxLjAwMDYyLC45OTk3MywxLjAwMTE0LDEuMDAwNzMsMSwuOTk5NTUsMSwxLDEuMDAwNDcsLjk5OTY4LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwuOTk5MjUsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLC45OTkxNSwxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LkhlbHZldGljYVJlZ3VsYXJNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPXQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZz12b2lkIDA7dC5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHM9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3MTksNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4NSw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM4NSw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDQ2NSw3MjIsMzMzLDg1Myw5MDYsNDc0LDgyNSw5MjcsODM4LDI3OCw3MjIsNzIyLDYwMSw3MTksNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjQ0LDc3OCw3MjIsNjY3LDYwMCw2MTEsNjY3LDgyMSw2NjcsODA5LDgwMiwyNzgsNjY3LDYxNSw0NTEsNjExLDI3OCw1ODIsNjE1LDYxMCw1NTYsNjA2LDQ3NSw0NjAsNjExLDU0MSwyNzgsNTU4LDU1Niw2MTIsNTU2LDQ0NSw2MTEsNzY2LDYxOSw1MjAsNjg0LDQ0Niw1ODIsNzE1LDU3Niw3NTMsODQ1LDI3OCw1ODIsNjExLDU4Miw4NDUsNjY3LDY2OSw4ODUsNTY3LDcxMSw2NjcsMjc4LDI3Niw1NTYsMTA5NCwxMDYyLDg3NSw2MTAsNzIyLDYyMiw3MTksNzIyLDcxOSw3MjIsNTY3LDcxMiw2NjcsOTA0LDYyNiw3MTksNzE5LDYxMCw3MDIsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYyMiw4NTQsNjY3LDczMCw3MDMsMTAwNSwxMDE5LDg3MCw5NzksNzE5LDcxMSwxMDMxLDcxOSw1NTYsNjE4LDYxNSw0MTcsNjM1LDU1Niw3MDksNDk3LDYxNSw2MTUsNTAwLDYzNSw3NDAsNjA0LDYxMSw2MDQsNjExLDU1Niw0OTAsNTU2LDg3NSw1NTYsNjE1LDU4MSw4MzMsODQ0LDcyOSw4NTQsNjE1LDU1Miw4NTQsNTgzLDU1Niw1NTYsNjExLDQxNyw1NTIsNTU2LDI3OCwyODEsMjc4LDk2OSw5MDYsNjExLDUwMCw2MTUsNTU2LDYwNCw3NzgsNjExLDQ4Nyw0NDcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTA5NCw1NTYsODg1LDQ4OSwxMTE1LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM107dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXTt0LkxpYmVyYXRpb25TYW5zSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV07dC5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XTt0LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk15cmlhZFByb1JlZ3VsYXJNZXRyaWNzPXQuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9dC5NeXJpYWRQcm9JdGFsaWNNZXRyaWNzPXQuTXlyaWFkUHJvSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRNZXRyaWNzPXQuTXlyaWFkUHJvQm9sZEl0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljRmFjdG9ycz10Lk15cmlhZFByb0JvbGRGYWN0b3JzPXZvaWQgMDt0Lk15cmlhZFByb0JvbGRGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0JvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfTt0Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjYyMjcsLjgwNzc5LC44MTYyNSwuOTcyNzYsLjk3Mjc2LC45NzczMywuOTIyMjIsLjgzMjY2LC45NDI5MiwuOTQyOTIsMS4xNjE0OCwxLjAyMDU4LC45MzU4MiwuOTY2OTQsLjkzNTgyLDEuMTczMzcsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC43ODA3NiwuNzgwNzYsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjcxNTQxLC43NjgxMywuODU1NzYsLjgwNTkxLC44MDcyOSwuOTQyOTksLjc3NTEyLC44MzY1NSwuODY1MjMsLjkyMjIyLC45ODYyMSwuNzE3NDMsLjgxNjk4LC43OTcyNiwuOTg1NTgsLjkyMjIyLC45MDYzNywuODM4MDksLjkwNjM3LC44MDcyOSwuNzY0NjMsLjg2Mjc1LC45MDY5OSwuOTE2MDUsLjkxNTQsLjg1MzA4LC44NTQ1OCwuOTA1MzEsLjk0MjkyLDEuMjEyOTYsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLDEuMTg2MTYsLjk5NjEzLC45MTY3NywuNzgyMTYsLjkxNjc3LC45MDA4MywuOTg3OTYsLjkxMzUsLjkyMTY4LC45NTM4MSwuOTg5ODEsLjk1Mjk4LC45NTM4MSwuOTM0NTksLjkyMTY4LC45MTUxMywuOTIwMDQsLjkxNjc3LC45NTA3NywuNzQ4LDEuMDQ1MDIsLjkxNjc3LC45MjA2MSwuOTQyMzYsLjg5NTQ0LC44OTM2NCwuOSwuODA2ODcsLjg1NzgsLjgwNjg3LDEuMDIwNTgsLjgwNzc5LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuODU3OCwuOTk5NzMsMS4xODYxNiwuOTEzMzksMS4wODA3NCwuODI4OTEsMS4wMjA1OCwuNTU1MDksLjcxNTI2LC44OTAyMiwxLjA4NTk1LDEsMSwxLjE4NjE2LDEsLjk2NzM2LC45MzU4MiwxLjE4NjE2LDEsMS4wNDg2NCwuODI3MTEsLjk5MDQzLC45OTA0MywuOTkwNDMsLjcxNTQxLC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NDUsLjgwNzI5LC43NzUxMiwuNzc1MTIsLjc3NTEyLC43NzUxMiwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk1OTYxLC45MjIyMiwuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LDEuMDIwNTgsLjkwMjUxLC45MDY5OSwuOTA2OTksLjkwNjk5LC45MDY5OSwuODU0NTgsLjgzNjU5LC45NDk1MSwuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuODU4MTEsLjc4MjE2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuOTUzODEsLjk1MzgxLC45NTM4MSwuOTUzODEsLjkxMzUsLjkyMTY4LC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsMS4wODU5NSwuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC44OTM2NCwuOTIzMzIsLjg5MzY0LC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjk0Mjk5LC43Njc4MywuOTU5NjEsLjkxNjc3LC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwxLDEsLjkyMjIyLC45MjE2OCwuOTIyMjIsLjkyMTY4LC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuODYwMzYsLjk3MDk2LC43MTc0MywuOTg5ODEsMSwxLC45NTI5OCwuNzk3MjYsLjk1MzgxLDEsMSwuNzk3MjYsLjY4OTQsLjc5NzI2LC43NDMyMSwuODE2OTEsMS4wMDA2LC45MjIyMiwuOTIxNjgsMSwxLC45MjIyMiwuOTIxNjgsLjc5NDY0LC45MjA5OCwuOTIxNjgsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwOSwuODc1MTQsLjgwNzI5LC45NTA3NywxLDEsLjgwNzI5LC45NTA3NywuNzY0NjMsLjc0OCwuNzY0NjMsLjc0OCwxLDEsLjc2NDYzLC43NDgsMSwxLC44NjI3NSwuNzI2NTEsLjg2Mjc1LDEuMDQ1MDIsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjg1NDU4LC45MDUzMSwuOSwuOTA1MzEsLjksLjkwNTMxLC45LDEsLjk3Mjc2LC44NTU3NiwuOTk2MTMsLjg0NSwuODU4MTEsLjkwMjUxLC45MTY3NywxLDEsLjg2Mjc1LDEuMDQ1MDIsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4wMDg5OSwxLjMwNjI4LC44NTU3NiwuODAxNzgsLjY2ODYyLC43OTI3LC42OTMyMywuODgxMjcsLjcyNDU5LC44OTcxMSwuOTUzODEsLjg1NTc2LC44MDU5MSwuNzgwNSwuOTQ3MjksLjc3NTEyLC45MDUzMSwuOTIyMjIsLjkwNjM3LC45ODYyMSwuODE2OTgsLjkyNjU1LC45ODU1OCwuOTIyMjIsLjg1MzU5LC45MDYzNywuOTA5NzYsLjgzODA5LC45NDUyMywuODYyNzUsLjgzNTA5LC45MzE1NywuODUzMDgsLjgzMzkyLC45MjM0NiwuOTg2MjEsLjgzNTA5LC45Mjg4NiwuOTEzMjQsLjkyMTY4LC45NTM4MSwuOTA2NDYsLjkyODg2LC45MDU1NywuODY4NDcsLjkwMjc2LC45MTMyNCwuODY4NDIsLjkyMTY4LC45OTUzMSwuOTUzODEsLjkyMjQsLjg1NDA4LC45MjY5OSwuODY4NDcsMS4wMDUxLC45MTUxMywuODA0ODcsLjkzNDgxLDEsLjg4MTU5LDEuMDUyMTQsLjkwNjQ2LC45NzM1NSwuODE1MzksLjg5Mzk4LC44NTkyMywuOTUzODEsLjkwNjQ2LC45MTUxMywuOTA2NDYsLjg1OTIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkxNzgyLC45MTc4MiwuOTE3ODIsMSwuODk2LC44OTYsLjg5NiwuOTMzMiwuOTMzMiwuOTU5NzMsMSwxLjI2LDEsMSwuODA0NzksLjgwMTc4LDEsMSwuODU2MzMsMSwxLDEsMSwuOTcyNzYsMSwxLDEsLjY5OCwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTQ1NDIsMSwuNzkxOTksLjc4Njk0LDEuMDIwNTgsMS4wMzQ5MywxLjA1NDg2LDEsMSwxLjIzMDI2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMjAwMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn07dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPVsxLjM2ODk4LDEsMSwuNjU1MDcsLjg0OTQzLC44NTYzOSwuODg0NjUsLjg4NDY1LC44NjkzNiwuODgzMDcsLjg2OTQ4LC44NTI4MywuODUyODMsMS4wNjM4MywxLjAyMDU4LC43NTk0NSwuOTIxOSwuNzU5NDUsMS4xNzMzNywuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjc1OTQ1LC43NTk0NSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNjkwNDYsLjcwOTI2LC44NTE1OCwuNzc4MTIsLjc2ODUyLC44OTU5MSwuNzA0NjYsLjc2MTI1LC44MDA5NCwuODY4MjIsLjgzODY0LC43MjgsLjc3MjEyLC43OTQ3NSwuOTM2MzcsLjg3NTE0LC44NTg4LC43NjAxMywuODU4OCwuNzI0MjEsLjY5ODY2LC43NzU5OCwuODU5OTEsLjgwODExLC44NzgzMiwuNzgxMTIsLjc3NTEyLC44NTYyLDEuMDIyMiwxLjE4NDE3LDEuMDIyMiwxLjI3MDE0LC44OTkwMywxLjE1MDEyLC45Mzg1OSwuOTQzOTksLjg0NiwuOTQzOTksLjgxNDUzLDEuMDE4NiwuOTQyMTksLjk2MDE3LDEuMDMwNzUsMS4wMjE3NSwuOTEyLDEuMDMwNzUsLjk2OTk4LC45NjAxNywuOTM4NTksLjk0Mzk5LC45NDM5OSwuOTU0OTMsLjc0NiwxLjEyNjU4LC45NDU3OCwuOTEsLjk3OSwuODgyLC44ODIsLjgzLC44NTAzNCwuODM1MzcsLjg1MDM0LDEuMDIwNTgsLjcwODY5LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODM1MzcsLjkwMDgzLDEuMTUwMTIsLjkxNjEsLjk0NTY1LC43MzU0MSwxLjAyMDU4LC41MzYwOSwuNjkzNTMsLjc5NTE5LDEuMDg1OTUsMSwxLDEuMTUwMTIsMSwuOTE5NzQsLjc1OTQ1LDEuMTUwMTIsMSwuOTQ0NiwuNzMzNjEsLjkwMDUsLjkwMDUsLjkwMDUsLjYyODY0LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC43NzMsLjc2ODUyLC43MDQ2NiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuODM4NjQsLjgzODY0LC44Mzg2NCwuODM4NjQsLjkwNTYxLC44NzUxNCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwuODU4OCwxLjAyMDU4LC44NTc1MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjc3NTEyLC43NjAxMywuODgwNzUsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjgwNzUsLjg0NiwuODE0NTMsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgyNDI0LC44MjQyNCwuODI0MjQsLjgyNDI0LC45Mjc4LC45NjAxNywuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LDEuMDg1OTUsLjg1NjIsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjk0NTc4LC44ODIsLjk0NTc4LC44ODIsLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjc2ODUyLC44NDYsLjg5NTkxLC44NTQ0LC45MDU2MSwuOTQzOTksLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LDEsMSwuODY4MjIsLjk2MDE3LC44NjgyMiwuOTYwMTcsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LDEuMDMwNzUsLjgzODY0LC44MjQyNCwuODE0MDIsMS4wMjczOCwuNzI4LDEuMDIxNzUsMSwxLC45MTIsLjc5NDc1LDEuMDMwNzUsMSwxLC43OTQ3NSwuODM5MTEsLjc5NDc1LC42NjI2NiwuODA1NTMsMS4wNjY3NiwuODc1MTQsLjk2MDE3LDEsMSwuODc1MTQsLjk2MDE3LC44Njg2NSwuODczOTYsLjk2MDE3LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NjcsLjg0NzU5LC43MjQyMSwuOTU0OTMsMSwxLC43MjQyMSwuOTU0OTMsLjY5ODY2LC43NDYsLjY5ODY2LC43NDYsMSwxLC42OTg2NiwuNzQ2LDEsMSwuNzc1OTgsLjg4NDE3LC43NzU5OCwxLjEyNjU4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC43NzUxMiwuODU2MiwuODMsLjg1NjIsLjgzLC44NTYyLC44MywxLC44ODQ2NSwuODUxNTgsLjkzODU5LC43NzMsLjgwNzUsLjg1NzUxLC44NTYyLDEsMSwuNzc1OTgsMS4xMjY1OCwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTMxMywxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjA4MTA2LDEuMDM5MDEsLjg1MTU4LC43NzAyNSwuNjIyNjQsLjc2NDYsLjY1MzUxLC44NjAyNiwuNjk0NjEsLjg5OTQ3LDEuMDMwNzUsLjg1MTU4LC43NzgxMiwuNzY0NDksLjg4ODM2LC43MDQ2NiwuODU2MiwuODY4MjIsLjg1ODgsLjgzODY0LC43NzIxMiwuODUzMDgsLjkzNjM3LC44NzUxNCwuODIzNTIsLjg1ODgsLjg1NzAxLC43NjAxMywuODkwNTgsLjc3NTk4LC44MTU2LC44MjU2NSwuNzgxMTIsLjc3ODk5LC44OTM4NiwuODM4NjQsLjgxNTYsLjk0ODYsLjkyMzg4LC45NjE4NiwxLjAzMDc1LC45MTEyMywuOTQ4NiwuOTMyOTgsLjg3OCwuOTM5NDIsLjkyMzg4LC44NDU5NiwuOTYxODYsLjk1MTE5LDEuMDMwNzUsLjkyMiwuODg3ODcsLjk1ODI5LC44OCwuOTM1NTksLjkzODU5LC43ODgxNSwuOTM3NTgsMSwuODkyMTcsMS4wMzczNywuOTExMjMsLjkzOTY5LC43NzQ4NywuODU3NjksLjg2Nzk5LDEuMDMwNzUsLjkxMTIzLC45Mzg1OSwuOTExMjMsLjg2Nzk5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjg3MzIxLC44NzMyMSwuODczMjEsMSwxLjAyNywxLjAyNywxLjAyNywuODY4NDcsLjg2ODQ3LC43OTEyMSwxLDEuMTI0LDEsMSwuNzM1NzIsLjczNTcyLDEsMSwuODUwMzQsMSwxLDEsMSwuODg0NjUsMSwxLDEsLjY2OSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQ4MjgsMSwuNzQ5NDgsLjc1MTg3LDEuMDIwNTgsLjk4MzkxLDEuMDIxMTksMSwxLDEuMDYyMzMsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTIzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9O3QuTXlyaWFkUHJvUmVndWxhckZhY3RvcnM9WzEuMzY4OTgsMSwxLC43NjMwNSwuODI3ODQsLjk0OTM1LC44OTM2NCwuOTIyNDEsLjg5MDczLC45MDcwNiwuOTg0NzIsLjg1MjgzLC44NTI4MywxLjA2NjQsMS4wMjA1OCwuNzQ1MDUsLjkyMTksLjc0NTA1LDEuMjM0NTYsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC43NDUwNSwuNzQ1MDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjczMDAyLC43MjYwMSwuOTE3NTUsLjgxMjYsLjgwMzE0LC45MjIyMiwuNzM3NjQsLjc5NzI2LC44MzA1MSwuOTAyODQsLjg2MDIzLC43NCwuODEyNiwuODQ4NjksLjk2NTE4LC45MTExNSwuODg1OCwuNzk3NjEsLjg4NTgsLjc0NDk4LC43MzkxNCwuODEzNjMsLjg5NTkxLC44MzY1OSwuODk2MzMsLjg1NjA4LC44MTExLC45MDUzMSwxLjAyMjIsMS4yMjczNiwxLjAyMjIsMS4yNzAxNCwuODk5MDMsLjkwMDg4LC44NjY2NywxLjAyMzEsLjg5NiwxLjAxNDExLC45MDA4MywxLjA1MDk5LDEuMDA1MTIsLjk5NzkzLDEuMDUzMjYsMS4wOTM3NywuOTM4LDEuMDYyMjYsMS4wMDExOSwuOTk3OTMsLjk4NzE0LDEuMDIzMSwxLjAxMjMxLC45ODE5NiwuNzkyLDEuMTkxMzcsLjk5MDc0LC45NjIsMS4wMTkxNSwuOTI2LC45NDIsLjg1NiwuODUwMzQsLjkyMDA2LC44NTAzNCwxLjAyMDU4LC42OTA2NywuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMDA2LC45MzMyLC45MDA4OCwuOTE4ODIsLjkzNDg0LC43NTMzOSwxLjAyMDU4LC41Njg2NiwuNTQzMjQsLjc5NTE5LDEuMDg1OTUsMSwxLC45MDA4OCwxLC45NTMyNSwuNzQ1MDUsLjkwMDg4LDEsLjk3MTk4LC43NTMzOSwuOTEwMDksLjkxMDA5LC45MTAwOSwuNjY0NjYsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjc4OCwuODAzMTQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC44NjAyMywuODYwMjMsLjg2MDIzLC44NjAyMywuOTI5MTUsLjkxMTE1LC44ODU4LC44ODU4LC44ODU4LC44ODU4LC44ODU4LDEuMDIwNTgsLjg4NTgsLjg5NTkxLC44OTU5MSwuODk1OTEsLjg5NTkxLC44MTExLC43OTYxMSwuODk3MTMsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2OTM2LC44OTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC44NDIyNCwuODQyMjQsLjg0MjI0LC44NDIyNCwuOTcyNzYsLjk5NzkzLC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsMS4wODU5NSwuODk4NzYsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45NDIsMS4wMjMxLC45NDIsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjgwMzE0LC44OTYsLjkyMjIyLC45MzM3MiwuOTI5MTUsMS4wMTQxMSwuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsLjgzMDUxLDEuMDA1MTIsMSwxLC45MDI4NCwuOTk3OTMsLjkwOTc2LC45OTc5MywuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsMS4wNTMyNiwuODYwMjMsLjg0MjI0LC44Mjg3MywxLjA3NDY5LC43NCwxLjA5Mzc3LDEsMSwuOTM4LC44NDg2OSwxLjA2MjI2LDEsMSwuODQ4NjksLjgzNzA0LC44NDg2OSwuODE0NDEsLjg1NTg4LDEuMDg5MjcsLjkxMTE1LC45OTc5MywxLDEsLjkxMTE1LC45OTc5MywuOTE4ODcsLjkwOTkxLC45OTc5MywuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODk0LC45MTQzNCwuNzQ0OTgsLjk4MTk2LDEsMSwuNzQ0OTgsLjk4MTk2LC43MzkxNCwuNzkyLC43MzkxNCwuNzkyLDEsMSwuNzM5MTQsLjc5MiwxLDEsLjgxMzYzLC45MDQsLjgxMzYzLDEuMTkxMzcsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuODExMSwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwuOTA1MzEsLjg1NiwxLC45MjI0MSwuOTE3NTUsLjg2NjY3LC43ODgsLjg2OTM2LC44ODU4LC44OTg3NiwxLDEsLjgxMzYzLDEuMTkxMzcsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMzg4LDEuMDM5MDEsLjkyMTM4LC43ODEwNSwuNzE1NCwuODYxNjksLjgwNTEzLC45NDAwNywuODI1MjgsLjk4NjEyLDEuMDYyMjYsLjkxNzU1LC44MTI2LC44MTg4NCwuOTI4MTksLjczNzY0LC45MDUzMSwuOTAyODQsLjg4NTgsLjg2MDIzLC44MTI2LC45MTE3MiwuOTY1MTgsLjkxMTE1LC44MzA4OSwuODg1OCwuODc3OTEsLjc5NzYxLC44OTI5NywuODEzNjMsLjg4MTU3LC44OTk5MiwuODU2MDgsLjgxOTkyLC45NDMwNywuODYwMjMsLjg4MTU3LC45NTMwOCwuOTg2OTksLjk5NzkzLDEuMDYyMjYsLjk1ODE3LC45NTMwOCwuOTczNTgsLjkyOCwuOTgwODgsLjk4Njk5LC45Mjc2MSwuOTk3OTMsLjk2MDE3LDEuMDYyMjYsLjk4NiwuOTQ0LC45NTk3OCwuOTM4LC45NjcwNSwuOTg3MTQsLjgwNDQyLC45ODk3MiwxLC44OTc2MiwxLjA0NTUyLC45NTgxNywuOTkwMDcsLjg3MDY0LC45MTg3OSwuODg4ODgsMS4wNjIyNiwuOTU4MTcsLjk4NzE0LC45NTgxNywuODg4ODgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC45MzE3MywuOTMxNzMsLjkzMTczLDEsMS4wNjMwNCwxLjA2MzA0LDEuMDY5MDQsLjg5OTAzLC44OTkwMywuODA1NDksMSwxLjE1NiwxLDEsLjc2NTc1LC43NjU3NSwxLDEsLjcyNDU4LDEsMSwxLDEsLjkyMjQxLDEsMSwxLC42MTksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA3MjU3LDEsLjc0NzA1LC43MTExOSwxLjAyMDU4LDEuMDI0LDEuMDIxMTksMSwxLDEuMTUzNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1NjM4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz10LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz10LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXQuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZE1ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9dC5TZWdvZXVpQm9sZEl0YWxpY0ZhY3RvcnM9dC5TZWdvZXVpQm9sZEZhY3RvcnM9dm9pZCAwO3QuU2Vnb2V1aUJvbGRGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdO3QuU2Vnb2V1aUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9O3QuU2Vnb2V1aUl0YWxpY0ZhY3RvcnM9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXTt0LlNlZ29ldWlJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfTt0LlNlZ29ldWlSZWd1bGFyRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4NTk0LDEuMDIyODUsMS4xMDQ1NCwxLjA2MjM0LC45NjkyNywuOTIwMzcsMS4xOTk4NSwxLjIwNDYsLjkwNjE2LC45MDYxNiwxLjA3MTUyLDEuMTcxNCwuNzgwMzIsMS4yMDA4OCwuNzgwMzIsMS40MDI0NiwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MDMyLC43ODAzMiwxLjE3MTQsMS4xNzE0LDEuMTcxNCwuODA1OTcsLjk0MDg0LC45NjcwNiwuODU5NDQsLjg1NzM0LC45NzA5MywuNzU4NDIsLjc5OTM2LC44ODE5OCwuOTgzMSwuOTU3ODIsLjcxMzg3LC44Njk2OSwuODQ2MzYsMS4wNzc5NiwxLjAzNTg0LC45NjkyNCwuODM5NjgsLjk2OTI0LC44MjgyNiwuNzk2NDksLjg1NzcxLC45NTEzMiwuOTMxMTksLjk4OTY1LC44ODQzMywuODI4NywuOTMzNjUsMS4wODYxMiwxLjM2MzgsMS4wODYxMiwxLjQ1Nzg2LC43NDYyNywuODA0OTksLjkxNDg0LDEuMDU3MDcsLjkyMzgzLDEuMDU4ODIsLjk0MDMsMS4xMjY1NCwxLjA1ODgyLDEuMDE3NTYsMS4wOTAxMSwxLjA5MDExLC45OTQxNCwxLjA5MDExLDEuMDM0LDEuMDE3NTYsMS4wNTM1NiwxLjA1NzA3LDEuMDU4ODIsMS4wNDM5OSwuODQ4NjMsMS4yMTk2OCwxLjAxNzU2LC45NTgwMSwxLjAwMDY4LC45MTc5NywuOTY3NzcsLjkwNDMsLjkwMzUxLC45MjEwNSwuOTAzNTEsMS4xNzE0LC44NTMzNywuOTY5MjcsLjk2OTI3LC45OTkxMiwuOTY5MjcsLjkyMTA1LC44MDU5NywxLjI0MzQsMS4yMDgwOCwxLjA1OTM3LC45MDk1NywxLjE3MTQsMS4yMDgwOCwuNzUxNTUsLjk0MjYxLDEuMjQ2NDQsMS4wOTk3MSwxLjA5OTcxLC44NDc1MSwxLC44NTI3MywuNzgwMzIsLjYxNTg0LDEuMDU0MjUsMS4xNzkxNCwuOTA5NTcsMS4wODY2NSwxLjExNTkzLDEuMTQxNjksLjczMzgxLC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC44NjAzNSwuODU3MzQsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjc1ODQyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTcwOTMsMS4wMzU4NCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTcxNCwuOTY5MjQsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjk1MTMyLC44Mjg3LC44Mzk2OCwuODkwNDksLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkzNTc1LC45MjM4MywuOTQwMywuOTQwMywuOTQwMywuOTQwMywuODcxNywuODcxNywuODcxNywuODcxNywxLjAwNTI3LDEuMDE3NTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMjQ2NDQsLjk1OTIzLDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsLjk2Nzc3LDEuMDU3MDcsLjk2Nzc3LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjk3MDkzLDEuMDk2OSwuOTcwOTMsMS4wNTg4MiwuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLC44ODE5OCwxLjA1ODgyLDEsMSwuOTgzMSwxLjAxNzU2LC45ODMxLDEuMDE3NTYsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLDEuMDkwMTEsLjk1NzgyLC44NzE3LC44NDc4NCwxLjExNTUxLC43MTM4NywxLjA5MDExLDEsMSwuOTk0MTQsLjg0NjM2LDEuMDkwMTEsMSwxLC44NDYzNiwxLjA1MzYsLjg0NjM2LC45NDI5OCwuODQ2MzYsMS4yMzI5NywxLjAzNTg0LDEuMDE3NTYsMSwxLDEuMDM1ODQsMS4wMTc1NiwxLjAwMzIzLDEuMDM0NDQsMS4wMTc1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTY5MjQsMS4wNTM1NiwuOTMwNjYsLjk4MjkzLC44MjgyNiwxLjA0Mzk5LDEsMSwuODI4MjYsMS4wNDM5OSwuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLDEsMSwuODU3NzEsMS4xNzMxOCwuODU3NzEsMS4yMTk2OCwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTUxMzIsMS4wMTc1NiwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsLjgyODcsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsMS4wODU3MSwuOTY5MjcsLjk2NzA2LC45MTQ4NCwuODYwMzUsLjkzNTc1LC45NjkyNCwuOTU5MjMsMSwxLC44NTc3MSwxLjIxOTY4LDEuMTE0MzcsMS4xMTQzNywuOTMxMDksLjkxMjAyLC42MDQxMSwuODQxNjQsLjU1NTcyLDEuMDExNzMsLjk3MzYxLC44MTgxOCwuODE4MTgsLjk2NjM1LC43ODAzMiwuNzI3MjcsLjkyMzY2LC45ODYwMSwxLjAzNDA1LC43Nzk2OCwxLjA5Nzk5LDEuMiwuOTY3MDYsLjg1OTQ0LC44NTYzOCwuOTY0OTEsLjc1ODQyLC45MzM2NSwuOTgzMSwuOTY5MjQsLjk1NzgyLC44Njk2OSwuOTQxNTIsMS4wNzc5NiwxLjAzNTg0LC43ODQzNywuOTY5MjQsLjk4NzE1LC44Mzk2OCwuODM0OTEsLjg1NzcxLC44Mjg3LC45NDQ5MiwuODg0MzMsLjkyODcsMS4wMDk4LC45NTc4MiwuODI4NywxLjA2MjUsLjk4MjQ4LDEuMDM0MjQsMS4yLDEuMDEwNzEsMS4wNjI1LC45NTI0NiwxLjAzODA5LDEuMDQ5MTIsLjk4MjQ4LDEuMDAyMjEsMS4wMzQyNCwxLjA1NDQzLDEuMiwxLjA0Nzg1LC45OTYwOSwxLjAwMTY5LDEuMDUxNzYsLjk5MzQ2LDEuMDUzNTYsLjkwODcsMS4wMzAwNCwuOTU1NDIsLjkzMTE3LDEuMjMzNjIsMS4wMTA3MSwxLjA3ODMxLDEuMDI1MTIsMS4wNTIwNSwxLjAzNTAyLDEuMiwxLjAxMDcxLDEuMDUzNTYsMS4wMTA3MSwxLjAzNTAyLC43NTg0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzE5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDAzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDQwMjEsMSwxLDEsMSwxLDEsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMTMxOTYsMS4xMzE5NiwxLjEzMTk2LC42NzQyOCwuNjc0MjgsMS4xNjAzOSwuNzMyOTEsMS4yMDk5NiwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3Nzk2LC45NjkyNywxLjAxNTE4LC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMTA1MzksMS4xMDUzOSwxLjExMzU4LDEuMDY5NjcsLjg2Mjc5LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NTA3LDEuMTcxNCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2OTcsMS4yNDgyMiwxLjI0ODIyLDEuMTcyMzgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODA4MywxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA5MzgsMS4xMDkzOCwxLDEsMSwxLjA1NDI1LDEuMDk5NzEsMS4wOTk3MSwxLjA5OTcxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV07dC5TZWdvZXVpUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdEV2YWx1YXRvcj10LlBvc3RTY3JpcHRDb21waWxlcj10LlBERkZ1bmN0aW9uRmFjdG9yeT12b2lkIDA7dC5pc1BERkZ1bmN0aW9uPWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXJldHVybiExO2lmKGUgaW5zdGFuY2VvZiByLkRpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfTt2YXIgcj1hKDMpLG49YSgyKSxpPWEoNTYpLHM9YSg1KSxvPWEoNTcpO3QuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiByLlJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsYSk7cmV0dXJuIGF9Y3JlYXRlRnJvbUFycmF5KGUpe2NvbnN0IHQ9dGhpcy5nZXRDYWNoZWQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBhPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmlzRXZhbFN1cHBvcnRlZCxmbk9iajplIGluc3RhbmNlb2Ygci5SZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGEpO3JldHVybiBhfWdldENhY2hlZChlKXtsZXQgdDtlIGluc3RhbmNlb2Ygci5SZWY/dD1lOmUgaW5zdGFuY2VvZiByLkRpY3Q/dD1lLm9iaklkOmUgaW5zdGFuY2VvZiBzLkJhc2VTdHJlYW0mJih0PWUuZGljdCYmZS5kaWN0Lm9iaklkKTtpZih0KXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZih0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jYWNoZShlLHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5Ll9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRGdW5jdGlvbiIgYXJndW1lbnQuJyk7bGV0IGE7ZSBpbnN0YW5jZW9mIHIuUmVmP2E9ZTplIGluc3RhbmNlb2Ygci5EaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2Ygcy5CYXNlU3RyZWFtJiYoYT1lLmRpY3QmJmUuZGljdC5vYmpJZCk7YSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGEsdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IG8uTG9jYWxGdW5jdGlvbkNhY2hlKX19O2Z1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IGE9MDthPHQ7YSsrKWlmKCJudW1iZXIiIT10eXBlb2YgZVthXSl7Y29uc3QgYT1uZXcgQXJyYXkodCk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPStlW3JdO3JldHVybiBhfXJldHVybiBlfWNsYXNzIFBERkZ1bmN0aW9ue3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQsYSxyKXtsZXQgbixpLHM9MTtmb3Iobj0wLGk9ZS5sZW5ndGg7bjxpO24rKylzKj1lW25dO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKiphLTEpLHU9ci5nZXRCeXRlcygocyphKzcpLzgpO2xldCBkPTA7Zm9yKG49MDtuPHM7bisrKXtmb3IoO2M8YTspe2w8PD04O2x8PXVbZCsrXTtjKz04fWMtPWE7b1tuXT0obD4+YykqaDtsJj0oMTw8YyktMX1yZXR1cm4gb31zdGF0aWMgcGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphfSl7Y29uc3Qgcj1hLmRpY3R8fGE7c3dpdGNoKHIuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDpyfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OnJ9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl9dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6YX0pe2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46YX0pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG4gb2YgYSlyLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihuKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGEsbil7Zm9yKGxldCBpPTAscz1yLmxlbmd0aDtpPHM7aSsrKXJbaV0oZSx0LGEsbitpKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjphLGRpY3Q6cn0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGE9W107bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bis9MilhW3IrK109W2Vbbl0sZVtuKzFdXTtyZXR1cm4gYX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsYSxyLG4pe3JldHVybiByKyhuLXIpLyhhLXQpKihlLXQpfWxldCBpPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShyLmdldEFycmF5KCJSYW5nZSIpKTtpZighaXx8IXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IG89aS5sZW5ndGgvMixjPXMubGVuZ3RoLzI7aT10b011bHRpQXJyYXkoaSk7cz10b011bHRpQXJyYXkocyk7Y29uc3QgbD10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIlNpemUiKSksaD1yLmdldCgiQml0c1BlclNhbXBsZSIpLHU9ci5nZXQoIk9yZGVyIil8fDE7MSE9PXUmJigwLG4uaW5mbykoIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK3UpO2xldCBkPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRW5jb2RlIikpO2lmKGQpZD10b011bHRpQXJyYXkoZCk7ZWxzZXtkPVtdO2ZvcihsZXQgZT0wO2U8bzsrK2UpZC5wdXNoKFswLGxbZV0tMV0pfWxldCBmPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiRGVjb2RlIikpO2Y9Zj90b011bHRpQXJyYXkoZik6cztjb25zdCBnPXRoaXMuZ2V0U2FtcGxlQXJyYXkobCxjLGgsYSk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFNhbXBsZWRGbihlLHQsYSxyKXtjb25zdCBuPTE8PG8saD1uZXcgRmxvYXQ2NEFycmF5KG4pLHU9bmV3IFVpbnQzMkFycmF5KG4pO2xldCBwLG07Zm9yKG09MDttPG47bSsrKWhbbV09MTtsZXQgYj1jLHk9MTtmb3IocD0wO3A8bzsrK3Ape2NvbnN0IGE9aVtwXVswXSxyPWlbcF1bMV07bGV0IHM9aW50ZXJwb2xhdGUoTWF0aC5taW4oTWF0aC5tYXgoZVt0K3BdLGEpLHIpLGEscixkW3BdWzBdLGRbcF1bMV0pO2NvbnN0IG89bFtwXTtzPU1hdGgubWluKE1hdGgubWF4KHMsMCksby0xKTtjb25zdCBjPXM8by0xP01hdGguZmxvb3Iocyk6cy0xLGY9YysxLXMsZz1zLWMsdz1jKmIsUz13K2I7Zm9yKG09MDttPG47bSsrKWlmKG0meSl7aFttXSo9Zzt1W21dKz1TfWVsc2V7aFttXSo9Zjt1W21dKz13fWIqPW87eTw8PTF9Zm9yKG09MDttPGM7KyttKXtsZXQgZT0wO2ZvcihwPTA7cDxuO3ArKyllKz1nW3VbcF0rbV0qaFtwXTtlPWludGVycG9sYXRlKGUsMCwxLGZbbV1bMF0sZlttXVsxXSk7YVtyK21dPU1hdGgubWluKE1hdGgubWF4KGUsc1ttXVswXSksc1ttXVsxXSl9fX1zdGF0aWMgY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMwIikpfHxbMF0sbj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkMxIikpfHxbMV0saT1hLmdldCgiTiIpLHM9W107Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7KytlKXMucHVzaChuW2VdLXJbZV0pO2NvbnN0IG89cy5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdEludGVycG9sYXRlZEZuKGUsdCxhLG4pe2NvbnN0IGM9MT09PWk/ZVt0XTplW3RdKippO2ZvcihsZXQgZT0wO2U8bzsrK2UpYVtuK2VdPXJbZV0rYypzW2VdfX1zdGF0aWMgY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSk7aWYoIXIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPT1yLmxlbmd0aC8yKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3QgaT1bXTtmb3IoY29uc3QgciBvZiBhLmdldCgiRnVuY3Rpb25zIikpaS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYocil9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkJvdW5kcyIpKSxvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRW5jb2RlIikpLGM9bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLG4pe2NvbnN0IGw9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGEpe2U+YT9lPWE6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxyWzBdLHJbMV0pLGg9cy5sZW5ndGg7bGV0IHU7Zm9yKHU9MDt1PGgmJiEobDxzW3VdKTsrK3UpO2xldCBkPXJbMF07dT4wJiYoZD1zW3UtMV0pO2xldCBmPXJbMV07dTxzLmxlbmd0aCYmKGY9c1t1XSk7Y29uc3QgZz1vWzIqdV0scD1vWzIqdSsxXTtjWzBdPWQ9PT1mP2c6ZysobC1kKSoocC1nKS8oZi1kKTtpW3VdKGMsMCxhLG4pfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmEsZGljdDpyfSl7Y29uc3Qgcz10b051bWJlckFycmF5KHIuZ2V0QXJyYXkoIkRvbWFpbiIpKSxvPXRvTnVtYmVyQXJyYXkoci5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vIGRvbWFpbi4iKTtpZighbyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3QgYz1uZXcgaS5Qb3N0U2NyaXB0TGV4ZXIoYSksbD1uZXcgaS5Qb3N0U2NyaXB0UGFyc2VyKGMpLnBhcnNlKCk7aWYodCYmbi5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpe2NvbnN0IGU9KG5ldyBQb3N0U2NyaXB0Q29tcGlsZXIpLmNvbXBpbGUobCxzLG8pO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLG4uaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgaD1vLmxlbmd0aD4+MSx1PXMubGVuZ3RoPj4xLGQ9bmV3IFBvc3RTY3JpcHRFdmFsdWF0b3IobCksZj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBnPTgxOTI7Y29uc3QgcD1uZXcgRmxvYXQzMkFycmF5KHUpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RQb3N0U2NyaXB0Rm4oZSx0LGEscil7bGV0IG4saSxzPSIiO2NvbnN0IGM9cDtmb3Iobj0wO248dTtuKyspe2k9ZVt0K25dO2Nbbl09aTtzKz1pKyJfIn1jb25zdCBsPWZbc107aWYodm9pZCAwIT09bCl7YS5zZXQobCxyKTtyZXR1cm59Y29uc3QgbT1uZXcgRmxvYXQzMkFycmF5KGgpLGI9ZC5leGVjdXRlKGMpLHk9Yi5sZW5ndGgtaDtmb3Iobj0wO248aDtuKyspe2k9Ylt5K25dO2xldCBlPW9bMipuXTtpZihpPGUpaT1lO2Vsc2V7ZT1vWzIqbisxXTtpPmUmJihpPWUpfW1bbl09aX1pZihnPjApe2ctLTtmW3NdPW19YS5zZXQobSxyKX19fWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgZ2V0IE1BWF9TVEFDS19TSVpFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIk1BWF9TVEFDS19TSVpFIiwxMDApfWNvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGE9dC5sZW5ndGgtZSxyPWUtMTtyPj0wO3ItLSxhKyspdC5wdXNoKHRbYV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBhPXRoaXMuc3RhY2sscj1hLmxlbmd0aC1lLG49YS5sZW5ndGgtMSxpPXIrKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1yLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPXIsdD1pLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IHI9YVtlXTthW2VdPWFbdF07YVt0XT1yfWZvcihsZXQgZT1pLHQ9bjtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGE9MDtjb25zdCByPXRoaXMub3BlcmF0b3JzLGk9ci5sZW5ndGg7bGV0IHMsbyxjO2Zvcig7YTxpOyl7cz1yW2ErK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpjPXQucG9wKCk7bz10LnBvcCgpO298fChhPWMpO2JyZWFrO2Nhc2UiaiI6bz10LnBvcCgpO2E9bzticmVhaztjYXNlImFicyI6bz10LnBvcCgpO3QucHVzaChNYXRoLmFicyhvKSk7YnJlYWs7Y2FzZSJhZGQiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8rYyk7YnJlYWs7Y2FzZSJhbmQiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyYmYyk6dC5wdXNoKG8mYyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7dC5wdXNoKE1hdGguYXRhbihvKSk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6Yz10LnBvcCgpO289dC5wb3AoKTtvPjA/dC5wdXNoKG88PGMpOnQucHVzaChvPj5jKTticmVhaztjYXNlImNlaWxpbmciOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKG8pKTticmVhaztjYXNlImNvcHkiOm89dC5wb3AoKTt0LmNvcHkobyk7YnJlYWs7Y2FzZSJjb3MiOm89dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MobykpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpO3QucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKTt0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKG8pL01hdGguTE4xMCk7YnJlYWs7Y2FzZSJsdCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobzxjKTticmVhaztjYXNlIm1vZCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobyVjKTticmVhaztjYXNlIm11bCI6Yz10LnBvcCgpO289dC5wb3AoKTt0LnB1c2gobypjKTticmVhaztjYXNlIm5lIjpjPXQucG9wKCk7bz10LnBvcCgpO3QucHVzaChvIT09Yyk7YnJlYWs7Y2FzZSJuZWciOm89dC5wb3AoKTt0LnB1c2goLW8pO2JyZWFrO2Nhc2Uibm90IjpvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2goIW8pOnQucHVzaCh+byk7YnJlYWs7Y2FzZSJvciI6Yz10LnBvcCgpO289dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvfHxjKTp0LnB1c2gob3xjKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5yb2xsKG8sYyk7YnJlYWs7Y2FzZSJyb3VuZCI6bz10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG8pKTticmVhaztjYXNlInNpbiI6bz10LnBvcCgpO3QucHVzaChNYXRoLnNpbihvKSk7YnJlYWs7Y2FzZSJzcXJ0IjpvPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChvKSk7YnJlYWs7Y2FzZSJzdWIiOmM9dC5wb3AoKTtvPXQucG9wKCk7dC5wdXNoKG8tYyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOm89dC5wb3AoKTtvPW88MD9NYXRoLmNlaWwobyk6TWF0aC5mbG9vcihvKTt0LnB1c2gobyk7YnJlYWs7Y2FzZSJ4b3IiOmM9dC5wb3AoKTtvPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gobyE9PWMpOnQucHVzaChvXmMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYFVua25vd24gb3BlcmF0b3IgJHtzfWApfWVsc2UgdC5wdXNoKHMpfXJldHVybiB0LnN0YWNrfX10LlBvc3RTY3JpcHRFdmFsdWF0b3I9UG9zdFNjcmlwdEV2YWx1YXRvcjtjbGFzcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMudHlwZT1lfXZpc2l0KGUpeygwLG4udW5yZWFjaGFibGUpKCJhYnN0cmFjdCBtZXRob2QiKX19Y2xhc3MgQXN0QXJndW1lbnQgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiYXJncyIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdEFyZ3VtZW50KHRoaXMpfX1jbGFzcyBBc3RMaXRlcmFsIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigibGl0ZXJhbCIpO3RoaXMubnVtYmVyPWU7dGhpcy5taW49ZTt0aGlzLm1heD1lfXZpc2l0KGUpe2UudmlzaXRMaXRlcmFsKHRoaXMpfX1jbGFzcyBBc3RCaW5hcnlPcGVyYXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhLHIsbil7c3VwZXIoImJpbmFyeSIpO3RoaXMub3A9ZTt0aGlzLmFyZzE9dDt0aGlzLmFyZzI9YTt0aGlzLm1pbj1yO3RoaXMubWF4PW59dmlzaXQoZSl7ZS52aXNpdEJpbmFyeU9wZXJhdGlvbih0aGlzKX19Y2xhc3MgQXN0TWluIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKTt0aGlzLmFyZz1lO3RoaXMubWluPWUubWluO3RoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGUgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigidmFyIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0VmFyaWFibGUodGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlRGVmaW5pdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpO3RoaXMudmFyaWFibGU9ZTt0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcntjb25zdHJ1Y3Rvcigpe3RoaXMucGFydHM9W119dmlzaXRBcmd1bWVudChlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWF4KCIsZS5taW4sIiwgTWF0aC5taW4oIixlLm1heCwiLCBzcmNbc3JjT2Zmc2V0ICsgIixlLmluZGV4LCJdKSkiKX12aXNpdFZhcmlhYmxlKGUpe3RoaXMucGFydHMucHVzaCgidiIsZS5pbmRleCl9dmlzaXRMaXRlcmFsKGUpe3RoaXMucGFydHMucHVzaChlLm51bWJlcil9dmlzaXRCaW5hcnlPcGVyYXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCIoIik7ZS5hcmcxLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiICIsZS5vcCwiICIpO2UuYXJnMi52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIikiKX12aXNpdFZhcmlhYmxlRGVmaW5pdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goInZhciAiKTtlLnZhcmlhYmxlLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiID0gIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCI7Iil9dmlzaXRNaW4oZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1pbigiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiwgIixlLm1heCwiKSIpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucGFydHMuam9pbigiIil9fWZ1bmN0aW9uIGJ1aWxkQWRkT3BlcmF0aW9uKGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBBc3RMaXRlcmFsKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIrIixlLHQsZS5taW4rdC5taW4sZS5tYXgrdC5tYXgpfWZ1bmN0aW9uIGJ1aWxkTXVsT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IGE9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLHI9TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCIqIixlLHQsYSxyKX1mdW5jdGlvbiBidWlsZFN1Yk9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgQXN0QmluYXJ5T3BlcmF0aW9uKCItIixlLHQsZS5taW4tdC5tYXgsZS5tYXgtdC5taW4pfWZ1bmN0aW9uIGJ1aWxkTWluT3BlcmF0aW9uKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBBc3RMaXRlcmFsKHQpOmUubWF4PD10P2U6bmV3IEFzdE1pbihlLHQpfWNsYXNzIFBvc3RTY3JpcHRDb21waWxlcntjb21waWxlKGUsdCxhKXtjb25zdCByPVtdLG49W10saT10Lmxlbmd0aD4+MSxzPWEubGVuZ3RoPj4xO2xldCBvLGMsbCxoLHUsZCxmLGcscD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspci5wdXNoKG5ldyBBc3RBcmd1bWVudChlLHRbMiplXSx0WzIqZSsxXSkpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Zz1lW3RdO2lmKCJudW1iZXIiIT10eXBlb2YgZylzd2l0Y2goZyl7Y2FzZSJhZGQiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRBZGRPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJjdnIiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7YnJlYWs7Y2FzZSJtdWwiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRNdWxPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJzdWIiOmlmKHIubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1yLnBvcCgpO2w9ci5wb3AoKTtyLnB1c2goYnVpbGRTdWJPcGVyYXRpb24obCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO3U9ci5wb3AoKTtkPXIucG9wKCk7ci5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7ci5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2w9ci5wb3AoKTtpZigibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7bz1sLm51bWJlcjtpZihvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxyLmxlbmd0aDxvKXJldHVybiBudWxsO3U9cltyLmxlbmd0aC1vLTFdO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtby0xXT1mO3IucHVzaChmKTtuLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihmLHUpKTticmVhaztjYXNlImR1cCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTWluT3BlcmF0aW9uKGwsZVt0KzFdKSk7dCs9NjticmVha311PXIuYXQoLTEpO2lmKCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe3IucHVzaCh1KTticmVha31mPW5ldyBBc3RWYXJpYWJsZShwKyssdS5taW4sdS5tYXgpO3Jbci5sZW5ndGgtMV09ZjtyLnB1c2goZik7bi5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJyb2xsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09aC50eXBlfHwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7Yz1oLm51bWJlcjtvPWwubnVtYmVyO2lmKG88PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDtjPShjJW8rbyklbztpZigwPT09YylicmVhaztyLnB1c2goLi4uci5zcGxpY2Uoci5sZW5ndGgtbyxvLWMpKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfWVsc2Ugci5wdXNoKG5ldyBBc3RMaXRlcmFsKGcpKX1pZihyLmxlbmd0aCE9PXMpcmV0dXJuIG51bGw7Y29uc3QgbT1bXTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7ZS52aXNpdCh0KTttLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9cltlXSxuPW5ldyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3I7dC52aXNpdChuKTtjb25zdCBpPWFbMiplXSxzPWFbMiplKzFdLG89W24udG9TdHJpbmcoKV07aWYoaT50Lm1pbil7by51bnNoaWZ0KCJNYXRoLm1heCgiLGksIiwgIik7by5wdXNoKCIpIil9aWYoczx0Lm1heCl7by51bnNoaWZ0KCJNYXRoLm1pbigiLHMsIiwgIik7by5wdXNoKCIpIil9by51bnNoaWZ0KCJkZXN0W2Rlc3RPZmZzZXQgKyAiLGUsIl0gPSAiKTtvLnB1c2goIjsiKTttLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG0uam9pbigiXG4iKX19dC5Qb3N0U2NyaXB0Q29tcGlsZXI9UG9zdFNjcmlwdENvbXBpbGVyfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDQpO3QuUG9zdFNjcmlwdFBhcnNlcj1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyByLkZvcm1hdEVycm9yKGBVbmV4cGVjdGVkIHN5bWJvbDogZm91bmQgJHt0aGlzLnRva2VuLnR5cGV9IGV4cGVjdGVkICR7ZX0uYCl9cGFyc2UoKXt0aGlzLm5leHRUb2tlbigpO3RoaXMuZXhwZWN0KHMuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQocy5OVU1CRVIpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNlIGlmKHRoaXMuYWNjZXB0KHMuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qocy5SQlJBQ0UpO2lmKHRoaXMuYWNjZXB0KHMuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiUFMgRnVuY3Rpb246IGVycm9yIHBhcnNpbmcgY29uZGl0aW9uYWwuIik7e2NvbnN0IHQ9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKTtjb25zdCBhPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChzLlJCUkFDRSk7dGhpcy5leHBlY3Qocy5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX07Y29uc3Qgcz17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIm9wQ2FjaGUiLE9iamVjdC5jcmVhdGUobnVsbCkpfWNvbnN0cnVjdG9yKGUsdCl7dGhpcy50eXBlPWU7dGhpcy52YWx1ZT10fXN0YXRpYyBnZXRPcGVyYXRvcihlKXtjb25zdCB0PVBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdO3JldHVybiB0fHwoUG9zdFNjcmlwdFRva2VuLm9wQ2FjaGVbZV09bmV3IFBvc3RTY3JpcHRUb2tlbihzLk9QRVJBVE9SLGUpKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJMQlJBQ0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuUkJSQUNFLCJ9IikpfXN0YXRpYyBnZXQgSUYoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiSUZFTFNFIixuZXcgUG9zdFNjcmlwdFRva2VuKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gbi5FT0Y7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighKDAsaS5pc1doaXRlU3BhY2UpKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAke2F9YCk7cmV0dXJuIGF9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyk7Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiYoMCxyLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT0oZSYmZS5vbmx5UmVmcyk7aWYoIXRoaXMuX29ubHlSZWZzKXt0aGlzLl9uYW1lUmVmTWFwPW5ldyBNYXA7dGhpcy5faW1hZ2VNYXA9bmV3IE1hcH10aGlzLl9pbWFnZUNhY2hlPW5ldyBuLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsci51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxhKXsoMCxyLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGEpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGEpfX07dC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgTG9jYWxGdW5jdGlvbkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxGdW5jdGlvbkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX07dC5Mb2NhbEdTdGF0ZUNhY2hlPWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fTt0LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9fTtjbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBnZXQgTlVNX1BBR0VTX1RIUkVTSE9MRCgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJOVU1fUEFHRVNfVEhSRVNIT0xEIiwyKX1zdGF0aWMgZ2V0IE1JTl9JTUFHRVNfVE9fQ0FDSEUoKXtyZXR1cm4oMCxyLnNoYWRvdykodGhpcywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApfXN0YXRpYyBnZXQgTUFYX0JZVEVfU0laRSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJNQVhfQllURV9TSVpFIiw0ZTcpfWNvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IG4uUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgbi5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy5fYnl0ZVNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO3JldHVybiEoKGE/YS5zaXplKyhhLmhhcyh0KT8wOjEpOjEpPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZCl9YWRkUGFnZUluZGV4KGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCl9YWRkQnl0ZVNpemUoZSx0KXtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2EmJihhLmJ5dGVTaXplfHwoYS5ieXRlU2l6ZT10KSl9Z2V0RGF0YShlLHQpe2NvbnN0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk5VTV9QQUdFU19USFJFU0hPTEQpcmV0dXJuIG51bGw7Y29uc3Qgcj10aGlzLl9pbWFnZUNhY2hlLmdldChlKTtpZighcilyZXR1cm4gbnVsbDthLmFkZCh0KTtyZXR1cm4gcn1zZXREYXRhKGUsdCl7aWYoIXRoaXMuX3JlZkNhY2hlLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoJ0dsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSAtIGV4cGVjdGVkICJhZGRQYWdlSW5kZXgiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLl9jYWNoZUxpbWl0UmVhY2hlZD8oMCxyLndhcm4pKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2V8fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCk7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX10Lkdsb2JhbEltYWdlQ2FjaGU9R2xvYmFsSW1hZ2VDYWNoZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmJpZGk9ZnVuY3Rpb24gYmlkaShlLHQ9LTEsYT0hMSl7bGV0IGM9ITA7Y29uc3QgbD1lLmxlbmd0aDtpZigwPT09bHx8YSlyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxjLGEpO3MubGVuZ3RoPWw7by5sZW5ndGg9bDtsZXQgaCx1LGQ9MDtmb3IoaD0wO2g8bDsrK2gpe3NbaF09ZS5jaGFyQXQoaCk7Y29uc3QgdD1lLmNoYXJDb2RlQXQoaCk7bGV0IGE9IkwiO2lmKHQ8PTI1NSlhPW5bdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWE9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7YT1pWzI1NSZ0XTthfHwoMCxyLndhcm4pKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UgMTc5Mjw9dCYmdDw9MjIyMCYmKGE9IkFMIik7IlIiIT09YSYmIkFMIiE9PWEmJiJBTiIhPT1hfHxkKys7b1toXT1hfWlmKDA9PT1kKXtjPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLGMpfWlmKC0xPT09dClpZihkL2w8LjMmJmw+NCl7Yz0hMDt0PTB9ZWxzZXtjPSExO3Q9MX1jb25zdCBmPVtdO2ZvcihoPTA7aDxsOysraClmW2hdPXQ7Y29uc3QgZz1pc09kZCh0KT8iUiI6IkwiLHA9ZyxtPXA7bGV0IGIseT1wO2ZvcihoPTA7aDxsOysraCkiTlNNIj09PW9baF0/b1toXT15Onk9b1toXTt5PXA7Zm9yKGg9MDtoPGw7KytoKXtiPW9baF07IkVOIj09PWI/b1toXT0iQUwiPT09eT8iQU4iOiJFTiI6IlIiIT09YiYmIkwiIT09YiYmIkFMIiE9PWJ8fCh5PWIpfWZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJBTCI9PT1iJiYob1toXT0iUiIpfWZvcihoPTE7aDxsLTE7KytoKXsiRVMiPT09b1toXSYmIkVOIj09PW9baC0xXSYmIkVOIj09PW9baCsxXSYmKG9baF09IkVOIik7IkNTIiE9PW9baF18fCJFTiIhPT1vW2gtMV0mJiJBTiIhPT1vW2gtMV18fG9baCsxXSE9PW9baC0xXXx8KG9baF09b1toLTFdKX1mb3IoaD0wO2g8bDsrK2gpaWYoIkVOIj09PW9baF0pe2ZvcihsZXQgZT1oLTE7ZT49MCYmIkVUIj09PW9bZV07LS1lKW9bZV09IkVOIjtmb3IobGV0IGU9aCsxO2U8bCYmIkVUIj09PW9bZV07KytlKW9bZV09IkVOIn1mb3IoaD0wO2g8bDsrK2gpe2I9b1toXTsiV1MiIT09YiYmIkVTIiE9PWImJiJFVCIhPT1iJiYiQ1MiIT09Ynx8KG9baF09Ik9OIil9eT1wO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdOyJFTiI9PT1iP29baF09IkwiPT09eT8iTCI6IkVOIjoiUiIhPT1iJiYiTCIhPT1ifHwoeT1iKX1mb3IoaD0wO2g8bDsrK2gpaWYoIk9OIj09PW9baF0pe2NvbnN0IGU9ZmluZFVuZXF1YWwobyxoKzEsIk9OIik7bGV0IHQ9cDtoPjAmJih0PW9baC0xXSk7bGV0IGE9bTtlKzE8bCYmKGE9b1tlKzFdKTsiTCIhPT10JiYodD0iUiIpOyJMIiE9PWEmJihhPSJSIik7dD09PWEmJnNldFZhbHVlcyhvLGgsZSx0KTtoPWUtMX1mb3IoaD0wO2g8bDsrK2gpIk9OIj09PW9baF0mJihvW2hdPWcpO2ZvcihoPTA7aDxsOysraCl7Yj1vW2hdO2lzRXZlbihmW2hdKT8iUiI9PT1iP2ZbaF0rPTE6IkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9Mik6IkwiIT09YiYmIkFOIiE9PWImJiJFTiIhPT1ifHwoZltoXSs9MSl9bGV0IHcsUz0tMSx4PTk5O2ZvcihoPTAsdT1mLmxlbmd0aDtoPHU7KytoKXt3PWZbaF07Uzx3JiYoUz13KTt4PncmJmlzT2RkKHcpJiYoeD13KX1mb3Iodz1TO3c+PXg7LS13KXtsZXQgZT0tMTtmb3IoaD0wLHU9Zi5sZW5ndGg7aDx1OysraClpZihmW2hdPHcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocyxlLGgpO2U9LTF9fWVsc2UgZTwwJiYoZT1oKTtlPj0wJiZyZXZlcnNlVmFsdWVzKHMsZSxmLmxlbmd0aCl9Zm9yKGg9MCx1PXMubGVuZ3RoO2g8dTsrK2gpe2NvbnN0IGU9c1toXTsiPCIhPT1lJiYiPiIhPT1lfHwoc1toXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KHMuam9pbigiIiksYyl9O3ZhciByPWEoMik7Y29uc3Qgbj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4gMCE9KDEmZSl9ZnVuY3Rpb24gaXNFdmVuKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBmaW5kVW5lcXVhbChlLHQsYSl7bGV0IHIsbjtmb3Iocj10LG49ZS5sZW5ndGg7cjxuOysrcilpZihlW3JdIT09YSlyZXR1cm4gcjtyZXR1cm4gcn1mdW5jdGlvbiBzZXRWYWx1ZXMoZSx0LGEscil7Zm9yKGxldCBuPXQ7bjxhOysrbillW25dPXJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsbj1hLTE7cjxuOysrciwtLW4pe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbbl07ZVtuXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IHM9W10sbz1bXX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgcj1hKDIpO2NvbnN0IG49MzI4NTM3NzUyMCxpPTQyOTQ5MDE3NjAscz02NTUzNTt0Lk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bjt0aGlzLmgyPWU/NDI5NDk2NzI5NSZlOm59dXBkYXRlKGUpe2xldCB0LGE7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2E9MDtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO2lmKG48PTI1NSl0W2ErK109bjtlbHNle3RbYSsrXT1uPj4+ODt0W2ErK109MjU1Jm59fX1lbHNle2lmKCEoMCxyLmlzQXJyYXlCdWZmZXIpKGUpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO3Q9ZS5zbGljZSgpO2E9dC5ieXRlTGVuZ3RofWNvbnN0IG49YT4+MixvPWEtNCpuLGM9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLDAsbik7bGV0IGw9MCxoPTAsdT10aGlzLmgxLGQ9dGhpcy5oMjtjb25zdCBmPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcscD0xMTYwMSxtPTEzNzE1O2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMSZlKXtsPWNbZV07bD1sKmYmaXxsKnAmcztsPWw8PDE1fGw+Pj4xNztsPWwqZyZpfGwqbSZzO3VePWw7dT11PDwxM3x1Pj4+MTk7dT01KnUrMzg2NDI5MjE5Nn1lbHNle2g9Y1tlXTtoPWgqZiZpfGgqcCZzO2g9aDw8MTV8aD4+PjE3O2g9aCpnJml8aCptJnM7ZF49aDtkPWQ8PDEzfGQ+Pj4xOTtkPTUqZCszODY0MjkyMTk2fWw9MDtzd2l0Y2gobyl7Y2FzZSAzOmxePXRbNCpuKzJdPDwxNjtjYXNlIDI6bF49dFs0Km4rMV08PDg7Y2FzZSAxOmxePXRbNCpuXTtsPWwqZiZpfGwqcCZzO2w9bDw8MTV8bD4+PjE3O2w9bCpnJml8bCptJnM7MSZuP3VePWw6ZF49bH10aGlzLmgxPXU7dGhpcy5oMj1kfWhleGRpZ2VzdCgpe2xldCBlPXRoaXMuaDEsdD10aGlzLmgyO2VePXQ+Pj4xO2U9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzO3Q9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzO3Q9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNjtlXj10Pj4+MTtjb25zdCBhPShlPj4+MCkudG9TdHJpbmcoMTYpLHI9KHQ+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIGEucGFkU3RhcnQoOCwiMCIpK3IucGFkU3RhcnQoOCwiMCIpfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PcGVyYXRvckxpc3Q9dm9pZCAwO3ZhciByPWEoMik7ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGEscixuKXtsZXQgaT1lO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGgtMTtlPGE7ZSsrKXtjb25zdCBhPXRbZV07aT1pW2FdfHwoaVthXT1bXSl9aVt0LmF0KC0xKV09e2NoZWNrRm46YSxpdGVyYXRlRm46cixwcm9jZXNzRm46bn19Y29uc3Qgbj1bXTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXIuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiBhW3RdPT09ci5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gYVt0XT09PXIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke259YCl9KSwoZnVuY3Rpb24gZm91bmRJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIscz1pLTMsbz1pLTIsYz1pLTEsbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDIwMCk7aWYobDwxMClyZXR1cm4gdC0odC1zKSU0O2xldCBoPTA7Y29uc3QgdT1bXTtsZXQgZD0wLGY9MSxnPTE7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW28rKGU8PDIpXSxhPW5bYysoZTw8MildWzBdO2lmKGYrYS53aWR0aD4xZTMpe2g9TWF0aC5tYXgoaCxmKTtnKz1kKzI7Zj0wO2Q9MH11LnB1c2goe3RyYW5zZm9ybTp0LHg6Zix5OmcsdzphLndpZHRoLGg6YS5oZWlnaHR9KTtmKz1hLndpZHRoKzI7ZD1NYXRoLm1heChkLGEuaGVpZ2h0KX1jb25zdCBwPU1hdGgubWF4KGgsZikrMSxtPWcrZCsxLGI9bmV3IFVpbnQ4QXJyYXkocCptKjQpLHk9cDw8Mjtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bYysoZTw8MildWzBdLmRhdGEsYT11W2VdLnc8PDI7bGV0IHI9MCxpPXVbZV0ueCt1W2VdLnkqcDw8MjtiLnNldCh0LnN1YmFycmF5KDAsYSksaS15KTtmb3IobGV0IG49MCxzPXVbZV0uaDtuPHM7bisrKXtiLnNldCh0LnN1YmFycmF5KHIscithKSxpKTtyKz1hO2krPXl9Yi5zZXQodC5zdWJhcnJheShyLWEsciksaSk7Zm9yKDtpPj0wOyl7dFtpLTRdPXRbaV07dFtpLTNdPXRbaSsxXTt0W2ktMl09dFtpKzJdO3RbaS0xXT10W2krM107dFtpK2FdPXRbaSthLTRdO3RbaSthKzFdPXRbaSthLTNdO3RbaSthKzJdPXRbaSthLTJdO3RbaSthKzNdPXRbaSthLTFdO2ktPXl9fWEuc3BsaWNlKHMsNCpsLHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFt7d2lkdGg6cCxoZWlnaHQ6bSxraW5kOnIuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTpifSx1XSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Qsci5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gobil7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuc2F2ZTtjYXNlIDE6cmV0dXJuIGFbdF09PT1yLk9QUy50cmFuc2Zvcm07Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtufWApfSksKGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMDtoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpe3U9bltoXTtpZihuW2VdWzBdIT09Znx8dVswXSE9PWd8fHVbMV0hPT1wfHx1WzJdIT09bXx8dVszXSE9PWIpe3Q8MTA/ZD0hMTpsPXQ7YnJlYWt9fX1pZihkKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtoPW87Zm9yKGxldCB0PTA7dDxsO3QrKyxoKz00KXt1PW5baF07ZVt0PDwxXT11WzRdO2VbMSsodDw8MSldPXVbNV19YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KTtuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCBhPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTp1fSl9YS5zcGxpY2Uocyw0Kmwsci5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApO24uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShuLFtyLk9QUy5zYXZlLHIuT1BTLnRyYW5zZm9ybSxyLk9QUy5wYWludEltYWdlWE9iamVjdCxyLk9QUy5yZXN0b3JlXSwoZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSksKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXksbj1lLmFyZ3NBcnJheSxpPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChpKXtjYXNlIDA6cmV0dXJuIGFbdF09PT1yLk9QUy5zYXZlO2Nhc2UgMTppZihhW3RdIT09ci5PUFMudHJhbnNmb3JtKXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0yLHM9bltpXVswXSxvPW5baV1bM107cmV0dXJuIG5bdF1bMF09PT1zJiYwPT09blt0XVsxXSYmMD09PW5bdF1bMl0mJm5bdF1bM109PT1vO2Nhc2UgMjppZihhW3RdIT09ci5PUFMucGFpbnRJbWFnZVhPYmplY3QpcmV0dXJuITE7Y29uc3QgYz1uW2UuaUN1cnItMV1bMF07cmV0dXJuIG5bdF1bMF09PT1jO2Nhc2UgMzpyZXR1cm4gYVt0XT09PXIuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2l9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPW5baS0xXVswXSxsPW5bb11bMF0saD1uW29dWzNdLHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheSgyKnUpO2xldCBmPW87Zm9yKGxldCBlPTA7ZTx1O2UrKyxmKz00KXtjb25zdCB0PW5bZl07ZFtlPDwxXT10WzRdO2RbMSsoZTw8MSldPXRbNV19Y29uc3QgZz1bYyxsLGgsZF07YS5zcGxpY2Uocyw0KnUsci5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpO24uc3BsaWNlKHMsNCp1LGcpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUobixbci5PUFMuYmVnaW5UZXh0LHIuT1BTLnNldEZvbnQsci5PUFMuc2V0VGV4dE1hdHJpeCxyLk9QUy5zaG93VGV4dCxyLk9QUy5lbmRUZXh0XSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09ci5PUFMuYmVnaW5UZXh0O2Nhc2UgMTpyZXR1cm4gYVt0XT09PXIuT1BTLnNldEZvbnQ7Y2FzZSAyOnJldHVybiBhW3RdPT09ci5PUFMuc2V0VGV4dE1hdHJpeDtjYXNlIDM6aWYoYVt0XSE9PXIuT1BTLnNob3dUZXh0KXJldHVybiExO2NvbnN0IGk9ZS5pQ3Vyci0zLHM9bltpXVswXSxvPW5baV1bMV07cmV0dXJuIG5bdF1bMF09PT1zJiZuW3RdWzFdPT09bztjYXNlIDQ6cmV0dXJuIGFbdF09PT1yLk9QUy5lbmRUZXh0fXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSksKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxuPWUuaUN1cnIsaT1uLTQscz1uLTMsbz1uLTIsYz1uLTEsbD1uLGg9cltzXVswXSx1PXJbc11bMV07bGV0IGQ9TWF0aC5taW4oTWF0aC5mbG9vcigodC1pKS81KSwxZTMpO2lmKGQ8MylyZXR1cm4gdC0odC1pKSU1O2xldCBmPWk7aWYoaT49NCYmYVtpLTRdPT09YVtzXSYmYVtpLTNdPT09YVtvXSYmYVtpLTJdPT09YVtjXSYmYVtpLTFdPT09YVtsXSYmcltpLTRdWzBdPT09aCYmcltpLTRdWzFdPT09dSl7ZCsrO2YtPTV9bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspe2Euc3BsaWNlKGcsMyk7ci5zcGxpY2UoZywzKTtnKz0yfXJldHVybiBnKzF9KSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheX07dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxhPWUubGVuZ3RoLHI9dGhpcy5zdGF0ZSxpPXRoaXMubWF0Y2g7aWYoIXImJiFpJiZ0KzE9PT1hJiYhbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPWE7cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxhOyl7aWYoaSl7aWYoKDAsaS5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLGkucHJvY2Vzc0ZuKShzLHQrMSk7YT1lLmxlbmd0aDtpPW51bGw7cj1udWxsO2lmKHQ+PWEpYnJlYWt9cj0ocnx8bilbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe3MuaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShzKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIGdldCBDSFVOS19TSVpFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkUiLDFlMyl9c3RhdGljIGdldCBDSFVOS19TSVpFX0FCT1VUKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkNIVU5LX1NJWkVfQUJPVVQiLHRoaXMuQ0hVTktfU0laRS01KX1jb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTshdHx8ZSZyLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUP3RoaXMub3B0aW1pemVyPW5ldyBOdWxsT3B0aW1pemVyKHRoaXMpOnRoaXMub3B0aW1pemVyPW5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT1yLk9QUy5yZXN0b3JlfHxlPT09ci5PUFMuZW5kVGV4dCkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGEpe3ZvaWQgMCE9PWEmJnRoaXMuYWRkT3Aoci5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHIuT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pfWFkZERlcGVuZGVuY3koZSl7aWYoIXRoaXMuZGVwZW5kZW5jaWVzLmhhcyhlKSl7dGhpcy5kZXBlbmRlbmNpZXMuYWRkKGUpO3RoaXMuYWRkT3Aoci5PUFMuZGVwZW5kZW5jeSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxyLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6bn09dGhpcztmb3IobGV0IGk9MDtpPG47aSsrKXN3aXRjaCh0W2ldKXtjYXNlIHIuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIHIuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCB0PWFbaV1bMF07IXQuY2FjaGVkJiZ0LmRhdGEmJnQuZGF0YS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmZS5wdXNoKHQuZGF0YS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IGE9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPWE7dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6YX0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19dC5PcGVyYXRvckxpc3Q9T3BlcmF0b3JMaXN0fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuUERGSW1hZ2U9dm9pZCAwO3ZhciByPWEoMiksbj1hKDYyKSxpPWEoNSkscz1hKDEyKSxvPWEoMTcpLGM9YSgyNSksbD1hKDI4KSxoPWEoMyk7ZnVuY3Rpb24gZGVjb2RlQW5kQ2xhbXAoZSx0LGEscil7KGU9dCtlKmEpPDA/ZT0wOmU+ciYmKGU9cik7cmV0dXJuIGV9ZnVuY3Rpb24gcmVzaXplSW1hZ2VNYXNrKGUsdCxhLHIsbixpKXtjb25zdCBzPW4qaTtsZXQgbztvPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBjPWEvbixsPXIvaTtsZXQgaCx1LGQsZixnPTA7Y29uc3QgcD1uZXcgVWludDE2QXJyYXkobiksbT1hO2ZvcihoPTA7aDxuO2grKylwW2hdPU1hdGguZmxvb3IoaCpjKTtmb3IoaD0wO2g8aTtoKyspe2Q9TWF0aC5mbG9vcihoKmwpKm07Zm9yKHU9MDt1PG47dSsrKXtmPWQrcFt1XTtvW2crK109ZVtmXX19cmV0dXJuIG99Y2xhc3MgUERGSW1hZ2V7Y29uc3RydWN0b3Ioe3hyZWY6ZSxyZXM6dCxpbWFnZTphLGlzSW5saW5lOm49ITEsc21hc2s6bz1udWxsLG1hc2s6Yz1udWxsLGlzTWFzazp1PSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KXt0aGlzLmltYWdlPWE7Y29uc3QgZz1hLmRpY3QscD1nLmdldCgiRiIsIkZpbHRlciIpO2xldCBtO2lmKHAgaW5zdGFuY2VvZiBoLk5hbWUpbT1wLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHApKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihwWzBdKTt0IGluc3RhbmNlb2YgaC5OYW1lJiYobT10Lm5hbWUpfXN3aXRjaChtKXtjYXNlIkpQWERlY29kZSI6Y29uc3QgZT1uZXcgbC5KcHhJbWFnZTtlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKTthLnN0cmVhbS5yZXNldCgpO2Eud2lkdGg9ZS53aWR0aDthLmhlaWdodD1lLmhlaWdodDthLmJpdHNQZXJDb21wb25lbnQ9ZS5iaXRzUGVyQ29tcG9uZW50O2EubnVtQ29tcHM9ZS5jb21wb25lbnRzQ291bnQ7YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBiPWcuZ2V0KCJXIiwiV2lkdGgiKSx5PWcuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1ifHxhLmhlaWdodCE9PXkpKXsoMCxyLndhcm4pKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2I9YS53aWR0aDt5PWEuaGVpZ2h0fWlmKGI8MXx8eTwxKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGltYWdlIHdpZHRoOiAke2J9IG9yIGhlaWdodDogJHt5fWApO3RoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD15O3RoaXMuaW50ZXJwb2xhdGU9Zy5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpO3RoaXMuaW1hZ2VNYXNrPWcuZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMTt0aGlzLm1hdHRlPWcuZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgdz1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXcpe3c9Zy5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKTtpZighdyl7aWYoIXRoaXMuaW1hZ2VNYXNrKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt3PTF9fXRoaXMuYnBjPXc7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1nLmdldFJhdygiQ1MiKXx8Zy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighaSl7KDAsci5pbmZvKSgiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChhLm51bUNvbXBzKXtjYXNlIDE6aT1oLk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9aC5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0Omk9aC5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHthLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpuP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHN9dGhpcy5kZWNvZGU9Zy5nZXRBcnJheSgiRCIsIkRlY29kZSIpO3RoaXMubmVlZHNEZWNvZGU9ITE7aWYodGhpcy5kZWNvZGUmJih0aGlzLmNvbG9yU3BhY2UmJiF0aGlzLmNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLHcpfHx1JiYhcy5Db2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dyktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD10aGlzLmNvbG9yU3BhY2UmJiJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZS5uYW1lO2ZvcihsZXQgYT0wLHI9MDthPHRoaXMuZGVjb2RlLmxlbmd0aDthKz0yLCsrcil7Y29uc3Qgbj10aGlzLmRlY29kZVthXSxpPXRoaXMuZGVjb2RlW2ErMV07dGhpcy5kZWNvZGVDb2VmZmljaWVudHNbcl09dD8oaS1uKS9lOmktbjt0aGlzLmRlY29kZUFkZGVuZHNbcl09dD9uOmUqbn19aWYobyl0aGlzLnNtYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm8saXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6ZCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7ZWxzZSBpZihjKWlmKGMgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOmMsaXNJbmxpbmU6bixpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5OmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pOigwLHIud2FybikoIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1jfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpuPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBjPWE7bGV0IGw9bnVsbCxoPW51bGw7Y29uc3QgdT1hLmRpY3QuZ2V0KCJTTWFzayIpLGQ9YS5kaWN0LmdldCgiTWFzayIpO3U/dSBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbT9sPXU6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpkJiYoZCBpbnN0YW5jZW9mIGkuQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShkKT9oPWQ6KDAsci53YXJuKSgiVW5zdXBwb3J0ZWQgL01hc2sgZm9ybWF0LiIpKTtyZXR1cm4gbmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6Yyxpc0lubGluZTpuLHNtYXNrOmwsbWFzazpoLHBkZkZ1bmN0aW9uRmFjdG9yeTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KX1zdGF0aWMgY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDphLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIsaW52ZXJzZURlY29kZTpuLGludGVycG9sYXRlOml9KXtjb25zdCBzPSh0Kzc+PjMpKmEsbz1lLmJ5dGVMZW5ndGg7bGV0IGMsbDtpZighcnx8biYmIShzPT09bykpaWYobil7Yz1uZXcgVWludDhBcnJheShzKTtjLnNldChlKTtjLmZpbGwoMjU1LG8pfWVsc2UgYz1uZXcgVWludDhBcnJheShlKTtlbHNlIGM9ZTtpZihuKWZvcihsPTA7bDxvO2wrKyljW2xdXj0yNTU7cmV0dXJue2RhdGE6Yyx3aWR0aDp0LGhlaWdodDphLGludGVycG9sYXRlOml9fXN0YXRpYyBjcmVhdGVNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06aSxpbnZlcnNlRGVjb2RlOnMsaW50ZXJwb2xhdGU6byxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpjPSEwfSl7Y29uc3QgbD0xPT09dCYmMT09PWEmJnM9PT0oMD09PWUubGVuZ3RofHwhISgxMjgmZVswXSkpO2lmKGwpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6bH07aWYoYyYmci5GZWF0dXJlVGVzdC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsYSksaT1yLmdldENvbnRleHQoIjJkIix7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZX0pLGM9aS5jcmVhdGVJbWFnZURhdGEodCxhKTsoMCxuLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzplLGRlc3Q6Yy5kYXRhLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzfSk7aS5wdXRJbWFnZURhdGEoYywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTpvLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTpzLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmksaW50ZXJwb2xhdGU6b30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLndpZHRofHwwLHRoaXMubWFzayYmdGhpcy5tYXNrLndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLmhlaWdodHx8MCx0aGlzLm1hc2smJnRoaXMubWFzay5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxuPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLGk9KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPWRlY29kZUFuZENsYW1wKGVbY10sclt0XSxuW3RdLGkpO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5udW1Db21wcyxpPWEqcipuO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkoaSk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KGkpOm5ldyBVaW50MzJBcnJheShpKTtjb25zdCBjPWEqbixsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLG47Zm9yKGxldCBpPTA7aTxyO2krKyl7YT1kKygtOCZjKTtuPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPG4pe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxuOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPWk7ZDxoOysrZCl7aWYoZCVjPT0wKXt1PTA7YT0wfWZvcig7YTx0Oyl7dT11PDw4fGVbbysrXTthKz04fWNvbnN0IHI9YS10O2xldCBuPXU+PnI7bjwwP249MDpuPmwmJihuPWwpO3NbZF09bjt1Jj0oMTw8ciktMTthPXJ9fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxhLG4saSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQsZjtpZihzKXtsPXMud2lkdGg7aD1zLmhlaWdodDtjPW5ldyBVaW50OENsYW1wZWRBcnJheShsKmgpO3MuZmlsbEdyYXlCdWZmZXIoYyk7bD09PXQmJmg9PT1hfHwoYz1yZXNpemVJbWFnZU1hc2soYyxzLmJwYyxsLGgsdCxhKSl9ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBQREZJbWFnZSl7bD1vLndpZHRoO2g9by5oZWlnaHQ7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKTtvLm51bUNvbXBzPTE7by5maWxsR3JheUJ1ZmZlcihjKTtmb3IodT0wLGQ9bCpoO3U8ZDsrK3UpY1t1XT0yNTUtY1t1XTtsPT09dCYmaD09PWF8fChjPXJlc2l6ZUltYWdlTWFzayhjLG8uYnBjLGwsaCx0LGEpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCphO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3QgYT11KmU7Zm9yKGY9MDtmPGU7KytmKXtjb25zdCBlPWlbYStmXSxyPTIqZjtpZihlPG9bcl18fGU+b1tyKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLGY9MyxkPXQqbjt1PGQ7Kyt1LGYrPTQpZVtmXT1jW3VdO2Vsc2UgZm9yKHU9MCxmPTMsZD10Km47dTxkOysrdSxmKz00KWVbZl09MjU1fXVuZG9QcmVibGVuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnNtYXNrJiZ0aGlzLnNtYXNrLm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBuPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxpPW5bMF0scz1uWzFdLG89blsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1pKSpyK2k7ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319Y3JlYXRlSW1hZ2VEYXRhKGU9ITEpe2NvbnN0IHQ9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQsbj17d2lkdGg6dCxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LGk9dGhpcy5udW1Db21wcyxzPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxsPXRoaXMuYnBjLGg9cyppKmwrNz4+MztpZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1sP2U9ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPXIuSW1hZ2VLaW5kLlJHQl8yNEJQUCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJnQ9PT1zJiZhPT09byl7bi5raW5kPWU7bi5kYXRhPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse30pO2lmKHRoaXMubmVlZHNEZWNvZGUpeygwLHIuYXNzZXJ0KShlPT09ci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9bi5kYXRhO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl0W2VdXj0yNTV9cmV0dXJuIG59aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGMuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2spe2xldCBlPW8qaDtzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCXzI0QlBQO24uZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIG59fX1jb25zdCB1PXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmgse2ludGVybmFsOiEwfSksZD0wfHUubGVuZ3RoL2gqYS9vLGY9dGhpcy5nZXRDb21wb25lbnRzKHUpO2xldCBnLHA7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXtuLmtpbmQ9ci5JbWFnZUtpbmQuUkdCQV8zMkJQUDtuLmRhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSo0KTtnPTE7cD0hMDt0aGlzLmZpbGxPcGFjaXR5KG4uZGF0YSx0LGEsZCxmKX1lbHNle24ua2luZD1yLkltYWdlS2luZC5SR0JfMjRCUFA7bi5kYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmEqMyk7Zz0wO3A9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2Iobi5kYXRhLHMsbyx0LGEsZCxsLGYsZyk7cCYmdGhpcy51bmRvUHJlYmxlbmQobi5kYXRhLHQsZCk7cmV0dXJuIG59ZmlsbEdyYXlCdWZmZXIoZSl7Y29uc3QgdD10aGlzLm51bUNvbXBzO2lmKDEhPT10KXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLG49dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxzPWEqdCppKzc+PjMsbz10aGlzLmdldEltYWdlQnl0ZXMobipzLHtpbnRlcm5hbDohMH0pLGM9dGhpcy5nZXRDb21wb25lbnRzKG8pO2xldCBsLGg7aWYoMT09PWkpe2g9YSpuO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGw9MDtsPGg7KytsKWVbbF09Y1tsXS0xJjI1NTtlbHNlIGZvcihsPTA7bDxoOysrbCllW2xdPTI1NSYtY1tsXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoYyk7aD1hKm47Y29uc3QgdT0yNTUvKCgxPDxpKS0xKTtmb3IobD0wO2w8aDsrK2wpZVtsXT11KmNbbF19Z2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6dCxkcmF3SGVpZ2h0OmEsZm9yY2VSR0I6bj0hMSxpbnRlcm5hbDppPSExfSl7dGhpcy5pbWFnZS5yZXNldCgpO3RoaXMuaW1hZ2UuZHJhd1dpZHRoPXR8fHRoaXMud2lkdGg7dGhpcy5pbWFnZS5kcmF3SGVpZ2h0PWF8fHRoaXMuaGVpZ2h0O3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFuO2NvbnN0IHM9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtpZihpfHx0aGlzLmltYWdlIGluc3RhbmNlb2Ygby5EZWNvZGVTdHJlYW0pcmV0dXJuIHM7KDAsci5hc3NlcnQpKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fXQuUERGSW1hZ2U9UERGSW1hZ2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hcHBseU1hc2tJbWFnZURhdGE9ZnVuY3Rpb24gYXBwbHlNYXNrSW1hZ2VEYXRhKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOm49MCx3aWR0aDppLGhlaWdodDpzLGludmVyc2VEZWNvZGU6bz0hMX0pe2NvbnN0IGM9ci5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbbCxoXT1vP1swLGNdOltjLDBdLHU9aT4+MyxkPTcmaSxmPWUubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IoY29uc3Qgcj10K3U7dDxyO3QrKyl7Y29uc3Qgcj10PGY/ZVt0XToyNTU7YVtuKytdPTEyOCZyP2g6bDthW24rK109NjQmcj9oOmw7YVtuKytdPTMyJnI/aDpsO2FbbisrXT0xNiZyP2g6bDthW24rK109OCZyP2g6bDthW24rK109NCZyP2g6bDthW24rK109MiZyP2g6bDthW24rK109MSZyP2g6bH1pZigwPT09ZCljb250aW51ZTtjb25zdCByPXQ8Zj9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8ZDtlKyspYVtuKytdPXImMTw8Ny1lP2g6bH1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpufX07dmFyIHI9YSgyKX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmluY3JlbWVudGFsVXBkYXRlPWZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6YSx4cmVmOm89bnVsbCxoYXNYZmE6bD0hMSx4ZmFEYXRhc2V0c1JlZjpoPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTp1PSExLGFjcm9Gb3JtUmVmOmQ9bnVsbCxhY3JvRm9ybTpmPW51bGwseGZhRGF0YTpnPW51bGx9KXtsJiZmdW5jdGlvbiB1cGRhdGVYRkEoe3hmYURhdGE6ZSx4ZmFEYXRhc2V0c1JlZjp0LGhhc1hmYURhdGFzZXRzRW50cnk6YSxhY3JvRm9ybVJlZjpuLGFjcm9Gb3JtOm8sbmV3UmVmczpjLHhyZWY6bCx4cmVmSW5mbzpofSl7aWYobnVsbD09PWwpcmV0dXJuO2lmKCFhKXtpZighbil7KDAsci53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtyZXR1cm59Y29uc3QgZT1vLmdldCgiWEZBIiksYT1lLnNsaWNlKCk7YS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Euc3BsaWNlKDMsMCx0KTtvLnNldCgiWEZBIixhKTtjb25zdCBpPWwuZW5jcnlwdDtsZXQgcz1udWxsO2kmJihzPWkuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKG4ubnVtLG4uZ2VuKSk7Y29uc3QgaD1bYCR7bi5udW19ICR7bi5nZW59IG9ialxuYF07d3JpdGVEaWN0KG8saCxzKTtoLnB1c2goIlxuIik7by5zZXQoIlhGQSIsZSk7Yy5wdXNoKHtyZWY6bixkYXRhOmguam9pbigiIil9KX1pZihudWxsPT09ZSl7ZT1mdW5jdGlvbiB3cml0ZVhGQURhdGFGb3JBY3JvZm9ybShlLHQpe2NvbnN0IGE9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6bn09ZTtpZighdCljb250aW51ZTtjb25zdCBvPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoKDAsaS5wYXJzZVhGQVBhdGgpKHQpLDApO28/QXJyYXkuaXNBcnJheShuKT9vLmNoaWxkTm9kZXM9bi5tYXAoKGU9Pm5ldyBzLlNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOm8uY2hpbGROb2Rlcz1bbmV3IHMuU2ltcGxlRE9NTm9kZSgiI3RleHQiLG4pXTooMCxyLndhcm4pKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IG49W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChuKTtyZXR1cm4gbi5qb2luKCIiKX0obC5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGMpfWNvbnN0IHU9bC5lbmNyeXB0O2lmKHUpe2U9dS5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3QgZD1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7Yy5wdXNoKHtyZWY6dCxkYXRhOmR9KX0oe3hmYURhdGE6Zyx4ZmFEYXRhc2V0c1JlZjpoLGhhc1hmYURhdGFzZXRzRW50cnk6dSxhY3JvRm9ybVJlZjpkLGFjcm9Gb3JtOmYsbmV3UmVmczphLHhyZWY6byx4cmVmSW5mbzp0fSk7Y29uc3QgcD1uZXcgbi5EaWN0KG51bGwpLG09dC5uZXdSZWY7bGV0IGIseTtjb25zdCB3PWUuYXQoLTEpO2lmKDEwPT09d3x8MTM9PT13KXtiPVtdO3k9ZS5sZW5ndGh9ZWxzZXtiPVsiXG4iXTt5PWUubGVuZ3RoKzF9cC5zZXQoIlNpemUiLG0ubnVtKzEpO3Auc2V0KCJQcmV2Iix0LnN0YXJ0WFJlZik7cC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIlhSZWYiKSk7bnVsbCE9PXQucm9vdFJlZiYmcC5zZXQoIlJvb3QiLHQucm9vdFJlZik7bnVsbCE9PXQuaW5mb1JlZiYmcC5zZXQoIkluZm8iLHQuaW5mb1JlZik7bnVsbCE9PXQuZW5jcnlwdFJlZiYmcC5zZXQoIkVuY3J5cHQiLHQuZW5jcnlwdFJlZik7YS5wdXNoKHtyZWY6bSxkYXRhOiIifSk7YT1hLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Y29uc3QgUz1bWzAsMSw2NTUzNV1dLHg9WzAsMV07bGV0IGs9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTp0fW9mIGEpe2s9TWF0aC5tYXgoayx5KTtTLnB1c2goWzEseSxNYXRoLm1pbihlLmdlbiw2NTUzNSldKTt5Kz10Lmxlbmd0aDt4LnB1c2goZS5udW0sMSk7Yi5wdXNoKHQpfXAuc2V0KCJJbmRleCIseCk7aWYoQXJyYXkuaXNBcnJheSh0LmZpbGVJZHMpJiZ0LmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24gY29tcHV0ZU1ENShlLHQpe2NvbnN0IGE9TWF0aC5mbG9vcihEYXRlLm5vdygpLzFlMyksbj10LmZpbGVuYW1lfHwiIixpPVthLnRvU3RyaW5nKCksbixlLnRvU3RyaW5nKCldO2xldCBzPWkucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksMCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0LmluZm8pKXtpLnB1c2goZSk7cys9ZS5sZW5ndGh9Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpe3dyaXRlU3RyaW5nKGUsbCxvKTtsKz1lLmxlbmd0aH1yZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKCgwLGMuY2FsY3VsYXRlTUQ1KShvKSl9KHksdCk7cC5zZXQoIklEIixbdC5maWxlSWRzWzBdLGVdKX1jb25zdCBDPVsxLE1hdGguY2VpbChNYXRoLmxvZzIoaykvOCksMl0sdj0oQ1swXStDWzFdK0NbMl0pKlMubGVuZ3RoO3Auc2V0KCJXIixDKTtwLnNldCgiTGVuZ3RoIix2KTtiLnB1c2goYCR7bS5udW19ICR7bS5nZW59IG9ialxuYCk7d3JpdGVEaWN0KHAsYixudWxsKTtiLnB1c2goIiBzdHJlYW1cbiIpO2NvbnN0IEY9Yi5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKSxPPWBcbmVuZHN0cmVhbVxuZW5kb2JqXG5zdGFydHhyZWZcbiR7eX1cbiUlRU9GXG5gLFQ9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrRit2K08ubGVuZ3RoKTtULnNldChlKTtsZXQgTT1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBiKXt3cml0ZVN0cmluZyhlLE0sVCk7TSs9ZS5sZW5ndGh9Zm9yKGNvbnN0W2UsdCxhXW9mIFMpe009d3JpdGVJbnQoZSxDWzBdLE0sVCk7TT13cml0ZUludCh0LENbMV0sTSxUKTtNPXdyaXRlSW50KGEsQ1syXSxNLFQpfXdyaXRlU3RyaW5nKE8sTSxUKTtyZXR1cm4gVH07dC53cml0ZURpY3Q9d3JpdGVEaWN0O3Qud3JpdGVPYmplY3Q9ZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEscil7YS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBuLkRpY3Q/d3JpdGVEaWN0KHQsYSxyKTp0IGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZ3cml0ZVN0cmVhbSh0LGEscik7YS5wdXNoKCJcbmVuZG9ialxuIil9O3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoNjQpLG89YSg1KSxjPWEoNjUpO2Z1bmN0aW9uIHdyaXRlRGljdChlLHQsYSl7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCByIG9mIGUuZ2V0S2V5cygpKXt0LnB1c2goYCAvJHsoMCxpLmVzY2FwZVBERk5hbWUpKHIpfSBgKTt3cml0ZVZhbHVlKGUuZ2V0UmF3KHIpLHQsYSl9dC5wdXNoKCI+PiIpfWZ1bmN0aW9uIHdyaXRlU3RyZWFtKGUsdCxhKXt3cml0ZURpY3QoZS5kaWN0LHQsYSk7dC5wdXNoKCIgc3RyZWFtXG4iKTtsZXQgcj1lLmdldFN0cmluZygpO251bGwhPT1hJiYocj1hLmVuY3J5cHRTdHJpbmcocikpO3QucHVzaChyLCJcbmVuZHN0cmVhbVxuIil9ZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIG4uTmFtZSl0LnB1c2goYC8keygwLGkuZXNjYXBlUERGTmFtZSkoZS5uYW1lKX1gKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLlJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpIWZ1bmN0aW9uIHdyaXRlQXJyYXkoZSx0LGEpe3QucHVzaCgiWyIpO2xldCByPSEwO2Zvcihjb25zdCBuIG9mIGUpe3I/cj0hMTp0LnB1c2goIiAiKTt3cml0ZVZhbHVlKG4sdCxhKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtudWxsIT09YSYmKGU9YS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgkeygwLHIuZXNjYXBlU3RyaW5nKShlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIG4uRGljdD93cml0ZURpY3QoZSx0LGEpOmUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/d3JpdGVTdHJlYW0oZSx0LGEpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLHIud2FybikoYFVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICR7dHlwZW9mIGV9LCBwbGVhc2UgZmlsZSBhIGJ1Zy5gKX1mdW5jdGlvbiB3cml0ZUludChlLHQsYSxyKXtmb3IobGV0IG49dCthLTE7bj5hLTE7bi0tKXtyW25dPTI1NSZlO2U+Pj04fXJldHVybiBhK3R9ZnVuY3Rpb24gd3JpdGVTdHJpbmcoZSx0LGEpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylhW3Qrcl09MjU1JmUuY2hhckNvZGVBdChyKX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDA7dmFyIHI9YSg0KTtjb25zdCBuPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O3QuWE1MUGFyc2VyRXJyb3JDb2RlPW47ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgYT1lW3RdO3JldHVybiIgIj09PWF8fCJcbiI9PT1hfHwiXHIiPT09YXx8Ilx0Ij09PWF9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2UoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsbj0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IGk9ZVtyXTtpZignIichPT1pJiYiJyIhPT1pKXJldHVybiBudWxsO2NvbnN0IHM9ZS5pbmRleE9mKGksKytyKTtpZihzPDApcmV0dXJuIG51bGw7bj1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOm4sYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBuPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcobixhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoYSx0KSk7YT10KzE7YnJlYWs7Y2FzZSI/IjorK2E7Y29uc3Qgcj10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGEpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhhK3IucGFyc2VkLGErci5wYXJzZWQrMikpe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkQ29tbWVudCk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGErMyx0KSk7YT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZENkYXQpO3JldHVybn10aGlzLm9uQ2RhdGEoZS5zdWJzdHJpbmcoYSs4LHQpKTthPXQrM31lbHNle2lmKCJET0NUWVBFIiE9PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKG4uVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihuLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7cmV0dXJufWk9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3Iobi5NYWxmb3JtZWRFbGVtZW50KTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGEraS5wYXJzZWQsYStpLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3Iobi5VbnRlcm1pbmF0ZWRFbGVtZW50KTtyZXR1cm59dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpO2ErPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDthPGUubGVuZ3RoJiYiPCIhPT1lW2FdOylhKys7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKSl9dD1hfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuYCYke2V9O2B9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQsYSl7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1YTUxQYXJzZXJCYXNlO2NsYXNzIFNpbXBsZURPTU5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWU7dGhpcy5ub2RlVmFsdWU9dDtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXMmJnRoaXMuY2hpbGROb2Rlc1swXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2RlcyYmdGhpcy5jaGlsZE5vZGVzLmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBhPWVbdF0scj1bXTtsZXQgbj10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09bi5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W2ldPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBpLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9bi5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYobi5jaGlsZE5vZGVzJiYwIT09bi5jaGlsZE5vZGVzLmxlbmd0aCl7ci5wdXNoKFtuLDBdKTtuPW4uY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7bj1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHsoMCxyLmVuY29kZVRvWG1sU3RyaW5nKSh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4keygwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLHIuZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1TaW1wbGVET01Ob2RlO3QuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPW4uTm9FcnJvcjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PW4uTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwO3QuY2FsY3VsYXRlU0hBMzg0PWNhbGN1bGF0ZVNIQTM4NDt0LmNhbGN1bGF0ZVNIQTUxMj12b2lkIDA7dmFyIHI9YSgyKSxuPWEoMyksaT1hKDY2KTtjbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsbj0wO3I8MjU2Oysrcil7Y29uc3QgaT10W3JdO249bitpK2VbciVhXSYyNTU7dFtyXT10W25dO3Rbbl09aX10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLG49ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IHM9MDtzPG47KytzKXt0PXQrMSYyNTU7Y29uc3Qgbj1yW3RdO2E9YStuJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09bjtpW3NdPWVbc11ecltuK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gaX1kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX10LkFSQ0ZvdXJDaXBoZXI9QVJDRm91ckNpcGhlcjtjb25zdCBzPWZ1bmN0aW9uIGNhbGN1bGF0ZU1ENUNsb3N1cmUoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbiBoYXNoKGEscixuKXtsZXQgaT0xNzMyNTg0MTkzLHM9LTI3MTczMzg3OSxvPS0xNzMyNTg0MTk0LGM9MjcxNzMzODc4O2NvbnN0IGw9bis3MiYtNjQsaD1uZXcgVWludDhBcnJheShsKTtsZXQgdSxkO2Zvcih1PTA7dTxuOysrdSloW3VdPWFbcisrXTtoW3UrK109MTI4O2NvbnN0IGY9bC04O2Zvcig7dTxmOyloW3UrK109MDtoW3UrK109bjw8MyYyNTU7aFt1KytdPW4+PjUmMjU1O2hbdSsrXT1uPj4xMyYyNTU7aFt1KytdPW4+PjIxJjI1NTtoW3UrK109bj4+PjI5JjI1NTtoW3UrK109MDtoW3UrK109MDtoW3UrK109MDtjb25zdCBnPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IodT0wO3U8bDspe2ZvcihkPTA7ZDwxNjsrK2QsdSs9NClnW2RdPWhbdV18aFt1KzFdPDw4fGhbdSsyXTw8MTZ8aFt1KzNdPDwyNDtsZXQgYSxyLG49aSxsPXMsZj1vLHA9Yztmb3IoZD0wO2Q8NjQ7KytkKXtpZihkPDE2KXthPWwmZnx+bCZwO3I9ZH1lbHNlIGlmKGQ8MzIpe2E9cCZsfH5wJmY7cj01KmQrMSYxNX1lbHNlIGlmKGQ8NDgpe2E9bF5mXnA7cj0zKmQrNSYxNX1lbHNle2E9Zl4obHx+cCk7cj03KmQmMTV9Y29uc3QgaT1wLHM9bithK3RbZF0rZ1tyXXwwLG89ZVtkXTtwPWY7Zj1sO2w9bCsoczw8b3xzPj4+MzItbyl8MDtuPWl9aT1pK258MDtzPXMrbHwwO289bytmfDA7Yz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PXM7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGE7aWYoMzImZSl7YT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7YT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8YTw8MzItZTt0aGlzLmhpZ2g9YT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGE9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihhKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8YX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3Qgbz1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxhKXtyZXR1cm4gZSZ0Xn5lJmF9ZnVuY3Rpb24gbWFqKGUsdCxhKXtyZXR1cm4gZSZ0XmUmYV50JmF9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGEscil7bGV0IG49MTc3OTAzMzcwMyxpPTMxNDQxMzQyNzcscz0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixjPTEzNTk4OTMxMTksbD0yNjAwODIyOTI0LGg9NTI4NzM0NjM1LHU9MTU0MTQ1OTIyNTtjb25zdCBkPTY0Kk1hdGguY2VpbCgocis5KS82NCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxyOysrZylmW2ddPXRbYSsrXTtmW2crK109MTI4O2NvbnN0IG09ZC04O2Zvcig7ZzxtOylmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109MDtmW2crK109cj4+PjI5JjI1NTtmW2crK109cj4+MjEmMjU1O2ZbZysrXT1yPj4xMyYyNTU7ZltnKytdPXI+PjUmMjU1O2ZbZysrXT1yPDwzJjI1NTtjb25zdCBiPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdPWZbZ108PDI0fGZbZysxXTw8MTZ8ZltnKzJdPDw4fGZbZyszXTtnKz00fWZvcihwPTE2O3A8NjQ7KytwKWJbcF09KHJvdHIoeT1iW3AtMl0sMTcpXnJvdHIoeSwxOSleeT4+PjEwKStiW3AtN10rbGl0dGxlU2lnbWEoYltwLTE1XSkrYltwLTE2XXwwO2xldCB0LGEscj1uLGQ9aSxtPXMsdz1vLFM9Yyx4PWwsaz1oLEM9dTtmb3IocD0wO3A8NjQ7KytwKXt0PUMrc2lnbWFQcmltZShTKStjaChTLHgsaykrZVtwXStiW3BdO2E9c2lnbWEocikrbWFqKHIsZCxtKTtDPWs7az14O3g9UztTPXcrdHwwO3c9bTttPWQ7ZD1yO3I9dCthfDB9bj1uK3J8MDtpPWkrZHwwO3M9cyttfDA7bz1vK3d8MDtjPWMrU3wwO2w9bCt4fDA7aD1oK2t8MDt1PXUrQ3wwfXZhciB5O3JldHVybiBuZXcgVWludDhBcnJheShbbj4+MjQmMjU1LG4+PjE2JjI1NSxuPj44JjI1NSwyNTUmbixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLHM+PjI0JjI1NSxzPj4xNiYyNTUscz4+OCYyNTUsMjU1JnMsbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsaD4+MjQmMjU1LGg+PjE2JjI1NSxoPj44JjI1NSwyNTUmaCx1Pj4yNCYyNTUsdT4+MTYmMjU1LHU+PjgmMjU1LDI1NSZ1XSl9fSgpO3QuY2FsY3VsYXRlU0hBMjU2PW87Y29uc3QgYz1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGEscixuKXtlLmFzc2lnbih0KTtlLmFuZChhKTtuLmFzc2lnbih0KTtuLm5vdCgpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIG1haihlLHQsYSxyLG4pe2UuYXNzaWduKHQpO2UuYW5kKGEpO24uYXNzaWduKHQpO24uYW5kKHIpO2UueG9yKG4pO24uYXNzaWduKGEpO24uYW5kKHIpO2UueG9yKG4pfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsYSxyLG49ITEpe2xldCBpLHMsbyxjLGwsaCx1LGQ7aWYobil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7cz1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2M9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7bD1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7dT1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7ZD1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtzPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtjPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtsPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO3U9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7ZD1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBmPTEyOCpNYXRoLmNlaWwoKHIrMTcpLzEyOCksZz1uZXcgVWludDhBcnJheShmKTtsZXQgcCxtO2ZvcihwPTA7cDxyOysrcClnW3BdPXRbYSsrXTtnW3ArK109MTI4O2NvbnN0IGI9Zi0xNjtmb3IoO3A8YjspZ1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPTA7Z1twKytdPXI+Pj4yOSYyNTU7Z1twKytdPXI+PjIxJjI1NTtnW3ArK109cj4+MTMmMjU1O2dbcCsrXT1yPj41JjI1NTtnW3ArK109cjw8MyYyNTU7Y29uc3QgeT1uZXcgQXJyYXkoODApO2ZvcihwPTA7cDw4MDtwKyspeVtwXT1uZXcgV29yZDY0KDAsMCk7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLE89bmV3IFdvcmQ2NCgwLDApO2NvbnN0IFQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLEU9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApO2xldCBOLFI7Zm9yKHA9MDtwPGY7KXtmb3IobT0wO208MTY7KyttKXt5W21dLmhpZ2g9Z1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdO3lbbV0ubG93PWdbcCs0XTw8MjR8Z1twKzVdPDwxNnxnW3ArNl08PDh8Z1twKzddO3ArPTh9Zm9yKG09MTY7bTw4MDsrK20pe049eVttXTtsaXR0bGVTaWdtYVByaW1lKE4seVttLTJdLEQpO04uYWRkKHlbbS03XSk7bGl0dGxlU2lnbWEoRSx5W20tMTVdLEQpO04uYWRkKEUpO04uYWRkKHlbbS0xNl0pfXcuYXNzaWduKGkpO1MuYXNzaWduKHMpO3guYXNzaWduKG8pO2suYXNzaWduKGMpO0MuYXNzaWduKGwpO3YuYXNzaWduKGgpO0YuYXNzaWduKHUpO08uYXNzaWduKGQpO2ZvcihtPTA7bTw4MDsrK20pe1QuYXNzaWduKE8pO3NpZ21hUHJpbWUoRSxDLEQpO1QuYWRkKEUpO2NoKEUsQyx2LEYsRCk7VC5hZGQoRSk7VC5hZGQoZVttXSk7VC5hZGQoeVttXSk7c2lnbWEoTSx3LEQpO21haihFLHcsUyx4LEQpO00uYWRkKEUpO049TztPPUY7Rj12O3Y9QztrLmFkZChUKTtDPWs7az14O3g9UztTPXc7Ti5hc3NpZ24oVCk7Ti5hZGQoTSk7dz1OfWkuYWRkKHcpO3MuYWRkKFMpO28uYWRkKHgpO2MuYWRkKGspO2wuYWRkKEMpO2guYWRkKHYpO3UuYWRkKEYpO2QuYWRkKE8pfWlmKG4pe1I9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKX1lbHNle1I9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKFIsMCk7cy5jb3B5VG8oUiw4KTtvLmNvcHlUbyhSLDE2KTtjLmNvcHlUbyhSLDI0KTtsLmNvcHlUbyhSLDMyKTtoLmNvcHlUbyhSLDQwKTt1LmNvcHlUbyhSLDQ4KTtkLmNvcHlUbyhSLDU2KX1yZXR1cm4gUn19KCk7dC5jYWxjdWxhdGVTSEE1MTI9YztmdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjKGUsdCxhLCEwKX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUFFU0Jhc2VDaXBoZXImJigwLHIudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBBRVNCYXNlQ2lwaGVyLiIpO3RoaXMuX3M9bmV3IFVpbnQ4QXJyYXkoWzk5LDEyNCwxMTksMTIzLDI0MiwxMDcsMTExLDE5Nyw0OCwxLDEwMyw0MywyNTQsMjE1LDE3MSwxMTgsMjAyLDEzMCwyMDEsMTI1LDI1MCw4OSw3MSwyNDAsMTczLDIxMiwxNjIsMTc1LDE1NiwxNjQsMTE0LDE5MiwxODMsMjUzLDE0NywzOCw1NCw2MywyNDcsMjA0LDUyLDE2NSwyMjksMjQxLDExMywyMTYsNDksMjEsNCwxOTksMzUsMTk1LDI0LDE1MCw1LDE1NCw3LDE4LDEyOCwyMjYsMjM1LDM5LDE3OCwxMTcsOSwxMzEsNDQsMjYsMjcsMTEwLDkwLDE2MCw4Miw1OSwyMTQsMTc5LDQxLDIyNyw0NywxMzIsODMsMjA5LDAsMjM3LDMyLDI1MiwxNzcsOTEsMTA2LDIwMywxOTAsNTcsNzQsNzYsODgsMjA3LDIwOCwyMzksMTcwLDI1MSw2Nyw3Nyw1MSwxMzMsNjksMjQ5LDIsMTI3LDgwLDYwLDE1OSwxNjgsODEsMTYzLDY0LDE0MywxNDYsMTU3LDU2LDI0NSwxODgsMTgyLDIxOCwzMywxNiwyNTUsMjQzLDIxMCwyMDUsMTIsMTksMjM2LDk1LDE1MSw2OCwyMywxOTYsMTY3LDEyNiw2MSwxMDAsOTMsMjUsMTE1LDk2LDEyOSw3OSwyMjAsMzQsNDIsMTQ0LDEzNiw3MCwyMzgsMTg0LDIwLDIyMiw5NCwxMSwyMTksMjI0LDUwLDU4LDEwLDczLDYsMzYsOTIsMTk0LDIxMSwxNzIsOTgsMTQ1LDE0OSwyMjgsMTIxLDIzMSwyMDAsNTUsMTA5LDE0MSwyMTMsNzgsMTY5LDEwOCw4NiwyNDQsMjM0LDEwMSwxMjIsMTc0LDgsMTg2LDEyMCwzNyw0NiwyOCwxNjYsMTgwLDE5OCwyMzIsMjIxLDExNiwzMSw3NSwxODksMTM5LDEzOCwxMTIsNjIsMTgxLDEwMiw3MiwzLDI0NiwxNCw5Nyw1Myw4NywxODUsMTM0LDE5MywyOSwxNTgsMjI1LDI0OCwxNTIsMTcsMTA1LDIxNywxNDIsMTQ4LDE1NSwzMCwxMzUsMjMzLDIwNiw4NSw0MCwyMjMsMTQwLDE2MSwxMzcsMTMsMTkxLDIzMCw2NiwxMDQsNjUsMTUzLDQ1LDE1LDE3Niw4NCwxODcsMjJdKTt0aGlzLl9pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO3RoaXMuX21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTt0aGlzLl9taXhDb2w9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy5fbWl4Q29sW2VdPWU8MTI4P2U8PDE6ZTw8MV4yNzt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJQb3NpdGlvbj0wfV9leHBhbmRLZXkoZSl7KDAsci51bnJlYWNoYWJsZSkoIkNhbm5vdCBjYWxsIGBfZXhwYW5kS2V5YCBvbiB0aGUgYmFzZSBjbGFzcyIpfV9kZWNyeXB0KGUsdCl7bGV0IGEscixuO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMTYpO2kuc2V0KGUpO2ZvcihsZXQgZT0wLGE9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2EpaVtlXV49dFthXTtmb3IobGV0IGU9dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uLTE7ZT49MTstLWUpe2E9aVsxM107aVsxM109aVs5XTtpWzldPWlbNV07aVs1XT1pWzFdO2lbMV09YTthPWlbMTRdO3I9aVsxMF07aVsxNF09aVs2XTtpWzEwXT1pWzJdO2lbNl09YTtpWzJdPXI7YT1pWzE1XTtyPWlbMTFdO249aVs3XTtpWzE1XT1pWzNdO2lbMTFdPWE7aVs3XT1yO2lbM109bjtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2ZvcihsZXQgYT0wLHI9MTYqZTthPDE2OysrYSwrK3IpaVthXV49dFtyXTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9dGhpcy5fbWl4W2lbZV1dLHI9dGhpcy5fbWl4W2lbZSsxXV0sbj10aGlzLl9taXhbaVtlKzJdXSxzPXRoaXMuX21peFtpW2UrM11dO2E9dF5yPj4+OF5yPDwyNF5uPj4+MTZebjw8MTZecz4+PjI0XnM8PDg7aVtlXT1hPj4+MjQmMjU1O2lbZSsxXT1hPj4xNiYyNTU7aVtlKzJdPWE+PjgmMjU1O2lbZSszXT0yNTUmYX19YT1pWzEzXTtpWzEzXT1pWzldO2lbOV09aVs1XTtpWzVdPWlbMV07aVsxXT1hO2E9aVsxNF07cj1pWzEwXTtpWzE0XT1pWzZdO2lbMTBdPWlbMl07aVs2XT1hO2lbMl09cjthPWlbMTVdO3I9aVsxMV07bj1pWzddO2lbMTVdPWlbM107aVsxMV09YTtpWzddPXI7aVszXT1uO2ZvcihsZXQgZT0wO2U8MTY7KytlKXtpW2VdPXRoaXMuX2ludl9zW2lbZV1dO2lbZV1ePXRbZV19cmV0dXJuIGl9X2VuY3J5cHQoZSx0KXtjb25zdCBhPXRoaXMuX3M7bGV0IHIsbixpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYpO3Muc2V0KGUpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV1ePXRbZV07Zm9yKGxldCBlPTE7ZTx0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb247ZSsrKXtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdPWFbc1tlXV07aT1zWzFdO3NbMV09c1s1XTtzWzVdPXNbOV07c1s5XT1zWzEzXTtzWzEzXT1pO2k9c1syXTtuPXNbNl07c1syXT1zWzEwXTtzWzZdPXNbMTRdO3NbMTBdPWk7c1sxNF09bjtpPXNbM107bj1zWzddO3I9c1sxMV07c1szXT1zWzE1XTtzWzddPWk7c1sxMV09bjtzWzE1XT1yO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD1zW2UrMF0sYT1zW2UrMV0sbj1zW2UrMl0saT1zW2UrM107cj10XmFebl5pO3NbZSswXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2Febl07c1tlKzJdXj1yXnRoaXMuX21peENvbFtuXmldO3NbZSszXV49cl50aGlzLl9taXhDb2xbaV50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO2k9c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109aTtpPXNbMl07bj1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1pO3NbMTRdPW47aT1zWzNdO249c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1pO3NbMTFdPW47c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltuXT1lW3RdOysrbjtpZihuPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj1zO2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqaS5sZW5ndGg7aWYodCl7Y29uc3QgZT1pLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7aVtpLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9aS5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChpW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLG49dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8cjsrK3QsKytpKW5baV09ZVt0XTtpZihpPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1pO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PW47ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLG49dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBpPVtdO3R8fCh0PW5ldyBVaW50OEFycmF5KDE2KSk7Zm9yKGxldCBzPTA7czxhOysrcyl7cltuXT1lW3NdOysrbjtpZihuPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7aS5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO249MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPW47dGhpcy5pdj10O2lmKDA9PT1pLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNippLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPWkubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQoaVtlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSk7dGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxhPXRoaXMuX3Jjb24scj1uZXcgVWludDhBcnJheSgxNzYpO3Iuc2V0KGUpO2ZvcihsZXQgZT0xNixuPTE7ZTwxNzY7KytuKXtsZXQgaT1yW2UtM10scz1yW2UtMl0sbz1yW2UtMV0sYz1yW2UtNF07aT10W2ldO3M9dFtzXTtvPXRbb107Yz10W2NdO2lePWFbbl07Zm9yKGxldCB0PTA7dDw0OysrdCl7cltlXT1pXj1yW2UtMTZdO2UrKztyW2VdPXNePXJbZS0xNl07ZSsrO3JbZV09b149cltlLTE2XTtlKys7cltlXT1jXj1yW2UtMTZdO2UrK319cmV0dXJuIHJ9fXQuQUVTMTI4Q2lwaGVyPUFFUzEyOENpcGhlcjtjbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLG4saSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO249YVtlLTJdO2k9YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtuPXRbbl07aT10W2ldO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPW5ePWFbZS0zMl07ZSsrO2FbZV09aV49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fXQuQUVTMjU2Q2lwaGVyPUFFUzI1NkNpcGhlcjtjbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGEsbil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPW8oaSwwLGkubGVuZ3RoKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkocyxuKX1jaGVja1VzZXJQYXNzd29yZChlLHQsYSl7Y29uc3Qgbj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9byhuLDAsbi5sZW5ndGgpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShpLGEpfWdldE93bmVyS2V5KGUsdCxhLHIpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7bi5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT1vKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIoaSkuZGVjcnlwdEJsb2NrKHIsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgbj1vKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIobikuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19dC5QREYxNz1QREYxNztjb25zdCBsPWZ1bmN0aW9uIFBERjIwQ2xvc3VyZSgpe2Z1bmN0aW9uIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl7bGV0IHI9byh0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLG49WzBdLGk9MDtmb3IoO2k8NjR8fG4uYXQoLTEpPmktMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IGw9MDtzLnNldChlLGwpO2wrPWUubGVuZ3RoO3Muc2V0KHIsbCk7bCs9ci5sZW5ndGg7cy5zZXQoYSxsKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWguc2V0KHMsYSk7bj1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgdT1uLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09dT9yPW8obiwwLG4ubGVuZ3RoKToxPT09dT9yPWNhbGN1bGF0ZVNIQTM4NChuLDAsbi5sZW5ndGgpOjI9PT11JiYocj1jKG4sMCxuLmxlbmd0aCkpO2krK31yZXR1cm4gci5zdWJhcnJheSgwLDMyKX1yZXR1cm4gY2xhc3MgUERGMjB7aGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVBERjIwSGFzaChlLHQsYSl9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxhLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCk7aS5zZXQodCxlLmxlbmd0aCk7aS5zZXQoYSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz1jYWxjdWxhdGVQREYyMEhhc2goZSxpLGEpO3JldHVybigwLHIuaXNBcnJheUVxdWFsKShzLG4pfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCk7bi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1jYWxjdWxhdGVQREYyMEhhc2goZSxuLFtdKTtyZXR1cm4oMCxyLmlzQXJyYXlFcXVhbCkoaSxhKX1nZXRPd25lcktleShlLHQsYSxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtuLnNldChlLDApO24uc2V0KHQsZS5sZW5ndGgpO24uc2V0KGEsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IGk9Y2FsY3VsYXRlUERGMjBIYXNoKGUsbixhKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKS5kZWNyeXB0QmxvY2sociwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtjb25zdCBuPWNhbGN1bGF0ZVBERjIwSGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fX0oKTt0LlBERjIwPWw7Y2xhc3MgQ2lwaGVyVHJhbnNmb3Jte2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lO3RoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCBhPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBhLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuKDAsci5ieXRlc1RvU3RyaW5nKShhKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGE9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKS5yZXBlYXQoYSk7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKW5bZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IGk9KDAsci5zdHJpbmdUb0J5dGVzKShlKTtpPXQuZW5jcnlwdChpLG4pO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO3Muc2V0KG4pO3Muc2V0KGksMTYpO3JldHVybigwLHIuYnl0ZXNUb1N0cmluZykocyl9bGV0IGE9KDAsci5zdHJpbmdUb0J5dGVzKShlKTthPXQuZW5jcnlwdChhKTtyZXR1cm4oMCxyLmJ5dGVzVG9TdHJpbmcpKGEpfX1jb25zdCBoPWZ1bmN0aW9uIENpcGhlclRyYW5zZm9ybUZhY3RvcnlDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pO2Z1bmN0aW9uIHByZXBhcmVLZXlEYXRhKHQsYSxyLG4saSxvLGMsbCl7Y29uc3QgaD00MCtyLmxlbmd0aCt0Lmxlbmd0aCx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBkLGYsZz0wO2lmKGEpe2Y9TWF0aC5taW4oMzIsYS5sZW5ndGgpO2Zvcig7ZzxmOysrZyl1W2ddPWFbZ119ZD0wO2Zvcig7ZzwzMjspdVtnKytdPWVbZCsrXTtmb3IoZD0wLGY9ci5sZW5ndGg7ZDxmOysrZCl1W2crK109cltkXTt1W2crK109MjU1Jmk7dVtnKytdPWk+PjgmMjU1O3VbZysrXT1pPj4xNiYyNTU7dVtnKytdPWk+Pj4yNCYyNTU7Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07aWYobz49NCYmIWwpe3VbZysrXT0yNTU7dVtnKytdPTI1NTt1W2crK109MjU1O3VbZysrXT0yNTV9bGV0IHA9cyh1LDAsZyk7Y29uc3QgbT1jPj4zO2lmKG8+PTMpZm9yKGQ9MDtkPDUwOysrZClwPXMocCwwLG0pO2NvbnN0IGI9cC5zdWJhcnJheSgwLG0pO2xldCB5LHc7aWYobz49Myl7Zm9yKGc9MDtnPDMyOysrZyl1W2ddPWVbZ107Zm9yKGQ9MCxmPXQubGVuZ3RoO2Q8ZjsrK2QpdVtnKytdPXRbZF07eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKHModSwwLGcpKTtmPWIubGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZik7Zm9yKGQ9MTtkPD0xOTsrK2Qpe2ZvcihsZXQgZT0wO2U8ZjsrK2UpYVtlXT1iW2VdXmQ7eT1uZXcgQVJDRm91ckNpcGhlcihhKTt3PXkuZW5jcnlwdEJsb2NrKHcpfWZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfWVsc2V7eT1uZXcgQVJDRm91ckNpcGhlcihiKTt3PXkuZW5jcnlwdEJsb2NrKGUpO2ZvcihkPTAsZj13Lmxlbmd0aDtkPGY7KytkKWlmKG5bZF0hPT13W2RdKXJldHVybiBudWxsfXJldHVybiBifWNvbnN0IHQ9bi5OYW1lLmdldCgiSWRlbnRpdHkiKTtmdW5jdGlvbiBidWlsZE9iamVjdEtleShlLHQsYSxyPSExKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzkpLGk9YS5sZW5ndGg7bGV0IG87Zm9yKG89MDtvPGk7KytvKW5bb109YVtvXTtuW28rK109MjU1JmU7bltvKytdPWU+PjgmMjU1O25bbysrXT1lPj4xNiYyNTU7bltvKytdPTI1NSZ0O25bbysrXT10Pj44JjI1NTtpZihyKXtuW28rK109MTE1O25bbysrXT02NTtuW28rK109MTA4O25bbysrXT04NH1yZXR1cm4gcyhuLDAsbykuc3ViYXJyYXkoMCxNYXRoLm1pbihhLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYnVpbGRDaXBoZXJDb25zdHJ1Y3RvcihlLHQsYSxpLHMpe2lmKCEodCBpbnN0YW5jZW9mIG4uTmFtZSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbz1lLmdldCh0Lm5hbWUpO2xldCBjO251bGwhPW8mJihjPW8uZ2V0KCJDRk0iKSk7aWYoIWN8fCJOb25lIj09PWMubmFtZSlyZXR1cm4gZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRmFjdG9yeUJ1aWxkQ2lwaGVyQ29uc3RydWN0b3JOb25lKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvclYyKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKGJ1aWxkT2JqZWN0S2V5KGEsaSxzLCExKSl9O2lmKCJBRVNWMiI9PT1jLm5hbWUpcmV0dXJuIGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybUZhY3RvcnlCdWlsZENpcGhlckNvbnN0cnVjdG9yQUVTVjIoKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihidWlsZE9iamVjdEtleShhLGkscywhMCkpfTtpZigiQUVTVjMiPT09Yy5uYW1lKXJldHVybiBmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1GYWN0b3J5QnVpbGRDaXBoZXJDb25zdHJ1Y3RvckFFU1YzKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocyl9O3Rocm93IG5ldyByLkZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1yZXR1cm4gY2xhc3MgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeXtjb25zdHJ1Y3RvcihhLGksbyl7Y29uc3QgYz1hLmdldCgiRmlsdGVyIik7aWYoISgwLG4uaXNOYW1lKShjLCJTdGFuZGFyZCIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWMubmFtZTt0aGlzLmRpY3Q9YTtjb25zdCBoPWEuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fDEhPT1oJiYyIT09aCYmNCE9PWgmJjUhPT1oKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPWg7bGV0IHU9YS5nZXQoIkxlbmd0aCIpO2lmKCF1KWlmKGg8PTMpdT00MDtlbHNle2NvbnN0IGU9YS5nZXQoIkNGIiksdD1hLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QmJnQgaW5zdGFuY2VvZiBuLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGE9ZS5nZXQodC5uYW1lKTt1PWEmJmEuZ2V0KCJMZW5ndGgiKXx8MTI4O3U8NDAmJih1PDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHUpfHx1PDQwfHx1JTghPTApdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IGQ9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgwLDMyKSxmPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCwzMiksZz1hLmdldCgiUCIpLHA9YS5nZXQoIlIiKSxtPSg0PT09aHx8NT09PWgpJiYhMSE9PWEuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1tO2NvbnN0IGI9KDAsci5zdHJpbmdUb0J5dGVzKShpKTtsZXQgeSx3O2lmKG8pe2lmKDY9PT1wKXRyeXtvPSgwLHIudXRmOFN0cmluZ1RvU3RyaW5nKShvKX1jYXRjaChlKXsoMCxyLndhcm4pKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9eT0oMCxyLnN0cmluZ1RvQnl0ZXMpKG8pfWlmKDUhPT1oKXc9cHJlcGFyZUtleURhdGEoYix5LGQsZixnLHAsdSxtKTtlbHNle2NvbnN0IGU9KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiTyIpKS5zdWJhcnJheSgzMiw0MCksdD0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJPIikpLnN1YmFycmF5KDQwLDQ4KSxuPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoMCw0OCksaT0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVIikpLnN1YmFycmF5KDMyLDQwKSxzPSgwLHIuc3RyaW5nVG9CeXRlcykoYS5nZXQoIlUiKSkuc3ViYXJyYXkoNDAsNDgpLG89KDAsci5zdHJpbmdUb0J5dGVzKShhLmdldCgiT0UiKSksYz0oMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJVRSIpKTsoMCxyLnN0cmluZ1RvQnl0ZXMpKGEuZ2V0KCJQZXJtcyIpKTt3PWZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRpb25LZXkyMChlLHQsYSxyLG4saSxzLG8sYyxoLHUsZCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtsZXQgZjtmPTY9PT1lP25ldyBsOm5ldyBQREYxNztyZXR1cm4gZi5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/Zi5nZXRVc2VyS2V5KHQsYyx1KTp0Lmxlbmd0aCYmZi5jaGVja093bmVyUGFzc3dvcmQodCxyLGksYSk/Zi5nZXRPd25lcktleSh0LG4saSxoKTpudWxsfShwLHksZCxlLHQsbixmLGkscyxvLGMpfWlmKCF3JiYhbyl0aHJvdyBuZXcgci5QYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHIuUGFzc3dvcmRSZXNwb25zZXMuTkVFRF9QQVNTV09SRCk7aWYoIXcmJm8pe2NvbnN0IHQ9ZnVuY3Rpb24gZGVjb2RlVXNlclBhc3N3b3JkKHQsYSxyLG4pe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBvPTA7Y29uc3QgYz1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtvPGM7KytvKWlbb109dFtvXTtsZXQgbD0wO2Zvcig7bzwzMjspaVtvKytdPWVbbCsrXTtsZXQgaD1zKGksMCxvKTtjb25zdCB1PW4+PjM7aWYocj49Mylmb3IobD0wO2w8NTA7KytsKWg9cyhoLDAsaC5sZW5ndGgpO2xldCBkLGY7aWYocj49Myl7Zj1hO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGw9MTk7bD49MDtsLS0pe2ZvcihsZXQgdD0wO3Q8dTsrK3QpZVt0XT1oW3RdXmw7ZD1uZXcgQVJDRm91ckNpcGhlcihlKTtmPWQuZW5jcnlwdEJsb2NrKGYpfX1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIoaC5zdWJhcnJheSgwLHUpKTtmPWQuZW5jcnlwdEJsb2NrKGEpfXJldHVybiBmfSh5LGQscCx1KTt3PXByZXBhcmVLZXlEYXRhKGIsdCxkLGYsZyxwLHUsbSl9aWYoIXcpdGhyb3cgbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsci5QYXNzd29yZFJlc3BvbnNlcy5JTkNPUlJFQ1RfUEFTU1dPUkQpO3RoaXMuZW5jcnlwdGlvbktleT13O2lmKGg+PTQpe2NvbnN0IGU9YS5nZXQoIkNGIik7ZSBpbnN0YW5jZW9mIG4uRGljdCYmKGUuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPWU7dGhpcy5zdG1mPWEuZ2V0KCJTdG1GIil8fHQ7dGhpcy5zdHJmPWEuZ2V0KCJTdHJGIil8fHQ7dGhpcy5lZmY9YS5nZXQoIkVGRiIpfHx0aGlzLnN0bWZ9fWNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLHQpe2lmKDQ9PT10aGlzLmFsZ29yaXRobXx8NT09PXRoaXMuYWxnb3JpdGhtKXJldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGJ1aWxkQ2lwaGVyQ29uc3RydWN0b3IodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYnVpbGRDaXBoZXJDb25zdHJ1Y3Rvcih0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3QgYT1idWlsZE9iamVjdEtleShlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxyPWZ1bmN0aW9uIGJ1aWxkQ2lwaGVyQ2lwaGVyQ29uc3RydWN0b3IoKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKHIscil9fX0oKTt0LkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk9aH0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRlY3J5cHRTdHJlYW09dm9pZCAwO3ZhciByPWEoMTcpO2NsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyByLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rJiZ0aGlzLm5leHRDaHVuay5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7dGhpcy5idWZmZXJMZW5ndGg9cn19dC5EZWNyeXB0U3RyZWFtPURlY3J5cHRTdHJlYW19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5DYXRhbG9nPXZvaWQgMDt2YXIgcj1hKDQpLG49YSgyKSxpPWEoMykscz1hKDY4KSxvPWEoNSksYz1hKDY5KSxsPWEoMTIpLGg9YSg3MCksdT1hKDU3KSxkPWEoNzEpLGY9YSg3Mik7ZnVuY3Rpb24gZmV0Y2hEZXN0aW5hdGlvbihlKXtlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOm51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IHUuR2xvYmFsSW1hZ2VDYWNoZTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBpLlJlZlNldENhY2hlO3RoaXMubm9uQmxlbmRNb2Rlc1NldD1uZXcgaS5SZWZTZXR9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIGkuTmFtZSl7aWYoci5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChlLm5hbWUpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpOygwLG4ud2FybikoYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJsYW5nIiwic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6bnVsbCl9Z2V0IG5lZWRzUmVuZGVyaW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIGkuRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKSgiQ2Fubm90IGZldGNoIEFjcm9Gb3JtIGVudHJ5OyBhc3N1bWluZyBubyBmb3JtcyBhcmUgcHJlc2VudC4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgaS5SZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGE9ISh0aGlzLnhyZWYuZW5jcnlwdCYmdGhpcy54cmVmLmVuY3J5cHQuZW5jcnlwdE1ldGFkYXRhKSxyPXRoaXMueHJlZi5mZXRjaChlLGEpO2lmKHIgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0mJnIuZGljdCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgZT1yLmRpY3QuZ2V0KCJUeXBlIiksYT1yLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoKDAsaS5pc05hbWUpKGUsIk1ldGFkYXRhIikmJigwLGkuaXNOYW1lKShhLCJYTUwiKSl7Y29uc3QgZT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IGQuTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi5pbmZvKShgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywibWFya0luZm8iLGUpfV9yZWFkTWFya0luZm8oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHIuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9X3JlYWRTdHJ1Y3RUcmVlUm9vdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlN0cnVjdFRyZWVSb290Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBmLlN0cnVjdFRyZWVSb290KGUpO3QuaW5pdCgpO3JldHVybiB0fWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWREb2N1bWVudE91dGxpbmUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2U9ZS5nZXRSYXcoIkZpcnN0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxhPVt7b2JqOmUscGFyZW50OnR9XSxyPW5ldyBpLlJlZlNldDtyLnB1dChlKTtjb25zdCBzPXRoaXMueHJlZixvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxjPXMuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PWMpY29udGludWU7aWYoIWMuaGFzKCJUaXRsZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBoPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6YyxyZXN1bHRPYmo6aCxkb2NCYXNlVXJsOnRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCB1PWMuZ2V0KCJUaXRsZSIpLGQ9Yy5nZXQoIkYiKXx8MCxmPWMuZ2V0QXJyYXkoIkMiKSxnPWMuZ2V0KCJDb3VudCIpO2xldCBwPW87IUFycmF5LmlzQXJyYXkoZil8fDMhPT1mLmxlbmd0aHx8MD09PWZbMF0mJjA9PT1mWzFdJiYwPT09ZlsyXXx8KHA9bC5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihmLDApKTtjb25zdCBtPXthY3Rpb246aC5hY3Rpb24sYXR0YWNobWVudDpoLmF0dGFjaG1lbnQsZGVzdDpoLmRlc3QsdXJsOmgudXJsLHVuc2FmZVVybDpoLnVuc2FmZVVybCxuZXdXaW5kb3c6aC5uZXdXaW5kb3csc2V0T0NHU3RhdGU6aC5zZXRPQ0dTdGF0ZSx0aXRsZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh1KSxjb2xvcjpwLGNvdW50Ok51bWJlci5pc0ludGVnZXIoZyk/Zzp2b2lkIDAsYm9sZDohISgyJmQpLGl0YWxpYzohISgxJmQpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKG0pO2U9Yy5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50Om19KTtyLnB1dChlKX1lPWMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIGkuUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OnQucGFyZW50fSk7ci5wdXQoZSl9fXJldHVybiB0Lml0ZW1zLmxlbmd0aD4wP3QuaXRlbXM6bnVsbH1nZXQgcGVybWlzc2lvbnMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQZXJtaXNzaW9ucygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2xldCB0PWUuZ2V0KCJQIik7aWYoIm51bWJlciIhPXR5cGVvZiB0KXJldHVybiBudWxsO3QrPTIqKjMyO2NvbnN0IGE9W107Zm9yKGNvbnN0IGUgaW4gbi5QZXJtaXNzaW9uRmxhZyl7Y29uc3Qgcj1uLlBlcm1pc3Npb25GbGFnW2VdO3QmciYmYS5wdXNoKHIpfXJldHVybiBhfWdldCBvcHRpb25hbENvbnRlbnRDb25maWcoKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJEIik7aWYoIWEpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHM9W10sbz1bXTtmb3IoY29uc3QgZSBvZiByKXtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpY29udGludWU7by5wdXNoKGUpO2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cy5wdXNoKHtpZDplLnRvU3RyaW5nKCksbmFtZToic3RyaW5nIj09dHlwZW9mIHQuZ2V0KCJOYW1lIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIk5hbWUiKSk6bnVsbCxpbnRlbnQ6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiSW50ZW50Iik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIkludGVudCIpKTpudWxsfSl9ZT10aGlzLl9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGEsbyk7ZS5ncm91cHM9c31jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygci5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4ud2FybikoYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9X3JlYWRPcHRpb25hbENvbnRlbnRDb25maWcoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBpLlJlZiYmdC5pbmNsdWRlcyhyKSYmYS5wdXNoKHIudG9TdHJpbmcoKSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VPcmRlcihlLGE9MCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgcyBvZiBlKXtpZihzIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMocykpe3IucHV0KHMpO24ucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGEpO2UmJm4ucHVzaChlKX1pZihhPjApcmV0dXJuIG47Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KXIuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmbi5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiBufWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cyl7KDAsbi53YXJuKSgicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3QgaT1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBpKXJldHVybiBudWxsO2NvbnN0IG89cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBvJiZvLmxlbmd0aD97bmFtZTooMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpKSxvcmRlcjpvfTpudWxsfWNvbnN0IGE9dGhpcy54cmVmLHI9bmV3IGkuUmVmU2V0LHM9MTA7cmV0dXJue25hbWU6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiTmFtZSIpPygwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJOYW1lIikpOm51bGwsY3JlYXRvcjoic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJDcmVhdG9yIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkNyZWF0b3IiKSk6bnVsbCxiYXNlU3RhdGU6ZS5nZXQoIkJhc2VTdGF0ZSIpaW5zdGFuY2VvZiBpLk5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5fYWN0dWFsTnVtUGFnZXM6dGhpcy5fcGFnZXNDb3VudH1nZXQgZGVzdGluYXRpb25zKCl7Y29uc3QgZT10aGlzLl9yZWFkRGVzdHMoKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIHMuTmFtZVRyZWUpZm9yKGNvbnN0W2Escl1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdGluYXRpb24ocik7ZSYmKHRbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSldPWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGEpe2NvbnN0IHI9ZmV0Y2hEZXN0aW5hdGlvbihhKTtyJiYodFtlXT1yKX0pKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihyKXsoMCxuLndhcm4pKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gcn19ZWxzZSBpZih0IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPWZldGNoRGVzdGluYXRpb24odC5nZXQoZSkpO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGUmJmUuaGFzKCJEZXN0cyIpP25ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJEZXN0cyIpLHRoaXMueHJlZik6dGhpcy5fY2F0RGljdC5oYXMoIkRlc3RzIik/dGhpcy5fY2F0RGljdC5nZXQoIkRlc3RzIik6dm9pZCAwfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGFnZUxhYmVscygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiByLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsbi53YXJuKSgiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgYT1udWxsLG89IiI7Y29uc3QgYz1uZXcgcy5OdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKTtsZXQgbD0iIixoPTE7Zm9yKGxldCBlPTAscz10aGlzLm51bVBhZ2VzO2U8cztlKyspe2NvbnN0IHM9Yy5nZXQoZSk7aWYodm9pZCAwIT09cyl7aWYoIShzIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocy5oYXMoIlR5cGUiKSYmISgwLGkuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCB0eXBlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJTIikpe2NvbnN0IGU9cy5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2E9ZS5uYW1lfWVsc2UgYT1udWxsO2lmKHMuaGFzKCJQIikpe2NvbnN0IGU9cy5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgcHJlZml4IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO289KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSl9ZWxzZSBvPSIiO2lmKHMuaGFzKCJTdCIpKXtjb25zdCBlPXMuZ2V0KCJTdCIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aD1lfWVsc2UgaD0xfXN3aXRjaChhKXtjYXNlIkQiOmw9aDticmVhaztjYXNlIlIiOmNhc2UiciI6bD0oMCxyLnRvUm9tYW5OdW1lcmFscykoaCwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PTY1LGk9OTcscz0iYSI9PT1hP2k6dCxvPWgtMTtsPVN0cmluZy5mcm9tQ2hhckNvZGUocytvJWUpLnJlcGVhdChNYXRoLmZsb29yKG8vZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGBJbnZhbGlkIHN0eWxlICIke2F9IiBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS5gKTtsPSIifXRbZV09bytsO2grK31yZXR1cm4gdH1nZXQgcGFnZUxheW91dCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXdlclByZWZlcmVuY2VzIixudWxsKTtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUuZ2V0S2V5cygpKXtjb25zdCByPWUuZ2V0KGEpO2xldCBzO3N3aXRjaChhKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgciYmKHM9cik7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYociBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnM9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpzPXIubmFtZTticmVhaztkZWZhdWx0OnM9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihyIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cz1yLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KCgoZSx0LGEpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49YVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocz1yKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wJiYocz1yKTticmVhaztkZWZhdWx0OigwLG4ud2FybikoYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cyl7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFthXT1zfWVsc2UoMCxuLndhcm4pKGBCYWQgdmFsdWUsIGZvciBrZXkgIiR7YX0iLCBpbiBWaWV3ZXJQcmVmZXJlbmNlczogJHtyfS5gKX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBhPW5ldyBpLkRpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIEFycmF5LmlzQXJyYXkoZSkmJih0LmRlc3Q9ZSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm9wZW5BY3Rpb24iLCgwLG4ub2JqZWN0U2l6ZSkodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpe2NvbnN0IGE9bmV3IGguRmlsZVNwZWMocix0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBzLk5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7dHx8KHQ9bmV3IGkuRGljdCh0aGlzLnhyZWYpKTt0LnNldCgoMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKSxyKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtpZighKGEgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKGEuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IHI9YS5nZXQoIkpTIik7aWYociBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSlyPXIuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIHIpcmV0dXJuO251bGw9PT10JiYodD1uZXcgTWFwKTtyPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpLnJlcGxhY2UoL1x1MDAwMC9nLCIiKTt0LnNldChlLHIpfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpLGEpfWNvbnN0IGE9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTthJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixhKTtyZXR1cm4gdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxyLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxuLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBhPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgciBvZiBhKWlmKHIubG9hZGVkTmFtZT09PWUpe3IuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpeygwLGMuY2xlYXJHbG9iYWxDYWNoZXMpKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0sYT1uZXcgaS5SZWZTZXQscj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHIpO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IHI9dC5wb3AoKTtpZihyIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQocik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKGEuaGFzKHIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhyKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7by5oYXMocil8fG8ucHV0KHIsMSk7Yy5oYXMocil8fGMucHV0KHIsbCk7aWYobD09PWUpcmV0dXJuW3Uscl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PXI7bGV0IHU9ci5nZXRSYXcoIkNvdW50Iik7dSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpO2lmKE51bWJlci5pc0ludGVnZXIodSkmJnU+PTApe2gmJiFvLmhhcyhoKSYmby5wdXQoaCx1KTtpZihsK3U8PWUpe2wrPXU7Y29udGludWV9fWxldCBkPXIuZ2V0UmF3KCJLaWRzIik7ZCBpbnN0YW5jZW9mIGkuUmVmJiYoZD1hd2FpdCBzLmZldGNoQXN5bmMoZCkpO2lmKCFBcnJheS5pc0FycmF5KGQpKXtsZXQgdD1yLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKTtpZigoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYobD09PWUpcmV0dXJuW3IsbnVsbF07bCsrO2NvbnRpbnVlfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpfWZvcihsZXQgZT1kLmxlbmd0aC0xO2U+PTA7ZS0tKXQucHVzaChkW2VdKX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0IHQ9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgaS5SZWZTZXQscz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtzIGluc3RhbmNlb2YgaS5SZWYmJmEucHV0KHMpO2NvbnN0IG89bmV3IE1hcCxjPXRoaXMueHJlZixsPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGg9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFsLmhhcyh0KSYmbC5wdXQodCxoKTtvLnNldChoKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcih0KXtpZih0IGluc3RhbmNlb2Ygci5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHQ7by5zZXQoaCsrLFt0LG51bGxdKX1mb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBlPXQuYXQoLTEpLHtjdXJyZW50Tm9kZTpyLHBvc0luS2lkczpzfT1lO2xldCBvPXIuZ2V0UmF3KCJLaWRzIik7aWYobyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtvPWF3YWl0IGMuZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkobykpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocz49by5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3QgbD1vW3NdO2xldCBoO2lmKGwgaW5zdGFuY2VvZiBpLlJlZil7aWYoYS5oYXMobCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KGwpO3RyeXtoPWF3YWl0IGMuZmV0Y2hBc3luYyhsKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgaD1sO2lmKCEoaCBpbnN0YW5jZW9mIGkuRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgbi5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgdT1oLmdldFJhdygiVHlwZSIpO2lmKHUgaW5zdGFuY2VvZiBpLlJlZil0cnl7dT1hd2FpdCBjLmZldGNoQXN5bmModSl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfSgwLGkuaXNOYW1lKSh1LCJQYWdlIil8fCFoLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGgsbCBpbnN0YW5jZW9mIGkuUmVmP2w6bnVsbCk6dC5wdXNoKHtjdXJyZW50Tm9kZTpoLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gb31nZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodCk7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9MDtjb25zdCBuZXh0PXQ9PmZ1bmN0aW9uIHBhZ2VzQmVmb3JlUmVmKHQpe2xldCByLHM9MDtyZXR1cm4gYS5mZXRjaEFzeW5jKHQpLnRoZW4oKGZ1bmN0aW9uKGEpe2lmKCgwLGkuaXNSZWZzRXF1YWwpKHQsZSkmJiEoMCxpLmlzRGljdCkoYSwiUGFnZSIpJiYhKGEgaW5zdGFuY2VvZiBpLkRpY3QmJiFhLmhhcygiVHlwZSIpJiZhLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cj1hLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGEuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gZS5nZXRBc3luYygiS2lkcyIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgaS5SZWYpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZigoMCxpLmlzUmVmc0VxdWFsKShyLHQpKXtjPSEwO2JyZWFrfW8ucHVzaChhLmZldGNoQXN5bmMocikudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cys9ZS5nZXQoIkNvdW50Iik6cysrfSkpKX1pZighYyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcyxyXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2Esbl09dDtyKz1hO3JldHVybiBuZXh0KG4pfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT0oMCxuLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLG51bGwpfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9ZS5kZXN0RGljdDtpZighKHQgaW5zdGFuY2VvZiBpLkRpY3QpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBhPWUucmVzdWx0T2JqO2lmKCJvYmplY3QiIT10eXBlb2YgYSl7KDAsbi53YXJuKSgicGFyc2VEZXN0RGljdGlvbmFyeTogYHJlc3VsdE9iamAgbXVzdCBiZSBhbiBvYmplY3QuIik7cmV0dXJufWNvbnN0IHM9ZS5kb2NCYXNlVXJsfHxudWxsLGM9ZS5kb2NBdHRhY2htZW50c3x8bnVsbDtsZXQgbCxoLHU9dC5nZXQoIkEiKTtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKWlmKHQuaGFzKCJEZXN0IikpdT10LmdldCgiRGVzdCIpO2Vsc2V7dT10LmdldCgiQUEiKTt1IGluc3RhbmNlb2YgaS5EaWN0JiYodS5oYXMoIkQiKT91PXUuZ2V0KCJEIik6dS5oYXMoIlUiKSYmKHU9dS5nZXQoIlUiKSkpfWlmKHUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9dS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBpLk5hbWUpKXsoMCxuLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IHQ9ZS5uYW1lO3N3aXRjaCh0KXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT11LmdldCgiRmxhZ3MiKSxzPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZD1bXSxmPVtdO2Zvcihjb25zdCBlIG9mIHUuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIGkuUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZC5wdXNoKCgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKTthLnJlc2V0Rm9ybT17ZmllbGRzOmQscmVmczpmLGluY2x1ZGU6c307YnJlYWs7Y2FzZSJVUkkiOmw9dS5nZXQoIlVSSSIpO2wgaW5zdGFuY2VvZiBpLk5hbWUmJihsPSIvIitsLm5hbWUpO2JyZWFrO2Nhc2UiR29UbyI6aD11LmdldCgiRCIpO2JyZWFrO2Nhc2UiTGF1bmNoIjpjYXNlIkdvVG9SIjpjb25zdCBnPXUuZ2V0KCJGIik7ZyBpbnN0YW5jZW9mIGkuRGljdD9sPWcuZ2V0KCJGIil8fG51bGw6InN0cmluZyI9PXR5cGVvZiBnJiYobD1nKTtsZXQgcD11LmdldCgiRCIpO2lmKHApe3AgaW5zdGFuY2VvZiBpLk5hbWUmJihwPXAubmFtZSk7aWYoInN0cmluZyI9PXR5cGVvZiBsKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX19Y29uc3QgbT11LmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgbSYmKGEubmV3V2luZG93PW0pO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IGI9dS5nZXQoIlQiKTtsZXQgeTtpZihjJiZiIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPWIuZ2V0KCJSIiksdD1iLmdldCgiTiIpOygwLGkuaXNOYW1lKShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHk9Y1soMCxuLnN0cmluZ1RvUERGU3RyaW5nKSh0KV0pfXk/YS5hdHRhY2htZW50PXk6KDAsbi53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3Qgdz11LmdldCgiTiIpO3cgaW5zdGFuY2VvZiBpLk5hbWUmJihhLmFjdGlvbj13Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IFM9dS5nZXQoIlN0YXRlIikseD11LmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KFMpfHwwPT09Uy5sZW5ndGgpYnJlYWs7Y29uc3Qgaz1bXTtmb3IoY29uc3QgZSBvZiBTKWlmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjprLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLlJlZiYmay5wdXNoKGUudG9TdHJpbmcoKSk7aWYoay5sZW5ndGghPT1TLmxlbmd0aClicmVhazthLnNldE9DR1N0YXRlPXtzdGF0ZTprLHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgeHx8eH07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBDPXUuZ2V0KCJKUyIpO2xldCB2O0MgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0/dj1DLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgQyYmKHY9Qyk7Y29uc3QgRj12JiYoMCxyLnJlY292ZXJKc1VSTCkoKDAsbi5zdHJpbmdUb1BERlN0cmluZykodikpO2lmKEYpe2w9Ri51cmw7YS5uZXdXaW5kb3c9Ri5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT10fHwiU3VibWl0Rm9ybSI9PT10KWJyZWFrOygwLG4ud2FybikoYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke3R9Ii5gKX19ZWxzZSB0LmhhcygiRGVzdCIpJiYoaD10LmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IGU9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShsLHMse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYoYS51cmw9ZS5ocmVmKTthLnVuc2FmZVVybD1sfWlmKGgpe2ggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSk7InN0cmluZyI9PXR5cGVvZiBoP2EuZGVzdD0oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoYS5kZXN0PWgpfX19dC5DYXRhbG9nPUNhdGFsb2d9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwO3ZhciByPWEoMyksbj1hKDIpO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuY29uc3RydWN0b3I9PT1OYW1lT3JOdW1iZXJUcmVlJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgTmFtZU9yTnVtYmVyVHJlZS4iKTt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWF9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsYT1uZXcgci5SZWZTZXQ7YS5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IHM9dC5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShzIGluc3RhbmNlb2Ygci5EaWN0KSljb250aW51ZTtpZihzLmhhcygiS2lkcyIpKXtjb25zdCBlPXMuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoYS5oYXModCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtpLnB1c2godCk7YS5wdXQodCl9Y29udGludWV9Y29uc3Qgbz1zLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpZS5zZXQodC5mZXRjaElmUmVmKG9bYV0pLHQuZmV0Y2hJZlJlZihvW2ErMV0pKX1yZXR1cm4gZX1nZXQoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgYT10LmZldGNoSWZSZWYodGhpcy5yb290KSxyPTA7Zm9yKDthLmhhcygiS2lkcyIpOyl7aWYoKytyPjEwKXsoMCxuLndhcm4pKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IHI9cytvPj4xLG49dC5mZXRjaElmUmVmKGlbcl0pLGM9bi5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89ci0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe2E9bjticmVha31zPXIrMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9YS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IGE9MCxyPWkubGVuZ3RoLTI7Zm9yKDthPD1yOyl7Y29uc3Qgbj1hK3I+PjEscz1uKygxJm4pLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8bylyPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7YT1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fTt0Lk51bWJlclRyZWU9Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuY2xlYXJHbG9iYWxDYWNoZXM9ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXsoMCxyLmNsZWFyUHJpbWl0aXZlQ2FjaGVzKSgpOygwLG4uY2xlYXJVbmljb2RlQ2FjaGVzKSgpfTt2YXIgcj1hKDMpLG49YSgzOCl9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5GaWxlU3BlYz12b2lkIDA7dmFyIHI9YSgyKSxuPWEoNSksaT1hKDMpO2Z1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGx9dC5GaWxlU3BlYz1jbGFzcyBGaWxlU3BlY3tjb25zdHJ1Y3RvcihlLHQpe2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7dGhpcy5kZXNjcmlwdGlvbj1lLmhhcygiRGVzYyIpPygwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJEZXNjIikpOiIiO2UuaGFzKCJSRiIpJiYoMCxyLndhcm4pKCJSZWxhdGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITA7aWYoIWUuaGFzKCJFRiIpKXt0aGlzLmNvbnRlbnRBdmFpbGFibGU9ITE7KDAsci53YXJuKSgiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKX19fWdldCBmaWxlbmFtZSgpe2lmKCF0aGlzLl9maWxlbmFtZSYmdGhpcy5yb290KXtjb25zdCBlPXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KXx8InVubmFtZWQiO3RoaXMuX2ZpbGVuYW1lPSgwLHIuc3RyaW5nVG9QREZTdHJpbmcpKGUpLnJlcGxhY2UoL1xcXFwvZywiXFwiKS5yZXBsYWNlKC9cXFwvL2csIi8iKS5yZXBsYWNlKC9cXC9nLCIvIil9cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50KCl7aWYoIXRoaXMuY29udGVudEF2YWlsYWJsZSlyZXR1cm4gbnVsbDshdGhpcy5jb250ZW50UmVmJiZ0aGlzLnJvb3QmJih0aGlzLmNvbnRlbnRSZWY9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QuZ2V0KCJFRiIpKSk7bGV0IGU9bnVsbDtpZih0aGlzLmNvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5jb250ZW50UmVmKTt0IGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOigwLHIud2FybikoIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2UoMCxyLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue2ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsY29udGVudDp0aGlzLmNvbnRlbnR9fX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXRhZGF0YVBhcnNlcj12b2lkIDA7dmFyIHI9YSg2NCk7dC5NZXRhZGF0YVBhcnNlcj1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyByLlNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2UoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsYSxyKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqYSsxKnIpfSkpLnJlcGxhY2UoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxyPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmEuY2hhckNvZGVBdChlKSthLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOnIucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiI+IityLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGE9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGEubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDA7dmFyIHI9YSgzKSxuPWEoMiksaT1hKDY4KTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWU7dGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiByLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygci5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiByLk5hbWU/ZS5uYW1lOiIiLHtyb290OmF9PXRoaXMudHJlZTtyZXR1cm4gYS5yb2xlTWFwLmhhcyh0KT9hLnJvbGVNYXAuZ2V0KHQpOnR9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIHIuUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGE9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT10aGlzLnBhcnNlS2lkKGUsdCk7YSYmdGhpcy5raWRzLnB1c2goYSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxhKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cyxtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgYT1udWxsO3QgaW5zdGFuY2VvZiByLlJlZj9hPXRoaXMuZGljdC54cmVmLmZldGNoKHQpOnQgaW5zdGFuY2VvZiByLkRpY3QmJihhPXQpO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG49YS5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIHIuUmVmJiYoZT1uLnRvU3RyaW5nKCkpO2NvbnN0IGk9YS5nZXQoIlR5cGUiKWluc3RhbmNlb2Ygci5OYW1lP2EuZ2V0KCJUeXBlIikubmFtZTpudWxsO3JldHVybiJNQ1IiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6byxyZWZPYmpJZDphLmdldFJhdygiU3RtIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJTdG0iKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDphLmdldCgiTUNJRCIpfSk6Ik9CSlIiPT09aT90aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6YyxyZWZPYmpJZDphLmdldFJhdygiT2JqIilpbnN0YW5jZW9mIHIuUmVmP2EuZ2V0UmF3KCJPYmoiKS50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KTpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpsLGRpY3Q6YX0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDpuPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9bjt0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3QgYT1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuO2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBhKWUgaW5zdGFuY2VvZiByLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxuKX1hZGROb2RlKGUsdCxhPTApe2lmKGE+NDApeygwLG4ud2FybikoIlN0cnVjdFRyZWUgTUFYX0RFUFRIIHJlYWNoZWQuIik7cmV0dXJuIG51bGx9aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IFN0cnVjdEVsZW1lbnROb2RlKHRoaXMsZSk7dC5zZXQoZSxpKTtjb25zdCBzPWUuZ2V0KCJQIik7aWYoIXN8fCgwLHIuaXNOYW1lKShzLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLGkpfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1jb25zdCBvPXRoaXMuYWRkTm9kZShzLHQsYSsxKTtpZighbylyZXR1cm4gaTtsZXQgYz0hMTtmb3IoY29uc3QgdCBvZiBvLmtpZHMpaWYodC50eXBlPT09bCYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWk7Yz0hMH1jfHx0LmRlbGV0ZShlKTtyZXR1cm4gaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBhPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWEpcmV0dXJuITE7aWYoYSBpbnN0YW5jZW9mIHIuRGljdCl7aWYoYS5vYmpJZCE9PWUub2JqSWQpcmV0dXJuITE7dGhpcy5ub2Rlc1swXT10O3JldHVybiEwfWlmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiEwO2xldCBuPSExO2ZvcihsZXQgcj0wO3I8YS5sZW5ndGg7cisrKXtjb25zdCBpPWFbcl07aWYoaSYmaS50b1N0cmluZygpPT09ZS5vYmpJZCl7dGhpcy5ub2Rlc1tyXT10O249ITB9fXJldHVybiBufWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LGE9MCl7aWYoYT40MCl7KDAsbi53YXJuKSgiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yb2xlPWUucm9sZTtyLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChyKTtjb25zdCBpPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGkpKTtjb25zdCBoPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGgmJihyLmxhbmc9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaCkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1sP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUscixhKzEpOnQudHlwZT09PXN8fHQudHlwZT09PW8/ci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcGFnZSR7dC5wYWdlT2JqSWR9X21jaWQke3QubWNpZH1gfSk6dC50eXBlPT09YyYmci5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5PYmplY3RMb2FkZXI9dm9pZCAwO3ZhciByPWEoMyksbj1hKDUpLGk9YSg0KSxzPWEoMik7ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2Ygci5EaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBuLkJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGkgb2YgZSkoKGE9aSlpbnN0YW5jZW9mIHIuUmVmfHxhIGluc3RhbmNlb2Ygci5EaWN0fHxhIGluc3RhbmNlb2Ygbi5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGEpKSYmdC5wdXNoKGkpO3ZhciBhfXQuT2JqZWN0TG9hZGVyPWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWE7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IHIuUmVmU2V0O2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhyKTt2b2lkIDAhPT1lJiZhLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoYSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgbz1lLnBvcCgpO2lmKG8gaW5zdGFuY2VvZiByLlJlZil7aWYodGhpcy5yZWZTZXQuaGFzKG8pKWNvbnRpbnVlO3RyeXt0aGlzLnJlZlNldC5wdXQobyk7bz10aGlzLnhyZWYuZmV0Y2gobyl9Y2F0Y2goZSl7aWYoIShlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpeygwLHMud2FybikoYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKG8pO2EucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYobyBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3QgZT1vLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7YS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChvKX19YWRkQ2hpbGRyZW4obyxlKX1pZihhLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoYSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2Ygci5SZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTtyZXR1cm4gdGhpcy5fd2Fsayh0KX10aGlzLnJlZlNldD1udWxsfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5YRkFGYWN0b3J5PXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNzkpLGk9YSg4NSkscz1hKDgzKSxvPWEoNzYpLGM9YSgyKSxsPWEoODYpLGg9YSg5Nik7Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgbC5YRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBuLkJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBpLkRhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW3IuJHRvUGFnZXNdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmF9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGEpXX0pKX1jYXRjaChlKXsoMCxjLndhcm4pKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXI9bmV3IHMuRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcyl7ZT0oMCxvLnN0cmlwUXVvdGVzKShlKTt0aGlzLmZvcm1bci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IGwuWEZBUGFyc2VyKGguWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbci4kbm9kZU5hbWVdKSl7Y29uc3QgZT1oLlhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO3Q9ZX1jb25zdCBhPXRbci4kdG9IVE1MXSgpO2lmKCFhLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDpufT1hLHthdHRyaWJ1dGVzOml9PW47aWYoaSl7aS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpuLHN0cjp0W3IuJHRleHRdKCl9fWNhdGNoKGUpeygwLGMud2FybikoYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX10LlhGQUZhY3Rvcnk9WEZBRmFjdG9yeX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhtbE9iamVjdD10LlhGQU9iamVjdEFycmF5PXQuWEZBT2JqZWN0PXQuWEZBQXR0cmlidXRlPXQuU3RyaW5nT2JqZWN0PXQuT3B0aW9uT2JqZWN0PXQuT3B0aW9uMTA9dC5PcHRpb24wMT10LkludGVnZXJPYmplY3Q9dC5Db250ZW50T2JqZWN0PXQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kaXNVc2FibGU9dC4kaXNUcmFuc3BhcmVudD10LiRpc1RoZXJlTW9yZVdpZHRoPXQuJGlzU3BsaXR0YWJsZT10LiRpc05zQWdub3N0aWM9dC4kaXNEZXNjZW5kZW50PXQuJGlzRGF0YVZhbHVlPXQuJGlzQ0RBVEFYbWw9dC4kaXNCaW5kYWJsZT10LiRpbnNlcnRBdD10LiRpbmRleE9mPXQuJGlkcz10LiRoYXNTZXR0YWJsZVZhbHVlPXQuJGdsb2JhbERhdGE9dC4kZ2V0VGVtcGxhdGVSb290PXQuJGdldFN1YmZvcm1QYXJlbnQ9dC4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0UGFyZW50PXQuJGdldE5leHRQYWdlPXQuJGdldEV4dHJhPXQuJGdldERhdGFWYWx1ZT10LiRnZXRDb250YWluZWRDaGlsZHJlbj10LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PXQuJGdldENoaWxkcmVuQnlOYW1lPXQuJGdldENoaWxkcmVuQnlDbGFzcz10LiRnZXRDaGlsZHJlbj10LiRnZXRBdmFpbGFibGVTcGFjZT10LiRnZXRBdHRyaWJ1dGVzPXQuJGdldEF0dHJpYnV0ZUl0PXQuJGZsdXNoSFRNTD10LiRmaW5hbGl6ZT10LiRleHRyYT10LiRkdW1wPXQuJGRhdGE9dC4kY29udGVudD10LiRjb25zdW1lZD10LiRjbG9uZT10LiRjbGVhbnVwPXQuJGNsZWFuUGFnZT10LiRjbGVhbj10LiRjaGlsZHJlblRvSFRNTD10LiRhcHBlbmRDaGlsZD10LiRhZGRIVE1MPXQuJGFjY2VwdFdoaXRlc3BhY2U9dm9pZCAwO3ZhciByPWEoNzYpLG49YSgyKSxpPWEoNCkscz1hKDc3KSxvPWEoNzgpO2NvbnN0IGM9U3ltYm9sKCk7dC4kYWNjZXB0V2hpdGVzcGFjZT1jO2NvbnN0IGw9U3ltYm9sKCk7dC4kYWRkSFRNTD1sO2NvbnN0IGg9U3ltYm9sKCk7dC4kYXBwZW5kQ2hpbGQ9aDtjb25zdCB1PVN5bWJvbCgpO3QuJGNoaWxkcmVuVG9IVE1MPXU7Y29uc3QgZD1TeW1ib2woKTt0LiRjbGVhbj1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kY2xlYW5QYWdlPWY7Y29uc3QgZz1TeW1ib2woKTt0LiRjbGVhbnVwPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRjbG9uZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kY29uc3VtZWQ9bTtjb25zdCBiPVN5bWJvbCgiY29udGVudCIpO3QuJGNvbnRlbnQ9Yjtjb25zdCB5PVN5bWJvbCgiZGF0YSIpO3QuJGRhdGE9eTtjb25zdCB3PVN5bWJvbCgpO3QuJGR1bXA9dztjb25zdCBTPVN5bWJvbCgiZXh0cmEiKTt0LiRleHRyYT1TO2NvbnN0IHg9U3ltYm9sKCk7dC4kZmluYWxpemU9eDtjb25zdCBrPVN5bWJvbCgpO3QuJGZsdXNoSFRNTD1rO2NvbnN0IEM9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlSXQ9Qztjb25zdCB2PVN5bWJvbCgpO3QuJGdldEF0dHJpYnV0ZXM9djtjb25zdCBGPVN5bWJvbCgpO3QuJGdldEF2YWlsYWJsZVNwYWNlPUY7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5Q2xhc3M9Tztjb25zdCBUPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lPVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbkJ5TmFtZUl0PU07Y29uc3QgRT1TeW1ib2woKTt0LiRnZXREYXRhVmFsdWU9RTtjb25zdCBEPVN5bWJvbCgpO3QuJGdldEV4dHJhPUQ7Y29uc3QgTj1TeW1ib2woKTt0LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD1OO2NvbnN0IFI9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW49Ujtjb25zdCBMPVN5bWJvbCgpO3QuJGdldENvbnRhaW5lZENoaWxkcmVuPUw7Y29uc3Qgaj1TeW1ib2woKTt0LiRnZXROZXh0UGFnZT1qO2NvbnN0ICQ9U3ltYm9sKCk7dC4kZ2V0U3ViZm9ybVBhcmVudD0kO2NvbnN0IF89U3ltYm9sKCk7dC4kZ2V0UGFyZW50PV87Y29uc3QgVT1TeW1ib2woKTt0LiRnZXRUZW1wbGF0ZVJvb3Q9VTtjb25zdCBYPVN5bWJvbCgpO3QuJGdsb2JhbERhdGE9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGhhc1NldHRhYmxlVmFsdWU9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlkcz1xO2NvbnN0IFc9U3ltYm9sKCk7dC4kaW5kZXhPZj1XO2NvbnN0IHo9U3ltYm9sKCk7dC4kaW5zZXJ0QXQ9ejtjb25zdCBHPVN5bWJvbCgpO3QuJGlzQ0RBVEFYbWw9Rztjb25zdCBWPVN5bWJvbCgpO3QuJGlzQmluZGFibGU9Vjtjb25zdCBLPVN5bWJvbCgpO3QuJGlzRGF0YVZhbHVlPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRpc0Rlc2NlbmRlbnQ9WTtjb25zdCBKPVN5bWJvbCgpO3QuJGlzTnNBZ25vc3RpYz1KO2NvbnN0IFo9U3ltYm9sKCk7dC4kaXNTcGxpdHRhYmxlPVo7Y29uc3QgUT1TeW1ib2woKTt0LiRpc1RoZXJlTW9yZVdpZHRoPVE7Y29uc3QgZWU9U3ltYm9sKCk7dC4kaXNUcmFuc3BhcmVudD1lZTtjb25zdCB0ZT1TeW1ib2woKTt0LiRpc1VzYWJsZT10ZTtjb25zdCBhZT1TeW1ib2woKSxyZT1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJub2RlTmFtZSIpO3QuJG5vZGVOYW1lPW5lO2NvbnN0IGllPVN5bWJvbCgpO3QuJG5zQXR0cmlidXRlcz1pZTtjb25zdCBzZT1TeW1ib2woKTt0LiRvbkNoaWxkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJG9uQ2hpbGRDaGVjaz1vZTtjb25zdCBjZT1TeW1ib2woKTt0LiRvblRleHQ9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1sZTtjb25zdCBoZT1TeW1ib2woKTt0LiRwb3BQYXJhPWhlO2NvbnN0IHVlPVN5bWJvbCgpO3QuJHB1c2hQYXJhPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHJlbW92ZUNoaWxkPWRlO2NvbnN0IGZlPVN5bWJvbCgicm9vdCIpO3QuJHJvb3Q9ZmU7Y29uc3QgZ2U9U3ltYm9sKCk7dC4kcmVzb2x2ZVByb3RvdHlwZXM9Z2U7Y29uc3QgcGU9U3ltYm9sKCk7dC4kc2VhcmNoTm9kZT1wZTtjb25zdCBtZT1TeW1ib2woKTt0LiRzZXRJZD1tZTtjb25zdCBiZT1TeW1ib2woKTt0LiRzZXRTZXRBdHRyaWJ1dGVzPWJlO2NvbnN0IHllPVN5bWJvbCgpO3QuJHNldFZhbHVlPXllO2NvbnN0IHdlPVN5bWJvbCgpO3QuJHRhYkluZGV4PXdlO2NvbnN0IFNlPVN5bWJvbCgpO3QuJHRleHQ9U2U7Y29uc3QgeGU9U3ltYm9sKCk7dC4kdG9QYWdlcz14ZTtjb25zdCBBZT1TeW1ib2woKTt0LiR0b0hUTUw9QWU7Y29uc3Qga2U9U3ltYm9sKCk7dC4kdG9TdHJpbmc9a2U7Y29uc3QgQ2U9U3ltYm9sKCk7dC4kdG9TdHlsZT1DZTtjb25zdCB2ZT1TeW1ib2woInVpZCIpO3QuJHVpZD12ZTtjb25zdCBGZT1TeW1ib2woKSxPZT1TeW1ib2woKSxUZT1TeW1ib2woKSxJZT1TeW1ib2woIl9jaGlsZHJlbiIpLFBlPVN5bWJvbCgpLE1lPVN5bWJvbCgpLEVlPVN5bWJvbCgpLERlPVN5bWJvbCgpLE5lPVN5bWJvbCgpLEJlPVN5bWJvbCgpLFJlPVN5bWJvbCgpLExlPVN5bWJvbCgpLGplPVN5bWJvbCgpLCRlPVN5bWJvbCgicGFyZW50IiksX2U9U3ltYm9sKCksVWU9U3ltYm9sKCksWGU9U3ltYm9sKCk7bGV0IEhlPTA7Y29uc3QgcWU9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPSExKXt0aGlzW3JlXT1lO3RoaXNbbmVdPXQ7dGhpc1tSZV09YTt0aGlzWyRlXT1udWxsO3RoaXNbSWVdPVtdO3RoaXNbdmVdPWAke3R9JHtIZSsrfWA7dGhpc1tYXT1udWxsfVtzZV0oZSl7aWYoIXRoaXNbUmVdfHwhdGhpc1tvZV0oZSkpcmV0dXJuITE7Y29uc3QgdD1lW25lXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tkZV0oYSk7dGhpc1t0XT1lO3RoaXNbaF0oZSk7cmV0dXJuITB9aWYoYS5wdXNoKGUpKXt0aGlzW2hdKGUpO3JldHVybiEwfWxldCByPSIiO3RoaXMuaWQ/cj1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKHI9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTsoMCxuLndhcm4pKGBYRkEgLSBub2RlICIke3RoaXNbbmVdfSIke3J9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W29lXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW25lXSkmJmVbcmVdPT09dGhpc1tyZV19W0pdKCl7cmV0dXJuITF9W2NdKCl7cmV0dXJuITF9W0ddKCl7cmV0dXJuITF9W1ZdKCl7cmV0dXJuITF9W2hlXSgpe3RoaXMucGFyYSYmdGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wb3AoKX1bdWVdKCl7dGhpc1tVXSgpW1NdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W21lXShlKXt0aGlzLmlkJiZ0aGlzW3JlXT09PXMuTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtVXSgpe3JldHVybiB0aGlzW1hdLnRlbXBsYXRlfVtaXSgpe3JldHVybiExfVtRXSgpe3JldHVybiExfVtoXShlKXtlWyRlXT10aGlzO3RoaXNbSWVdLnB1c2goZSk7IWVbWF0mJnRoaXNbWF0mJihlW1hdPXRoaXNbWF0pfVtkZV0oZSl7Y29uc3QgdD10aGlzW0llXS5pbmRleE9mKGUpO3RoaXNbSWVdLnNwbGljZSh0LDEpfVtIXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVt5ZV0oZSl7fVtjZV0oZSl7fVt4XSgpe31bZF0oZSl7ZGVsZXRlIHRoaXNbUmVdO2lmKHRoaXNbZ10pe2UuY2xlYW4odGhpc1tnXSk7ZGVsZXRlIHRoaXNbZ119fVtXXShlKXtyZXR1cm4gdGhpc1tJZV0uaW5kZXhPZihlKX1bel0oZSx0KXt0WyRlXT10aGlzO3RoaXNbSWVdLnNwbGljZShlLDAsdCk7IXRbWF0mJnRoaXNbWF0mJih0W1hdPXRoaXNbWF0pfVtlZV0oKXtyZXR1cm4hdGhpcy5uYW1lfVthZV0oKXtyZXR1cm4iIn1bU2VdKCl7cmV0dXJuIDA9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tiXTp0aGlzW0llXS5tYXAoKGU9PmVbU2VdKCkpKS5qb2luKCIiKX1nZXRbVGVdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsVGUsZS5fYXR0cmlidXRlcyl9W1ldKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W19dKCl9cmV0dXJuITF9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVskXSgpe3JldHVybiB0aGlzW19dKCl9W1JdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW0llXX1bd10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tiXSYmKGUuJGNvbnRlbnQ9dGhpc1tiXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtudWxsIT09YSYmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1hW3ddKCk6YSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2EuaXNFbXB0eSgpfHwoZVt0XT1hLmR1bXAoKSk6ZVt0XT1hKX1yZXR1cm4gZX1bQ2VdKCl7cmV0dXJuIG51bGx9W0FlXSgpe3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9KltMXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUl0oKSl5aWVsZCBlfSpbRGVdKGUsdCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tMXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtuZV0pKXtjb25zdCBlPXRoaXNbRl0oKSx0PWFbQWVdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbU10uZmFpbGluZ05vZGU9YSk7eWllbGQgdH19W2tdKCl7cmV0dXJuIG51bGx9W2xdKGUsdCl7dGhpc1tTXS5jaGlsZHJlbi5wdXNoKGUpfVtGXSgpe31bdV0oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tTXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tGXSgpLHQ9dGhpc1tTXS5mYWlsaW5nTm9kZVtBZV0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbF0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbU10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW1NdLmdlbmVyYXRvcj10aGlzW0RlXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW1NdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1tsXSh0Lmh0bWwsdC5iYm94KX10aGlzW1NdLmdlbmVyYXRvcj1udWxsO3JldHVybiByLkhUTUxSZXN1bHQuRU1QVFl9W2JlXShlKXt0aGlzW1VlXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bQmVdKGUpe2NvbnN0IHQ9dGhpc1tUZV0sYT10aGlzW1VlXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWEuaGFzKGUpKSl9W2dlXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pYVtfZV0oZSx0KX1bX2VdKGUsdCl7Y29uc3QgYT10aGlzW05lXShlLHQpO2E/dGhpc1tGZV0oYSxlLHQpOnRoaXNbZ2VdKGUsdCl9W05lXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxzPW51bGwsYz1udWxsLGw9YTtpZihyKXtsPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/cz1yLnNsaWNlKCIjc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9zPXIuc2xpY2UoIi4jc29tKCIubGVuZ3RoLHIubGVuZ3RoLTEpOnIuc3RhcnRzV2l0aCgiIyIpP2M9ci5zbGljZSgxKTpyLnN0YXJ0c1dpdGgoIi4jIikmJihjPXIuc2xpY2UoMikpfWVsc2UgYS5zdGFydHNXaXRoKCIjIik/Yz1hLnNsaWNlKDEpOnM9YTt0aGlzLnVzZT10aGlzLnVzZWhyZWY9IiI7aWYoYylpPWUuZ2V0KGMpO2Vsc2V7aT0oMCxvLnNlYXJjaE5vZGUpKGUuZ2V0KGZlKSx0aGlzLHMsITAsITEpO2kmJihpPWlbMF0pfWlmKCFpKXsoMCxuLndhcm4pKGBYRkEgLSBJbnZhbGlkIHByb3RvdHlwZSByZWZlcmVuY2U6ICR7bH0uYCk7cmV0dXJuIG51bGx9aWYoaVtuZV0hPT10aGlzW25lXSl7KDAsbi53YXJuKShgWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogJHtpW25lXX0gIT09ICR7dGhpc1tuZV19LmApO3JldHVybiBudWxsfWlmKHQuaGFzKGkpKXsoMCxuLndhcm4pKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm4gbnVsbH10LmFkZChpKTtjb25zdCBoPWlbTmVdKGUsdCk7aCYmaVtGZV0oaCxlLHQpO2lbZ2VdKGUsdCk7dC5kZWxldGUoaSk7cmV0dXJuIGl9W0ZlXShlLHQsYSl7aWYoYS5oYXMoZSkpeygwLG4ud2FybikoIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybn0hdGhpc1tiXSYmZVtiXSYmKHRoaXNbYl09ZVtiXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tCZV0oZVtVZV0pKXt0aGlzW3RdPWVbdF07dGhpc1tVZV0mJnRoaXNbVWVdLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tUZV0uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IG49dGhpc1tyXSxpPWVbcl07aWYobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiBuW0llXSllW19lXSh0LGEpO2ZvcihsZXQgcj1uW0llXS5sZW5ndGgscz1pW0llXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW0llXVtyXVtwXSgpO2lmKCFuLnB1c2goaSkpYnJlYWs7aVskZV09dGhpczt0aGlzW0llXS5wdXNoKGkpO2lbX2VdKHQsYSl9fWVsc2UgaWYobnVsbD09PW4pe2lmKG51bGwhPT1pKXtjb25zdCBlPWlbcF0oKTtlWyRlXT10aGlzO3RoaXNbcl09ZTt0aGlzW0llXS5wdXNoKGUpO2VbX2VdKHQsYSl9fWVsc2V7bltnZV0odCxhKTtpJiZuW0ZlXShpLHQsYSl9fX1zdGF0aWNbUGVdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5YRkFPYmplY3RbUGVdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3BdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoKGEpeygwLG4uc2hhZG93KShlLHQsdGhpc1t0XSl9ZVt2ZV09YCR7ZVtuZV19JHtIZSsrfWA7ZVtJZV09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbVGVdLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbUGVdKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1t0XTtlW3RdPWEgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoYVtMZV0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tJZV0pe2NvbnN0IGE9dFtuZV0scj10W3BdKCk7ZVtJZV0ucHVzaChyKTtyWyRlXT1lO251bGw9PT1lW2FdP2VbYV09cjplW2FdW0llXS5wdXNoKHIpfXJldHVybiBlfVtSXShlPW51bGwpe3JldHVybiBlP3RoaXNbSWVdLmZpbHRlcigodD0+dFtuZV09PT1lKSk6dGhpc1tJZV19W09dKGUpe3JldHVybiB0aGlzW2VdfVtUXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tNXShlLHQsYSkpfSpbTV0oZSx0LGE9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO2EubmFtZT09PWUmJih5aWVsZCBhKTsodHx8YVtlZV0oKSkmJih5aWVsZCphW01dKGUsdCwhMSkpfWEmJnRoaXNbVGVdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbJGVdfX10LlhGQU9iamVjdD1YRkFPYmplY3Q7Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbTGVdPWU7dGhpc1tJZV09W119cHVzaChlKXtpZih0aGlzW0llXS5sZW5ndGg8PXRoaXNbTGVdKXt0aGlzW0llXS5wdXNoKGUpO3JldHVybiEwfSgwLG4ud2FybikoYFhGQSAtIG5vZGUgIiR7ZVtuZV19IiBhY2NlcHRzIG5vIG1vcmUgdGhhbiAke3RoaXNbTGVdfSBjaGlsZHJlbmApO3JldHVybiExfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXNbSWVdLmxlbmd0aH1kdW1wKCl7cmV0dXJuIDE9PT10aGlzW0llXS5sZW5ndGg/dGhpc1tJZV1bMF1bd10oKTp0aGlzW0llXS5tYXAoKGU9PmVbd10oKSkpfVtwXSgpe2NvbnN0IGU9bmV3IFhGQU9iamVjdEFycmF5KHRoaXNbTGVdKTtlW0llXT10aGlzW0llXS5tYXAoKGU9PmVbcF0oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0llXX1jbGVhcigpe3RoaXNbSWVdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVhGQU9iamVjdEFycmF5O2NsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpc1skZV09ZTt0aGlzW25lXT10O3RoaXNbYl09YTt0aGlzW21dPSExO3RoaXNbdmVdPSJhdHRyaWJ1dGUiK0hlKyt9W19dKCl7cmV0dXJuIHRoaXNbJGVdfVtLXSgpe3JldHVybiEwfVtFXSgpe3JldHVybiB0aGlzW2JdLnRyaW0oKX1beWVdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tiXT1lLnRvU3RyaW5nKCl9W1NlXSgpe3JldHVybiB0aGlzW2JdfVtZXShlKXtyZXR1cm4gdGhpc1skZV09PT1lfHx0aGlzWyRlXVtZXShlKX19dC5YRkFBdHRyaWJ1dGU9WEZBQXR0cmlidXRlO2NsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYT17fSl7c3VwZXIoZSx0KTt0aGlzW2JdPSIiO3RoaXNbTWVdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW09lXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShpZSkpe2NvbnN0IGU9YVtpZV0ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1tNZV09ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1tNZV09ITApKX19dGhpc1ttXT0hMX1ba2VdKGUpe2NvbnN0IHQ9dGhpc1tuZV07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk7cmV0dXJufWNvbnN0IGE9KDAsbi51dGY4U3RyaW5nVG9TdHJpbmcpKHQpLHI9dGhpc1tyZV09PT1xZT8ieGZhOiI6IiI7ZS5wdXNoKGA8JHtyfSR7YX1gKTtmb3IoY29uc3RbdCxhXW9mIHRoaXNbT2VdLmVudHJpZXMoKSl7Y29uc3Qgcj0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKGAgJHtyfT0iJHsoMCxpLmVuY29kZVRvWG1sU3RyaW5nKShhW2JdKX0iYCl9bnVsbCE9PXRoaXNbTWVdJiYodGhpc1tNZV0/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbYl18fDAhPT10aGlzW0llXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbYl0pInN0cmluZyI9PXR5cGVvZiB0aGlzW2JdP2UucHVzaCgoMCxpLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW2JdKSk6dGhpc1tiXVtrZV0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW0llXSl0W2tlXShlKTtlLnB1c2goYDwvJHtyfSR7YX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W3NlXShlKXtpZih0aGlzW2JdKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tyZV0sIiN0ZXh0Iik7dGhpc1toXShlKTtlW2JdPXRoaXNbYl07dGhpc1tiXT0iIn10aGlzW2hdKGUpO3JldHVybiEwfVtjZV0oZSl7dGhpc1tiXSs9ZX1beF0oKXtpZih0aGlzW2JdJiZ0aGlzW0llXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbcmVdLCIjdGV4dCIpO3RoaXNbaF0oZSk7ZVtiXT10aGlzW2JdO2RlbGV0ZSB0aGlzW2JdfX1bQWVdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbmVdP3IuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tiXX0pOnIuSFRNTFJlc3VsdC5FTVBUWX1bUl0oZT1udWxsKXtyZXR1cm4gZT90aGlzW0llXS5maWx0ZXIoKHQ9PnRbbmVdPT09ZSkpOnRoaXNbSWVdfVt2XSgpe3JldHVybiB0aGlzW09lXX1bT10oZSl7Y29uc3QgdD10aGlzW09lXS5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/dDp0aGlzW1JdKGUpfSpbTV0oZSx0KXtjb25zdCBhPXRoaXNbT2VdLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1tJZV0pe2FbbmVdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW01dKGUsdCkpfX0qW0NdKGUsdCl7Y29uc3QgYT10aGlzW09lXS5nZXQoZSk7IWF8fHQmJmFbbV18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW0llXSl5aWVsZCphW0NdKGUsdCl9KltOXShlLHQsYSl7Zm9yKGNvbnN0IHIgb2YgdGhpc1tJZV0pe3JbbmVdIT09ZXx8YSYmclttXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW05dKGUsdCxhKSl9fVtLXSgpe3JldHVybiBudWxsPT09dGhpc1tNZV0/MD09PXRoaXNbSWVdLmxlbmd0aHx8dGhpc1tJZV1bMF1bcmVdPT09cy5OYW1lc3BhY2VJZHMueGh0bWwuaWQ6dGhpc1tNZV19W0VdKCl7cmV0dXJuIG51bGw9PT10aGlzW01lXT8wPT09dGhpc1tJZV0ubGVuZ3RoP3RoaXNbYl0udHJpbSgpOnRoaXNbSWVdWzBdW3JlXT09PXMuTmFtZXNwYWNlSWRzLnhodG1sLmlkP3RoaXNbSWVdWzBdW1NlXSgpLnRyaW0oKTpudWxsOnRoaXNbYl0udHJpbSgpfVt5ZV0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2JdPWUudG9TdHJpbmcoKX1bd10oZT0hMSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2UmJih0LiRucz10aGlzW3JlXSk7dGhpc1tiXSYmKHQuJGNvbnRlbnQ9dGhpc1tiXSk7dC4kbmFtZT10aGlzW25lXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbSWVdKXQuY2hpbGRyZW4ucHVzaChhW3ddKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxhXW9mIHRoaXNbT2VdKXQuYXR0cmlidXRlc1tlXT1hW2JdO3JldHVybiB0fX10LlhtbE9iamVjdD1YbWxPYmplY3Q7Y2xhc3MgQ29udGVudE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCk7dGhpc1tiXT0iIn1bY2VdKGUpe3RoaXNbYl0rPWV9W3hdKCl7fX10LkNvbnRlbnRPYmplY3Q9Q29udGVudE9iamVjdDt0Lk9wdGlvbk9iamVjdD1jbGFzcyBPcHRpb25PYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihlLHQpO3RoaXNbamVdPWF9W3hdKCl7dGhpc1tiXT0oMCxyLmdldEtleXdvcmQpKHtkYXRhOnRoaXNbYl0sZGVmYXVsdFZhbHVlOnRoaXNbamVdWzBdLHZhbGlkYXRlOmU9PnRoaXNbamVdLmluY2x1ZGVzKGUpfSl9W2RdKGUpe3N1cGVyW2RdKGUpO2RlbGV0ZSB0aGlzW2plXX19O3QuU3RyaW5nT2JqZWN0PWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W3hdKCl7dGhpc1tiXT10aGlzW2JdLnRyaW0oKX19O2NsYXNzIEludGVnZXJPYmplY3QgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3N1cGVyKGUsdCk7dGhpc1tFZV09YTt0aGlzW1hlXT1yfVt4XSgpe3RoaXNbYl09KDAsci5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW2JdLGRlZmF1bHRWYWx1ZTp0aGlzW0VlXSx2YWxpZGF0ZTp0aGlzW1hlXX0pfVtkXShlKXtzdXBlcltkXShlKTtkZWxldGUgdGhpc1tFZV07ZGVsZXRlIHRoaXNbWGVdfX10LkludGVnZXJPYmplY3Q9SW50ZWdlck9iamVjdDt0Lk9wdGlvbjAxPWNsYXNzIE9wdGlvbjAxIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwwLChlPT4xPT09ZSkpfX07dC5PcHRpb24xMD1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSwoZT0+MD09PWUpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuSFRNTFJlc3VsdD12b2lkIDA7dC5nZXRCQm94PWZ1bmN0aW9uIGdldEJCb3goZSl7Y29uc3QgdD0tMTtpZighZSlyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdCBhPWUudHJpbSgpLnNwbGl0KC9ccyosXHMqLykubWFwKChlPT5nZXRNZWFzdXJlbWVudChlLCItMSIpKSk7aWYoYS5sZW5ndGg8NHx8YVsyXTwwfHxhWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbcixuLGksc109YTtyZXR1cm57eDpyLHk6bix3aWR0aDppLGhlaWdodDpzfX07dC5nZXRDb2xvcj1mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2EscixuXT10O2lmKCFlKXJldHVybntyOmEsZzpyLGI6bn07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKGkubGVuZ3RoPDMpcmV0dXJue3I6YSxnOnIsYjpufTtbYSxyLG5dPWk7cmV0dXJue3I6YSxnOnIsYjpufX07dC5nZXRGbG9hdD1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IHI9cGFyc2VGbG9hdChlKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0SW50ZWdlcj1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtpZighaXNOYU4ocikmJmEocikpcmV0dXJuIHI7cmV0dXJuIHR9O3QuZ2V0S2V5d29yZD1nZXRLZXl3b3JkO3QuZ2V0TWVhc3VyZW1lbnQ9Z2V0TWVhc3VyZW1lbnQ7dC5nZXRSYXRpbz1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2Escl09dDtyZXR1cm57bnVtOmEsZGVuOnJ9fTt0LmdldFJlbGV2YW50PWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe2lmKCFlKXJldHVybltdO3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpfTt0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbiBnZXRTdHJpbmdPcHRpb24oZSx0KXtyZXR1cm4gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0WzBdLHZhbGlkYXRlOmU9PnQuaW5jbHVkZXMoZSl9KX07dC5zdHJpcFF1b3Rlcz1mdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtpZihlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJykpcmV0dXJuIGUuc2xpY2UoMSxlLmxlbmd0aC0xKTtyZXR1cm4gZX07dmFyIHI9YSgyKTtjb25zdCBuPXtwdDplPT5lLGNtOmU9PmUvMi41NCo3MixtbTplPT5lLzI1LjQqNzIsaW46ZT0+NzIqZSxweDplPT5lfSxpPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dD10fHwiMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGE9ZS50cmltKCkubWF0Y2goaSk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLHNdPWEsbz1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG8pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bylyZXR1cm4gMDtjb25zdCBjPW5bc107cmV0dXJuIGM/YyhvKTpvfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuKDAsci5zaGFkb3cpKHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybigwLHIuc2hhZG93KSh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19dC5IVE1MUmVzdWx0PUhUTUxSZXN1bHR9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuTmFtZXNwYWNlSWRzPXQuJGJ1aWxkWEZBT2JqZWN0PXZvaWQgMDtjb25zdCBhPVN5bWJvbCgpO3QuJGJ1aWxkWEZBT2JqZWN0PWE7dC5OYW1lc3BhY2VJZHM9e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX19LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5jcmVhdGVEYXRhTm9kZT1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgbj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zb21lKChlPT5lLm9wZXJhdG9yPT09bCkpKXJldHVybiBudWxsO2NvbnN0IHM9Zi5nZXQoblswXS5uYW1lKTtsZXQgbz0wO2lmKHMpe2U9cyhlLHQpO289MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9bi5sZW5ndGg7bzx0O28rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6c309bltvXTtpZighaXNGaW5pdGUocykpe25bb10uaW5kZXg9MDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX1sZXQgdTtzd2l0Y2goYSl7Y2FzZSBjOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBsOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMCk7YnJlYWs7Y2FzZSBoOnU9ZVtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpO3U9dSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/dS5jaGlsZHJlbjpbdV19aWYoMD09PXUubGVuZ3RoKXJldHVybiBjcmVhdGVOb2RlcyhlLG4uc2xpY2UobykpO2lmKCEoczx1Lmxlbmd0aCkpe25bb10uaW5kZXg9cy11Lmxlbmd0aDtyZXR1cm4gY3JlYXRlTm9kZXMoZSxuLnNsaWNlKG8pKX17Y29uc3QgdD11W3NdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSl7KDAsaS53YXJuKSgiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH07dC5zZWFyY2hOb2RlPWZ1bmN0aW9uIHNlYXJjaE5vZGUoZSx0LGEsbj0hMCxpPSEwKXtjb25zdCBzPXBhcnNlRXhwcmVzc2lvbihhLG4pO2lmKCFzKXJldHVybiBudWxsO2NvbnN0IG89Zi5nZXQoc1swXS5uYW1lKTtsZXQgdSxkPTA7aWYobyl7dT0hMDtlPVtvKGUsdCldO2Q9MX1lbHNle3U9bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBhPXMubGVuZ3RoO2Q8YTtkKyspe2NvbnN0e25hbWU6YSxjYWNoZU5hbWU6bixvcGVyYXRvcjpvLGluZGV4OmZ9PXNbZF0scD1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCkpY29udGludWU7bGV0IGUscztpZihpKXtzPWcuZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7Zy5zZXQodCxzKX1lPXMuZ2V0KG4pfWlmKCFlKXtzd2l0Y2gobyl7Y2FzZSBjOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMSk7YnJlYWs7Y2FzZSBsOmU9dFtyLiRnZXRDaGlsZHJlbkJ5TmFtZV0oYSwhMCk7YnJlYWs7Y2FzZSBoOmU9dFtyLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGEpO2U9ZSBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmcy5zZXQobixlKX1lLmxlbmd0aD4wJiZwLnB1c2goZSl9aWYoMCE9PXAubGVuZ3RofHx1fHwwIT09ZCllPWlzRmluaXRlKGYpP3AuZmlsdGVyKChlPT5mPGUubGVuZ3RoKSkubWFwKChlPT5lW2ZdKSk6cC5mbGF0KCk7ZWxzZXtjb25zdCBhPXRbci4kZ2V0UGFyZW50XSgpO2lmKCEodD1hKSlyZXR1cm4gbnVsbDtkPS0xO2U9W3RdfX1pZigwPT09ZS5sZW5ndGgpcmV0dXJuIG51bGw7cmV0dXJuIGV9O3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDIpO2NvbnN0IHM9L15bXi5bXSsvLG89L15bXlxdXSsvLGM9MCxsPTEsaD0yLHU9MyxkPTQsZj1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW3IuJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxnPW5ldyBXZWFrTWFwLHA9bi5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxhPSEwKXtsZXQgcj1lLm1hdGNoKHMpO2lmKCFyKXJldHVybiBudWxsO2xldFtuXT1yO2NvbnN0IGY9W3tuYW1lOm4sY2FjaGVOYW1lOiIuIituLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOmN9XTtsZXQgZz1uLmxlbmd0aDtmb3IoO2c8ZS5sZW5ndGg7KXtjb25zdCBtPWc7aWYoIlsiPT09ZS5jaGFyQXQoZysrKSl7cj1lLnNsaWNlKGcpLm1hdGNoKG8pO2lmKCFyKXsoMCxpLndhcm4pKCJYRkEgLSBJbnZhbGlkIGluZGV4IGluIFNPTSBleHByZXNzaW9uIik7cmV0dXJuIG51bGx9Zi5hdCgtMSkuaW5kZXg9IioiPT09KHA9KHA9clswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQocCwxMCl8fDA7Zys9clswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgYjtzd2l0Y2goZS5jaGFyQXQoZykpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7ZysrO2I9bDticmVhaztjYXNlIiMiOmcrKztiPWg7YnJlYWs7Y2FzZSJbIjppZihhKXsoMCxpLndhcm4pKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWI9dTticmVhaztjYXNlIigiOmlmKGEpeygwLGkud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1iPWQ7YnJlYWs7ZGVmYXVsdDpiPWN9cj1lLnNsaWNlKGcpLm1hdGNoKHMpO2lmKCFyKWJyZWFrO1tuXT1yO2crPW4ubGVuZ3RoO2YucHVzaCh7bmFtZTpuLGNhY2hlTmFtZTplLnNsaWNlKG0sZyksb3BlcmF0b3I6YixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbH0pfXZhciBwO3JldHVybiBmfWZ1bmN0aW9uIGNyZWF0ZU5vZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3R7bmFtZTpuLGluZGV4Oml9b2YgdCl7Zm9yKGxldCB0PTAscz1pc0Zpbml0ZShpKT9pOjA7dDw9czt0Kyspe2NvbnN0IHQ9ZVtyLiRuYW1lc3BhY2VJZF09PT1wPy0xOmVbci4kbmFtZXNwYWNlSWRdO2E9bmV3IHIuWG1sT2JqZWN0KHQsbik7ZVtyLiRhcHBlbmRDaGlsZF0oYSl9ZT1hfXJldHVybiBhfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkJpbmRlcj12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDgwKSxpPWEoNzgpLHM9YSg3Nyksbz1hKDIpO2NvbnN0IGM9cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBuLlRleHQoe30pO3Rbci4kY29udGVudF09ZTtyZXR1cm4gdH10LkJpbmRlcj1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO2UuZGF0YXNldHMmJmUuZGF0YXNldHMuZGF0YT90aGlzLmRhdGE9ZS5kYXRhc2V0cy5kYXRhOnRoaXMuZGF0YT1uZXcgci5YbWxPYmplY3Qocy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtyLiRnZXRDaGlsZHJlbl0oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbci4kY2xvbmVdKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtyLiRkYXRhXT10O2lmKGVbci4kaGFzU2V0dGFibGVWYWx1ZV0oKSlpZih0W3IuJGlzRGF0YVZhbHVlXSgpKXtjb25zdCBhPXRbci4kZ2V0RGF0YVZhbHVlXSgpO2Vbci4kc2V0VmFsdWVdKGNyZWF0ZVRleHQoYSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIG4uRmllbGQmJmUudWkmJmUudWkuY2hvaWNlTGlzdCYmIm11bHRpU2VsZWN0Ij09PWUudWkuY2hvaWNlTGlzdC5vcGVuKXtjb25zdCBhPXRbci4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW3IuJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtyLiRzZXRWYWx1ZV0oY3JlYXRlVGV4dChhKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLG8ud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbci4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsby53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsYSxuKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgaSxvO2ZvcihsZXQgbj0wO248MztuKyspe2k9YVtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSwhMSwhMCk7Zm9yKDs7KXtvPWkubmV4dCgpLnZhbHVlO2lmKCFvKWJyZWFrO2lmKHQ9PT1vW3IuJGlzRGF0YVZhbHVlXSgpKXJldHVybiBvfWlmKGFbci4kbmFtZXNwYWNlSWRdPT09cy5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQmJiJkYXRhIj09PWFbci4kbm9kZU5hbWVdKWJyZWFrO2E9YVtyLiRnZXRQYXJlbnRdKCl9aWYoIW4pcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbci4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpO289aS5uZXh0KCkudmFsdWU7aWYobylyZXR1cm4gbztpPXRoaXMuZGF0YVtyLiRnZXRBdHRyaWJ1dGVJdF0oZSwhMCk7bz1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbyYmb1tyLiRpc0RhdGFWYWx1ZV0oKT9vOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6YSx0YXJnZXQ6cyxjb25uZWN0aW9uOmN9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYoYyljb250aW51ZTtpZighYSljb250aW51ZTtjb25zdCBsPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsYSwhMSwhMSk7aWYoIWwpeygwLG8ud2FybikoYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWw7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGEpKXsoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGU6IG11c3QgYmUgYSBkYXRhIG5vZGUuIik7Y29udGludWV9Y29uc3QgdT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCxlLHMsITEsITEpO2lmKCF1KXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIHRhcmdldDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0oZSkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgZj1kW3IuJGdldFBhcmVudF0oKTtpZihkIGluc3RhbmNlb2Ygbi5TZXRQcm9wZXJ0eXx8ZiBpbnN0YW5jZW9mIG4uU2V0UHJvcGVydHkpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBzZXRQcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHByb3BlcnRpZXMuIik7Y29udGludWV9aWYoZCBpbnN0YW5jZW9mIG4uQmluZEl0ZW1zfHxmIGluc3RhbmNlb2Ygbi5CaW5kSXRlbXMpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGc9aFtyLiR0ZXh0XSgpLHA9ZFtyLiRub2RlTmFtZV07aWYoZCBpbnN0YW5jZW9mIHIuWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtwXT1nO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltwXT10W3BdfWVsc2UgaWYoZC5oYXNPd25Qcm9wZXJ0eShyLiRjb250ZW50KSl7ZFtyLiRkYXRhXT1oO2Rbci4kY29udGVudF09ZztkW3IuJGZpbmFsaXplXSgpfWVsc2UoMCxvLndhcm4pKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtyLiRyZW1vdmVDaGlsZF0odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGE9bmV3IG4uSXRlbXMoe30pLHM9bmV3IG4uSXRlbXMoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKGEpO2UuaXRlbXMucHVzaChhKTtlW3IuJGFwcGVuZENoaWxkXShzKTtlLml0ZW1zLnB1c2gocyk7Zm9yKGNvbnN0e3JlZjpuLGxhYmVsUmVmOmMsdmFsdWVSZWY6bCxjb25uZWN0aW9uOmh9b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKGgpY29udGludWU7aWYoIW4pY29udGludWU7Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LG4sITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWYgKCR7bn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGMsITAsITEpO2lmKCFlKXsoMCxvLndhcm4pKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke2N9LmApO2NvbnRpbnVlfWNvbnN0W2hdPWU7aWYoIWhbci4kaXNEZXNjZW5kZW50XSh0aGlzLmRhdGFzZXRzKSl7KDAsby53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IHU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxsLCEwLCExKTtpZighdSl7KDAsby53YXJuKShgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtsfS5gKTtjb250aW51ZX1jb25zdFtkXT11O2lmKCFkW3IuJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLG8ud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBmPWNyZWF0ZVRleHQoaFtyLiR0ZXh0XSgpKSxnPWNyZWF0ZVRleHQoZFtyLiR0ZXh0XSgpKTthW3IuJGFwcGVuZENoaWxkXShmKTthLnRleHQucHVzaChmKTtzW3IuJGFwcGVuZENoaWxkXShnKTtzLnRleHQucHVzaChnKX1lbHNlKDAsby53YXJuKShgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7bn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCBuO2lmKHQubGVuZ3RoPjEpe249ZVtyLiRjbG9uZV0oKTtuW3IuJHJlbW92ZUNoaWxkXShuLm9jY3VyKTtuLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbci4kZ2V0UGFyZW50XSgpLHM9ZVtyLiRub2RlTmFtZV0sbz1pW3IuJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9bltyLiRjbG9uZV0oKTtpW3NdLnB1c2gobCk7aVtyLiRpbnNlcnRBdF0obytlLGwpO3RoaXMuX2JpbmRWYWx1ZShsLGMsYSk7dGhpcy5fc2V0UHJvcGVydGllcyhsLGMpO3RoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbci4kZ2V0UGFyZW50XSgpLG49ZVtyLiRub2RlTmFtZV07aWYoIShhW25daW5zdGFuY2VvZiByLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtuXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDphW25dLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWFbci4kaW5kZXhPZl0oZSkrMSxvPXQuaW5pdGlhbC1pO2lmKG8pe2NvbnN0IHQ9ZVtyLiRjbG9uZV0oKTt0W3IuJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7YVtuXS5wdXNoKHQpO2Fbci4kaW5zZXJ0QXRdKHMsdCk7Zm9yKGxldCBlPTE7ZTxvO2UrKyl7Y29uc3QgaT10W3IuJGNsb25lXSgpO2Fbbl0ucHVzaChpKTthW3IuJGluc2VydEF0XShzK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjphfT1lO2lmKCFhfHwhdClyZXR1cm5bMSwxXTtjb25zdCByPS0xPT09YS5tYXg/MS8wOmEubWF4O3JldHVyblthLm1pbixyXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGE9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IG4gb2YgZVtyLiRnZXRDaGlsZHJlbl0oKSl7aWYobltyLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PW5bci4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PW4ubWVyZ2VNb2RlO2NvbnN0IGU9dFtyLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W3IuJG5hbWVzcGFjZUlkXT09PWM/LTE6dFtyLiRuYW1lc3BhY2VJZF0sYT1uW3IuJGRhdGFdPW5ldyByLlhtbE9iamVjdChlLG4ubmFtZXx8InJvb3QiKTt0W3IuJGFwcGVuZENoaWxkXShhKTt0aGlzLl9iaW5kRWxlbWVudChuLGEpfWNvbnRpbnVlfWlmKCFuW3IuJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEscz1udWxsLGw9bnVsbCxoPW51bGw7aWYobi5iaW5kKXtzd2l0Y2gobi5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQobix0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFuLmJpbmQucmVmKXsoMCxvLndhcm4pKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke25bci4kbm9kZU5hbWVdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKG4sdCk7Y29udGludWV9bD1uLmJpbmQucmVmfW4uYmluZC5waWN0dXJlJiYocz1uLmJpbmQucGljdHVyZVtyLiRjb250ZW50XSl9Y29uc3RbdSxkXT10aGlzLl9nZXRPY2N1ckluZm8obik7aWYobCl7aD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGwsITAsITEpO2lmKG51bGw9PT1oKXtoPSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGwpO2lmKCFoKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGhbci4kY29uc3VtZWRdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaD1oLmZpbHRlcigoZT0+IWVbci4kY29uc3VtZWRdKSkpO2gubGVuZ3RoPmQ/aD1oLnNsaWNlKDAsZCk6MD09PWgubGVuZ3RoJiYoaD1udWxsKTtoJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJmguZm9yRWFjaCgoZT0+e2Vbci4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIW4ubmFtZSl7dGhpcy5fc2V0QW5kQmluZChuLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgYT1bXTtmb3IoO2EubGVuZ3RoPGQ7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKG4ubmFtZSxuW3IuJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW3IuJGNvbnN1bWVkXT0hMDthLnB1c2goaSl9aD1hLmxlbmd0aD4wP2E6bnVsbH1lbHNle2g9dFtyLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0obi5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFoKXtpZigwPT09dSl7YS5wdXNoKG4pO2NvbnRpbnVlfWNvbnN0IGU9dFtyLiRuYW1lc3BhY2VJZF09PT1jPy0xOnRbci4kbmFtZXNwYWNlSWRdO2g9bltyLiRkYXRhXT1uZXcgci5YbWxPYmplY3QoZSxuLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGhbci4kY29uc3VtZWRdPSEwKTt0W3IuJGFwcGVuZENoaWxkXShoKTt0aGlzLl9zZXRBbmRCaW5kKG4saCk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaFtyLiRjb25zdW1lZF09ITApO2g9W2hdfX1oP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhuLGgscyk6dT4wP3RoaXMuX3NldEFuZEJpbmQobix0KTphLnB1c2gobil9YS5mb3JFYWNoKChlPT5lW3IuJGdldFBhcmVudF0oKVtyLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDA7dmFyIHI9YSg3NSksbj1hKDc3KSxpPWEoODEpLHM9YSg4Miksbz1hKDc2KSxjPWEoMiksbD1hKDgzKSxoPWEoNCksdT1hKDc4KTtjb25zdCBkPW4uTmFtZXNwYWNlSWRzLnRlbXBsYXRlLmlkLGY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixnPS9eSChcZCspJC8scD1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLG09W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2Vbci4kYXBwZW5kQ2hpbGRdKHQpO2UudmFsdWU9dH1lLnZhbHVlW3IuJHNldFZhbHVlXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW3IuJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiBlLnZhbGlkYXRlJiYiZXJyb3IiPT09ZS52YWxpZGF0ZS5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2Vbci4kdGFiSW5kZXhdPWVbci4kZ2V0UGFyZW50XSgpW3IuJHRhYkluZGV4XTtyZXR1cm59aWYoZVtyLiR0YWJJbmRleF0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGEgb2YgZS50cmF2ZXJzYWxbci4kZ2V0Q2hpbGRyZW5dKCkpaWYoIm5leHQiPT09YS5vcGVyYXRpb24pe3Q9YTticmVha31pZighdHx8IXQucmVmKXtlW3IuJHRhYkluZGV4XT1lW3IuJGdldFBhcmVudF0oKVtyLiR0YWJJbmRleF07cmV0dXJufWNvbnN0IGE9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7ZVtyLiR0YWJJbmRleF09KythW3IuJHRhYkluZGV4XTtjb25zdCBuPWFbci4kc2VhcmNoTm9kZV0odC5yZWYsZSk7aWYoIW4pcmV0dXJuO2U9blswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtyLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3Qgbj1hLnJvbGUubWF0Y2goZyk7aWYobil7Y29uc3QgZT0iaGVhZGluZyIsYT1uWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtyLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1hLmxheW91dCYmKGEuYXNzaXN0JiYiVEgiPT09YS5hc3Npc3Qucm9sZT90LnJvbGU9ImNvbHVtbmhlYWRlciI6dC5yb2xlPSJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW3IuJGNvbnRlbnRdP3Quc3BlYWtbci4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtyLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCk7aWYobnVsbD09PXRbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZT1lO3Rbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO3Rbci4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtyLiRleHRyYV0pcmV0dXJuITE7ZVtyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKTtsZXQgYT1udWxsO2lmKGUudGFyZ2V0KXthPXRbci4kc2VhcmNoTm9kZV0oZS50YXJnZXQsZVtyLiRnZXRQYXJlbnRdKCkpO2lmKCFhKXJldHVybiExO2E9YVswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6bixjdXJyZW50Q29udGVudEFyZWE6aX09dFtyLiRleHRyYV07aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7YSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwoYT1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW3IuJGV4dHJhXS50YXJnZXQ9YXx8bjtyZXR1cm4hMH1pZihhJiZhIT09bil7ZVtyLiRleHRyYV0udGFyZ2V0PWE7cmV0dXJuITB9cmV0dXJuITF9YSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwoYT1udWxsKTtjb25zdCBzPWEmJmFbci4kZ2V0UGFyZW50XSgpO2xldCBvLGM9cztpZihlLnN0YXJ0TmV3KWlmKGEpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihpKSxyPWUuaW5kZXhPZihhKTstMSE9PXQmJnQ8ciYmKGM9bnVsbCk7bz1yLTF9ZWxzZSBvPW4uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKTtlbHNle2lmKCFhfHxhPT09aSlyZXR1cm4hMTtvPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKS0xO2M9cz09PW4/bnVsbDpzfWVbci4kZXh0cmFdLnRhcmdldD1jO2Vbci4kZXh0cmFdLmluZGV4PW87cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGEpe2NvbnN0IG49ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKCksaT1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUscz10W3IuJGdldFN1YmZvcm1QYXJlbnRdO3Rbci4kZ2V0U3ViZm9ybVBhcmVudF09KCk9PmU7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IG89dFtyLiR0b0hUTUxdKGEpO2Vbci4kYWRkSFRNTF0oby5odG1sLG8uYmJveCk7bltyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPWk7dFtyLiRnZXRTdWJmb3JtUGFyZW50XT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT0oMCxvLmdldEZsb2F0KSh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtyLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZpbGwmJiJ2aXNpYmxlIj09PXRoaXMuZmlsbC5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW3IuJHRvU3R5bGVdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtsZXQgbjtjb25zdCBpPXt4bWxuczpmLHN0eWxlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoidmlzaWJsZSJ9fTtpZigzNjA9PT10aGlzLnN3ZWVwQW5nbGUpbj17bmFtZToiZWxsaXBzZSIsYXR0cmlidXRlczp7eG1sbnM6ZixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxyPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07bj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6ZixkOmBNICR7c30gJHtvfSBBIDUwIDUwIDAgJHtyfSAwICR7Y30gJHtsfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOmF9fTtPYmplY3QuYXNzaWduKGkse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IGM9e25hbWU6InN2ZyIsY2hpbGRyZW46W25dLGF0dHJpYnV0ZXM6aX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2NdfSk7Yy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgci5YRkFPYmplY3RBcnJheX0qW3IuJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtyLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRhZGRIVE1MXShlLHQpe2NvbnN0W2EsbixpLHNdPXQ7dGhpc1tyLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0ud2lkdGgsYStpKTt0aGlzW3IuJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tyLiRleHRyYV0uaGVpZ2h0LG4rcyk7dGhpc1tyLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tyLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmYS5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihhLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBuPVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjpuLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3Mpe2lmKGkuaXNCcmVhaygpKXJldHVybiBpO2RlbGV0ZSB0aGlzW3IuJGV4dHJhXTtyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tyLiRleHRyYV0ud2lkdGgpO3QuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW3IuJGV4dHJhXS5oZWlnaHQpO2NvbnN0IGM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOm59LGw9W3RoaXMueCx0aGlzLnksdGhpc1tyLiRleHRyYV0ud2lkdGgsdGhpc1tyLiRleHRyYV0uaGVpZ2h0XTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGMsbCl9fWNsYXNzIEFzc2lzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bci4kdG9IVE1MXSgpe3JldHVybiB0aGlzLnRvb2xUaXAmJnRoaXMudG9vbFRpcFtyLiRjb250ZW50XT90aGlzLnRvb2xUaXBbci4kY29udGVudF06bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz0oMCxvLmdldFJhdGlvKShlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89KDAsby5nZXRSYXRpbykoZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUJpbmRJdGVtcztjbGFzcyBCb29rZW5kIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyByLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbci4kY29udGVudF0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImJvcmRlciIsITApO3RoaXMuYnJlYWs9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiRnZXRFeHRyYV0oKXtpZighdGhpc1tyLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGE9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXthWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2FbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDthWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2FbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbci4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6YSxlZGdlczplfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19W3IuJHRvU3R5bGVdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tyLiRnZXRFeHRyYV0oKSx0PWUubWFwKChlPT57Y29uc3QgdD1lW3IuJHRvU3R5bGVdKCk7dC5jb2xvcj10LmNvbG9yfHwiIzAwMDAwMCI7cmV0dXJuIHR9KSksYT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMubWFyZ2luJiZPYmplY3QuYXNzaWduKGEsdGhpcy5tYXJnaW5bci4kdG9TdHlsZV0oKSk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2UmJk9iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbci4kdG9TdHlsZV0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW3IuJHRvU3R5bGVdKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9YS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWEuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7YS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtBZnRlciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMuc3RhcnROZXc9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGFyZ2V0VHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSk7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEJyZWFrQmVmb3JlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtyLiR0b0hUTUxdKGUpe3RoaXNbci4kZXh0cmFdPXt9O3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxhPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLGgucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtyLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3Qgbj0oMCxzLmZpeFVSTCkodC51cmwpO24mJmEuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbci4kdWlkXSxocmVmOm4sbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhhKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2FsY3VsYXRlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm92ZXJyaWRlLFsiZGlzYWJsZWQiLCJlcnJvciIsImlnbm9yZSIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQ2FwdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoKDAsby5nZXRNZWFzdXJlbWVudCkoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3IuJHNldFZhbHVlXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bci4kZ2V0RXh0cmFdKGUpe2lmKCF0aGlzW3IuJGV4dHJhXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbci4kZXh0cmFdPSgwLHMubGF5b3V0Tm9kZSkodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW3IuJGV4dHJhXX1bci4kdG9IVE1MXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLnZhbHVlW3IuJHRvSFRNTF0oZSkuaHRtbDtpZighdCl7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgYT10aGlzLnJlc2VydmU7aWYodGhpcy5yZXNlcnZlPD0wKXtjb25zdHt3OnQsaDphfT10aGlzW3IuJGdldEV4dHJhXShlKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnRoaXMucmVzZXJ2ZT10O2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPWF9fWNvbnN0IG49W107InN0cmluZyI9PXR5cGVvZiB0P24ucHVzaCh7bmFtZToiI3RleHQiLHZhbHVlOnR9KTpuLnB1c2godCk7Y29uc3QgaT0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJtYXJnaW4iLCJ2aXNpYmlsaXR5Iik7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOnRoaXMucmVzZXJ2ZT4wJiYoaS53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSk7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU+MCYmKGkuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnJlc2VydmUpKX0oMCxzLnNldFBhcmEpKHRoaXMsbnVsbCx0KTt0aGlzW3IuJHBvcFBhcmFdKCk7dGhpcy5yZXNlcnZlPWE7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOm59KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjZXJ0aWZpY2F0ZXMiLCEwKTt0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVybD1lLnVybHx8IiI7dGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmlzc3VlcnM9bnVsbDt0aGlzLmtleVVzYWdlPW51bGw7dGhpcy5vaWRzPW51bGw7dGhpcy5zaWduaW5nPW51bGw7dGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIENoZWNrQnV0dG9uIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkoIm1hcmdpbiIpLGE9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1hO2xldCBuLGksYztjb25zdCBsPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxoPWwuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZsLml0ZW1zLmNoaWxkcmVuWzBdW3IuJHRvSFRNTF0oKS5odG1sfHxbXSx1PXtvbjoodm9pZCAwIT09aFswXT9oWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1oWzFdP2hbMV06Im9mZiIpLnRvU3RyaW5nKCl9LGQ9KGwudmFsdWUmJmwudmFsdWVbci4kdGV4dF0oKXx8Im9mZiIpPT09dS5vbnx8dm9pZCAwLGY9bFtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLGc9bFtyLiR1aWRdO2xldCBwO2lmKGYgaW5zdGFuY2VvZiBFeGNsR3JvdXApe2M9ZltyLiR1aWRdO249InJhZGlvIjtpPSJ4ZmFSYWRpbyI7cD1mW3IuJGRhdGFdJiZmW3IuJGRhdGFdW3IuJHVpZF18fGZbci4kdWlkXX1lbHNle249ImNoZWNrYm94IjtpPSJ4ZmFDaGVja2JveCI7cD1sW3IuJGRhdGFdJiZsW3IuJGRhdGFdW3IuJHVpZF18fGxbci4kdWlkXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W2ldLHN0eWxlOnQsZmllbGRJZDpnLGRhdGFJZDpwLHR5cGU6bixjaGVja2VkOmQseGZhT246dS5vbix4ZmFPZmY6dS5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChsKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtjJiYobS5hdHRyaWJ1dGVzLm5hbWU9Yyk7aWYoaXNSZXF1aXJlZChsKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W21dfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e2ZvbnRTaXplOmBjYWxjKCR7YS5mb250JiZhLmZvbnQuc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LGk9W107aWYoYS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1hLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbz1lLmNoaWxkcmVuW3RdW3IuJHRvSFRNTF0oKS5odG1sLGM9ZS5jaGlsZHJlbltzXVtyLiR0b0hUTUxdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBoPWEudmFsdWUmJmEudmFsdWVbci4kdGV4dF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1vLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOmNbZV18fG9bZV0sc3R5bGU6bn0sdmFsdWU6b1tlXX07Y1tlXT09PWgmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7aS5wdXNoKHQpfWx8fGkuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IGM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoYSkpe2NbImFyaWEtcmVxdWlyZWQiXT0hMDtjLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihjLm11bHRpcGxlPSEwKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6Y31dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT8oMCxvLmdldENvbG9yKShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiExfVtyLiR0b1N0eWxlXSgpe3JldHVybiB0aGlzLnZhbHVlP2MuVXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KTt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9e2xlZnQ6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueCksdG9wOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnkpLHdpZHRoOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLncpLGhlaWdodDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5oKX0sYT1bInhmYUNvbnRlbnRhcmVhIl07KDAscy5pc1ByaW50T25seSkodGhpcykmJmEucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW3IuJHVpZF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9KDAsby5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9KDAscy5tZWFzdXJlVG9TdHJpbmcpKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIHIuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW3IuJGNvbnRlbnRdLnRyaW0oKTt0aGlzW3IuJGNvbnRlbnRdPWU/bmV3IERhdGUoZSk6bnVsbH1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tyLiRjb250ZW50XT90aGlzW3IuJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bci4kdG9IVE1MXShlKXtjb25zdCB0PSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kZ2V0UGFyZW50XSgpLG49e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbci4kdWlkXSxkYXRhSWQ6YVtyLiRkYXRhXSYmYVtyLiRkYXRhXVtyLiR1aWRdfHxhW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7bi5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bi5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgci5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEcmF3IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuaCk6IiI7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpuLGg6Yyxpc0Jyb2tlbjpsfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7aWYobiYmIiI9PT10aGlzLncpe2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1ufWMmJiIiPT09dGhpcy5oJiYodGhpcy5oPWMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IGg9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGgpO2lmKGgubWFyZ2luKXtoLnBhZGRpbmc9aC5tYXJnaW47ZGVsZXRlIGgubWFyZ2lufWNvbnN0IHU9WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZ1LnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmdS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBkPXtzdHlsZTpoLGlkOnRoaXNbci4kdWlkXSxjbGFzczp1fTt0aGlzLm5hbWUmJihkLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtyLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtpZihudWxsPT09cCl7dGhpcy53PXQ7dGhpcy5oPWE7dGhpc1tyLiRwb3BQYXJhXSgpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZyl9Zi5jaGlsZHJlbi5wdXNoKHApOygwLHMuc2V0UGFyYSkodGhpcyxoLHApO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLGYpLGcpfX1jbGFzcyBFZGdlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZWRnZSIsITApO3RoaXMuY2FwPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz0oMCxvLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyByLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kaXNDREFUQVhtbF0oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W3IuJG9uQ2hpbGRdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtyLiRuYW1lc3BhY2VJZF09PT1uLk5hbWVzcGFjZUlkcy54aHRtbC5pZCl7dGhpc1tyLiRjb250ZW50XT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9cmV0dXJuITF9W3IuJHRvSFRNTF0oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKTpvLkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/KDAsby5nZXRNZWFzdXJlbWVudCkoZS53KToiIjt0aGlzLng9KDAsby5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKTt0aGlzLnk9KDAsby5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W3IuJGFwcGVuZENoaWxkXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtyLiRzZXRWYWx1ZV0oZSl9fVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tyLiRnZXRQYXJlbnRdKClbci4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bci4kaXNTcGxpdHRhYmxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFlW3IuJGlzU3BsaXR0YWJsZV0oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kZmx1c2hIVE1MXSgpe3JldHVybigwLGkuZmx1c2hIVE1MKSh0aGlzKX1bci4kYWRkSFRNTF0oZSx0KXsoMCxpLmFkZEhUTUwpKHRoaXMsZSx0KX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuKDAsaS5nZXRBdmFpbGFibGVTcGFjZSkodGhpcyl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxhPXtpZDp0aGlzW3IuJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLGEuY2xhc3MpO3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW3IuJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBuPXRoaXNbci4kaXNTcGxpdHRhYmxlXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gby5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgYz1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tyLiRleHRyYV0uY29sdW1uV2lkdGhzPWU7dGhpc1tyLiRleHRyYV0uY3VycmVudENvbHVtbj0wfX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpOygwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bDthLmNsYXNzPWg7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tyLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6YyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIGV9aWYoZCYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJjA9PT10aGlzW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJiF0aGlzW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PWY7YnJlYWt9fXRoaXNbci4kcG9wUGFyYV0oKTtufHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbci4kZXh0cmFdLmF0dGVtcHQ9PT1mKXtufHxkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBnPTAscD0wO2lmKHRoaXMubWFyZ2luKXtnPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3A9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgbT1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKTsiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmEsY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxhKTtkZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx5KX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5oKToiIjt0aGlzLmhBbGlnbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpO3RoaXMubWluSD0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpO3RoaXMubWluVz0oMCxvLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz8oMCxvLmdldE1lYXN1cmVtZW50KShlLncpOiIiO3RoaXMueD0oMCxvLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpO3RoaXMueT0oMCxvLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtyLiRzZXRWYWx1ZV0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3IuJHRvSFRNTF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtyLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bci4kZXh0cmFdO3RoaXNbci4kcHVzaFBhcmFdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW3IuJHRvSFRNTF0oZSkuaHRtbDpudWxsLGE9dGhpcy53LG49dGhpcy5oO2xldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHU9bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLG49MCxpPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbiluPWk9dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09KDAscy5sYXlvdXROb2RlKSh0aGlzLGUpO2lmKG51bGwhPT10KXtuPXQ7aT1hfWVsc2UgaT0oMCxsLmdldE1ldHJpY3MpKHRoaXMuZm9udCwhMCkubGluZU5vR2FwfXU9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW3IuJGdldEV4dHJhXSgpKTtuKz11Lnc7aSs9dS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpzLGg6Yyxpc0Jyb2tlbjpsfT10aGlzLmNhcHRpb25bci4kZ2V0RXh0cmFdKGUpO2lmKGwmJnRoaXNbci4kZ2V0U3ViZm9ybVBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpKXt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXQ9czthPWM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPW47YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1pfX1lbHNle3Q9bjthPWl9aWYodCYmIiI9PT10aGlzLncpe3QrPWM7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1oO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tyLiRwb3BQYXJhXSgpOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXt0aGlzLnc9YTt0aGlzLmg9bjt0aGlzW3IuJHBvcFBhcmFdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3QgZD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsZCk7Y29uc3QgZj1bInhmYUZpZWxkIl07dGhpcy5mb250JiZmLnB1c2goInhmYUZvbnQiKTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtzdHlsZTpkLGlkOnRoaXNbci4kdWlkXSxjbGFzczpmfTtpZihkLm1hcmdpbil7ZC5wYWRkaW5nPWQubWFyZ2luO2RlbGV0ZSBkLm1hcmdpbn0oMCxzLnNldEFjY2VzcykodGhpcyxmKTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBwPVtdLG09e25hbWU6ImRpdiIsYXR0cmlidXRlczpnLGNoaWxkcmVuOnB9O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgYj10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltyLiR0b1N0eWxlXSgpOm51bGwseT0oMCxzLmNvbXB1dGVCYm94KSh0aGlzLG0sZSksdz10aGlzLnVpW3IuJHRvSFRNTF0oKS5odG1sO2lmKCF3KXtPYmplY3QuYXNzaWduKGQsYik7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX10aGlzW3IuJHRhYkluZGV4XSYmKHcuY2hpbGRyZW4mJncuY2hpbGRyZW5bMF0/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbci4kdGFiSW5kZXhdOncuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW3IuJHRhYkluZGV4XSk7dy5hdHRyaWJ1dGVzLnN0eWxlfHwody5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBTPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT13LmNoaWxkcmVuLmxlbmd0aCYmKFtTXT13LmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKHcuYXR0cmlidXRlcy5zdHlsZSxiKX1lbHNlIE9iamVjdC5hc3NpZ24oZCxiKTtwLnB1c2godyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdCl3LmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbci4kdGV4dF0oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtyLiRnZXRFeHRyYV0oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtyLiR0b0hUTUxdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0JiZ0aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMmJih3LmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT13LmNoaWxkcmVuWzBdLm5hbWU/dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6dy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmdy5jaGlsZHJlbiYmdy5jaGlsZHJlblswXSYmdGhpcy5oKXt1PXV8fGdldEJvcmRlckRpbXModGhpcy51aVtyLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3IuJGdldEV4dHJhXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LWgtdS5oO3cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKGEpfWVsc2Ugdy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9UyYmdy5jaGlsZHJlbi5wdXNoKFMpO2lmKCF0KXt3LmF0dHJpYnV0ZXMuY2xhc3MmJncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPW47cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxtKSx5KX1pZih0aGlzLnVpLmJ1dHRvbil7ZC5wYWRkaW5nJiZkZWxldGUgZC5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7dy5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2VzcyhtLHkpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO3cuYXR0cmlidXRlcy5jbGFzc3x8KHcuYXR0cmlidXRlcy5jbGFzcz1bXSk7dy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjp3LmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOncuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9bjtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLG0pLHkpfX10LkZpZWxkPUZpZWxkO2NsYXNzIEZpbGwgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJmaWxsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmxpbmVhcj1udWxsO3RoaXMucGF0dGVybj1udWxsO3RoaXMucmFkaWFsPW51bGw7dGhpcy5zb2xpZD1udWxsO3RoaXMuc3RpcHBsZT1udWxsfVtyLiR0b1N0eWxlXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD1lW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBuPSJjb2xvciIsaT1uO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe249ImJhY2tncm91bmQtY29sb3IiO2k9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGEuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe249aT0iZmlsbCI7YS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbci4kdG9TdHlsZV0odGhpcy5jb2xvcik7cyYmKGFbcy5zdGFydHNXaXRoKCIjIik/bjppXT1zKTtyZXR1cm4gYX1pZih0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3Jbci4kdG9TdHlsZV0oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP246aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj0oMCxvLmdldEludGVnZXIpKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiZmxvYXQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbci4kY29udGVudF0udHJpbSgpKTt0aGlzW3IuJGNvbnRlbnRdPWlzTmFOKGUpP251bGw6ZX1bci4kdG9IVE1MXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgRm9udCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9KDAsby5nZXRGbG9hdCkoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtyLiRjbGVhbl0oZSl7c3VwZXJbci4kY2xlYW5dKGUpO3RoaXNbci4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQodGhpcy50eXBlZmFjZSl9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9KDAscy5tZWFzdXJlVG9TdHJpbmcpKC45OSp0aGlzLnNpemUpOygwLHMuc2V0Rm9udEZhbWlseSkodGhpcyx0aGlzLHRoaXNbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJoYW5kbGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBIeXBoZW5hdGlvbiBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2UiKTt0aGlzLmFzcGVjdD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIXAuaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW3IuJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tyLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW3IuJGNvbnRlbnRdKSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxjLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tyLiRjb250ZW50XSkpKTtpZighZSlyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIG0paWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LGEpPT50PT09ZVthXSkpKXt0aGlzLmNvbnRlbnRUeXBlPWE7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIG8uSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IG49dGhpc1tyLiRnZXRQYXJlbnRdKCk7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpuP2FyaWFMYWJlbChuW3IuJGdldFBhcmVudF0oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9vLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW3IuJGNvbnRlbnRdLnRyaW0oKSwxMCk7dGhpc1tyLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheX1bci4kdG9IVE1MXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tyLiRnZXRDaGlsZHJlbl0oKSllLnB1c2godFtyLiR0ZXh0XSgpKTtyZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fXQuSXRlbXM9SXRlbXM7Y2xhc3MgS2VlcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmludGFjdCx0KTt0aGlzLm5leHQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lIiwhMCk7dGhpcy5oYW5kPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtyLiR0b1N0eWxlXSgpLG49T2JqZWN0LmNyZWF0ZShudWxsKSxpPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDtuLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKShpKTtuLnN0cm9rZT1hLmNvbG9yO2xldCBjLGwsaCx1LGQ9IjEwMCUiLGc9IjEwMCUiO2lmKGUudzw9aSl7W2MsbCxoLHVdPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07ZD1uLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1pKXtbYyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtnPW4uc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tjLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltjLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpmLHgxOmMseTE6bCx4MjpoLHkyOnUsc3R5bGU6bn19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOmQsaGVpZ2h0Omcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3BdfSk7cC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHApfX1jbGFzcyBMaW5lYXIgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW3IuJHRvU3R5bGVdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRmaW5hbGl6ZV0oKXt0aGlzW3IuJGNvbnRlbnRdPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKSh0aGlzW3IuJGNvbnRlbnRdLFsiYXV0byIsIjAiLCIxIl0pfX1jbGFzcyBNYW5pZmVzdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWFyZ2luIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIE1kcCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9KDAsby5nZXRCQm94KShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD0oMCxvLmdldE1lYXN1cmVtZW50KShlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJtZXNzYWdlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy50ZXh0PW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm51bWVyaWNFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSxuPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDphW3IuJHVpZF0sZGF0YUlkOmFbci4kZGF0YV0mJmFbci4kZGF0YV1bci4kdWlkXXx8YVtyLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe24uYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO24uYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltuXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9jY3VyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5tYXg9IiIhPT1lLm1heD8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj8oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3IuJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tyLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGdldEV4dHJhXSgpe2lmKCF0aGlzW3IuJGV4dHJhXSl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKSx0PXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpLGE9dFtyLiRzZWFyY2hOb2RlXSh0aGlzLnRhcmdldCxlKSxuPXRbci4kc2VhcmNoTm9kZV0odGhpcy5sZWFkZXIsZSksaT10W3IuJHNlYXJjaE5vZGVdKHRoaXMudHJhaWxlcixlKTt0aGlzW3IuJGV4dHJhXT17dGFyZ2V0OmEmJmFbMF18fG51bGwsbGVhZGVyOm4mJm5bMF18fG51bGwsdHJhaWxlcjppJiZpWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tyLiRleHRyYV19fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRpc1VzYWJsZV0oKXtpZighdGhpc1tyLiRleHRyYV0pe3RoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tyLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3IuJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tyLiRleHRyYV19W3IuJGdldE5leHRQYWdlXSgpe3RoaXNbci4kZXh0cmFdfHwodGhpc1tyLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW3IuJGlzVXNhYmxlXSgpKXt0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKX1bci4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbci4kZXh0cmFdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W3IuJHRvSFRNTF0oKXt0aGlzW3IuJGV4dHJhXXx8KHRoaXNbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfSk7Y29uc3QgZT1bXTt0aGlzW3IuJGV4dHJhXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tyLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbci4kZXh0cmFdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2UoMCxjLndhcm4pKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbci4kdWlkXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9KDAsby5nZXRSZWxldmFudCkoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW3IuJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtyLiRjbGVhblBhZ2VdKCl9W3IuJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW3IuJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bci4kZ2V0TmV4dFBhZ2VdKCl7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbci4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1tyLiRleHRyYV0ucGFnZUluZGV4XVtyLiRnZXROZXh0UGFnZV0oKX1pZih0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXhdW3IuJGdldE5leHRQYWdlXSgpfWlmKHRoaXNbci4kaXNVc2FibGVdKCkpe3RoaXNbci4kZXh0cmFdLm51bWJlck9mVXNlKz0xO3RoaXNbci4kZXh0cmFdLnBhZ2VJbmRleD0tMTt0aGlzW3IuJGV4dHJhXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbci4kZ2V0TmV4dFBhZ2VdKCl9Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtyLiRnZXROZXh0UGFnZV0oKTt0aGlzW3IuJGNsZWFuUGFnZV0oKTtyZXR1cm4gdGhpc1tyLiRnZXROZXh0UGFnZV0oKX1jb25zdCBlPXRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixhPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBuPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWEpKTtpZihuKXJldHVybiBuO249dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIG58fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxvLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsby5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLG8uZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W3IuJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50ZXh0SW5kZW50KTsoMCxzLmZpeFRleHRJbmRlbnQpKGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3IuJHRvU3R5bGVdKCkpO3JldHVybiBlfX1jbGFzcyBQYXNzd29yZEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBQYXR0ZXJuIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtlPWU/ZVtyLiR0b1N0eWxlXSgpOiIjRkZGRkZGIjtjb25zdCB0PXRoaXMuY29sb3I/dGhpcy5jb2xvcltyLiR0b1N0eWxlXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixuPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSkgJHthfSh0byByaWdodCwke259KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke259KSAke2F9KC00NWRlZywke259KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7bn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke259KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtufSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7bn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInBpY3R1cmUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUHJvdG8gZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyYz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5iYXJjb2RlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJvb2xlYW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhbGN1bGF0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNlcnRpZmljYXRlcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbG9yPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZhdWx0VWk9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kcz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jb2Rpbmc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2RzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5maWx0ZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mb3JtYXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5pc3N1ZXJzPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMua2V5VXNhZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubG9ja0RvY3VtZW50PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZHA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMubnVtZXJpY0VkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm9pZHM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXR0ZXJuPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWY9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNvbGlkPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE5zPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRleHRFZGl0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRvb2xUaXA9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnVpPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnZhcmlhYmxlcz1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmFkaWFsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvRWRnZSIsInRvQ2VudGVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7ZT1lP2Vbci4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbci4kdG9TdHlsZV0oKToiIzAwMDAwMCI7cmV0dXJuYHJhZGlhbC1ncmFkaWVudChjaXJjbGUgYXQgY2VudGVyLCAkeyJ0b0VkZ2UiPT09dGhpcy50eXBlP2Ake2V9LCR7dH1gOmAke3R9LCR7ZX1gfSlgfX1jbGFzcyBSZWFzb24gZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgci5YRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IHIuWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5maWxsPW51bGx9W3IuJHRvSFRNTF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbci4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5maWxsJiYidmlzaWJsZSI9PT10aGlzLmZpbGwucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtyLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7Y29uc3Qgbj0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyBDb3JuZXIoe30pKVtyLiR0b1N0eWxlXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpmLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6bi5yYWRpdXMscnk6bi5yYWRpdXMsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpmLHN0eWxlOntvdmVyZmxvdzoidmlzaWJsZSJ9LHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX07aWYoaGFzTWFyZ2luKHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldFBhcmVudF0oKSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2ldfSk7aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIG8uSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBSZWZFbGVtZW50IGV4dGVuZHMgci5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2V0UHJvcGVydHkiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIifX10LlNldFByb3BlcnR5PVNldFByb3BlcnR5O2NsYXNzIFNpZ25EYXRhIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbkRhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbInNpZ24iLCJjbGVhciIsInZlcmlmeSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgU2lnbmF0dXJlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtyLiR0b1N0eWxlXShlKXtyZXR1cm4gZT9lW3IuJHRvU3R5bGVdKCk6IiNGRkZGRkYifX1jbGFzcyBTcGVhayBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInNwZWFrIik7dGhpcy5kaXNhYmxlPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bci4kdG9TdHlsZV0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBjLlV0aWwubWFrZUhleENvbG9yKE1hdGgucm91bmQoZS52YWx1ZS5yKigxLXQpK3RoaXMudmFsdWUucip0KSxNYXRoLnJvdW5kKGUudmFsdWUuZyooMS10KSt0aGlzLnZhbHVlLmcqdCksTWF0aC5yb3VuZChlLnZhbHVlLmIqKDEtdCkrdGhpcy52YWx1ZS5iKnQpKX19Y2xhc3MgU3ViZm9ybSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLG8uZ2V0TWVhc3VyZW1lbnQpKGUpKSk7dGhpcy5oPWUuaD8oMCxvLmdldE1lYXN1cmVtZW50KShlLmgpOiIiO3RoaXMuaEFsaWduPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9KDAsby5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0Iik7dGhpcy5taW5XPSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53PygwLG8uZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiI7dGhpcy54PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0Iik7dGhpcy55PSgwLG8uZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW3IuJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpOmV9W3IuJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W3IuJGlzVGhlcmVNb3JlV2lkdGhdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbci4kZXh0cmFdLmF0dGVtcHQmJnRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZT4wfHx0aGlzW3IuJGdldFBhcmVudF0oKVtyLiRpc1RoZXJlTW9yZVdpZHRoXSgpfSpbci4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3IuJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W3IuJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W3IuJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtyLiRpc1NwbGl0dGFibGVdKCl7Y29uc3QgZT10aGlzW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYoIWVbci4kaXNTcGxpdHRhYmxlXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbci4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW3IuJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0JiZlLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tyLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bci4kdG9IVE1MXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW3IuJGdsb2JhbERhdGFdPXRoaXNbci4kZ2xvYmFsRGF0YV07dGhpc1tyLiRhcHBlbmRDaGlsZF0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbci4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGMud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gby5IVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW3IuJGV4dHJhXSYmdGhpc1tyLiRleHRyYV0uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBvLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbci4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyk7dGhpc1tyLiRleHRyYV18fCh0aGlzW3IuJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbci4kZXh0cmFdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG49dGhpc1tyLiRnZXRUZW1wbGF0ZVJvb3RdKCksbD1uW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsaD10aGlzW3IuJGlzU3BsaXR0YWJsZV0oKTtofHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIG8uSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHU9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tyLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW3IuJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IGQ9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxmPVsieGZhU3ViZm9ybSJdLGc9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7ZyYmZi5wdXNoKGcpO2Euc3R5bGU9ZDthLmNsYXNzPWY7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W3IuJGdldEV4dHJhXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW3IuJHB1c2hQYXJhXSgpO2NvbnN0IHA9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbT1wPzI6MTtmb3IoO3RoaXNbci4kZXh0cmFdLmF0dGVtcHQ8bTt0aGlzW3IuJGV4dHJhXS5hdHRlbXB0Kyspe3AmJjE9PT10aGlzW3IuJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tyLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tyLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjp1LGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbci4kcG9wUGFyYV0oKTtyZXR1cm4gZX1pZihwJiYwPT09dGhpc1tyLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbci4kZXh0cmFdLm51bWJlckluTGluZSYmIW5bci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tyLiRleHRyYV0uYXR0ZW1wdD1tO2JyZWFrfX10aGlzW3IuJHBvcFBhcmFdKCk7aHx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtuW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9bDtpZih0aGlzW3IuJGV4dHJhXS5hdHRlbXB0PT09bSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9dGhpcy5vdmVyZmxvdyk7aHx8ZGVsZXRlIHRoaXNbci4kZXh0cmFdO3JldHVybiBvLkhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbci4kZ2V0RXh0cmFdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBiPTAseT0wO2lmKHRoaXMubWFyZ2luKXtiPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3k9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3Qgdz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS53aWR0aCtiLHRoaXMud3x8MCksUz1NYXRoLm1heCh0aGlzW3IuJGV4dHJhXS5oZWlnaHQreSx0aGlzLmh8fDApLHg9W3RoaXMueCx0aGlzLnksdyxTXTsiIj09PXRoaXMudyYmKGQud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHcpKTsiIj09PXRoaXMuaCYmKGQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShTKSk7aWYoKCIwcHgiPT09ZC53aWR0aHx8IjBweCI9PT1kLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGs9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsYSk7Y29uc3QgQz1vLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsaykseCk7aWYodGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpe3RoaXNbci4kZXh0cmFdLmFmdGVyQnJlYWtBZnRlcj1DO3JldHVybiBvLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tyLiRleHRyYV07cmV0dXJuIEN9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJmb3JtU2V0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKTt0aGlzLnJlbGV2YW50PSgwLG8uZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMuYnJlYWtBZnRlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IHIuWEZBT2JqZWN0QXJyYXl9KltyLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bci4kZ2V0U3ViZm9ybVBhcmVudF0oKXtsZXQgZT10aGlzW3IuJGdldFBhcmVudF0oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbci4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtyLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyByLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwic3ViamVjdEROIik7dGhpcy5kZWxpbWl0ZXI9ZS5kZWxpbWl0ZXJ8fCIsIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bci4kZmluYWxpemVdKCl7dGhpc1tyLiRjb250ZW50XT1uZXcgTWFwKHRoaXNbci4kY29udGVudF0uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPSgwLG8uZ2V0SW50ZWdlcikoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz0oMCxvLmdldEtleXdvcmQpKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyByLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyByLlhGQU9iamVjdEFycmF5fVtyLiRmaW5hbGl6ZV0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmKDAsYy53YXJuKSgiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiYoMCxjLndhcm4pKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbci4kdGFiSW5kZXhdPTVlM31bci4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiEwfVtyLiRzZWFyY2hOb2RlXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tyLiRpZHNdLmdldChlLnNsaWNlKDEpKV06KDAsdS5zZWFyY2hOb2RlKSh0aGlzLHQsZSwhMCwhMCl9KltyLiR0b1BhZ2VzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbci4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W3IuJGNsZWFuUGFnZV0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgbj1udWxsLGk9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWsmJmUuYnJlYWsuYmVmb3JlVGFyZ2V0KXtpPWUuYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhayYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrLmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbci4kc2VhcmNoTm9kZV0ocyxpW3IuJGdldFBhcmVudF0oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtuPWU7aVtyLiRleHRyYV09e319fW58fChuPXRbMF0pO25bci4kZXh0cmFdPXtudW1iZXJPZlVzZToxfTtjb25zdCBsPW5bci4kZ2V0UGFyZW50XSgpO2xbci4kZXh0cmFdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpsLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YobikscGFnZVNldEluZGV4OjB9O2xldCBoLHU9bnVsbCxkPW51bGwsZj0hMCxnPTAscD0wO2Zvcig7Oyl7aWYoZilnPTA7ZWxzZXthLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrZyl7KDAsYy53YXJuKSgiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1oPW51bGw7dGhpc1tyLiRleHRyYV0uY3VycmVudFBhZ2VBcmVhPW47Y29uc3QgdD1uW3IuJHRvSFRNTF0oKS5odG1sO2EuY2hpbGRyZW4ucHVzaCh0KTtpZih1KXt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShuW3IuJGV4dHJhXS5zcGFjZSkuaHRtbCk7dT1udWxsfWlmKGQpe3RoaXNbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZFtyLiR0b0hUTUxdKG5bci4kZXh0cmFdLnNwYWNlKS5odG1sKTtkPW51bGx9Y29uc3QgaT1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2Y9ITE7dGhpc1tyLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGE9ZVtyLiRmbHVzaEhUTUxdKCk7aWYoYSl7Zj1mfHxhLmNoaWxkcmVuJiYwIT09YS5jaGlsZHJlbi5sZW5ndGg7c1t0XS5jaGlsZHJlbi5wdXNoKGEpfX07Zm9yKGxldCB0PXAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXNbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYT1pW3RdLG89e3dpZHRoOm4udyxoZWlnaHQ6bi5ofTtwPTA7aWYodSl7c1t0XS5jaGlsZHJlbi5wdXNoKHVbci4kdG9IVE1MXShvKS5odG1sKTt1PW51bGx9aWYoZCl7c1t0XS5jaGlsZHJlbi5wdXNoKGRbci4kdG9IVE1MXShvKS5odG1sKTtkPW51bGx9Y29uc3QgYz1lW3IuJHRvSFRNTF0obyk7aWYoYy5zdWNjZXNzKXtpZihjLmh0bWwpe2Y9Znx8Yy5odG1sLmNoaWxkcmVuJiYwIT09Yy5odG1sLmNoaWxkcmVuLmxlbmd0aDtzW3RdLmNoaWxkcmVuLnB1c2goYy5odG1sKX1lbHNlIWYmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYoYy5pc0JyZWFrKCkpe2NvbnN0IGU9Yy5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXt1PXRoaXNbci4kc2VhcmNoTm9kZV0oZS5sZWFkZXIsZVtyLiRnZXRQYXJlbnRdKCkpO3U9dT91WzBdOm51bGx9aWYoZS50cmFpbGVyKXtkPXRoaXNbci4kc2VhcmNoTm9kZV0oZS50cmFpbGVyLGVbci4kZ2V0UGFyZW50XSgpKTtkPWQ/ZFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2g9ZVtyLiRleHRyYV0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtyLiRleHRyYV0udGFyZ2V0KXtoPWVbci4kZXh0cmFdLnRhcmdldDtwPWVbci4kZXh0cmFdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbci4kZXh0cmFdLmluZGV4fWVsc2UgaWYodGhpc1tyLiRleHRyYV0ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbci4kZXh0cmFdLm92ZXJmbG93Tm9kZTt0aGlzW3IuJGV4dHJhXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBhPWVbci4kZ2V0RXh0cmFdKCksbj1hLnRhcmdldDthLmFkZExlYWRlcj1udWxsIT09YS5sZWFkZXI7YS5hZGRUcmFpbGVyPW51bGwhPT1hLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKG4gaW5zdGFuY2VvZiBQYWdlQXJlYSloPW47ZWxzZSBpZihuIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9aS5pbmRleE9mKG4pO2lmKC0xIT09ZSllPnM/dD1lLTE6cD1lO2Vsc2V7aD1uW3IuJGdldFBhcmVudF0oKTtwPWguY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihuKX19fWVsc2UgZmx1c2godCl9dGhpc1tyLiRleHRyYV0ucGFnZU51bWJlcis9MTtoJiYoaFtyLiRpc1VzYWJsZV0oKT9oW3IuJGV4dHJhXS5udW1iZXJPZlVzZSs9MTpoPW51bGwpO249aHx8bltyLiRnZXROZXh0UGFnZV0oKTt5aWVsZCBudWxsfX19dC5UZW1wbGF0ZT1UZW1wbGF0ZTtjbGFzcyBUZXh0IGV4dGVuZHMgci5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpe3JldHVybiEwfVtyLiRvbkNoaWxkXShlKXtpZihlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnhodG1sLmlkKXt0aGlzW3IuJGNvbnRlbnRdPWU7cmV0dXJuITB9KDAsYy53YXJuKShgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtyLiRub2RlTmFtZV19LmApO3JldHVybiExfVtyLiRvblRleHRdKGUpe3RoaXNbci4kY29udGVudF1pbnN0YW5jZW9mIHIuWEZBT2JqZWN0fHxzdXBlcltyLiRvblRleHRdKGUpfVtyLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbci4kY29udGVudF0mJih0aGlzW3IuJGNvbnRlbnRdPXRoaXNbci4kY29udGVudF0ucmVwbGFjZSgvXHJcbi9nLCJcbiIpKX1bci4kZ2V0RXh0cmFdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW3IuJGNvbnRlbnRdP3RoaXNbci4kY29udGVudF0uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tyLiRjb250ZW50XVtyLiR0ZXh0XSgpfVtyLiR0b0hUTUxdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tyLiRjb250ZW50XSl7Y29uc3QgZT12YWx1ZVRvSHRtbCh0aGlzW3IuJGNvbnRlbnRdKS5odG1sO2lmKHRoaXNbci4kY29udGVudF0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW3IuJGNvbnRlbnRdLnNwbGl0KCJcdTIwMjkiKS5tYXAoKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57ZS5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSk7cmV0dXJuIGV9KSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSl9ZWxzZSBpZigvW1x1MjAyOFxuXS8udGVzdCh0aGlzW3IuJGNvbnRlbnRdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tyLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gby5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbci4kY29udGVudF1bci4kdG9IVE1MXShlKX19dC5UZXh0PVRleHQ7Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD0oMCxvLmdldEludGVnZXIpKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT0oMCxvLmdldFN0cmluZ09wdGlvbikoZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGE7Y29uc3Qgbj10aGlzW3IuJGdldFBhcmVudF0oKVtyLiRnZXRQYXJlbnRdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW4gaW5zdGFuY2VvZiBEcmF3PzE6MCk7YT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6bltyLiRkYXRhXSYmbltyLiRkYXRhXVtyLiR1aWRdfHxuW3IuJHVpZF0sZmllbGRJZDpuW3IuJHVpZF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBvLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyByLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3IuJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tyLiRjb250ZW50XS50cmltKCk7dGhpc1tyLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIHIuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgci5YRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249KDAsby5nZXRTdHJpbmdPcHRpb24pKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bci4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihkLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W3IuJGdldEV4dHJhXSgpe2lmKHZvaWQgMD09PXRoaXNbci4kZXh0cmFdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe3RoaXNbci4kZXh0cmFdPXQ7cmV0dXJuIHR9fXRoaXNbci4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbci4kZXh0cmFdfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tyLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W3IuJHRvSFRNTF0oZSk6by5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PSgwLG8uZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9KDAsby5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgci5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZCwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9KDAsby5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD0oMCxvLmdldFJlbGV2YW50KShlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3IuJHNldFZhbHVlXShlKXtjb25zdCB0PXRoaXNbci4kZ2V0UGFyZW50XSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aSYmdC51aS5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tyLiRhcHBlbmRDaGlsZF0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdO3JldHVybn1jb25zdCBhPWVbci4kbm9kZU5hbWVdO2lmKG51bGw9PT10aGlzW2FdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiByLlhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbci4kcmVtb3ZlQ2hpbGRdKHQpfX10aGlzW2Vbci4kbm9kZU5hbWVdXT1lO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtyLiRjb250ZW50XT1lW3IuJGNvbnRlbnRdfVtyLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbci4kY29udGVudF0/dGhpcy5leERhdGFbci4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW3IuJGNvbnRlbnRdW3IuJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIHIuWEZBT2JqZWN0KXJldHVybih0W3IuJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3IuJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGE9dGhpc1t0XTtpZihhIGluc3RhbmNlb2Ygci5YRkFPYmplY3QpcmV0dXJuIGFbci4kdG9IVE1MXShlKX1yZXR1cm4gby5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPVZhbHVlO2NsYXNzIFZhcmlhYmxlcyBleHRlbmRzIHIuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGQsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IHIuWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyByLlhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgci5YRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IHIuWEZBT2JqZWN0QXJyYXl9W3IuJGlzVHJhbnNwYXJlbnRdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTthW3IuJHNldFNldEF0dHJpYnV0ZXNdKHQpO3JldHVybiBhfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IFBhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fXQuVGVtcGxhdGVOYW1lc3BhY2U9VGVtcGxhdGVOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5hZGRIVE1MPWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IGk9ZVtyLiRleHRyYV0scz1pLmF2YWlsYWJsZVNwYWNlLFtvLGMsbCxoXT1hO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6aS53aWR0aD1NYXRoLm1heChpLndpZHRoLG8rbCk7aS5oZWlnaHQ9TWF0aC5tYXgoaS5oZWlnaHQsYytoKTtpLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWkubGluZXx8MT09PWkuYXR0ZW1wdCl7aS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7aS5jaGlsZHJlbi5wdXNoKGkubGluZSk7aS5udW1iZXJJbkxpbmU9MH1pLm51bWJlckluTGluZSs9MTtpLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09aS5hdHRlbXB0KXtpLmN1cnJlbnRXaWR0aCs9bDtpLmhlaWdodD1NYXRoLm1heChpLmhlaWdodCxpLnByZXZIZWlnaHQraCl9ZWxzZXtpLmN1cnJlbnRXaWR0aD1sO2kucHJldkhlaWdodD1pLmhlaWdodDtpLmhlaWdodCs9aDtpLmF0dGVtcHQ9MH1pLndpZHRoPU1hdGgubWF4KGkud2lkdGgsaS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2kuY2hpbGRyZW4ucHVzaCh0KTtpLndpZHRoKz1sO2kuaGVpZ2h0PU1hdGgubWF4KGkuaGVpZ2h0LGgpO2NvbnN0IGU9KDAsbi5tZWFzdXJlVG9TdHJpbmcpKGkuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBpLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjppLndpZHRoPU1hdGgubWluKHMud2lkdGgsTWF0aC5tYXgoaS53aWR0aCxsKSk7aS5oZWlnaHQrPWg7aS5jaGlsZHJlbi5wdXNoKHQpfX07dC5jaGVja0RpbWVuc2lvbnM9ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpLG49YVtyLiRleHRyYV0mJmFbci4kZXh0cmFdLmF0dGVtcHR8fDAsWyxpLHMsb109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LG49IiI9PT1lLmg/TmFOOmUuaCxbaSxzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltpLHNdPVtyLzIsbl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbaSxzXT1bMCxuXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbaSxzXT1bcixuXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W2ksc109W3IvMixuLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W2ksc109WzAsbi8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbaSxzXT1bcixuLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbaSxzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltpLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstaSwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsaV07W3Isbl09W24sLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtpLHNdO1tyLG5dPVstciwtbl07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLWldO1tyLG5dPVstbixyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLG4pLE1hdGguYWJzKHIpLE1hdGguYWJzKG4pXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PW4/ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT8iIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTI6dC53aWR0aD4yOiEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigiIiE9PWUudz9NYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fDA9PT1hW3IuJGV4dHJhXS5udW1iZXJJbkxpbmUmJnQuaGVpZ2h0PjI6dC53aWR0aD4yKTohIWVbci4kZ2V0VGVtcGxhdGVSb290XSgpW3IuJGV4dHJhXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQoby10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjIpO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW3IuJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWFbci4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChvLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChvK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO2NvbnN0IGM9ZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYTtyZXR1cm4gbytpPmMuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtyLiRnZXRUZW1wbGF0ZVJvb3RdKClbci4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG8tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX07dC5mbHVzaEhUTUw9ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW3IuJGV4dHJhXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtyLiRleHRyYV0uYXR0cmlidXRlcyxjaGlsZHJlbjplW3IuJGV4dHJhXS5jaGlsZHJlbn07aWYoZVtyLiRleHRyYV0uZmFpbGluZ05vZGUpe2NvbnN0IGE9ZVtyLiRleHRyYV0uZmFpbGluZ05vZGVbci4kZmx1c2hIVE1MXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfWlmKDA9PT10LmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gbnVsbDtyZXR1cm4gdH07dC5nZXRBdmFpbGFibGVTcGFjZT1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbci4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxuPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbci4kZXh0cmFdLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtbi1lW3IuJGV4dHJhXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtyLiRleHRyYV0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOmVbci4kZXh0cmFdLmNvbHVtbldpZHRocy5zbGljZShlW3IuJGV4dHJhXS5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpKSxoZWlnaHQ6dC5oZWlnaHQtbn07Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJue3dpZHRoOnQud2lkdGgtbixoZWlnaHQ6dC5oZWlnaHQtYS1lW3IuJGV4dHJhXS5oZWlnaHR9O2RlZmF1bHQ6cmV0dXJuIHR9fTt2YXIgcj1hKDc1KSxuPWEoODIpO2Z1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmNvbXB1dGVCYm94PWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgbjtpZigiIiE9PWUudyYmIiIhPT1lLmgpbj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybiBudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2k9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIGk9TWF0aC5taW4oZS5tYXhXLGEud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcoaSl9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsYS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfW49W2UueCxlLnksaSxzXX1yZXR1cm4gbn07dC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOmF9PXQse3N0eWxlOm59PWEsaT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07YS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczphLGluc2V0czpzfT1lLmJvcmRlcltyLiRleHRyYV07bGV0IG8sYyxsPXNbMF0saD1zWzNdO2NvbnN0IHU9c1swXStzWzJdLGQ9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmwtPWFbMF0vMjtoLT1hWzNdLzI7bz1gY2FsYygxMDAlICsgJHsoYVsxXSthWzNdKS8yLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAkeyhhWzBdK2FbMl0pLzItdX1weClgO2JyZWFrO2Nhc2UibGVmdCI6bC09YVswXTtoLT1hWzNdO289YGNhbGMoMTAwJSArICR7YVsxXSthWzNdLWR9cHgpYDtjPWBjYWxjKDEwMCUgKyAke2FbMF0rYVsyXS11fXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bz1kP2BjYWxjKDEwMCUgLSAke2R9cHgpYDoiMTAwJSI7Yz11P2BjYWxjKDEwMCUgLSAke3V9cHgpYDoiMTAwJSJ9Y29uc3QgZj1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmZi5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBnPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmYsc3R5bGU6e3RvcDpgJHtsfXB4YCxsZWZ0OmAke2h9cHhgLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PW5bZV0pe2cuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfWkuY2hpbGRyZW4ucHVzaChnLHQpfWVsc2UgaS5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PW5bZV0pe2kuYXR0cmlidXRlcy5zdHlsZVtlXT1uW2VdO2RlbGV0ZSBuW2VdfSJhYnNvbHV0ZSI9PT1uLnBvc2l0aW9uP2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiOmkuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO2RlbGV0ZSBuLnBvc2l0aW9uO2lmKG4uYWxpZ25TZWxmKXtpLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPW4uYWxpZ25TZWxmO2RlbGV0ZSBuLmFsaWduU2VsZn1yZXR1cm4gaX07dC5maXhEaW1lbnNpb25zPWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYodC5sYXlvdXQmJnQubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgYT10W3IuJGV4dHJhXSxuPWUuY29sU3BhbjtsZXQgaTtpPS0xPT09bj9hLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6YS5jb2x1bW5XaWR0aHMuc2xpY2UoYS5jdXJyZW50Q29sdW1uLGEuY3VycmVudENvbHVtbituKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKGkpfHwoZS53PWkpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfTt0LmZpeFRleHRJbmRlbnQ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PSgwLGkuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLHI9KDAsaS5nZXRNZWFzdXJlbWVudCkoZVthXSwiMHB4Iik7ZVthXT1yLXQrInB4In07dC5maXhVUkw9ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH07dC5pc1ByaW50T25seT1pc1ByaW50T25seTt0LmxheW91dENsYXNzPWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19O3QubGF5b3V0Tm9kZT1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGE9bnVsbCxuPW51bGwsaT0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbz0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O289ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IGM9bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7Yz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGg9ZS5mb250O2lmKCFoKXtjb25zdCB0PWVbci4kZ2V0VGVtcGxhdGVSb290XSgpO2xldCBhPWVbci4kZ2V0UGFyZW50XSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2g9YS5mb250O2JyZWFrfWE9YVtyLiRnZXRQYXJlbnRdKCl9fWNvbnN0IHU9KGUud3x8dC53aWR0aCktcyxkPWVbci4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbci4kY29udGVudF0mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtyLiRjb250ZW50XSxoLGwsYyxkLHUpO249dC53aWR0aDthPXQuaGVpZ2h0O2k9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtyLiR0ZXh0XSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGgsbCxjLGQsdSk7bj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09bnx8ZS53fHwobis9cyk7bnVsbD09PWF8fGUuaHx8KGErPW8pfXJldHVybnt3Om4saDphLGlzQnJva2VuOml9fTt0Lm1lYXN1cmVUb1N0cmluZz1tZWFzdXJlVG9TdHJpbmc7dC5zZXRBY2Nlc3M9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fTt0LnNldEZvbnRGYW1pbHk9ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsYSxyKXtpZighYSl7ZGVsZXRlIHIuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgbj0oMCxpLnN0cmlwUXVvdGVzKShlLnR5cGVmYWNlKTtyLmZvbnRGYW1pbHk9YCIke259ImA7Y29uc3Qgbz1hLmZpbmQobik7aWYobyl7Y29uc3R7Zm9udEZhbWlseTphfT1vLnJlZ3VsYXIuY3NzRm9udEluZm87YSE9PW4mJihyLmZvbnRGYW1pbHk9YCIke2F9ImApO2NvbnN0IGk9Z2V0Q3VycmVudFBhcmEodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKHIubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKHIubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fTt0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW3IuJGdldFN1YmZvcm1QYXJlbnRdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fTt0LnNldFBhcmE9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzJiZhLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IG49Z2V0Q3VycmVudFBhcmEoZSk7aWYobil7Y29uc3QgZT1hLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKG4udkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9bltyLiR0b1N0eWxlXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fTt0LnRvU3R5bGU9ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgaSBvZiB0KXtjb25zdCB0PWVbaV07aWYobnVsbCE9PXQpaWYoYy5oYXNPd25Qcm9wZXJ0eShpKSljW2ldKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2Ygci5YRkFPYmplY3Qpe2NvbnN0IGU9dFtyLiR0b1N0eWxlXSgpO2U/T2JqZWN0LmFzc2lnbihhLGUpOigwLG4ud2FybikoYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHtpfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBhfTt2YXIgcj1hKDc1KSxuPWEoMiksaT1hKDc2KSxzPWEoODMpLG89YSg4NCk7ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgYz17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKGEmJighYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBhPWVbci4kZ2V0U3ViZm9ybVBhcmVudF0oKTtsZXQgbj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQmJmEubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW3IuJGV4dHJhXSxpPWUuY29sU3BhbjtsZXQgcztpZigtMT09PWkpe3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0wfWVsc2V7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK2kpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4ocyl8fChuPWUudz1zKX10LndpZHRoPSIiIT09bj9tZWFzdXJlVG9TdHJpbmcobik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVtyLiRnZXRTdWJmb3JtUGFyZW50XSgpO2lmKCFhfHwhYS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1hLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW3IuJG5vZGVOYW1lXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bci4kdG9TdHlsZV0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsYSxuLGkscyl7Y29uc3QgYz1uZXcgby5UZXh0TWVhc3VyZSh0LGEsbixpKTsic3RyaW5nIj09dHlwZW9mIGU/Yy5hZGRTdHJpbmcoZSk6ZVtyLiRwdXNoR2x5cGhzXShjKTtyZXR1cm4gYy5jb21wdXRlKHMpfWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW3IuJGdldFRlbXBsYXRlUm9vdF0oKVtyLiRleHRyYV0ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkZvbnRGaW5kZXI9dm9pZCAwO3QuZ2V0TWV0cmljcz1mdW5jdGlvbiBnZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PSgwLG4uc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtyLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7YT1zZWxlY3RGb250KGUsaSl9aWYoIWEpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLHM9YS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsYS5saW5lSGVpZ2h0KToxLjIsbz12b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnMqaSxsaW5lR2FwOm8qaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxzLW8pKml9fTt0LnNlbGVjdEZvbnQ9c2VsZWN0Rm9udDt2YXIgcj1hKDc1KSxuPWEoNzYpLGk9YSgyKTt0LkZvbnRGaW5kZXI9Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgbj0iIjtjb25zdCBpPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9uPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYobj0iYm9sZCIpO2lmKCFuKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lJiZlLnBzTmFtZS5pbmNsdWRlcygiQm9sZCIpKSYmKG49ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZSYmKGUucHNOYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWUuZW5kc1dpdGgoIkl0IikpKSYmKG4rPSJpdGFsaWMiKX1ufHwobj0icmVndWxhciIpO3Jbbl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBhPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihhKXJldHVybiBhO2NvbnN0IHI9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCBuPWUucmVwbGFjZShyLCIiKTthPXRoaXMuZm9udHMuZ2V0KG4pO2lmKGEpe3RoaXMuY2FjaGUuc2V0KGUsYSk7cmV0dXJuIGF9bj1uLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZShyLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7bj1uLnJlcGxhY2UoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lJiZlLnJlZ3VsYXIubmFtZS5yZXBsYWNlKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChuKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJigwLGkud2FybikoYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpOygwLGkud2FybikoYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuVGV4dE1lYXN1cmU9dm9pZCAwO3ZhciByPWEoODMpO2NsYXNzIEZvbnRJbmZve2NvbnN0cnVjdG9yKGUsdCxhLG4pe3RoaXMubGluZUhlaWdodD1hO3RoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9O2lmKCFlKXtbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKTtyZXR1cm59dGhpcy54ZmFGb250PXt0eXBlZmFjZTplLnR5cGVmYWNlLHBvc3R1cmU6ZS5wb3N0dXJlLHdlaWdodDplLndlaWdodCxzaXplOmUuc2l6ZSxsZXR0ZXJTcGFjaW5nOmUubGV0dGVyU3BhY2luZ307Y29uc3QgaT1uLmZpbmQoZS50eXBlZmFjZSk7aWYoaSl7dGhpcy5wZGZGb250PSgwLHIuc2VsZWN0Rm9udCkoZSxpKTt0aGlzLnBkZkZvbnR8fChbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChuKSl9ZWxzZVt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KG4pfWRlZmF1bHRGb250KGUpe2NvbnN0IHQ9ZS5maW5kKCJIZWx2ZXRpY2EiLCExKXx8ZS5maW5kKCJNeXJpYWQgUHJvIiwhMSl8fGUuZmluZCgiQXJpYWwiLCExKXx8ZS5nZXREZWZhdWx0KCk7aWYodCYmdC5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxhLHIpXX1wdXNoRGF0YShlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1yLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09ci5wYXJhTWFyZ2luW2VdKTtjb25zdCBuPW5ldyBGb250SW5mbyhlLHQsYXx8ci5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7bi5wZGZGb250fHwobi5wZGZGb250PXIucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKG4pfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fXQuVGV4dE1lYXN1cmU9Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsYSxyKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGEpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxhKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGE9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCByPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLG49dC5wZGZGb250LGk9bi5saW5lSGVpZ2h0fHwxLjIscz10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixpKSphLG89aS0odm9pZCAwPT09bi5saW5lR2FwPy4yOm4ubGluZUdhcCksYz1NYXRoLm1heCgxLG8pKmEsbD1hLzFlMyxoPW4uZGVmYXVsdFdpZHRofHxuLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9bi5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksYT1uLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqbCtyLHMsYyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2EsMS4yKmEsYSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsbj0wLGk9MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihpK2g+ZSl7cj1NYXRoLm1heChyLGkpO2k9MDtuKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1pO2krPWg7dD1sfWVsc2UgaWYoaStoPmUpe24rPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtpPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsaSk7aT1ofW89ITA7Yz0hMX1lbHNle2krPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsaSk7bis9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0Om4saXNCcm9rZW46b319fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkRhdGFIYW5kbGVyPXZvaWQgMDt2YXIgcj1hKDc1KTt0LkRhdGFIYW5kbGVyPWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbci4kZ2V0Q2hpbGRyZW5dKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBhPXQuYXQoLTEpLFtuLGldPWE7aWYobisxPT09aS5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1pWysrYVswXV0sbz1lLmdldChzW3IuJHVpZF0pO2lmKG8pc1tyLiRzZXRWYWx1ZV0obyk7ZWxzZXtjb25zdCB0PXNbci4kZ2V0QXR0cmlidXRlc10oKTtmb3IoY29uc3QgYSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGFbci4kdWlkXSk7aWYodCl7YVtyLiRzZXRWYWx1ZV0odCk7YnJlYWt9fX1jb25zdCBjPXNbci4kZ2V0Q2hpbGRyZW5dKCk7Yy5sZW5ndGg+MCYmdC5wdXNoKFstMSxjXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbci4kZ2V0Q2hpbGRyZW5dKCkpImRhdGEiIT09ZVtyLiRub2RlTmFtZV0mJmVbci4kdG9TdHJpbmddKGEpO3RoaXMuZGF0YVtyLiR0b1N0cmluZ10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19fSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWEZBUGFyc2VyPXZvaWQgMDt2YXIgcj1hKDc1KSxuPWEoNjQpLGk9YSg4Nykscz1hKDIpO2NsYXNzIFhGQVBhcnNlciBleHRlbmRzIG4uWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3RvcihlPW51bGwsdD0hMSl7c3VwZXIoKTt0aGlzLl9idWlsZGVyPW5ldyBpLkJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPW4uWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3I7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1uLlhNTFBhcnNlckVycm9yQ29kZS5Ob0Vycm9yKXt0aGlzLl9jdXJyZW50W3IuJGZpbmFsaXplXSgpO3JldHVybiB0aGlzLl9jdXJyZW50LmVsZW1lbnR9fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtyLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbci4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W3IuJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBhPW51bGwsbj1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6byx2YWx1ZTpjfW9mIGUpaWYoInhtbG5zIj09PW8pYT8oMCxzLndhcm4pKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTphPWM7ZWxzZSBpZihvLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPW8uc3Vic3RyaW5nKCJ4bWxuczoiLmxlbmd0aCk7bnx8KG49W10pO24ucHVzaCh7cHJlZml4OmUsdmFsdWU6Y30pfWVsc2V7Y29uc3QgZT1vLmluZGV4T2YoIjoiKTtpZigtMT09PWUpaVtvXT1jO2Vsc2V7bGV0IHQ9aVtyLiRuc0F0dHJpYnV0ZXNdO3R8fCh0PWlbci4kbnNBdHRyaWJ1dGVzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtjb25zdFthLG5dPVtvLnNsaWNlKDAsZSksby5zbGljZShlKzEpXTtsZXQgcz10W2FdO3N8fChzPXRbYV09T2JqZWN0LmNyZWF0ZShudWxsKSk7c1tuXT1jfX1yZXR1cm5bYSxuLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbbixpLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtvLGNdPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxsPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4OmMsbmFtZTpvLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6bixwcmVmaXhlczppfSk7bFtyLiRnbG9iYWxEYXRhXT10aGlzLl9nbG9iYWxEYXRhO2lmKGEpe2xbci4kZmluYWxpemVdKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXShsKSYmbFtyLiRzZXRJZF0odGhpcy5faWRzKTtsW3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1sfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbci4kaXNDREFUQVhtbF0oKSYmInN0cmluZyI9PXR5cGVvZiB0W3IuJGNvbnRlbnRdKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IGE9ZS5wYXJzZSh0W3IuJGNvbnRlbnRdKTt0W3IuJGNvbnRlbnRdPW51bGw7dFtyLiRvbkNoaWxkXShhKX10W3IuJGZpbmFsaXplXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtyLiRvbkNoaWxkXSh0KSYmdFtyLiRzZXRJZF0odGhpcy5faWRzKTt0W3IuJGNsZWFuXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX10LlhGQVBhcnNlcj1YRkFQYXJzZXJ9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5CdWlsZGVyPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpLGk9YSg4OCkscz1hKDgwKSxvPWEoOTcpLGM9YSgyKTtjbGFzcyBSb290IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbbi4kaWRzXT1lfVtuLiRvbkNoaWxkXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bbi4kZmluYWxpemVdKCl7c3VwZXJbbi4kZmluYWxpemVdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSl7dGhpc1tuLiRpZHNdLnNldChuLiRyb290LHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW24uJHJlc29sdmVQcm90b3R5cGVzXSh0aGlzW24uJGlkc10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtuLiRpZHNdPXRoaXNbbi4kaWRzXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbi4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyLk5hbWVzcGFjZUlkcykubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpzLHByZWZpeGVzOm99KXtjb25zdCBjPW51bGwhPT1zO2lmKGMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocyl9byYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KG8pO2lmKGEuaGFzT3duUHJvcGVydHkobi4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9YVtuLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W2Esbl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoYSk9PT1lKXtyPXt4ZmE6bn07YnJlYWt9fXI/YVtuLiRuc0F0dHJpYnV0ZXNdPXI6ZGVsZXRlIGFbbi4kbnNBdHRyaWJ1dGVzXX1jb25zdCBsPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLGg9bCYmbFtyLiRidWlsZFhGQU9iamVjdF0odCxhKXx8bmV3IEVtcHR5O2hbbi4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKzsoY3x8b3x8aFtuLiRpc05zQWdub3N0aWNdKCkpJiYoaFtuLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmMscHJlZml4ZXM6byxuc0Fnbm9zdGljOmhbbi4kaXNOc0Fnbm9zdGljXSgpfSk7cmV0dXJuIGh9aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6bn1db2YgT2JqZWN0LmVudHJpZXMoci5OYW1lc3BhY2VJZHMpKWlmKG4oZSkpe3Q9aS5OYW1lc3BhY2VTZXRVcFthXTtpZih0KXt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fWJyZWFrfXQ9bmV3IG8uVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOmF9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSk7bGV0IHI9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFyKXtyPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LHIpfXIucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQmJnQubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpOygwLGMud2FybikoYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7ciYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgcj1hKDg5KSxuPWEoOTApLGk9YSg5MSkscz1hKDkyKSxvPWEoOTMpLGM9YSg5NCksbD1hKDgwKSxoPWEoOTUpLHU9YSg5Nik7Y29uc3QgZD17Y29uZmlnOnIuQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246bi5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Db25maWdOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSksaT1hKDc2KSxzPWEoMik7Y29uc3Qgbz1yLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgbi5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBBZ2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBBbHdheXNFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhbWQiKX19Y2xhc3MgQXJlYSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImFyZWEiKTt0aGlzLmxldmVsPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImF0dHJpYnV0ZXMiLFsicHJlc2VydmUiLCJkZWxlZ2F0ZSIsImlnbm9yZSJdKX19Y2xhc3MgQXV0b1NhdmUgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmF0Y2hPdXRwdXQiKTt0aGlzLmZvcm1hdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEJlaGF2aW9yT3ZlcnJpZGUgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiYmVoYXZpb3JPdmVycmlkZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBuLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiY3JlYXRvciIpfX1jbGFzcyBDdXJyZW50UGFnZSBleHRlbmRzIG4uSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBuLlhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD0oMCxpLmdldFN0cmluZ09wdGlvbikoZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVtYmVkIil9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHQiKX19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLGE9dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgciBvZiBhLnNwbGl0KCIsIikubWFwKChlPT5lLnRyaW0oKSkpLmZpbHRlcigoZT0+ISFlKSkpe3I9ci5zcGxpdCgiLSIsMikubWFwKChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KSk7MT09PXIubGVuZ3RoJiZyLnB1c2goclswXSk7ZS5wdXNoKHIpfXJldHVybigwLHMuc2hhZG93KSh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImV4Y2x1ZGUiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIEZvbnRJbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibGluZWFyaXplZCIpfX1jbGFzcyBMb2NhbGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sImxvZyIsITApO3RoaXMubW9kZT1udWxsO3RoaXMudGhyZXNob2xkPW51bGw7dGhpcy50bz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE1hcEVsZW1lbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLmVxdWF0ZVJhbmdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVkaXVtSW5mbyIsITApO3RoaXMubWFwPW51bGx9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJtZXNzYWdlIiwhMCk7dGhpcy5tc2dJZD1udWxsO3RoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgTWVzc2FnaW5nIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBNb2RlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm1zZ0lkIiwxLChlPT5lPj0xKSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhY2tldHMiKX1bbi4kZmluYWxpemVdKCl7IioiIT09dGhpc1tuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpKX19Y2xhc3MgUGFnZU9mZnNldCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VPZmZzZXQiKTt0aGlzLng9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2VSYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKXQucHVzaChlLnNsaWNlKGEsYSsyKSk7dGhpc1tuLiRjb250ZW50XT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBuLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGFydCIsMSwoZT0+ITEpKX19Y2xhc3MgUGNsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIFBpY3R1cmUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBuLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyYW5nZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywicmVjb3JkIil9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09dGhpc1tuLiRjb250ZW50XS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW24uJGNvbnRlbnRdLDEwKTshaXNOYU4oZSkmJmU+PTAmJih0aGlzW24uJGNvbnRlbnRdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJyZWxldmFudCIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgbi5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmFtZSIpfVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0udHJpbSgpOyh0aGlzW24uJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbi4kY29udGVudF0pKSYmKDAscy53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzY3JpcHQiLCEwKTt0aGlzLmN1cnJlbnRQYWdlPW51bGw7dGhpcy5leGNsdWRlPW51bGw7dGhpcy5ydW5TY3JpcHRzPW51bGx9fWNsYXNzIFNjcmlwdE1vZGVsIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInNpbGVudFByaW50IiwhMCk7dGhpcy5hZGRTaWxlbnRQcmludD1udWxsO3RoaXMucHJpbnRlck5hbWU9bnVsbH19Y2xhc3MgU3RhcGxlIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3RhcGxlIik7dGhpcy5tb2RlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN0YXJ0UGFnZSIsMCwoZT0+ITApKX19Y2xhc3MgU3VibWl0Rm9ybWF0IGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgbi5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIG4uT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIobywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgbi5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0YWdnZWQiKX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidXJpIil9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgbi5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIG4uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBWZXJzaW9uQ29udHJvbCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3ZWJDbGllbnQiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFdoaXRlc3BhY2UgZXh0ZW5kcyBuLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIG4uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ3aW5kb3ciKX1bbi4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW24uJGNvbnRlbnRdPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tuLiRjb250ZW50XT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywieGRjIiwhMCk7dGhpcy51cmk9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG8sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIobywienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBGb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3RhdGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPUNvbmZpZ05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkNvbm5lY3Rpb25TZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgbi5YRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBuLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFVyaSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT1Db25uZWN0aW9uU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3Nyk7Y29uc3QgaT1uLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZDtjbGFzcyBEYXRhIGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiZGF0YSIsZSl9W3IuJGlzTnNBZ25vc3RpY10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyByLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W3IuJG9uQ2hpbGRdKGUpe2NvbnN0IHQ9ZVtyLiRub2RlTmFtZV07KCJkYXRhIj09PXQmJmVbci4kbmFtZXNwYWNlSWRdPT09aXx8IlNpZ25hdHVyZSI9PT10JiZlW3IuJG5hbWVzcGFjZUlkXT09PW4uTmFtZXNwYWNlSWRzLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbci4kYXBwZW5kQ2hpbGRdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1EYXRhc2V0c05hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LkxvY2FsZVNldE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KSxpPWEoNzYpO2NvbnN0IHM9ci5OYW1lc3BhY2VJZHMubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBuLlhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBuLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBuLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBuLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IG4uWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIExvY2FsZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBMb2NhbGVTZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgbi5YRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IG4uWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgbi5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9KDAsaS5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBuLlhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IG4uWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIG4uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgbi5YRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBuLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgbi5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgbi5YRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IG4uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9TG9jYWxlU2V0TmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU2lnbmF0dXJlTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NvbnN0IGk9ci5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIFNpZ25hdHVyZSBleHRlbmRzIG4uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9fXQuU2lnbmF0dXJlTmFtZXNwYWNlPVNpZ25hdHVyZU5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzcpLG49YSg3NSk7Y29uc3QgaT1yLk5hbWVzcGFjZUlkcy5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW3IuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX10LlN0eWxlc2hlZXROYW1lc3BhY2U9U3R5bGVzaGVldE5hbWVzcGFjZX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhkcE5hbWVzcGFjZT12b2lkIDA7dmFyIHI9YSg3Nyksbj1hKDc1KTtjb25zdCBpPXIuTmFtZXNwYWNlSWRzLnhkcC5pZDtjbGFzcyBYZHAgZXh0ZW5kcyBuLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IG4uWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtuLiRvbkNoaWxkQ2hlY2tdKGUpe2NvbnN0IHQ9ci5OYW1lc3BhY2VJZHNbZVtuLiRub2RlTmFtZV1dO3JldHVybiB0JiZlW24uJG5hbWVzcGFjZUlkXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbci4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX19dC5YZHBOYW1lc3BhY2U9WGRwTmFtZXNwYWNlfSwoZSx0LGEpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuWGh0bWxOYW1lc3BhY2U9dm9pZCAwO3ZhciByPWEoNzUpLG49YSg3NyksaT1hKDgyKSxzPWEoNzYpO2NvbnN0IG89bi5OYW1lc3BhY2VJZHMueGh0bWwuaWQsYz1TeW1ib2woKSxsPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksaD1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PmBzY2FsZVkoJHtNYXRoLm1heCgwLE1hdGgubWluKHBhcnNlSW50KGUpLzEwMCkpLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT57ZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpO3JldHVybigwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSl9XSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLHU9L1xzKy9nLGQ9L1tcclxuXSsvZyxmPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIG47Y29uc3Qgbz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1oLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHI9YTtlJiYocj0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGEsbykpO3QuZW5kc1dpdGgoInNjYWxlIik/bi50cmFuc2Zvcm0/bi50cmFuc2Zvcm09YCR7blt0XX0gJHtyfWA6bi50cmFuc2Zvcm09cjpuW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1yfW4uZm9udEZhbWlseSYmKDAsaS5zZXRGb250RmFtaWx5KSh7dHlwZWZhY2U6bi5mb250RmFtaWx5LHdlaWdodDpuLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6bi5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6by5mb250U2l6ZXx8MH0sdCx0W3IuJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIsbik7aWYoYSYmbi52ZXJ0aWNhbEFsaWduJiYiMHB4IiE9PW4udmVydGljYWxBbGlnbiYmbi5mb250U2l6ZSl7Y29uc3QgZT0uNTgzLHQ9LjMzMyxhPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKG4uZm9udFNpemUpO24uZm9udFNpemU9KDAsaS5tZWFzdXJlVG9TdHJpbmcpKGEqZSk7bi52ZXJ0aWNhbEFsaWduPSgwLGkubWVhc3VyZVRvU3RyaW5nKShNYXRoLnNpZ24oKDAscy5nZXRNZWFzdXJlbWVudCkobi52ZXJ0aWNhbEFsaWduKSkqYSp0KX1hJiZuLmZvbnRTaXplJiYobi5mb250U2l6ZT1gY2FsYygke24uZm9udFNpemV9ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgKTsoMCxpLmZpeFRleHRJbmRlbnQpKG4pO3JldHVybiBufWNvbnN0IGc9bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgci5YbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihvLHQpO3RoaXNbY109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bci4kY2xlYW5dKGUpe3N1cGVyW3IuJGNsZWFuXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxhXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtyLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gbC5oYXModCl9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W3IuJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIWcuaGFzKHRoaXNbci4kbm9kZU5hbWVdKX1bci4kb25UZXh0XShlLHQ9ITEpe2lmKHQpdGhpc1tjXT0hMDtlbHNle2U9ZS5yZXBsYWNlKGQsIiIpO3RoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlKHUsIiAiKSl9ZSYmKHRoaXNbci4kY29udGVudF0rPWUpfVtyLiRwdXNoR2x5cGhzXShlLHQ9ITApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXt0b3A6TmFOLGJvdHRvbTpOYU4sbGVmdDpOYU4scmlnaHQ6TmFOfTtsZXQgaT1udWxsO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5zdHlsZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSlzd2l0Y2goZSl7Y2FzZSJmb250LWZhbWlseSI6YS50eXBlZmFjZT0oMCxzLnN0cmlwUXVvdGVzKSh0KTticmVhaztjYXNlImZvbnQtc2l6ZSI6YS5zaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UiZm9udC13ZWlnaHQiOmEud2VpZ2h0PXQ7YnJlYWs7Y2FzZSJmb250LXN0eWxlIjphLnBvc3R1cmU9dDticmVhaztjYXNlImxldHRlci1zcGFjaW5nIjphLmxldHRlclNwYWNpbmc9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4iOmNvbnN0IGU9dC5zcGxpdCgvIFx0LykubWFwKChlPT4oMCxzLmdldE1lYXN1cmVtZW50KShlKSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOm4udG9wPW4uYm90dG9tPW4ubGVmdD1uLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOm4udG9wPW4uYm90dG9tPWVbMF07bi5sZWZ0PW4ucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6bi50b3A9ZVswXTtuLmJvdHRvbT1lWzJdO24ubGVmdD1uLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0Om4udG9wPWVbMF07bi5sZWZ0PWVbMV07bi5ib3R0b209ZVsyXTtuLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpuLnRvcD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOm4uYm90dG9tPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOm4ubGVmdD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6bi5yaWdodD0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpfWUucHVzaERhdGEoYSxuLGkpO2lmKHRoaXNbci4kY29udGVudF0pZS5hZGRTdHJpbmcodGhpc1tyLiRjb250ZW50XSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW3IuJGdldENoaWxkcmVuXSgpKSIjdGV4dCIhPT10W3IuJG5vZGVOYW1lXT90W3IuJHB1c2hHbHlwaHNdKGUpOmUuYWRkU3RyaW5nKHRbci4kY29udGVudF0pO3QmJmUucG9wRm9udCgpfVtyLiR0b0hUTUxdKGUpe2NvbnN0IHQ9W107dGhpc1tyLiRleHRyYV09e2NoaWxkcmVuOnR9O3RoaXNbci4kY2hpbGRyZW5Ub0hUTUxdKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW3IuJGNvbnRlbnRdKXJldHVybiBzLkhUTUxSZXN1bHQuRU1QVFk7bGV0IGE7YT10aGlzW2NdP3RoaXNbci4kY29udGVudF0/dGhpc1tyLiRjb250ZW50XS5yZXBsYWNlKGYsIlxuIik6dm9pZCAwOnRoaXNbci4kY29udGVudF18fHZvaWQgMDtyZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tyLiRub2RlTmFtZV0sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbY10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9KDAsaS5maXhVUkwpKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtyLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbci4kcHVzaEdseXBoc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W3IuJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltyLiR0b0hUTUxdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIHMuSFRNTFJlc3VsdC5FTVBUWTthLm5hbWU9ImRpdiI7YS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W3IuJHRleHRdKCl7cmV0dXJuIlxuIn1bci4kcHVzaEdseXBoc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3IuJHRvSFRNTF0oZSl7cmV0dXJuIHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bci4kdG9IVE1MXShlKXtjb25zdCB0PVtdO3RoaXNbci4kZXh0cmFdPXtjaGlsZHJlbjp0fTt0aGlzW3IuJGNoaWxkcmVuVG9IVE1MXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tyLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXMmJmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bci4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3IuJHB1c2hHbHlwaHNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bci4kcHVzaEdseXBoc10oZSl7c3VwZXJbci4kcHVzaEdseXBoc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W3IuJHRleHRdKCl7cmV0dXJuIHRoaXNbci4kZ2V0UGFyZW50XSgpW3IuJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbci4kdGV4dF0oKTpzdXBlcltyLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fXQuWGh0bWxOYW1lc3BhY2U9WGh0bWxOYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgcj1hKDc3KSxuPWEoNzUpO2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtyLiRidWlsZFhGQU9iamVjdF0oZSx0KXtyZXR1cm4gbmV3IG4uWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19dC5Vbmtub3duTmFtZXNwYWNlPVVua25vd25OYW1lc3BhY2V9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5EYXRhc2V0UmVhZGVyPXZvaWQgMDt2YXIgcj1hKDIpLG49YSg0KSxpPWEoNjQpO2Z1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuKDAsci5zdHJpbmdUb1VURjhTdHJpbmcpKGUpfWNhdGNoKHQpeygwLHIud2FybikoYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl7dGhpcy5ub2RlPXQ7dGhyb3cgbmV3IEVycm9yKCJBYm9ydGluZyBEYXRhc2V0WE1MUGFyc2VyLiIpfX19dC5EYXRhc2V0UmVhZGVyPWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IGkuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUuZGF0YXNldHMpLmRvY3VtZW50RWxlbWVudDtlbHNle2NvbnN0IHQ9bmV3IERhdGFzZXRYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KTt0cnl7dC5wYXJzZUZyb21TdHJpbmcoZVsieGRwOnhkcCJdKX1jYXRjaChlKXt9dGhpcy5ub2RlPXQubm9kZX19Z2V0VmFsdWUoZSl7aWYoIXRoaXMubm9kZXx8IWUpcmV0dXJuIiI7Y29uc3QgdD10aGlzLm5vZGUuc2VhcmNoTm9kZSgoMCxuLnBhcnNlWEZBUGF0aCkoZSksMCk7aWYoIXQpcmV0dXJuIiI7Y29uc3QgYT10LmZpcnN0Q2hpbGQ7cmV0dXJuIGEmJiJ2YWx1ZSI9PT1hLm5vZGVOYW1lP3QuY2hpbGRyZW4ubWFwKChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlhSZWY9dm9pZCAwO3ZhciByPWEoMiksbj1hKDMpLGk9YSg0KSxzPWEoMTUpLG89YSg1KSxjPWEoNjUpO3QuWFJlZj1jbGFzcyBYUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy54cmVmc3Rtcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IG4uUmVmU2V0O3RoaXMuc3RhdHM9bmV3IGkuRG9jU3RhdHModC5tc2dIYW5kbGVyKTt0aGlzLl9uZXdSZWZOdW09bnVsbH1nZXROZXdSZWYoKXtudWxsPT09dGhpcy5fbmV3UmVmTnVtJiYodGhpcy5fbmV3UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO3JldHVybiBuLlJlZi5nZXQodGhpcy5fbmV3UmVmTnVtKyssMCl9cmVzZXROZXdSZWYoKXt0aGlzLl9uZXdSZWZOdW09bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsYSxzO2lmKGUpeygwLHIud2FybikoIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7YT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci53YXJuKShgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBuLkRpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lJiZlLmxlbmd0aD9lWzBdOiIiO2Euc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgYy5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGEscix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtzPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxyLndhcm4pKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYocyBpbnN0YW5jZW9mIG4uRGljdCl0cnl7aWYocy5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIG4uRGljdCl7dGhpcy5yb290PXM7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLHIud2FybikoYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyByLkludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtjb25zdCB0PXRoaXMucmVhZFhSZWZUYWJsZShlKTtpZighKDAsbi5pc0NtZCkodCwidHJhaWxlciIpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCBhPWUuZ2V0T2JqKCk7YSBpbnN0YW5jZW9mIG4uRGljdHx8IWEuZGljdHx8KGE9YS5kaWN0KTtpZighKGEgaW5zdGFuY2VvZiBuLkRpY3QpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiBhfXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxhPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1hLnN0cmVhbVBvcztlLmJ1ZjE9YS5wYXJzZXJCdWYxO2UuYnVmMj1hLnBhcnNlckJ1ZjI7bGV0IGk7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGEpfHwhKCJlbnRyeUNvdW50ImluIGEpKXtpZigoMCxuLmlzQ21kKShpPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhazthLmZpcnN0RW50cnlOdW09aTthLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1hLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1hLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBpPWEuZW50cnlOdW07aTxvO2krKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1pO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCk7Yy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIG4uQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyByLkZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtzfSwgJHtvfWApOzA9PT1pJiZjLmZyZWUmJjE9PT1zJiYocz0wKTt0aGlzLmVudHJpZXNbaStzXXx8KHRoaXMuZW50cmllc1tpK3NdPWMpfWEuZW50cnlOdW09MDthLnN0cmVhbVBvcz10LnBvczthLnBhcnNlckJ1ZjE9ZS5idWYxO2EucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGEuZmlyc3RFbnRyeU51bTtkZWxldGUgYS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGl9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LGE9dC5nZXQoIlciKTtsZXQgcj10LmdldCgiSW5kZXgiKTtyfHwocj1bMCx0LmdldCgiU2l6ZSIpXSk7dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXRoaXMucmVhZFhSZWZTdHJlYW0oZSk7ZGVsZXRlIHRoaXMuc3RyZWFtU3RhdGU7cmV0dXJuIGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbYSxuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtvfSwgJHtjfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke299LCAke2N9YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1hJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3Uub2Zmc2V0PWw7dS5nZW49aDtzd2l0Y2goYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke2N9YCl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTA7dC5zdHJlYW1Qb3M9ZS5wb3M7cy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gcmVhZFRva2VuKGUsdCl7bGV0IGE9IiIscj1lW3RdO2Zvcig7MTAhPT1yJiYxMyE9PXImJjYwIT09ciYmISgrK3Q+PWUubGVuZ3RoKTspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUocik7cj1lW3RdfXJldHVybiBhfWZ1bmN0aW9uIHNraXBVbnRpbChlLHQsYSl7Y29uc3Qgcj1hLmxlbmd0aCxuPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDt0PG47KXtsZXQgbj0wO2Zvcig7bjxyJiZlW3Qrbl09PT1hW25dOykrK247aWYobj49cilicmVhazt0Kys7aSsrfXJldHVybiBpfWNvbnN0IGU9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLHQ9L1xiZW5kb2JqW1xiXHNdJC8sYT0vXHMrKFxkK1xzK1xkK1xzK29ialtcYlxzPF0pJC8sbz1uZXcgVWludDhBcnJheShbMTE2LDExNCw5NywxMDUsMTA4LDEwMSwxMTRdKSxjPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbD1uZXcgVWludDhBcnJheShbMTExLDk4LDEwNl0pLGg9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCB1PXRoaXMuc3RyZWFtO3UucG9zPTA7Y29uc3QgZD11LmdldEJ5dGVzKCksZj1kLmxlbmd0aDtsZXQgZz11LnN0YXJ0O2NvbnN0IHA9W10sbT1bXTtmb3IoO2c8Zjspe2xldCBuPWRbZ107aWYoOT09PW58fDEwPT09bnx8MTM9PT1ufHwzMj09PW4peysrZztjb250aW51ZX1pZigzNz09PW4pe2RveysrZztpZihnPj1mKWJyZWFrO249ZFtnXX13aGlsZSgxMCE9PW4mJjEzIT09bik7Y29udGludWV9Y29uc3QgYj1yZWFkVG9rZW4oZCxnKTtsZXQgeTtpZihiLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbNF0pKSl7Zys9c2tpcFVudGlsKGQsZyxvKTtwLnB1c2goZyk7Zys9c2tpcFVudGlsKGQsZyxjKX1lbHNlIGlmKHk9ZS5leGVjKGIpKXtjb25zdCBlPTB8eVsxXSxuPTB8eVsyXTtsZXQgbyxjPWcrYi5sZW5ndGgsZj0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUubWFrZVN1YlN0cmVhbShjKSl9KS5nZXRPYmooKTtmPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBpLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxyLndhcm4pKGBpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgke2J9KTogIiR7ZX0iLmApOmY9ITB9fWVsc2UgZj0hMDtmJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6Zy11LnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2Zvcig7YzxkLmxlbmd0aDspe2NvbnN0IGU9Yytza2lwVW50aWwoZCxjLGwpKzQ7bz1lLWc7Y29uc3Qgbj1NYXRoLm1heChlLTI1LGMpLGk9KDAsci5ieXRlc1RvU3RyaW5nKShkLnN1YmFycmF5KG4sZSkpO2lmKHQudGVzdChpKSlicmVhazt7Y29uc3QgZT1hLmV4ZWMoaSk7aWYoZSYmZVsxXSl7KDAsci53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCBuZXcgIm9iaiIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLicpO28tPWVbMV0ubGVuZ3RoO2JyZWFrfX1jPWV9Y29uc3QgcD1kLnN1YmFycmF5KGcsZytvKSx3PXNraXBVbnRpbChwLDAsaCk7aWYodzxvJiZwW3crNV08NjQpe20ucHVzaChnLXUuc3RhcnQpO3RoaXMueHJlZnN0bXNbZy11LnN0YXJ0XT0xfWcrPW99ZWxzZSBpZihiLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1iLmxlbmd0aHx8L1xzLy50ZXN0KGJbN10pKSl7cC5wdXNoKGcpO2crPXNraXBVbnRpbChkLGcsYyl9ZWxzZSBnKz1iLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIG0pe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1sZXQgYix5O2Zvcihjb25zdCBlIG9mWy4uLnAsImdlbmVyYXRpb25GYWxsYmFjayIsLi4ucF0pe2lmKCJnZW5lcmF0aW9uRmFsbGJhY2siPT09ZSl7aWYoIXkpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfXUucG9zPWU7Y29uc3QgdD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHUpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSksYT10LmdldE9iaigpO2lmKCEoMCxuLmlzQ21kKShhLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3Qgcj10LmdldE9iaigpO2lmKCEociBpbnN0YW5jZW9mIG4uRGljdCkpY29udGludWU7bGV0IGk9ITE7dHJ5e2NvbnN0IGU9ci5nZXQoIlJvb3QiKTtpZighKGUgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2NvbnN0IHQ9ZS5nZXQoIlBhZ2VzIik7aWYoISh0IGluc3RhbmNlb2Ygbi5EaWN0KSljb250aW51ZTtjb25zdCBhPXQuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIoYSkmJihpPSEwKX1jYXRjaChlKXt5PWU7Y29udGludWV9aWYoaSYmci5oYXMoIklEIikpcmV0dXJuIHI7Yj1yfWlmKGIpcmV0dXJuIGI7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7dGhyb3cgbmV3IHIuSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sYT1uZXcgU2V0O3RyeXtmb3IoO3RoaXMuc3RhcnRYUmVmUXVldWUubGVuZ3RoOyl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGEuaGFzKGUpKXsoMCxyLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1hLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgaT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgYyxsPWkuZ2V0T2JqKCk7aWYoKDAsbi5pc0NtZCkobCwieHJlZiIpKXtjPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShpKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9Yyk7bD1jLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIobCkpe2NvbnN0IGU9bDtpZighKGUgaW4gdGhpcy54cmVmc3Rtcykpe3RoaXMueHJlZnN0bXNbZV09MTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSl9fX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGwpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpLmdldE9iaigpKSYmKDAsbi5pc0NtZCkoaS5nZXRPYmooKSwib2JqIikmJihsPWkuZ2V0T2JqKCkpaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7Yz10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKGwpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1jKTtpZighYyl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiRmFpbGVkIHRvIHJlYWQgWFJlZiBzdHJlYW0iKX1sPWMuZ2V0KCJQcmV2Iik7TnVtYmVyLmlzSW50ZWdlcihsKT90aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobCk6bCBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gobC5udW0pO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1yZXR1cm4gdGhpcy50b3BEaWN0fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsci5pbmZvKSgiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSk7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKCFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbn1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2Ygbi5SZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLGk9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PWkpe2kgaW5zdGFuY2VvZiBuLkRpY3QmJiFpLm9iaklkJiYoaS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBpfWxldCBzPXRoaXMuZ2V0RW50cnkoYSk7aWYobnVsbD09PXMpe3RoaXMuX2NhY2hlTWFwLnNldChhLHMpO3JldHVybiBzfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpOygwLHIud2FybikoYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbi5DSVJDVUxBUl9SRUZ9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtzPXMudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxzLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscyx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9cyBpbnN0YW5jZW9mIG4uRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIHN9ZmV0Y2hVbmNvbXByZXNzZWQoZSx0LGE9ITEpe2NvbnN0IGM9ZS5nZW47bGV0IGw9ZS5udW07aWYodC5nZW4hPT1jKXtjb25zdCBzPWBJbmNvbnNpc3RlbnQgZ2VuZXJhdGlvbiBpbiBYUmVmOiAke2V9YDtpZih0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2smJnQuZ2VuPGMpeygwLHIud2Fybikocyk7cmV0dXJuIHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQobi5SZWYuZ2V0KGwsdC5nZW4pLHQsYSl9dGhyb3cgbmV3IGkuWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09bHx8ZiE9PWN8fCEoZyBpbnN0YW5jZW9mIG4uQ21kKSl0aHJvdyBuZXcgaS5YUmVmRW50cnlFeGNlcHRpb24oYEJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikpe2w9cGFyc2VJbnQoZy5jbWQuc3Vic3RyaW5nKDMpLDEwKTtpZighTnVtYmVyLmlzTmFOKGwpKXJldHVybiBsfXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3UuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obCxjKSk6dS5nZXRPYmooKSlpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KGwsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxhPSExKXtjb25zdCBjPXQub2Zmc2V0LGw9dGhpcy5mZXRjaChuLlJlZi5nZXQoYywwKSk7aWYoIShsIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBoPWwuZGljdC5nZXQoIkZpcnN0IiksdT1sLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIoaCl8fCFOdW1iZXIuaXNJbnRlZ2VyKHUpKXRocm93IG5ldyByLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZpcnN0IGFuZCBuIHBhcmFtZXRlcnMgZm9yIE9ialN0bSBzdHJlYW0iKTtsZXQgZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBmPW5ldyBBcnJheSh1KSxnPW5ldyBBcnJheSh1KTtmb3IobGV0IGU9MDtlPHU7KytlKXtjb25zdCB0PWQuZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IHIuRm9ybWF0RXJyb3IoYGludmFsaWQgb2JqZWN0IG51bWJlciBpbiB0aGUgT2JqU3RtIHN0cmVhbTogJHt0fWApO2NvbnN0IGE9ZC5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7ZltlXT10O2dbZV09YX1jb25zdCBwPShsLnN0YXJ0fHwwKStoLG09bmV3IEFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTsrK2Upe2NvbnN0IHQ9ZTx1LTE/Z1tlKzFdLWdbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgci5Gb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7ZD1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGwubWFrZVN1YlN0cmVhbShwK2dbZV0sdCxsLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYT1kLmdldE9iaigpO21bZV09YTtpZihhIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IG49ZltlXSxpPXRoaXMuZW50cmllc1tuXTtpJiZpLm9mZnNldD09PWMmJmkuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KG4sYSl9aWYodm9pZCAwPT09KHQ9bVt0Lmdlbl0pKXRocm93IG5ldyBpLlhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuLlJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBhO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoYS5iZWdpbixhLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LmlzTm9kZUpTPXZvaWQgMDtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWF9LChlLHQsYSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIHI9YSgyKTtjb25zdCBuPTEsaT0yLHM9MSxvPTIsYz0zLGw9NCxoPTUsdT02LGQ9NyxmPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbihlKXtlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLHIudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaChlLm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgci5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLk1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IHIuUGFzc3dvcmRFeGNlcHRpb24oZS5tZXNzYWdlLGUuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgci5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oZS5tZXNzYWdlLGUuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyByLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgci5Vbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSl9fXQuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuc291cmNlTmFtZT1lO3RoaXMudGFyZ2V0TmFtZT10O3RoaXMuY29tT2JqPWE7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPWU9Pntjb25zdCB0PWUuZGF0YTtpZih0LnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKHQuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KTtyZXR1cm59aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHtlfWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKHQuY2FsbGJhY2s9PT1uKWEucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYodC5jYWxsYmFjayE9PWkpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTthLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IHI9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscz10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uocih0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihyKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpzLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTpyfSl9KSwoZnVuY3Rpb24ocil7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6cyxjYWxsYmFjazppLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKHIpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsodCk6cih0LmRhdGEpfTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKyssaT0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09aTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LGEpfWNhdGNoKGUpe2kucmVqZWN0KGUpfXJldHVybiBpLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGEsbil7Y29uc3QgaT10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsYz10aGlzLnRhcmdldE5hbWUsbD10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDphPT57Y29uc3Qgcz0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV09e2NvbnRyb2xsZXI6YSxzdGFydENhbGw6cyxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxhY3Rpb246ZSxzdHJlYW1JZDppLGRhdGE6dCxkZXNpcmVkU2l6ZTphLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gcy5wcm9taXNlfSxwdWxsOmU9Pntjb25zdCB0PSgwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O2wucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmMsc3RyZWFtOnUsc3RyZWFtSWQ6aSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9PnsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD0oMCxyLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uY2FuY2VsQ2FsbD10O3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbaV0uaXNDbG9zZWQ9ITA7bC5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6YyxzdHJlYW06cyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfV9jcmVhdGVTdHJlYW1TaW5rKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxhPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqLHM9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlcltlLmFjdGlvbl0sdT17ZW5xdWV1ZShlLHM9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBjPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09cztpZihjPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsci5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1pLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpsLHN0cmVhbUlkOnQsY2h1bms6ZX0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06YyxzdHJlYW1JZDp0fSk7ZGVsZXRlIHMuc3RyZWFtU2lua3NbdF19fSxlcnJvcihlKXsoMCxyLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OigwLHIuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O3Uuc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO3UucmVhZHk9dS5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09dTtuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChvKGUuZGF0YSx1KSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scD10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBmOmUuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIGQ6ZS5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHU6aWYoIXApe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOmQsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9cC5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZwLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtwLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UocC5vblB1bGwmJnAub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6bixzdHJlYW06ZCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpkLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIGw6KDAsci5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgYzooMCxyLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgaDooMCxyLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyx0KTticmVhaztjYXNlIG86ZS5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLHQpO2JyZWFrO2Nhc2UgczppZighcClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dChwLm9uQ2FuY2VsJiZwLm9uQ2FuY2VsKHdyYXBSZWFzb24oZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO3Auc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtwLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKGUsdCl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtlLnN0YXJ0Q2FsbCYmZS5zdGFydENhbGwucHJvbWlzZSxlLnB1bGxDYWxsJiZlLnB1bGxDYWxsLnByb21pc2UsZS5jYW5jZWxDYWxsJiZlLmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKGUsdCxhKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt0LlBERldvcmtlclN0cmVhbT12b2lkIDA7dmFyIHI9YSgyKTt0LlBERldvcmtlclN0cmVhbT1jbGFzcyBQREZXb3JrZXJTdHJlYW17Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpeygwLHIuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZXb3JrZXJTdHJlYW1SZWFkZXIodGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3QgYT1uZXcgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIoZSx0LHRoaXMuX21zZ0hhbmRsZXIpO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChhKTtyZXR1cm4gYX1jYW5jZWxBbGxSZXF1ZXN0cyhlKXt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciYmdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIuY2FuY2VsKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc2xpY2UoMCkpdC5jYW5jZWwoZSl9fTtjbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuX21zZ0hhbmRsZXI9YTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCByPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1yLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19fV0sdD17fTtmdW5jdGlvbiBfX3dfcGRmanNfcmVxdWlyZV9fKGEpe3ZhciByPXRbYV07aWYodm9pZCAwIT09cilyZXR1cm4gci5leHBvcnRzO3ZhciBuPXRbYV09e2V4cG9ydHM6e319O2VbYV0obixuLmV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk7cmV0dXJuIG4uZXhwb3J0c31fX3dfcGRmanNfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClfX3dfcGRmanNfcmVxdWlyZV9fLm8odCxhKSYmIV9fd19wZGZqc19yZXF1aXJlX18ubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9O19fd19wZGZqc19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7X193X3BkZmpzX3JlcXVpcmVfXy5yPWU9PnsidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfTt2YXIgYT17fTsoKCk9Pnt2YXIgZT1hO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiV29ya2VyTWVzc2FnZUhhbmRsZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lldvcmtlck1lc3NhZ2VIYW5kbGVyfX0pO3ZhciB0PV9fd19wZGZqc19yZXF1aXJlX18oMSl9KSgpO3JldHVybiBhfSkoKSkpOw==",k2e="IWZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoInBkZmpzLWRpc3QvYnVpbGQvcGRmIixbXSxlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYiXT1lKCk6dFsicGRmanMtZGlzdC9idWlsZC9wZGYiXT10LnBkZmpzTGliPWUoKX0oZ2xvYmFsVGhpcywoKCk9PigoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz1bLCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuVmVyYm9zaXR5TGV2ZWw9ZS5VdGlsPWUuVW5rbm93bkVycm9yRXhjZXB0aW9uPWUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWUuVU5TVVBQT1JURURfRkVBVFVSRVM9ZS5UZXh0UmVuZGVyaW5nTW9kZT1lLlN0cmVhbVR5cGU9ZS5SZW5kZXJpbmdJbnRlbnRGbGFnPWUuUGVybWlzc2lvbkZsYWc9ZS5QYXNzd29yZFJlc3BvbnNlcz1lLlBhc3N3b3JkRXhjZXB0aW9uPWUuUGFnZUFjdGlvbkV2ZW50VHlwZT1lLk9QUz1lLk1pc3NpbmdQREZFeGNlcHRpb249ZS5MSU5FX0ZBQ1RPUj1lLkxJTkVfREVTQ0VOVF9GQUNUT1I9ZS5JbnZhbGlkUERGRXhjZXB0aW9uPWUuSW1hZ2VLaW5kPWUuSURFTlRJVFlfTUFUUklYPWUuRm9ybWF0RXJyb3I9ZS5Gb250VHlwZT1lLkZlYXR1cmVUZXN0PWUuRk9OVF9JREVOVElUWV9NQVRSSVg9ZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT1lLkNNYXBDb21wcmVzc2lvblR5cGU9ZS5CYXNlRXhjZXB0aW9uPWUuQW5ub3RhdGlvblR5cGU9ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9ZS5Bbm5vdGF0aW9uUmVwbHlUeXBlPWUuQW5ub3RhdGlvbk1vZGU9ZS5Bbm5vdGF0aW9uTWFya2VkU3RhdGU9ZS5Bbm5vdGF0aW9uRmxhZz1lLkFubm90YXRpb25GaWVsZEZsYWc9ZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZT1lLkFubm90YXRpb25FZGl0b3JQcmVmaXg9ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT1lLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPWUuQWJvcnRFeGNlcHRpb249dm9pZCAwO2UuYXJyYXlCeXRlTGVuZ3RoPWFycmF5Qnl0ZUxlbmd0aDtlLmFycmF5c1RvQnl0ZXM9ZnVuY3Rpb24gYXJyYXlzVG9CeXRlcyh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKDE9PT1lJiZ0WzBdaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB0WzBdO2xldCBzPTA7Zm9yKGxldCBpPTA7aTxlO2krKylzKz1hcnJheUJ5dGVMZW5ndGgodFtpXSk7bGV0IGk9MDtjb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBlPXRbc107ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChlPSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KGUpKTtjb25zdCByPWUuYnl0ZUxlbmd0aDtuLnNldChlLGkpO2krPXJ9cmV0dXJuIG59O2UuYXNzZXJ0PWZ1bmN0aW9uIGFzc2VydCh0LGUpe3R8fHVucmVhY2hhYmxlKGUpfTtlLmJ5dGVzVG9TdHJpbmc9ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyh0KXsib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiZ2b2lkIDAhPT10Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCBlPXQubGVuZ3RoLHM9ODE5MjtpZihlPHMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0KTtjb25zdCBpPVtdO2ZvcihsZXQgbj0wO248ZTtuKz1zKXtjb25zdCByPU1hdGgubWluKG4rcyxlKSxhPXQuc3ViYXJyYXkobixyKTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKX1yZXR1cm4gaS5qb2luKCIiKX07ZS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbiBjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSgpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZT0hMTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2V0dGxlZCIse2dldDooKT0+ZX0pO3QucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocyxpKXt0LnJlc29sdmU9ZnVuY3Rpb24odCl7ZT0hMDtzKHQpfTt0LnJlamVjdD1mdW5jdGlvbih0KXtlPSEwO2kodCl9fSkpO3JldHVybiB0fTtlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmw9ZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LGU9bnVsbCxzPW51bGwpe2lmKCF0KXJldHVybiBudWxsO3RyeXtpZihzJiYic3RyaW5nIj09dHlwZW9mIHQpe2lmKHMuYWRkRGVmYXVsdFByb3RvY29sJiZ0LnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgZT10Lm1hdGNoKC9cLi9nKTtlJiZlLmxlbmd0aD49MiYmKHQ9YGh0dHA6Ly8ke3R9YCl9aWYocy50cnlDb252ZXJ0RW5jb2RpbmcpdHJ5e3Q9c3RyaW5nVG9VVEY4U3RyaW5nKHQpfWNhdGNoKHQpe319Y29uc3QgaT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO2lmKGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2wodCl7aWYoIXQpcmV0dXJuITE7c3dpdGNoKHQucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oaSkpcmV0dXJuIGl9Y2F0Y2godCl7fXJldHVybiBudWxsfTtlLmVzY2FwZVN0cmluZz1mdW5jdGlvbiBlc2NhcGVTdHJpbmcodCl7cmV0dXJuIHQucmVwbGFjZSgvKFsoKVxcXG5ccl0pL2csKHQ9PiJcbiI9PT10PyJcXG4iOiJcciI9PT10PyJcXHIiOmBcXCR7dH1gKSl9O2UuZ2V0TW9kaWZpY2F0aW9uRGF0ZT1mdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKHQ9bmV3IERhdGUpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwodC5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLHQuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSx0LmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9O2UuZ2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gaX07ZS5pbmZvPWZ1bmN0aW9uIGluZm8odCl7aT49cy5JTkZPUyYmY29uc29sZS5sb2coYEluZm86ICR7dH1gKX07ZS5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmdm9pZCAwIT09dC5ieXRlTGVuZ3RofTtlLmlzQXJyYXlFcXVhbD1mdW5jdGlvbiBpc0FycmF5RXF1YWwodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKylpZih0W3NdIT09ZVtzXSlyZXR1cm4hMTtyZXR1cm4hMH07ZS5pc0FzY2lpPWZ1bmN0aW9uIGlzQXNjaWkodCl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KHQpfTtlLm9iamVjdEZyb21NYXA9ZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3MsaV1vZiB0KWVbc109aTtyZXR1cm4gZX07ZS5vYmplY3RTaXplPWZ1bmN0aW9uIG9iamVjdFNpemUodCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmxlbmd0aH07ZS5zZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbCh0KXtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoaT10KX07ZS5zaGFkb3c9c2hhZG93O2Uuc3RyaW5nMzI9ZnVuY3Rpb24gc3RyaW5nMzIodCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9O2Uuc3RyaW5nVG9CeXRlcz1zdHJpbmdUb0J5dGVzO2Uuc3RyaW5nVG9QREZTdHJpbmc9ZnVuY3Rpb24gc3RyaW5nVG9QREZTdHJpbmcodCl7aWYodFswXT49IsOvIil7bGV0IGU7IsO+Ij09PXRbMF0mJiLDvyI9PT10WzFdP2U9InV0Zi0xNmJlIjoiw78iPT09dFswXSYmIsO+Ij09PXRbMV0/ZT0idXRmLTE2bGUiOiLDryI9PT10WzBdJiYiwrsiPT09dFsxXSYmIsK/Ij09PXRbMl0mJihlPSJ1dGYtOCIpO2lmKGUpdHJ5e2NvbnN0IHM9bmV3IFRleHREZWNvZGVyKGUse2ZhdGFsOiEwfSksaT1zdHJpbmdUb0J5dGVzKHQpO3JldHVybiBzLmRlY29kZShpKX1jYXRjaCh0KXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7dH0iLmApfX1jb25zdCBlPVtdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT1hW3QuY2hhckNvZGVBdChzKV07ZS5wdXNoKGk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTp0LmNoYXJBdChzKSl9cmV0dXJuIGUuam9pbigiIil9O2Uuc3RyaW5nVG9VVEYxNkJFU3RyaW5nPWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZCRVN0cmluZyh0KXtjb25zdCBlPVsiw77DvyJdO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3QgaT10LmNoYXJDb2RlQXQocyk7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmkpKX1yZXR1cm4gZS5qb2luKCIiKX07ZS5zdHJpbmdUb1VURjhTdHJpbmc9c3RyaW5nVG9VVEY4U3RyaW5nO2UudW5yZWFjaGFibGU9dW5yZWFjaGFibGU7ZS51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKHQpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpfTtlLndhcm49d2FybjtlLklERU5USVRZX01BVFJJWD1bMSwwLDAsMSwwLDBdO2UuRk9OVF9JREVOVElUWV9NQVRSSVg9Wy4wMDEsMCwwLC4wMDEsMCwwXTtlLkxJTkVfRkFDVE9SPTEuMzU7ZS5MSU5FX0RFU0NFTlRfRkFDVE9SPS4zNTtlLlJlbmRlcmluZ0ludGVudEZsYWc9e0FOWToxLERJU1BMQVk6MixQUklOVDo0LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fTtlLkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M307ZS5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIjtlLkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLElOSzoxNX07ZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17RlJFRVRFWFRfU0laRToxLEZSRUVURVhUX0NPTE9SOjIsRlJFRVRFWFRfT1BBQ0lUWTozLElOS19DT0xPUjoxMSxJTktfVEhJQ0tORVNTOjEyLElOS19PUEFDSVRZOjEzfTtlLlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9O2UuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH07ZS5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfTtlLkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn07ZS5Bbm5vdGF0aW9uU3RhdGVNb2RlbFR5cGU9e01BUktFRDoiTWFya2VkIixSRVZJRVc6IlJldmlldyJ9O2UuQW5ub3RhdGlvbk1hcmtlZFN0YXRlPXtNQVJLRUQ6Ik1hcmtlZCIsVU5NQVJLRUQ6IlVubWFya2VkIn07ZS5Bbm5vdGF0aW9uUmV2aWV3U3RhdGU9e0FDQ0VQVEVEOiJBY2NlcHRlZCIsUkVKRUNURUQ6IlJlamVjdGVkIixDQU5DRUxMRUQ6IkNhbmNlbGxlZCIsQ09NUExFVEVEOiJDb21wbGV0ZWQiLE5PTkU6Ik5vbmUifTtlLkFubm90YXRpb25SZXBseVR5cGU9e0dST1VQOiJHcm91cCIsUkVQTFk6IlIifTtlLkFubm90YXRpb25GbGFnPXtJTlZJU0lCTEU6MSxISURERU46MixQUklOVDo0LE5PWk9PTTo4LE5PUk9UQVRFOjE2LE5PVklFVzozMixSRUFET05MWTo2NCxMT0NLRUQ6MTI4LFRPR0dMRU5PVklFVzoyNTYsTE9DS0VEQ09OVEVOVFM6NTEyfTtlLkFubm90YXRpb25GaWVsZEZsYWc9e1JFQURPTkxZOjEsUkVRVUlSRUQ6MixOT0VYUE9SVDo0LE1VTFRJTElORTo0MDk2LFBBU1NXT1JEOjgxOTIsTk9UT0dHTEVUT09GRjoxNjM4NCxSQURJTzozMjc2OCxQVVNIQlVUVE9OOjY1NTM2LENPTUJPOjEzMTA3MixFRElUOjI2MjE0NCxTT1JUOjUyNDI4OCxGSUxFU0VMRUNUOjEwNDg1NzYsTVVMVElTRUxFQ1Q6MjA5NzE1MixET05PVFNQRUxMQ0hFQ0s6NDE5NDMwNCxET05PVFNDUk9MTDo4Mzg4NjA4LENPTUI6MTY3NzcyMTYsUklDSFRFWFQ6MzM1NTQ0MzIsUkFESU9TSU5VTklTT046MzM1NTQ0MzIsQ09NTUlUT05TRUxDSEFOR0U6NjcxMDg4NjR9O2UuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZT17U09MSUQ6MSxEQVNIRUQ6MixCRVZFTEVEOjMsSU5TRVQ6NCxVTkRFUkxJTkU6NX07ZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXtFOiJNb3VzZSBFbnRlciIsWDoiTW91c2UgRXhpdCIsRDoiTW91c2UgRG93biIsVToiTW91c2UgVXAiLEZvOiJGb2N1cyIsQmw6IkJsdXIiLFBPOiJQYWdlT3BlbiIsUEM6IlBhZ2VDbG9zZSIsUFY6IlBhZ2VWaXNpYmxlIixQSToiUGFnZUludmlzaWJsZSIsSzoiS2V5c3Ryb2tlIixGOiJGb3JtYXQiLFY6IlZhbGlkYXRlIixDOiJDYWxjdWxhdGUifTtlLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifTtlLlBhZ2VBY3Rpb25FdmVudFR5cGU9e086IlBhZ2VPcGVuIixDOiJQYWdlQ2xvc2UifTtlLlN0cmVhbVR5cGU9e1VOS05PV046IlVOS05PV04iLEZMQVRFOiJGTEFURSIsTFpXOiJMWlciLERDVDoiRENUIixKUFg6IkpQWCIsSkJJRzoiSkJJRyIsQTg1OiJBODUiLEFIWDoiQUhYIixDQ0Y6IkNDRiIsUkxYOiJSTFgifTtlLkZvbnRUeXBlPXtVTktOT1dOOiJVTktOT1dOIixUWVBFMToiVFlQRTEiLFRZUEUxU1RBTkRBUkQ6IlRZUEUxU1RBTkRBUkQiLFRZUEUxQzoiVFlQRTFDIixDSURGT05UVFlQRTA6IkNJREZPTlRUWVBFMCIsQ0lERk9OVFRZUEUwQzoiQ0lERk9OVFRZUEUwQyIsVFJVRVRZUEU6IlRSVUVUWVBFIixDSURGT05UVFlQRTI6IkNJREZPTlRUWVBFMiIsVFlQRTM6IlRZUEUzIixPUEVOVFlQRToiT1BFTlRZUEUiLFRZUEUwOiJUWVBFMCIsTU1UWVBFMToiTU1UWVBFMSJ9O2NvbnN0IHM9e0VSUk9SUzowLFdBUk5JTkdTOjEsSU5GT1M6NX07ZS5WZXJib3NpdHlMZXZlbD1zO2UuQ01hcENvbXByZXNzaW9uVHlwZT17Tk9ORTowLEJJTkFSWToxfTtlLk9QUz17ZGVwZW5kZW5jeToxLHNldExpbmVXaWR0aDoyLHNldExpbmVDYXA6MyxzZXRMaW5lSm9pbjo0LHNldE1pdGVyTGltaXQ6NSxzZXREYXNoOjYsc2V0UmVuZGVyaW5nSW50ZW50Ojcsc2V0RmxhdG5lc3M6OCxzZXRHU3RhdGU6OSxzYXZlOjEwLHJlc3RvcmU6MTEsdHJhbnNmb3JtOjEyLG1vdmVUbzoxMyxsaW5lVG86MTQsY3VydmVUbzoxNSxjdXJ2ZVRvMjoxNixjdXJ2ZVRvMzoxNyxjbG9zZVBhdGg6MTgscmVjdGFuZ2xlOjE5LHN0cm9rZToyMCxjbG9zZVN0cm9rZToyMSxmaWxsOjIyLGVvRmlsbDoyMyxmaWxsU3Ryb2tlOjI0LGVvRmlsbFN0cm9rZToyNSxjbG9zZUZpbGxTdHJva2U6MjYsY2xvc2VFT0ZpbGxTdHJva2U6MjcsZW5kUGF0aDoyOCxjbGlwOjI5LGVvQ2xpcDozMCxiZWdpblRleHQ6MzEsZW5kVGV4dDozMixzZXRDaGFyU3BhY2luZzozMyxzZXRXb3JkU3BhY2luZzozNCxzZXRIU2NhbGU6MzUsc2V0TGVhZGluZzozNixzZXRGb250OjM3LHNldFRleHRSZW5kZXJpbmdNb2RlOjM4LHNldFRleHRSaXNlOjM5LG1vdmVUZXh0OjQwLHNldExlYWRpbmdNb3ZlVGV4dDo0MSxzZXRUZXh0TWF0cml4OjQyLG5leHRMaW5lOjQzLHNob3dUZXh0OjQ0LHNob3dTcGFjZWRUZXh0OjQ1LG5leHRMaW5lU2hvd1RleHQ6NDYsbmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6NDcsc2V0Q2hhcldpZHRoOjQ4LHNldENoYXJXaWR0aEFuZEJvdW5kczo0OSxzZXRTdHJva2VDb2xvclNwYWNlOjUwLHNldEZpbGxDb2xvclNwYWNlOjUxLHNldFN0cm9rZUNvbG9yOjUyLHNldFN0cm9rZUNvbG9yTjo1MyxzZXRGaWxsQ29sb3I6NTQsc2V0RmlsbENvbG9yTjo1NSxzZXRTdHJva2VHcmF5OjU2LHNldEZpbGxHcmF5OjU3LHNldFN0cm9rZVJHQkNvbG9yOjU4LHNldEZpbGxSR0JDb2xvcjo1OSxzZXRTdHJva2VDTVlLQ29sb3I6NjAsc2V0RmlsbENNWUtDb2xvcjo2MSxzaGFkaW5nRmlsbDo2MixiZWdpbklubGluZUltYWdlOjYzLGJlZ2luSW1hZ2VEYXRhOjY0LGVuZElubGluZUltYWdlOjY1LHBhaW50WE9iamVjdDo2NixtYXJrUG9pbnQ6NjcsbWFya1BvaW50UHJvcHM6NjgsYmVnaW5NYXJrZWRDb250ZW50OjY5LGJlZ2luTWFya2VkQ29udGVudFByb3BzOjcwLGVuZE1hcmtlZENvbnRlbnQ6NzEsYmVnaW5Db21wYXQ6NzIsZW5kQ29tcGF0OjczLHBhaW50Rm9ybVhPYmplY3RCZWdpbjo3NCxwYWludEZvcm1YT2JqZWN0RW5kOjc1LGJlZ2luR3JvdXA6NzYsZW5kR3JvdXA6NzcsYmVnaW5Bbm5vdGF0aW9uOjgwLGVuZEFubm90YXRpb246ODEscGFpbnRJbWFnZU1hc2tYT2JqZWN0OjgzLHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOjg0LHBhaW50SW1hZ2VYT2JqZWN0Ojg1LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0Ojg2LHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6ODcscGFpbnRJbWFnZVhPYmplY3RSZXBlYXQ6ODgscGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0Ojg5LHBhaW50U29saWRDb2xvckltYWdlTWFzazo5MCxjb25zdHJ1Y3RQYXRoOjkxfTtlLlVOU1VQUE9SVEVEX0ZFQVRVUkVTPXtmb3JtczoiZm9ybXMiLGphdmFTY3JpcHQ6ImphdmFTY3JpcHQiLHNpZ25hdHVyZXM6InNpZ25hdHVyZXMiLHNtYXNrOiJzbWFzayIsc2hhZGluZ1BhdHRlcm46InNoYWRpbmdQYXR0ZXJuIixlcnJvclRpbGluZ1BhdHRlcm46ImVycm9yVGlsaW5nUGF0dGVybiIsZXJyb3JFeHRHU3RhdGU6ImVycm9yRXh0R1N0YXRlIixlcnJvclhPYmplY3Q6ImVycm9yWE9iamVjdCIsZXJyb3JGb250TG9hZFR5cGUzOiJlcnJvckZvbnRMb2FkVHlwZTMiLGVycm9yRm9udFN0YXRlOiJlcnJvckZvbnRTdGF0ZSIsZXJyb3JGb250TWlzc2luZzoiZXJyb3JGb250TWlzc2luZyIsZXJyb3JGb250VHJhbnNsYXRlOiJlcnJvckZvbnRUcmFuc2xhdGUiLGVycm9yQ29sb3JTcGFjZToiZXJyb3JDb2xvclNwYWNlIixlcnJvck9wZXJhdG9yTGlzdDoiZXJyb3JPcGVyYXRvckxpc3QiLGVycm9yRm9udFRvVW5pY29kZToiZXJyb3JGb250VG9Vbmljb2RlIixlcnJvckZvbnRMb2FkTmF0aXZlOiJlcnJvckZvbnRMb2FkTmF0aXZlIixlcnJvckZvbnRCdWlsZFBhdGg6ImVycm9yRm9udEJ1aWxkUGF0aCIsZXJyb3JGb250R2V0UGF0aDoiZXJyb3JGb250R2V0UGF0aCIsZXJyb3JNYXJrZWRDb250ZW50OiJlcnJvck1hcmtlZENvbnRlbnQiLGVycm9yQ29udGVudFN1YlN0cmVhbToiZXJyb3JDb250ZW50U3ViU3RyZWFtIn07ZS5QYXNzd29yZFJlc3BvbnNlcz17TkVFRF9QQVNTV09SRDoxLElOQ09SUkVDVF9QQVNTV09SRDoyfTtsZXQgaT1zLldBUk5JTkdTO2Z1bmN0aW9uIHdhcm4odCl7aT49cy5XQVJOSU5HUyYmY29uc29sZS5sb2coYFdhcm5pbmc6ICR7dH1gKX1mdW5jdGlvbiB1bnJlYWNoYWJsZSh0KXt0aHJvdyBuZXcgRXJyb3IodCl9ZnVuY3Rpb24gc2hhZG93KHQsZSxzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpzLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIHN9Y29uc3Qgbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24odCxlKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZUV4Y2VwdGlvbiYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uIik7dGhpcy5tZXNzYWdlPXQ7dGhpcy5uYW1lPWV9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtlLkJhc2VFeGNlcHRpb249bjtlLlBhc3N3b3JkRXhjZXB0aW9uPWNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPWV9fTtlLlVua25vd25FcnJvckV4Y2VwdGlvbj1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPWV9fTtlLkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX07ZS5NaXNzaW5nUERGRXhjZXB0aW9uPWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19O2UuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uPWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIG57Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz1lfX07ZS5Gb3JtYXRFcnJvcj1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIG57Y29uc3RydWN0b3IodCl7c3VwZXIodCwiRm9ybWF0RXJyb3IiKX19O2UuQWJvcnRFeGNlcHRpb249Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQsIkFib3J0RXhjZXB0aW9uIil9fTtmdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHQpeyJzdHJpbmciIT10eXBlb2YgdCYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCBlPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxlOysraSlzW2ldPTI1NSZ0LmNoYXJDb2RlQXQoaSk7cmV0dXJuIHN9ZnVuY3Rpb24gYXJyYXlCeXRlTGVuZ3RoKHQpe2lmKHZvaWQgMCE9PXQubGVuZ3RoKXJldHVybiB0Lmxlbmd0aDtpZih2b2lkIDAhPT10LmJ5dGVMZW5ndGgpcmV0dXJuIHQuYnl0ZUxlbmd0aDt1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYXJyYXlCeXRlTGVuZ3RoIil9ZS5GZWF0dXJlVGVzdD1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3RbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaCh0KXtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9fTtjb25zdCByPVsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IodCxlLHMpe3JldHVybmAjJHtyW3RdfSR7cltlXX0ke3Jbc119YH1zdGF0aWMgc2NhbGVNaW5NYXgodCxlKXtsZXQgcztpZih0WzBdKXtpZih0WzBdPDApe3M9ZVswXTtlWzBdPWVbMV07ZVsxXT1zfWVbMF0qPXRbMF07ZVsxXSo9dFswXTtpZih0WzNdPDApe3M9ZVsyXTtlWzJdPWVbM107ZVszXT1zfWVbMl0qPXRbM107ZVszXSo9dFszXX1lbHNle3M9ZVswXTtlWzBdPWVbMl07ZVsyXT1zO3M9ZVsxXTtlWzFdPWVbM107ZVszXT1zO2lmKHRbMV08MCl7cz1lWzJdO2VbMl09ZVszXTtlWzNdPXN9ZVsyXSo9dFsxXTtlWzNdKj10WzFdO2lmKHRbMl08MCl7cz1lWzBdO2VbMF09ZVsxXTtlWzFdPXN9ZVswXSo9dFsyXTtlWzFdKj10WzJdfWVbMF0rPXRbNF07ZVsxXSs9dFs0XTtlWzJdKz10WzVdO2VbM10rPXRbNV19c3RhdGljIHRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsyXSplWzFdLHRbMV0qZVswXSt0WzNdKmVbMV0sdFswXSplWzJdK3RbMl0qZVszXSx0WzFdKmVbMl0rdFszXSplWzNdLHRbMF0qZVs0XSt0WzJdKmVbNV0rdFs0XSx0WzFdKmVbNF0rdFszXSplWzVdK3RbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybSh0LGUpe3JldHVyblt0WzBdKmVbMF0rdFsxXSplWzJdK2VbNF0sdFswXSplWzFdK3RbMV0qZVszXStlWzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsZSl7Y29uc3Qgcz1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVyblsodFswXSplWzNdLXRbMV0qZVsyXStlWzJdKmVbNV0tZVs0XSplWzNdKS9zLCgtdFswXSplWzFdK3RbMV0qZVswXStlWzRdKmVbMV0tZVs1XSplWzBdKS9zXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxlKXtjb25zdCBzPVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxlKSxpPVV0aWwuYXBwbHlUcmFuc2Zvcm0odC5zbGljZSgyLDQpLGUpLG49VXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSx0WzNdXSxlKSxyPVV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sdFsxXV0sZSk7cmV0dXJuW01hdGgubWluKHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWluKHNbMV0saVsxXSxuWzFdLHJbMV0pLE1hdGgubWF4KHNbMF0saVswXSxuWzBdLHJbMF0pLE1hdGgubWF4KHNbMV0saVsxXSxuWzFdLHJbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybSh0KXtjb25zdCBlPXRbMF0qdFszXS10WzFdKnRbMl07cmV0dXJuW3RbM10vZSwtdFsxXS9lLC10WzJdL2UsdFswXS9lLCh0WzJdKnRbNV0tdFs0XSp0WzNdKS9lLCh0WzRdKnRbMV0tdFs1XSp0WzBdKS9lXX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodCl7Y29uc3QgZT1bdFswXSx0WzJdLHRbMV0sdFszXV0scz10WzBdKmVbMF0rdFsxXSplWzJdLGk9dFswXSplWzFdK3RbMV0qZVszXSxuPXRbMl0qZVswXSt0WzNdKmVbMl0scj10WzJdKmVbMV0rdFszXSplWzNdLGE9KHMrcikvMixvPU1hdGguc3FydCgocytyKSoqMi00KihzKnItbippKSkvMixsPWErb3x8MSxjPWEtb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGwpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QodCl7Y29uc3QgZT10LnNsaWNlKDApO2lmKHRbMF0+dFsyXSl7ZVswXT10WzJdO2VbMl09dFswXX1pZih0WzFdPnRbM10pe2VbMV09dFszXTtlWzNdPXRbMV19cmV0dXJuIGV9c3RhdGljIGludGVyc2VjdCh0LGUpe2NvbnN0IHM9TWF0aC5tYXgoTWF0aC5taW4odFswXSx0WzJdKSxNYXRoLm1pbihlWzBdLGVbMl0pKSxpPU1hdGgubWluKE1hdGgubWF4KHRbMF0sdFsyXSksTWF0aC5tYXgoZVswXSxlWzJdKSk7aWYocz5pKXJldHVybiBudWxsO2NvbnN0IG49TWF0aC5tYXgoTWF0aC5taW4odFsxXSx0WzNdKSxNYXRoLm1pbihlWzFdLGVbM10pKSxyPU1hdGgubWluKE1hdGgubWF4KHRbMV0sdFszXSksTWF0aC5tYXgoZVsxXSxlWzNdKSk7cmV0dXJuIG4+cj9udWxsOltzLG4saSxyXX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPVtdLGM9W1tdLFtdXTtsZXQgaCxkLHUscCxnLG0sZixiO2ZvcihsZXQgYz0wO2M8MjsrK2Mpe2lmKDA9PT1jKXtkPTYqdC0xMipzKzYqbjtoPS0zKnQrOSpzLTkqbiszKmE7dT0zKnMtMyp0fWVsc2V7ZD02KmUtMTIqaSs2KnI7aD0tMyplKzkqaS05KnIrMypvO3U9MyppLTMqZX1pZihNYXRoLmFicyhoKTwxZS0xMil7aWYoTWF0aC5hYnMoZCk8MWUtMTIpY29udGludWU7cD0tdS9kOzA8cCYmcDwxJiZsLnB1c2gocCl9ZWxzZXtmPWQqZC00KnUqaDtiPU1hdGguc3FydChmKTtpZighKGY8MCkpe2c9KC1kK2IpLygyKmgpOzA8ZyYmZzwxJiZsLnB1c2goZyk7bT0oLWQtYikvKDIqaCk7MDxtJiZtPDEmJmwucHVzaChtKX19fWxldCBBLF89bC5sZW5ndGg7Y29uc3Qgdj1fO2Zvcig7Xy0tOyl7cD1sW19dO0E9MS1wO2NbMF1bX109QSpBKkEqdCszKkEqQSpwKnMrMypBKnAqcCpuK3AqcCpwKmE7Y1sxXVtfXT1BKkEqQSplKzMqQSpBKnAqaSszKkEqcCpwKnIrcCpwKnAqb31jWzBdW3ZdPXQ7Y1sxXVt2XT1lO2NbMF1bdisxXT1hO2NbMV1bdisxXT1vO2NbMF0ubGVuZ3RoPWNbMV0ubGVuZ3RoPXYrMjtyZXR1cm5bTWF0aC5taW4oLi4uY1swXSksTWF0aC5taW4oLi4uY1sxXSksTWF0aC5tYXgoLi4uY1swXSksTWF0aC5tYXgoLi4uY1sxXSldfX1lLlV0aWw9VXRpbDtjb25zdCBhPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpfX0sKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193X3BkZmpzX3JlcXVpcmVfXyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZXhwb3J0cy5idWlsZD1leHBvcnRzLlJlbmRlclRhc2s9ZXhwb3J0cy5QREZXb3JrZXJVdGlsPWV4cG9ydHMuUERGV29ya2VyPWV4cG9ydHMuUERGUGFnZVByb3h5PWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1leHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2s9ZXhwb3J0cy5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZXhwb3J0cy5Mb29wYmFja1BvcnQ9ZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9ZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeT1leHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7ZXhwb3J0cy5nZXREb2N1bWVudD1nZXREb2N1bWVudDtleHBvcnRzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5PXNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5O2V4cG9ydHMudmVyc2lvbj12b2lkIDA7dmFyIF91dGlsPV9fd19wZGZqc19yZXF1aXJlX18oMSksX2Fubm90YXRpb25fc3RvcmFnZT1fX3dfcGRmanNfcmVxdWlyZV9fKDMpLF9kaXNwbGF5X3V0aWxzPV9fd19wZGZqc19yZXF1aXJlX18oNiksX2ZvbnRfbG9hZGVyPV9fd19wZGZqc19yZXF1aXJlX18oOSksX2NhbnZhcz1fX3dfcGRmanNfcmVxdWlyZV9fKDEwKSxfd29ya2VyX29wdGlvbnM9X193X3BkZmpzX3JlcXVpcmVfXygxNCksX2lzX25vZGU9X193X3BkZmpzX3JlcXVpcmVfXygxMiksX21lc3NhZ2VfaGFuZGxlcj1fX3dfcGRmanNfcmVxdWlyZV9fKDE1KSxfbWV0YWRhdGE9X193X3BkZmpzX3JlcXVpcmVfXygxNiksX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnPV9fd19wZGZqc19yZXF1aXJlX18oMTcpLF90cmFuc3BvcnRfc3RyZWFtPV9fd19wZGZqc19yZXF1aXJlX18oMTgpLF94ZmFfdGV4dD1fX3dfcGRmanNfcmVxdWlyZV9fKDE5KTtjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU9NjU1MzYsUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUPTEwMDtsZXQgRGVmYXVsdENhbnZhc0ZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ2FudmFzRmFjdG9yeTtleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5PURlZmF1bHRDYW52YXNGYWN0b3J5O2xldCBEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NQ01hcFJlYWRlckZhY3Rvcnk7ZXhwb3J0cy5EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9RGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O2xldCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9X2Rpc3BsYXlfdXRpbHMuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnksY3JlYXRlUERGTmV0d29ya1N0cmVhbTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aWYoX2lzX25vZGUuaXNOb2RlSlMpe2NvbnN0e05vZGVDYW52YXNGYWN0b3J5OnQsTm9kZUNNYXBSZWFkZXJGYWN0b3J5OmUsTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5OnN9PV9fd19wZGZqc19yZXF1aXJlX18oMjApO2V4cG9ydHMuRGVmYXVsdENhbnZhc0ZhY3Rvcnk9RGVmYXVsdENhbnZhc0ZhY3Rvcnk9dDtleHBvcnRzLkRlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeT1EZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk9ZTtleHBvcnRzLkRlZmF1bHRTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9c31mdW5jdGlvbiBzZXRQREZOZXR3b3JrU3RyZWFtRmFjdG9yeSh0KXtjcmVhdGVQREZOZXR3b3JrU3RyZWFtPXR9ZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCl7Y29uc3QgZT1uZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaztsZXQgcztpZigic3RyaW5nIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBVUkwpcz17dXJsOnR9O2Vsc2UgaWYoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCkpcz17ZGF0YTp0fTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQpcz17cmFuZ2U6dH07ZWxzZXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhcmFtZXRlciBpbiBnZXREb2N1bWVudCwgbmVlZCBlaXRoZXIgc3RyaW5nLCBVUkwsIFR5cGVkQXJyYXksIG9yIHBhcmFtZXRlciBvYmplY3QuIik7aWYoIXQudXJsJiYhdC5kYXRhJiYhdC5yYW5nZSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcGFyYW1ldGVyIG9iamVjdDogbmVlZCBlaXRoZXIgLmRhdGEsIC5yYW5nZSBvciAudXJsIik7cz10fWNvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj1udWxsLHI9bnVsbDtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07c3dpdGNoKHQpe2Nhc2UidXJsIjppZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7aVt0XT1uZXcgVVJMKGUsd2luZG93LmxvY2F0aW9uKS5ocmVmO2NvbnRpbnVlfWNhdGNoKHQpeygwLF91dGlsLndhcm4pKGBDYW5ub3QgY3JlYXRlIHZhbGlkIFVSTDogIiR7dH0iLmApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlfHxlIGluc3RhbmNlb2YgVVJMKXtpW3RdPWUudG9TdHJpbmcoKTtjb250aW51ZX10aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS4iKTtjYXNlInJhbmdlIjpuPWU7Y29udGludWU7Y2FzZSJ3b3JrZXIiOnI9ZTtjb250aW51ZTtjYXNlImRhdGEiOmlmKF9pc19ub2RlLmlzTm9kZUpTJiYidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlciYmZSBpbnN0YW5jZW9mIEJ1ZmZlcilpW3RdPW5ldyBVaW50OEFycmF5KGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpYnJlYWs7aWYoInN0cmluZyI9PXR5cGVvZiBlKWlbdF09KDAsX3V0aWwuc3RyaW5nVG9CeXRlcykoZSk7ZWxzZSBpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHxpc05hTihlLmxlbmd0aCkpe2lmKCEoMCxfdXRpbC5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgUERGIGJpbmFyeSBkYXRhOiBlaXRoZXIgVHlwZWRBcnJheSwgc3RyaW5nLCBvciBhcnJheS1saWtlIG9iamVjdCBpcyBleHBlY3RlZCBpbiB0aGUgZGF0YSBwcm9wZXJ0eS4iKTtpW3RdPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaVt0XT1uZXcgVWludDhBcnJheShlKX1jb250aW51ZX1pW3RdPWV9aS5DTWFwUmVhZGVyRmFjdG9yeT1pLkNNYXBSZWFkZXJGYWN0b3J5fHxEZWZhdWx0Q01hcFJlYWRlckZhY3Rvcnk7aS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1pLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5fHxEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7aS5pZ25vcmVFcnJvcnM9ITAhPT1pLnN0b3BBdEVycm9ycztpLmZvbnRFeHRyYVByb3BlcnRpZXM9ITA9PT1pLmZvbnRFeHRyYVByb3BlcnRpZXM7aS5wZGZCdWc9ITA9PT1pLnBkZkJ1ZztpLmVuYWJsZVhmYT0hMD09PWkuZW5hYmxlWGZhOyghTnVtYmVyLmlzSW50ZWdlcihpLnJhbmdlQ2h1bmtTaXplKXx8aS5yYW5nZUNodW5rU2l6ZTwxKSYmKGkucmFuZ2VDaHVua1NpemU9REVGQVVMVF9SQU5HRV9DSFVOS19TSVpFKTsoInN0cmluZyIhPXR5cGVvZiBpLmRvY0Jhc2VVcmx8fCgwLF9kaXNwbGF5X3V0aWxzLmlzRGF0YVNjaGVtZSkoaS5kb2NCYXNlVXJsKSkmJihpLmRvY0Jhc2VVcmw9bnVsbCk7KCFOdW1iZXIuaXNJbnRlZ2VyKGkubWF4SW1hZ2VTaXplKXx8aS5tYXhJbWFnZVNpemU8LTEpJiYoaS5tYXhJbWFnZVNpemU9LTEpOyJzdHJpbmciIT10eXBlb2YgaS5jTWFwVXJsJiYoaS5jTWFwVXJsPW51bGwpOyJzdHJpbmciIT10eXBlb2YgaS5zdGFuZGFyZEZvbnREYXRhVXJsJiYoaS5zdGFuZGFyZEZvbnREYXRhVXJsPW51bGwpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlV29ya2VyRmV0Y2gmJihpLnVzZVdvcmtlckZldGNoPWkuQ01hcFJlYWRlckZhY3Rvcnk9PT1fZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSYmaS5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT09PV9kaXNwbGF5X3V0aWxzLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzRXZhbFN1cHBvcnRlZCYmKGkuaXNFdmFsU3VwcG9ydGVkPSEwKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiYoaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hX2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUZvbnRGYWNlJiYoaS5kaXNhYmxlRm9udEZhY2U9X2lzX25vZGUuaXNOb2RlSlMpOyJib29sZWFuIiE9dHlwZW9mIGkudXNlU3lzdGVtRm9udHMmJihpLnVzZVN5c3RlbUZvbnRzPSFfaXNfbm9kZS5pc05vZGVKUyYmIWkuZGlzYWJsZUZvbnRGYWNlKTsib2JqZWN0Ij09dHlwZW9mIGkub3duZXJEb2N1bWVudCYmbnVsbCE9PWkub3duZXJEb2N1bWVudHx8KGkub3duZXJEb2N1bWVudD1nbG9iYWxUaGlzLmRvY3VtZW50KTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVSYW5nZSYmKGkuZGlzYWJsZVJhbmdlPSExKTsiYm9vbGVhbiIhPXR5cGVvZiBpLmRpc2FibGVTdHJlYW0mJihpLmRpc2FibGVTdHJlYW09ITEpOyJib29sZWFuIiE9dHlwZW9mIGkuZGlzYWJsZUF1dG9GZXRjaCYmKGkuZGlzYWJsZUF1dG9GZXRjaD0hMSk7KDAsX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGkudmVyYm9zaXR5KTtpZighcil7Y29uc3QgdD17dmVyYm9zaXR5OmkudmVyYm9zaXR5LHBvcnQ6X3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyUG9ydH07cj10LnBvcnQ/UERGV29ya2VyLmZyb21Qb3J0KHQpOm5ldyBQREZXb3JrZXIodCk7ZS5fd29ya2VyPXJ9Y29uc3QgYT1lLmRvY0lkO3IucHJvbWlzZS50aGVuKChmdW5jdGlvbigpe2lmKGUuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiTG9hZGluZyBhYm9ydGVkIik7Y29uc3QgdD1fZmV0Y2hEb2N1bWVudChyLGksbixhKSxzPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtsZXQgZTtuP2U9bmV3IF90cmFuc3BvcnRfc3RyZWFtLlBERkRhdGFUcmFuc3BvcnRTdHJlYW0oe2xlbmd0aDppLmxlbmd0aCxpbml0aWFsRGF0YTppLmluaXRpYWxEYXRhLHByb2dyZXNzaXZlRG9uZTppLnByb2dyZXNzaXZlRG9uZSxjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTppLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lLGRpc2FibGVSYW5nZTppLmRpc2FibGVSYW5nZSxkaXNhYmxlU3RyZWFtOmkuZGlzYWJsZVN0cmVhbX0sbik6aS5kYXRhfHwoZT1jcmVhdGVQREZOZXR3b3JrU3RyZWFtKHt1cmw6aS51cmwsbGVuZ3RoOmkubGVuZ3RoLGh0dHBIZWFkZXJzOmkuaHR0cEhlYWRlcnMsd2l0aENyZWRlbnRpYWxzOmkud2l0aENyZWRlbnRpYWxzLHJhbmdlQ2h1bmtTaXplOmkucmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOmkuZGlzYWJsZVJhbmdlLGRpc2FibGVTdHJlYW06aS5kaXNhYmxlU3RyZWFtfSkpO3QoZSl9KSk7cmV0dXJuIFByb21pc2UuYWxsKFt0LHNdKS50aGVuKChmdW5jdGlvbihbdCxzXSl7aWYoZS5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJMb2FkaW5nIGFib3J0ZWQiKTtjb25zdCBuPW5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKGEsdCxyLnBvcnQpLG89bmV3IFdvcmtlclRyYW5zcG9ydChuLGUscyxpKTtlLl90cmFuc3BvcnQ9bztuLnNlbmQoIlJlYWR5IixudWxsKX0pKX0pKS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCxlLHMsaSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpO2lmKHMpe2UubGVuZ3RoPXMubGVuZ3RoO2UuaW5pdGlhbERhdGE9cy5pbml0aWFsRGF0YTtlLnByb2dyZXNzaXZlRG9uZT1zLnByb2dyZXNzaXZlRG9uZTtlLmNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV9Y29uc3Qgbj1hd2FpdCB0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jUmVxdWVzdCIse2RvY0lkOmksYXBpVmVyc2lvbjoiMy4wLjI3OSIsZGF0YTplLmRhdGEscGFzc3dvcmQ6ZS5wYXNzd29yZCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplLGxlbmd0aDplLmxlbmd0aCxkb2NCYXNlVXJsOmUuZG9jQmFzZVVybCxlbmFibGVYZmE6ZS5lbmFibGVYZmEsZXZhbHVhdG9yT3B0aW9uczp7bWF4SW1hZ2VTaXplOmUubWF4SW1hZ2VTaXplLGRpc2FibGVGb250RmFjZTplLmRpc2FibGVGb250RmFjZSxpZ25vcmVFcnJvcnM6ZS5pZ25vcmVFcnJvcnMsaXNFdmFsU3VwcG9ydGVkOmUuaXNFdmFsU3VwcG9ydGVkLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsZm9udEV4dHJhUHJvcGVydGllczplLmZvbnRFeHRyYVByb3BlcnRpZXMsdXNlU3lzdGVtRm9udHM6ZS51c2VTeXN0ZW1Gb250cyxjTWFwVXJsOmUudXNlV29ya2VyRmV0Y2g/ZS5jTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDplLnVzZVdvcmtlckZldGNoP2Uuc3RhbmRhcmRGb250RGF0YVVybDpudWxsfX0pO2UuZGF0YSYmKGUuZGF0YT1udWxsKTtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIik7cmV0dXJuIG59Y2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFza3tzdGF0aWMjdD0wO2NvbnN0cnVjdG9yKCl7dGhpcy5fY2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl90cmFuc3BvcnQ9bnVsbDt0aGlzLl93b3JrZXI9bnVsbDt0aGlzLmRvY0lkPSJkIitQREZEb2N1bWVudExvYWRpbmdUYXNrLiN0Kys7dGhpcy5kZXN0cm95ZWQ9ITE7dGhpcy5vblBhc3N3b3JkPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7dGhpcy5vblVuc3VwcG9ydGVkRmVhdHVyZT1udWxsfWdldCBwcm9taXNlKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1hc3luYyBkZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITA7YXdhaXQodGhpcy5fdHJhbnNwb3J0Py5kZXN0cm95KCkpO3RoaXMuX3RyYW5zcG9ydD1udWxsO2lmKHRoaXMuX3dvcmtlcil7dGhpcy5fd29ya2VyLmRlc3Ryb3koKTt0aGlzLl93b3JrZXI9bnVsbH19fWV4cG9ydHMuUERGRG9jdW1lbnRMb2FkaW5nVGFzaz1QREZEb2N1bWVudExvYWRpbmdUYXNrO2NsYXNzIFBERkRhdGFSYW5nZVRyYW5zcG9ydHtjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMubGVuZ3RoPXQ7dGhpcy5pbml0aWFsRGF0YT1lO3RoaXMucHJvZ3Jlc3NpdmVEb25lPXM7dGhpcy5jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZT1pO3RoaXMuX3JhbmdlTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzPVtdO3RoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnM9W107dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpfWFkZFJhbmdlTGlzdGVuZXIodCl7dGhpcy5fcmFuZ2VMaXN0ZW5lcnMucHVzaCh0KX1hZGRQcm9ncmVzc0xpc3RlbmVyKHQpe3RoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXJzLnB1c2godCl9YWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIodCl7dGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzLnB1c2godCl9b25EYXRhUmFuZ2UodCxlKXtmb3IoY29uc3QgcyBvZiB0aGlzLl9yYW5nZUxpc3RlbmVycylzKHQsZSl9b25EYXRhUHJvZ3Jlc3ModCxlKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCBzIG9mIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzKXModCxlKX0pKX1vbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCl7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKCk9Pntmb3IoY29uc3QgZSBvZiB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMpZSh0KX0pKX1vbkRhdGFQcm9ncmVzc2l2ZURvbmUoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgoKT0+e2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb2dyZXNzaXZlRG9uZUxpc3RlbmVycyl0KCl9KSl9dHJhbnNwb3J0UmVhZHkoKXt0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpfXJlcXVlc3REYXRhUmFuZ2UodCxlKXsoMCxfdXRpbC51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBQREZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSIpfWFib3J0KCl7fX1leHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydD1QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7Y2xhc3MgUERGRG9jdW1lbnRQcm94eXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BkZkluZm89dDt0aGlzLl90cmFuc3BvcnQ9ZX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLl9wZGZJbmZvLm51bVBhZ2VzfWdldCBmaW5nZXJwcmludHMoKXtyZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHN9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGF0c31nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmF9Z2V0IGFsbFhmYUh0bWwoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhfWdldFBhZ2UodCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VJbmRleCh0KX1nZXREZXN0aW5hdGlvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldERlc3RpbmF0aW9ucygpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCl9Z2V0UGFnZUxhYmVscygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxhYmVscygpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYXlvdXQoKX1nZXRQYWdlTW9kZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKX1nZXRWaWV3ZXJQcmVmZXJlbmNlcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0Vmlld2VyUHJlZmVyZW5jZXMoKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRPcGVuQWN0aW9uKCl9Z2V0QXR0YWNobWVudHMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCl9Z2V0SmF2YVNjcmlwdCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0SmF2YVNjcmlwdCgpfWdldEpTQWN0aW9ucygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RG9jSlNBY3Rpb25zKCl9Z2V0T3V0bGluZSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3B0aW9uYWxDb250ZW50Q29uZmlnKCl9Z2V0UGVybWlzc2lvbnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBlcm1pc3Npb25zKCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCl9Z2V0TWFya0luZm8oKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1hcmtJbmZvKCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGF0YSgpfXNhdmVEb2N1bWVudCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCl9Z2V0RG93bmxvYWRJbmZvKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnByb21pc2V9Y2xlYW51cCh0PSExKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnN0YXJ0Q2xlYW51cCh0fHx0aGlzLmlzUHVyZVhmYSl9ZGVzdHJveSgpe3JldHVybiB0aGlzLmxvYWRpbmdUYXNrLmRlc3Ryb3koKX1nZXQgbG9hZGluZ1BhcmFtcygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQubG9hZGluZ1BhcmFtc31nZXQgbG9hZGluZ1Rhc2soKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrfWdldEZpZWxkT2JqZWN0cygpe3JldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RmllbGRPYmplY3RzKCl9aGFzSlNBY3Rpb25zKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5oYXNKU0FjdGlvbnMoKX1nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCl9fWV4cG9ydHMuUERGRG9jdW1lbnRQcm94eT1QREZEb2N1bWVudFByb3h5O2NsYXNzIFBERlBhZ2VQcm94eXtjb25zdHJ1Y3Rvcih0LGUscyxpLG49ITEpe3RoaXMuX3BhZ2VJbmRleD10O3RoaXMuX3BhZ2VJbmZvPWU7dGhpcy5fb3duZXJEb2N1bWVudD1pO3RoaXMuX3RyYW5zcG9ydD1zO3RoaXMuX3N0YXRzPW4/bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcjpudWxsO3RoaXMuX3BkZkJ1Zz1uO3RoaXMuY29tbW9uT2Jqcz1zLmNvbW1vbk9ianM7dGhpcy5vYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuX2JpdG1hcHM9bmV3IFNldDt0aGlzLmNsZWFudXBBZnRlclJlbmRlcj0hMTt0aGlzLnBlbmRpbmdDbGVhbnVwPSExO3RoaXMuX2ludGVudFN0YXRlcz1uZXcgTWFwO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcz1uZXcgTWFwO3RoaXMuZGVzdHJveWVkPSExfWdldCBwYWdlTnVtYmVyKCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleCsxfWdldCByb3RhdGUoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlfWdldCByZWYoKXtyZXR1cm4gdGhpcy5fcGFnZUluZm8ucmVmfWdldCB1c2VyVW5pdCgpe3JldHVybiB0aGlzLl9wYWdlSW5mby51c2VyVW5pdH1nZXQgdmlldygpe3JldHVybiB0aGlzLl9wYWdlSW5mby52aWV3fWdldFZpZXdwb3J0KHtzY2FsZTp0LHJvdGF0aW9uOmU9dGhpcy5yb3RhdGUsb2Zmc2V0WDpzPTAsb2Zmc2V0WTppPTAsZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlldyxzY2FsZTp0LHJvdGF0aW9uOmUsb2Zmc2V0WDpzLG9mZnNldFk6aSxkb250RmxpcDpufSl9Z2V0QW5ub3RhdGlvbnMoe2ludGVudDp0PSJkaXNwbGF5In09e30pe2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0KTtsZXQgcz10aGlzLl9hbm5vdGF0aW9uUHJvbWlzZXMuZ2V0KGUuY2FjaGVLZXkpO2lmKCFzKXtzPXRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsZS5yZW5kZXJpbmdJbnRlbnQpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5zZXQoZS5jYWNoZUtleSxzKX1yZXR1cm4gc31nZXRKU0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5fanNBY3Rpb25zUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCl9YXN5bmMgZ2V0WGZhKCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYT8uY2hpbGRyZW5bdGhpcy5fcGFnZUluZGV4XXx8bnVsbH1yZW5kZXIoe2NhbnZhc0NvbnRleHQ6dCx2aWV3cG9ydDplLGludGVudDpzPSJkaXNwbGF5Iixhbm5vdGF0aW9uTW9kZTppPV91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSx0cmFuc2Zvcm06bj1udWxsLGNhbnZhc0ZhY3Rvcnk6cj1udWxsLGJhY2tncm91bmQ6YT1udWxsLG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6bz1udWxsLGFubm90YXRpb25DYW52YXNNYXA6bD1udWxsLHBhZ2VDb2xvcnM6Yz1udWxsLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6aD1udWxsfSl7dGhpcy5fc3RhdHM/LnRpbWUoIk92ZXJhbGwiKTtjb25zdCBkPXRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQocyxpLGgpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7b3x8KG89dGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpKTtsZXQgdT10aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO2lmKCF1KXt1PU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5faW50ZW50U3RhdGVzLnNldChkLmNhY2hlS2V5LHUpfWlmKHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCl7Y2xlYXJUaW1lb3V0KHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCk7dS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9Y29uc3QgcD1yfHxuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe293bmVyRG9jdW1lbnQ6dGhpcy5fb3duZXJEb2N1bWVudH0pLGc9ISEoZC5yZW5kZXJpbmdJbnRlbnQmX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7aWYoIXUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSl7dS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3Uub3BlcmF0b3JMaXN0PXtmbkFycmF5OltdLGFyZ3NBcnJheTpbXSxsYXN0Q2h1bms6ITEsc2VwYXJhdGVBbm5vdHM6bnVsbH07dGhpcy5fc3RhdHM/LnRpbWUoIlBhZ2UgUmVxdWVzdCIpO3RoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCl9Y29uc3QgY29tcGxldGU9dD0+e3UucmVuZGVyVGFza3MuZGVsZXRlKG0pOyh0aGlzLmNsZWFudXBBZnRlclJlbmRlcnx8ZykmJih0aGlzLnBlbmRpbmdDbGVhbnVwPSEwKTt0aGlzLl90cnlDbGVhbnVwKCk7aWYodCl7bS5jYXBhYmlsaXR5LnJlamVjdCh0KTt0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7aW50ZW50U3RhdGU6dSxyZWFzb246dCBpbnN0YW5jZW9mIEVycm9yP3Q6bmV3IEVycm9yKHQpfSl9ZWxzZSBtLmNhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3N0YXRzPy50aW1lRW5kKCJSZW5kZXJpbmciKTt0aGlzLl9zdGF0cz8udGltZUVuZCgiT3ZlcmFsbCIpfSxtPW5ldyBJbnRlcm5hbFJlbmRlclRhc2soe2NhbGxiYWNrOmNvbXBsZXRlLHBhcmFtczp7Y2FudmFzQ29udGV4dDp0LHZpZXdwb3J0OmUsdHJhbnNmb3JtOm4sYmFja2dyb3VuZDphfSxvYmpzOnRoaXMub2Jqcyxjb21tb25PYmpzOnRoaXMuY29tbW9uT2Jqcyxhbm5vdGF0aW9uQ2FudmFzTWFwOmwsb3BlcmF0b3JMaXN0OnUub3BlcmF0b3JMaXN0LHBhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY2FudmFzRmFjdG9yeTpwLHVzZVJlcXVlc3RBbmltYXRpb25GcmFtZTohZyxwZGZCdWc6dGhpcy5fcGRmQnVnLHBhZ2VDb2xvcnM6Y30pOyh1LnJlbmRlclRhc2tzfHw9bmV3IFNldCkuYWRkKG0pO2NvbnN0IGY9bS50YXNrO1Byb21pc2UuYWxsKFt1LmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkucHJvbWlzZSxvXSkudGhlbigoKFt0LGVdKT0+e2lmKHRoaXMucGVuZGluZ0NsZWFudXApY29tcGxldGUoKTtlbHNle3RoaXMuX3N0YXRzPy50aW1lKCJSZW5kZXJpbmciKTttLmluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KTttLm9wZXJhdG9yTGlzdENoYW5nZWQoKX19KSkuY2F0Y2goY29tcGxldGUpO3JldHVybiBmfWdldE9wZXJhdG9yTGlzdCh7aW50ZW50OnQ9ImRpc3BsYXkiLGFubm90YXRpb25Nb2RlOmU9X3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLHByaW50QW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsfT17fSl7Y29uc3QgaT10aGlzLl90cmFuc3BvcnQuZ2V0UmVuZGVyaW5nSW50ZW50KHQsZSxzLCEwKTtsZXQgbixyPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoaS5jYWNoZUtleSk7aWYoIXIpe3I9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGkuY2FjaGVLZXkscil9aWYoIXIub3BMaXN0UmVhZENhcGFiaWxpdHkpe249T2JqZWN0LmNyZWF0ZShudWxsKTtuLm9wZXJhdG9yTGlzdENoYW5nZWQ9ZnVuY3Rpb24gb3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHIub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7ci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHIub3BlcmF0b3JMaXN0KTtyLnJlbmRlclRhc2tzLmRlbGV0ZShuKX19O3Iub3BMaXN0UmVhZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7KHIucmVuZGVyVGFza3N8fD1uZXcgU2V0KS5hZGQobik7ci5vcGVyYXRvckxpc3Q9e2ZuQXJyYXk6W10sYXJnc0FycmF5OltdLGxhc3RDaHVuazohMSxzZXBhcmF0ZUFubm90czpudWxsfTt0aGlzLl9zdGF0cz8udGltZSgiUGFnZSBSZXF1ZXN0Iik7dGhpcy5fcHVtcE9wZXJhdG9yTGlzdChpKX1yZXR1cm4gci5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlfXN0cmVhbVRleHRDb250ZW50KHtkaXNhYmxlQ29tYmluZVRleHRJdGVtczp0PSExLGluY2x1ZGVNYXJrZWRDb250ZW50OmU9ITF9PXt9KXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRUZXh0Q29udGVudCIse3BhZ2VJbmRleDp0aGlzLl9wYWdlSW5kZXgsY29tYmluZVRleHRJdGVtczohMCE9PXQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITA9PT1lfSx7aGlnaFdhdGVyTWFyazoxMDAsc2l6ZTp0PT50Lml0ZW1zLmxlbmd0aH0pfWdldFRleHRDb250ZW50KHQ9e30pe2lmKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSlyZXR1cm4gdGhpcy5nZXRYZmEoKS50aGVuKCh0PT5feGZhX3RleHQuWGZhVGV4dC50ZXh0Q29udGVudCh0KSkpO2NvbnN0IGU9dGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscyl7Y29uc3QgaT1lLmdldFJlYWRlcigpLG49e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfTshZnVuY3Rpb24gcHVtcCgpe2kucmVhZCgpLnRoZW4oKGZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6c30pe2lmKHMpdChuKTtlbHNle09iamVjdC5hc3NpZ24obi5zdHlsZXMsZS5zdHlsZXMpO24uaXRlbXMucHVzaCguLi5lLml0ZW1zKTtwdW1wKCl9fSkscyl9KCl9KSl9Z2V0U3RydWN0VHJlZSgpe3JldHVybiB0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZXx8PXRoaXMuX3RyYW5zcG9ydC5nZXRTdHJ1Y3RUcmVlKHRoaXMuX3BhZ2VJbmRleCl9X2Rlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMDtjb25zdCB0PVtdO2Zvcihjb25zdCBlIG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSl7dGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOmUscmVhc29uOm5ldyBFcnJvcigiUGFnZSB3YXMgZGVzdHJveWVkLiIpLGZvcmNlOiEwfSk7aWYoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpZm9yKGNvbnN0IHMgb2YgZS5yZW5kZXJUYXNrcyl7dC5wdXNoKHMuY29tcGxldGVkKTtzLmNhbmNlbCgpfX10aGlzLm9ianMuY2xlYXIoKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9iaXRtYXBzKXQuY2xvc2UoKTt0aGlzLl9iaXRtYXBzLmNsZWFyKCk7dGhpcy5fYW5ub3RhdGlvblByb21pc2VzLmNsZWFyKCk7dGhpcy5fanNBY3Rpb25zUHJvbWlzZT1udWxsO3RoaXMuX3N0cnVjdFRyZWVQcm9taXNlPW51bGw7dGhpcy5wZW5kaW5nQ2xlYW51cD0hMTtyZXR1cm4gUHJvbWlzZS5hbGwodCl9Y2xlYW51cCh0PSExKXt0aGlzLnBlbmRpbmdDbGVhbnVwPSEwO3JldHVybiB0aGlzLl90cnlDbGVhbnVwKHQpfV90cnlDbGVhbnVwKHQ9ITEpe2lmKCF0aGlzLnBlbmRpbmdDbGVhbnVwKXJldHVybiExO2Zvcihjb25zdHtyZW5kZXJUYXNrczp0LG9wZXJhdG9yTGlzdDplfW9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSlpZih0LnNpemU+MHx8IWUubGFzdENodW5rKXJldHVybiExO3RoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO3RoaXMub2Jqcy5jbGVhcigpO3RoaXMuX2Fubm90YXRpb25Qcm9taXNlcy5jbGVhcigpO3RoaXMuX2pzQWN0aW9uc1Byb21pc2U9bnVsbDt0aGlzLl9zdHJ1Y3RUcmVlUHJvbWlzZT1udWxsO3QmJnRoaXMuX3N0YXRzJiYodGhpcy5fc3RhdHM9bmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fYml0bWFwcyl0LmNsb3NlKCk7dGhpcy5fYml0bWFwcy5jbGVhcigpO3RoaXMucGVuZGluZ0NsZWFudXA9ITE7cmV0dXJuITB9X3N0YXJ0UmVuZGVyUGFnZSh0LGUpe2NvbnN0IHM9dGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtpZihzKXt0aGlzLl9zdGF0cz8udGltZUVuZCgiUGFnZSBSZXF1ZXN0Iik7cy5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5Py5yZXNvbHZlKHQpfX1fcmVuZGVyUGFnZUNodW5rKHQsZSl7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cysrKXtlLm9wZXJhdG9yTGlzdC5mbkFycmF5LnB1c2godC5mbkFycmF5W3NdKTtlLm9wZXJhdG9yTGlzdC5hcmdzQXJyYXkucHVzaCh0LmFyZ3NBcnJheVtzXSl9ZS5vcGVyYXRvckxpc3QubGFzdENodW5rPXQubGFzdENodW5rO2Uub3BlcmF0b3JMaXN0LnNlcGFyYXRlQW5ub3RzPXQuc2VwYXJhdGVBbm5vdHM7Zm9yKGNvbnN0IHQgb2YgZS5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0Lmxhc3RDaHVuayYmdGhpcy5fdHJ5Q2xlYW51cCgpfV9wdW1wT3BlcmF0b3JMaXN0KHtyZW5kZXJpbmdJbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlTWFwOnN9KXtjb25zdCBpPXRoaXMuX3RyYW5zcG9ydC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0T3BlcmF0b3JMaXN0Iix7cGFnZUluZGV4OnRoaXMuX3BhZ2VJbmRleCxpbnRlbnQ6dCxjYWNoZUtleTplLGFubm90YXRpb25TdG9yYWdlOnN9KS5nZXRSZWFkZXIoKSxuPXRoaXMuX2ludGVudFN0YXRlcy5nZXQoZSk7bi5zdHJlYW1SZWFkZXI9aTtjb25zdCBwdW1wPSgpPT57aS5yZWFkKCkudGhlbigoKHt2YWx1ZTp0LGRvbmU6ZX0pPT57aWYoZSluLnN0cmVhbVJlYWRlcj1udWxsO2Vsc2UgaWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe3RoaXMuX3JlbmRlclBhZ2VDaHVuayh0LG4pO3B1bXAoKX19KSwodD0+e24uc3RyZWFtUmVhZGVyPW51bGw7aWYoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpe2lmKG4ub3BlcmF0b3JMaXN0KXtuLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bms9ITA7Zm9yKGNvbnN0IHQgb2Ygbi5yZW5kZXJUYXNrcyl0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTt0aGlzLl90cnlDbGVhbnVwKCl9aWYobi5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KW4uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZXtpZighbi5vcExpc3RSZWFkQ2FwYWJpbGl0eSl0aHJvdyB0O24ub3BMaXN0UmVhZENhcGFiaWxpdHkucmVqZWN0KHQpfX19KSl9O3B1bXAoKX1fYWJvcnRPcGVyYXRvckxpc3Qoe2ludGVudFN0YXRlOnQscmVhc29uOmUsZm9yY2U6cz0hMX0pe2lmKHQuc3RyZWFtUmVhZGVyKXtpZighcyl7aWYodC5yZW5kZXJUYXNrcy5zaXplPjApcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24pe3Quc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2Fib3J0T3BlcmF0b3JMaXN0KHtpbnRlbnRTdGF0ZTp0LHJlYXNvbjplLGZvcmNlOiEwfSk7dC5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0PW51bGx9KSxSRU5ERVJJTkdfQ0FOQ0VMTEVEX1RJTUVPVVQpO3JldHVybn19dC5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpKS5jYXRjaCgoKCk9Pnt9KSk7dC5zdHJlYW1SZWFkZXI9bnVsbDtpZighdGhpcy5fdHJhbnNwb3J0LmRlc3Ryb3llZCl7Zm9yKGNvbnN0W2Usc11vZiB0aGlzLl9pbnRlbnRTdGF0ZXMpaWYocz09PXQpe3RoaXMuX2ludGVudFN0YXRlcy5kZWxldGUoZSk7YnJlYWt9dGhpcy5jbGVhbnVwKCl9fX1nZXQgc3RhdHMoKXtyZXR1cm4gdGhpcy5fc3RhdHN9fWV4cG9ydHMuUERGUGFnZVByb3h5PVBERlBhZ2VQcm94eTtjbGFzcyBMb29wYmFja1BvcnR7I2U9W107I3M9UHJvbWlzZS5yZXNvbHZlKCk7cG9zdE1lc3NhZ2UodCxlKXtjb25zdCBzPXtkYXRhOnN0cnVjdHVyZWRDbG9uZSh0LGUpfTt0aGlzLiNzLnRoZW4oKCgpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy4jZSl0LmNhbGwodGhpcyxzKX0pKX1hZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy4jZS5wdXNoKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtjb25zdCBzPXRoaXMuI2UuaW5kZXhPZihlKTt0aGlzLiNlLnNwbGljZShzLDEpfXRlcm1pbmF0ZSgpe3RoaXMuI2UubGVuZ3RoPTB9fWV4cG9ydHMuTG9vcGJhY2tQb3J0PUxvb3BiYWNrUG9ydDtjb25zdCBQREZXb3JrZXJVdGlsPXtpc1dvcmtlckRpc2FibGVkOiExLGZhbGxiYWNrV29ya2VyU3JjOm51bGwsZmFrZVdvcmtlcklkOjB9O2V4cG9ydHMuUERGV29ya2VyVXRpbD1QREZXb3JrZXJVdGlsO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7UERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkPSEwO1BERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9Ii4vcGRmLndvcmtlci5qcyJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50KXtjb25zdCB0PWRvY3VtZW50Py5jdXJyZW50U2NyaXB0Py5zcmM7dCYmKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmM9dC5yZXBsYWNlKC8oXC4oPzptaW5cLik/anMpKFw/LiopPyQvaSwiLndvcmtlciQxJDIiKSl9UERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW49ZnVuY3Rpb24odCxlKXtsZXQgczt0cnl7cz1uZXcgVVJMKHQpO2lmKCFzLm9yaWdpbnx8Im51bGwiPT09cy5vcmlnaW4pcmV0dXJuITF9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1uZXcgVVJMKGUscyk7cmV0dXJuIHMub3JpZ2luPT09aS5vcmlnaW59O1BERldvcmtlclV0aWwuY3JlYXRlQ0ROV3JhcHBlcj1mdW5jdGlvbih0KXtjb25zdCBlPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKX07Y2xhc3MgUERGV29ya2Vye3N0YXRpYyNpPW5ldyBXZWFrTWFwO2NvbnN0cnVjdG9yKHtuYW1lOnQ9bnVsbCxwb3J0OmU9bnVsbCx2ZXJib3NpdHk6cz0oMCxfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKX09e30pe2lmKGUmJlBERldvcmtlci4jaS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIG1vcmUgdGhhbiBvbmUgUERGV29ya2VyIHBlciBwb3J0LiIpO3RoaXMubmFtZT10O3RoaXMuZGVzdHJveWVkPSExO3RoaXMudmVyYm9zaXR5PXM7dGhpcy5fcmVhZHlDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3BvcnQ9bnVsbDt0aGlzLl93ZWJXb3JrZXI9bnVsbDt0aGlzLl9tZXNzYWdlSGFuZGxlcj1udWxsO2lmKGUpe1BERldvcmtlci4jaS5zZXQoZSx0aGlzKTt0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSl9ZWxzZSB0aGlzLl9pbml0aWFsaXplKCl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2V9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fcG9ydH1nZXQgbWVzc2FnZUhhbmRsZXIoKXtyZXR1cm4gdGhpcy5fbWVzc2FnZUhhbmRsZXJ9X2luaXRpYWxpemVGcm9tUG9ydCh0KXt0aGlzLl9wb3J0PXQ7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIoIm1haW4iLCJ3b3JrZXIiLHQpO3RoaXMuX21lc3NhZ2VIYW5kbGVyLm9uKCJyZWFkeSIsKGZ1bmN0aW9uKCl7fSkpO3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7dGhpcy5fbWVzc2FnZUhhbmRsZXIuc2VuZCgiY29uZmlndXJlIix7dmVyYm9zaXR5OnRoaXMudmVyYm9zaXR5fSl9X2luaXRpYWxpemUoKXtpZighUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkJiYhUERGV29ya2VyLl9tYWluVGhyZWFkV29ya2VyTWVzc2FnZUhhbmRsZXIpe2xldHt3b3JrZXJTcmM6dH09UERGV29ya2VyO3RyeXtQREZXb3JrZXJVdGlsLmlzU2FtZU9yaWdpbih3aW5kb3cubG9jYXRpb24uaHJlZix0KXx8KHQ9UERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCx3aW5kb3cubG9jYXRpb24pLmhyZWYpKTtjb25zdCBlPW5ldyBXb3JrZXIodCkscz1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcigibWFpbiIsIndvcmtlciIsZSksdGVybWluYXRlRWFybHk9KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtzLmRlc3Ryb3koKTtlLnRlcm1pbmF0ZSgpO3RoaXMuZGVzdHJveWVkP3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTp0aGlzLl9zZXR1cEZha2VXb3JrZXIoKX0sb25Xb3JrZXJFcnJvcj0oKT0+e3RoaXMuX3dlYldvcmtlcnx8dGVybWluYXRlRWFybHkoKX07ZS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7cy5vbigidGVzdCIsKHQ9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixvbldvcmtlckVycm9yKTtpZih0aGlzLmRlc3Ryb3llZCl0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYodCl7dGhpcy5fbWVzc2FnZUhhbmRsZXI9czt0aGlzLl9wb3J0PWU7dGhpcy5fd2ViV29ya2VyPWU7dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtzLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfWVsc2V7dGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7cy5kZXN0cm95KCk7ZS50ZXJtaW5hdGUoKX19KSk7cy5vbigicmVhZHkiLCh0PT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsb25Xb3JrZXJFcnJvcik7aWYodGhpcy5kZXN0cm95ZWQpdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeXtzZW5kVGVzdCgpfWNhdGNoKHQpe3RoaXMuX3NldHVwRmFrZVdvcmtlcigpfX0pKTtjb25zdCBzZW5kVGVzdD0oKT0+e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXk7cy5zZW5kKCJ0ZXN0Iix0LFt0LmJ1ZmZlcl0pfTtzZW5kVGVzdCgpO3JldHVybn1jYXRjaCh0KXsoMCxfdXRpbC5pbmZvKSgiVGhlIHdvcmtlciBoYXMgYmVlbiBkaXNhYmxlZC4iKX19dGhpcy5fc2V0dXBGYWtlV29ya2VyKCl9X3NldHVwRmFrZVdvcmtlcigpe2lmKCFQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQpeygwLF91dGlsLndhcm4pKCJTZXR0aW5nIHVwIGZha2Ugd29ya2VyLiIpO1BERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZD0hMH1QREZXb3JrZXIuX3NldHVwRmFrZVdvcmtlckdsb2JhbC50aGVuKCh0PT57aWYodGhpcy5kZXN0cm95ZWQpe3RoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJXb3JrZXIgd2FzIGRlc3Ryb3llZCIpKTtyZXR1cm59Y29uc3QgZT1uZXcgTG9vcGJhY2tQb3J0O3RoaXMuX3BvcnQ9ZTtjb25zdCBzPSJmYWtlIitQREZXb3JrZXJVdGlsLmZha2VXb3JrZXJJZCsrLGk9bmV3IF9tZXNzYWdlX2hhbmRsZXIuTWVzc2FnZUhhbmRsZXIocysiX3dvcmtlciIscyxlKTt0LnNldHVwKGksZSk7Y29uc3Qgbj1uZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihzLHMrIl93b3JrZXIiLGUpO3RoaXMuX21lc3NhZ2VIYW5kbGVyPW47dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtuLnNlbmQoImNvbmZpZ3VyZSIse3ZlcmJvc2l0eTp0aGlzLnZlcmJvc2l0eX0pfSkpLmNhdGNoKCh0PT57dGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoYFNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiAiJHt0Lm1lc3NhZ2V9Ii5gKSl9KSl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwO2lmKHRoaXMuX3dlYldvcmtlcil7dGhpcy5fd2ViV29ya2VyLnRlcm1pbmF0ZSgpO3RoaXMuX3dlYldvcmtlcj1udWxsfVBERldvcmtlci4jaS5kZWxldGUodGhpcy5fcG9ydCk7dGhpcy5fcG9ydD1udWxsO2lmKHRoaXMuX21lc3NhZ2VIYW5kbGVyKXt0aGlzLl9tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5fbWVzc2FnZUhhbmRsZXI9bnVsbH19c3RhdGljIGZyb21Qb3J0KHQpe2lmKCF0Py5wb3J0KXRocm93IG5ldyBFcnJvcigiUERGV29ya2VyLmZyb21Qb3J0IC0gaW52YWxpZCBtZXRob2Qgc2lnbmF0dXJlLiIpO3JldHVybiB0aGlzLiNpLmhhcyh0LnBvcnQpP3RoaXMuI2kuZ2V0KHQucG9ydCk6bmV3IFBERldvcmtlcih0KX1zdGF0aWMgZ2V0IHdvcmtlclNyYygpe2lmKF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYylyZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO2lmKG51bGwhPT1QREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKXtfaXNfbm9kZS5pc05vZGVKU3x8KDAsX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vICJHbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclNyYyIgc3BlY2lmaWVkLicpO3JldHVybiBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjfXRocm93IG5ldyBFcnJvcignTm8gIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjIiBzcGVjaWZpZWQuJyl9c3RhdGljIGdldCBfbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyKCl7dHJ5e3JldHVybiBnbG9iYWxUaGlzLnBkZmpzV29ya2VyPy5Xb3JrZXJNZXNzYWdlSGFuZGxlcnx8bnVsbH1jYXRjaCh0KXtyZXR1cm4gbnVsbH19c3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCl7Y29uc3QgbG9hZGVyPWFzeW5jKCk9Pntjb25zdCBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI9dGhpcy5fbWFpblRocmVhZFdvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlcilyZXR1cm4gbWFpbldvcmtlck1lc3NhZ2VIYW5kbGVyO2lmKF9pc19ub2RlLmlzTm9kZUpTJiYiZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSl7Y29uc3Qgd29ya2VyPWV2YWwoInJlcXVpcmUiKSh0aGlzLndvcmtlclNyYyk7cmV0dXJuIHdvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcn1hd2FpdCgwLF9kaXNwbGF5X3V0aWxzLmxvYWRTY3JpcHQpKHRoaXMud29ya2VyU3JjKTtyZXR1cm4gd2luZG93LnBkZmpzV29ya2VyLldvcmtlck1lc3NhZ2VIYW5kbGVyfTtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsIl9zZXR1cEZha2VXb3JrZXJHbG9iYWwiLGxvYWRlcigpKX19ZXhwb3J0cy5QREZXb3JrZXI9UERGV29ya2VyO2NsYXNzIFdvcmtlclRyYW5zcG9ydHsjbj1udWxsOyNyPW5ldyBNYXA7I2E9bmV3IE1hcDsjbz1udWxsO2NvbnN0cnVjdG9yKHQsZSxzLGkpe3RoaXMubWVzc2FnZUhhbmRsZXI9dDt0aGlzLmxvYWRpbmdUYXNrPWU7dGhpcy5jb21tb25PYmpzPW5ldyBQREZPYmplY3RzO3RoaXMuZm9udExvYWRlcj1uZXcgX2ZvbnRfbG9hZGVyLkZvbnRMb2FkZXIoe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnRoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlLmJpbmQodGhpcyksb3duZXJEb2N1bWVudDppLm93bmVyRG9jdW1lbnQsc3R5bGVFbGVtZW50Omkuc3R5bGVFbGVtZW50fSk7dGhpcy5fcGFyYW1zPWk7aWYoIWkudXNlV29ya2VyRmV0Y2gpe3RoaXMuQ01hcFJlYWRlckZhY3Rvcnk9bmV3IGkuQ01hcFJlYWRlckZhY3Rvcnkoe2Jhc2VVcmw6aS5jTWFwVXJsLGlzQ29tcHJlc3NlZDppLmNNYXBQYWNrZWR9KTt0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5PW5ldyBpLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5KHtiYXNlVXJsOmkuc3RhbmRhcmRGb250RGF0YVVybH0pfXRoaXMuZGVzdHJveWVkPSExO3RoaXMuZGVzdHJveUNhcGFiaWxpdHk9bnVsbDt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9bnVsbDt0aGlzLl9uZXR3b3JrU3RyZWFtPXM7dGhpcy5fZnVsbFJlYWRlcj1udWxsO3RoaXMuX2xhc3RQcm9ncmVzcz1udWxsO3RoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eT0oMCxfdXRpbC5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnNldHVwTWVzc2FnZUhhbmRsZXIoKX1nZXQgYW5ub3RhdGlvblN0b3JhZ2UoKXtyZXR1cm4oMCxfdXRpbC5zaGFkb3cpKHRoaXMsImFubm90YXRpb25TdG9yYWdlIixuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSl9Z2V0IHN0YXRzKCl7cmV0dXJuIHRoaXMuI259Z2V0UmVuZGVyaW5nSW50ZW50KHQsZT1fdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUscz1udWxsLGk9ITEpe2xldCBuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSxyPW51bGw7c3dpdGNoKHQpe2Nhc2UiYW55IjpuPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO2JyZWFrO2Nhc2UiZGlzcGxheSI6YnJlYWs7Y2FzZSJwcmludCI6bj1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwud2FybikoYGdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiAke3R9YCl9c3dpdGNoKGUpe2Nhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6YnJlYWs7Y2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6bis9X3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUzticmVhaztjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOm4rPV91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtyPShuJl91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQmJnMgaW5zdGFuY2VvZiBfYW5ub3RhdGlvbl9zdG9yYWdlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U/czp0aGlzLmFubm90YXRpb25TdG9yYWdlKS5zZXJpYWxpemFibGU7YnJlYWs7ZGVmYXVsdDooMCxfdXRpbC53YXJuKShgZ2V0UmVuZGVyaW5nSW50ZW50IC0gaW52YWxpZCBhbm5vdGF0aW9uTW9kZTogJHtlfWApfWkmJihuKz1fdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVCk7cmV0dXJue3JlbmRlcmluZ0ludGVudDpuLGNhY2hlS2V5OmAke259XyR7X2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZS5nZXRIYXNoKHIpfWAsYW5ub3RhdGlvblN0b3JhZ2VNYXA6cn19ZGVzdHJveSgpe2lmKHRoaXMuZGVzdHJveUNhcGFiaWxpdHkpcmV0dXJuIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucHJvbWlzZTt0aGlzLmRlc3Ryb3llZD0hMDt0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eSYmdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrIikpO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGUgb2YgdGhpcy4jci52YWx1ZXMoKSl0LnB1c2goZS5fZGVzdHJveSgpKTt0aGlzLiNyLmNsZWFyKCk7dGhpcy4jYS5jbGVhcigpO3RoaXMuaGFzT3duUHJvcGVydHkoImFubm90YXRpb25TdG9yYWdlIikmJnRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO2NvbnN0IGU9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIlRlcm1pbmF0ZSIsbnVsbCk7dC5wdXNoKGUpO1Byb21pc2UuYWxsKHQpLnRoZW4oKCgpPT57dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGw7dGhpcy5fbmV0d29ya1N0cmVhbSYmdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7aWYodGhpcy5tZXNzYWdlSGFuZGxlcil7dGhpcy5tZXNzYWdlSGFuZGxlci5kZXN0cm95KCk7dGhpcy5tZXNzYWdlSGFuZGxlcj1udWxsfXRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpfSksdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5yZWplY3QpO3JldHVybiB0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5LnByb21pc2V9c2V0dXBNZXNzYWdlSGFuZGxlcigpe2NvbnN0e21lc3NhZ2VIYW5kbGVyOnQsbG9hZGluZ1Rhc2s6ZX09dGhpczt0Lm9uKCJHZXRSZWFkZXIiLCgodCxlKT0+eygwLF91dGlsLmFzc2VydCkodGhpcy5fbmV0d29ya1N0cmVhbSwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTt0aGlzLl9mdWxsUmVhZGVyPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0RnVsbFJlYWRlcigpO3RoaXMuX2Z1bGxSZWFkZXIub25Qcm9ncmVzcz10PT57dGhpcy5fbGFzdFByb2dyZXNzPXtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH19O2Uub25QdWxsPSgpPT57dGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbigoZnVuY3Rpb24oe3ZhbHVlOnQsZG9uZTpzfSl7aWYocyllLmNsb3NlKCk7ZWxzZXsoMCxfdXRpbC5hc3NlcnQpKCgwLF91dGlsLmlzQXJyYXlCdWZmZXIpKHQpLCJHZXRSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci4iKTtlLmVucXVldWUobmV3IFVpbnQ4QXJyYXkodCksMSxbdF0pfX0pKS5jYXRjaCgodD0+e2UuZXJyb3IodCl9KSl9O2Uub25DYW5jZWw9dD0+e3RoaXMuX2Z1bGxSZWFkZXIuY2FuY2VsKHQpO2UucmVhZHkuY2F0Y2goKHQ9PntpZighdGhpcy5kZXN0cm95ZWQpdGhyb3cgdH0pKX19KSk7dC5vbigiUmVhZGVySGVhZGVyc1JlYWR5IiwodD0+e2NvbnN0IHM9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksaT10aGlzLl9mdWxsUmVhZGVyO2kuaGVhZGVyc1JlYWR5LnRoZW4oKCgpPT57aWYoIWkuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fCFpLmlzUmFuZ2VTdXBwb3J0ZWQpe3RoaXMuX2xhc3RQcm9ncmVzcyYmZS5vblByb2dyZXNzPy4odGhpcy5fbGFzdFByb2dyZXNzKTtpLm9uUHJvZ3Jlc3M9dD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWQsdG90YWw6dC50b3RhbH0pfX1zLnJlc29sdmUoe2lzU3RyZWFtaW5nU3VwcG9ydGVkOmkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsaXNSYW5nZVN1cHBvcnRlZDppLmlzUmFuZ2VTdXBwb3J0ZWQsY29udGVudExlbmd0aDppLmNvbnRlbnRMZW5ndGh9KX0pLHMucmVqZWN0KTtyZXR1cm4gcy5wcm9taXNlfSkpO3Qub24oIkdldFJhbmdlUmVhZGVyIiwoKHQsZSk9PnsoMCxfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS4iKTtjb25zdCBzPXRoaXMuX25ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIodC5iZWdpbix0LmVuZCk7aWYocyl7ZS5vblB1bGw9KCk9PntzLnJlYWQoKS50aGVuKChmdW5jdGlvbih7dmFsdWU6dCxkb25lOnN9KXtpZihzKWUuY2xvc2UoKTtlbHNleygwLF91dGlsLmFzc2VydCkoKDAsX3V0aWwuaXNBcnJheUJ1ZmZlcikodCksIkdldFJhbmdlUmVhZGVyIC0gZXhwZWN0ZWQgYW4gQXJyYXlCdWZmZXIuIik7ZS5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KHQpLDEsW3RdKX19KSkuY2F0Y2goKHQ9PntlLmVycm9yKHQpfSkpfTtlLm9uQ2FuY2VsPXQ9PntzLmNhbmNlbCh0KTtlLnJlYWR5LmNhdGNoKCh0PT57aWYoIXRoaXMuZGVzdHJveWVkKXRocm93IHR9KSl9fWVsc2UgZS5jbG9zZSgpfSkpO3Qub24oIkdldERvYyIsKCh7cGRmSW5mbzp0fSk9Pnt0aGlzLl9udW1QYWdlcz10Lm51bVBhZ2VzO3RoaXMuX2h0bWxGb3JYZmE9dC5odG1sRm9yWGZhO2RlbGV0ZSB0Lmh0bWxGb3JYZmE7ZS5fY2FwYWJpbGl0eS5yZXNvbHZlKG5ldyBQREZEb2N1bWVudFByb3h5KHQsdGhpcykpfSkpO3Qub24oIkRvY0V4Y2VwdGlvbiIsKGZ1bmN0aW9uKHQpe2xldCBzO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnM9bmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSx0LmNvZGUpO2JyZWFrO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuSW52YWxpZFBERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2JyZWFrO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpzPW5ldyBfdXRpbC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTticmVhaztjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cz1uZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSx0LmRldGFpbHMpO2JyZWFrO2RlZmF1bHQ6KDAsX3V0aWwudW5yZWFjaGFibGUpKCJEb2NFeGNlcHRpb24gLSBleHBlY3RlZCBhIHZhbGlkIEVycm9yLiIpfWUuX2NhcGFiaWxpdHkucmVqZWN0KHMpfSkpO3Qub24oIlBhc3N3b3JkUmVxdWVzdCIsKHQ9Pnt0aGlzLl9wYXNzd29yZENhcGFiaWxpdHk9KDAsX3V0aWwuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7aWYoZS5vblBhc3N3b3JkKXtjb25zdCB1cGRhdGVQYXNzd29yZD10PT57dCBpbnN0YW5jZW9mIEVycm9yP3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCk6dGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlc29sdmUoe3Bhc3N3b3JkOnR9KX07dHJ5e2Uub25QYXNzd29yZCh1cGRhdGVQYXNzd29yZCx0LmNvZGUpfWNhdGNoKHQpe3RoaXMuX3Bhc3N3b3JkQ2FwYWJpbGl0eS5yZWplY3QodCl9fWVsc2UgdGhpcy5fcGFzc3dvcmRDYXBhYmlsaXR5LnJlamVjdChuZXcgX3V0aWwuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSkpO3JldHVybiB0aGlzLl9wYXNzd29yZENhcGFiaWxpdHkucHJvbWlzZX0pKTt0Lm9uKCJEYXRhTG9hZGVkIiwodD0+e2Uub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sZW5ndGgsdG90YWw6dC5sZW5ndGh9KTt0aGlzLmRvd25sb2FkSW5mb0NhcGFiaWxpdHkucmVzb2x2ZSh0KX0pKTt0Lm9uKCJTdGFydFJlbmRlclBhZ2UiLCh0PT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO3RoaXMuI3IuZ2V0KHQucGFnZUluZGV4KS5fc3RhcnRSZW5kZXJQYWdlKHQudHJhbnNwYXJlbmN5LHQuY2FjaGVLZXkpfSkpO3Qub24oImNvbW1vbm9iaiIsKChbZSxzLGldKT0+e2lmKCF0aGlzLmRlc3Ryb3llZCYmIXRoaXMuY29tbW9uT2Jqcy5oYXMoZSkpc3dpdGNoKHMpe2Nhc2UiRm9udCI6Y29uc3Qgbj10aGlzLl9wYXJhbXM7aWYoImVycm9yImluIGkpe2NvbnN0IHQ9aS5lcnJvcjsoMCxfdXRpbC53YXJuKShgRXJyb3IgZHVyaW5nIGZvbnQgbG9hZGluZzogJHt0fWApO3RoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsdCk7YnJlYWt9bGV0IHI9bnVsbDtuLnBkZkJ1ZyYmZ2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yPy5lbmFibGVkJiYocj17cmVnaXN0ZXJGb250KHQsZSl7Z2xvYmFsVGhpcy5Gb250SW5zcGVjdG9yLmZvbnRBZGRlZCh0LGUpfX0pO2NvbnN0IGE9bmV3IF9mb250X2xvYWRlci5Gb250RmFjZU9iamVjdChpLHtpc0V2YWxTdXBwb3J0ZWQ6bi5pc0V2YWxTdXBwb3J0ZWQsZGlzYWJsZUZvbnRGYWNlOm4uZGlzYWJsZUZvbnRGYWNlLGlnbm9yZUVycm9yczpuLmlnbm9yZUVycm9ycyxvblVuc3VwcG9ydGVkRmVhdHVyZTp0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZS5iaW5kKHRoaXMpLGZvbnRSZWdpc3RyeTpyfSk7dGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goKHM9PnQuc2VuZFdpdGhQcm9taXNlKCJGb250RmFsbGJhY2siLHtpZDplfSkpKS5maW5hbGx5KCgoKT0+eyFuLmZvbnRFeHRyYVByb3BlcnRpZXMmJmEuZGF0YSYmKGEuZGF0YT1udWxsKTt0aGlzLmNvbW1vbk9ianMucmVzb2x2ZShlLGEpfSkpO2JyZWFrO2Nhc2UiRm9udFBhdGgiOmNhc2UiSW1hZ2UiOnRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKGUsaSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEdvdCB1bmtub3duIGNvbW1vbiBvYmplY3QgdHlwZSAke3N9YCl9fSkpO3Qub24oIm9iaiIsKChbdCxlLHMsaV0pPT57aWYodGhpcy5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IG49dGhpcy4jci5nZXQoZSk7aWYoIW4ub2Jqcy5oYXModCkpc3dpdGNoKHMpe2Nhc2UiSW1hZ2UiOm4ub2Jqcy5yZXNvbHZlKHQsaSk7Y29uc3QgZT04ZTY7aWYoaSl7bGV0IHQ7aWYoaS5iaXRtYXApe2NvbnN0e2JpdG1hcDplLHdpZHRoOnMsaGVpZ2h0OnJ9PWk7dD1zKnIqNDtuLl9iaXRtYXBzLmFkZChlKX1lbHNlIHQ9aS5kYXRhPy5sZW5ndGh8fDA7dD5lJiYobi5jbGVhbnVwQWZ0ZXJSZW5kZXI9ITApfWJyZWFrO2Nhc2UiUGF0dGVybiI6bi5vYmpzLnJlc29sdmUodCxpKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgR290IHVua25vd24gb2JqZWN0IHR5cGUgJHtzfWApfX0pKTt0Lm9uKCJEb2NQcm9ncmVzcyIsKHQ9Pnt0aGlzLmRlc3Ryb3llZHx8ZS5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9KSk7dC5vbigiRG9jU3RhdHMiLCh0PT57dGhpcy5kZXN0cm95ZWR8fCh0aGlzLiNuPU9iamVjdC5mcmVlemUoe3N0cmVhbVR5cGVzOk9iamVjdC5mcmVlemUodC5zdHJlYW1UeXBlcyksZm9udFR5cGVzOk9iamVjdC5mcmVlemUodC5mb250VHlwZXMpfSkpfSkpO3Qub24oIlVuc3VwcG9ydGVkRmVhdHVyZSIsdGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUuYmluZCh0aGlzKSk7dC5vbigiRmV0Y2hCdWlsdEluQ01hcCIsKHQ9PnRoaXMuZGVzdHJveWVkP1Byb21pc2UucmVqZWN0KG5ldyBFcnJvcigiV29ya2VyIHdhcyBkZXN0cm95ZWQuIikpOnRoaXMuQ01hcFJlYWRlckZhY3Rvcnk/dGhpcy5DTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KTpQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci4iKSkpKTt0Lm9uKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLCh0PT50aGlzLmRlc3Ryb3llZD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIldvcmtlciB3YXMgZGVzdHJveWVkLiIpKTp0aGlzLlN0YW5kYXJkRm9udERhdGFGYWN0b3J5P3RoaXMuU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuIikpKSl9X29uVW5zdXBwb3J0ZWRGZWF0dXJlKHtmZWF0dXJlSWQ6dH0pe3RoaXMuZGVzdHJveWVkfHx0aGlzLmxvYWRpbmdUYXNrLm9uVW5zdXBwb3J0ZWRGZWF0dXJlPy4odCl9Z2V0RGF0YSgpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RGF0YSIsbnVsbCl9c2F2ZURvY3VtZW50KCl7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zaXplPD0wJiYoMCxfdXRpbC53YXJuKSgic2F2ZURvY3VtZW50IGNhbGxlZCB3aGlsZSBgYW5ub3RhdGlvblN0b3JhZ2VgIGlzIGVtcHR5LCBwbGVhc2UgdXNlIHRoZSBnZXREYXRhLW1ldGhvZCBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiU2F2ZURvY3VtZW50Iix7aXNQdXJlWGZhOiEhdGhpcy5faHRtbEZvclhmYSxudW1QYWdlczp0aGlzLl9udW1QYWdlcyxhbm5vdGF0aW9uU3RvcmFnZTp0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZSxmaWxlbmFtZTp0aGlzLl9mdWxsUmVhZGVyPy5maWxlbmFtZT8/bnVsbH0pLmZpbmFsbHkoKCgpPT57dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5yZXNldE1vZGlmaWVkKCl9KSl9Z2V0UGFnZSh0KXtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDw9MHx8dD50aGlzLl9udW1QYWdlcylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJbnZhbGlkIHBhZ2UgcmVxdWVzdC4iKSk7Y29uc3QgZT10LTEscz10aGlzLiNhLmdldChlKTtpZihzKXJldHVybiBzO2NvbnN0IGk9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2UiLHtwYWdlSW5kZXg6ZX0pLnRoZW4oKHQ9PntpZih0aGlzLmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRyYW5zcG9ydCBkZXN0cm95ZWQiKTtjb25zdCBzPW5ldyBQREZQYWdlUHJveHkoZSx0LHRoaXMsdGhpcy5fcGFyYW1zLm93bmVyRG9jdW1lbnQsdGhpcy5fcGFyYW1zLnBkZkJ1Zyk7dGhpcy4jci5zZXQoZSxzKTtyZXR1cm4gc30pKTt0aGlzLiNhLnNldChlLGkpO3JldHVybiBpfWdldFBhZ2VJbmRleCh0KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10fHwhTnVtYmVyLmlzSW50ZWdlcih0Lm51bSl8fHQubnVtPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKHQuZ2VuKXx8dC5nZW48MD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgcGFnZUluZGV4IHJlcXVlc3QuIikpOnRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlSW5kZXgiLHtudW06dC5udW0sZ2VuOnQuZ2VufSl9Z2V0QW5ub3RhdGlvbnModCxlKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEFubm90YXRpb25zIix7cGFnZUluZGV4OnQsaW50ZW50OmV9KX1nZXRGaWVsZE9iamVjdHMoKXtyZXR1cm4gdGhpcy5fZ2V0RmllbGRPYmplY3RzUHJvbWlzZXx8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRGaWVsZE9iamVjdHMiLG51bGwpfWhhc0pTQWN0aW9ucygpe3JldHVybiB0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlfHw9dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkhhc0pTQWN0aW9ucyIsbnVsbCl9Z2V0Q2FsY3VsYXRpb25PcmRlcklkcygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCl9Z2V0RGVzdGluYXRpb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXREZXN0aW5hdGlvbnMiLG51bGwpfWdldERlc3RpbmF0aW9uKHQpe3JldHVybiJzdHJpbmciIT10eXBlb2YgdD9Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIkludmFsaWQgZGVzdGluYXRpb24gcmVxdWVzdC4iKSk6dGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldERlc3RpbmF0aW9uIix7aWQ6dH0pfWdldFBhZ2VMYWJlbHMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYWJlbHMiLG51bGwpfWdldFBhZ2VMYXlvdXQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFBhZ2VMYXlvdXQiLG51bGwpfWdldFBhZ2VNb2RlKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQYWdlTW9kZSIsbnVsbCl9Z2V0Vmlld2VyUHJlZmVyZW5jZXMoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFZpZXdlclByZWZlcmVuY2VzIixudWxsKX1nZXRPcGVuQWN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRPcGVuQWN0aW9uIixudWxsKX1nZXRBdHRhY2htZW50cygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0QXR0YWNobWVudHMiLG51bGwpfWdldEphdmFTY3JpcHQoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldEphdmFTY3JpcHQiLG51bGwpfWdldERvY0pTQWN0aW9ucygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0RG9jSlNBY3Rpb25zIixudWxsKX1nZXRQYWdlSlNBY3Rpb25zKHQpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0UGFnZUpTQWN0aW9ucyIse3BhZ2VJbmRleDp0fSl9Z2V0U3RydWN0VHJlZSh0KXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldFN0cnVjdFRyZWUiLHtwYWdlSW5kZXg6dH0pfWdldE91dGxpbmUoKXtyZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkdldE91dGxpbmUiLG51bGwpfWdldE9wdGlvbmFsQ29udGVudENvbmZpZygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKS50aGVuKCh0PT5uZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSkpfWdldFBlcm1pc3Npb25zKCl7cmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRQZXJtaXNzaW9ucyIsbnVsbCl9Z2V0TWV0YWRhdGEoKXtyZXR1cm4gdGhpcy4jb3x8PXRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJHZXRNZXRhZGF0YSIsbnVsbCkudGhlbigodD0+KHtpbmZvOnRbMF0sbWV0YWRhdGE6dFsxXT9uZXcgX21ldGFkYXRhLk1ldGFkYXRhKHRbMV0pOm51bGwsY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6dGhpcy5fZnVsbFJlYWRlcj8uZmlsZW5hbWU/P251bGwsY29udGVudExlbmd0aDp0aGlzLl9mdWxsUmVhZGVyPy5jb250ZW50TGVuZ3RoPz9udWxsfSkpKX1nZXRNYXJrSW5mbygpe3JldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiR2V0TWFya0luZm8iLG51bGwpfWFzeW5jIHN0YXJ0Q2xlYW51cCh0PSExKXtpZighdGhpcy5kZXN0cm95ZWQpe2F3YWl0IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJDbGVhbnVwIixudWxsKTtmb3IoY29uc3QgdCBvZiB0aGlzLiNyLnZhbHVlcygpKXtpZighdC5jbGVhbnVwKCkpdGhyb3cgbmV3IEVycm9yKGBzdGFydENsZWFudXA6IFBhZ2UgJHt0LnBhZ2VOdW1iZXJ9IGlzIGN1cnJlbnRseSByZW5kZXJpbmcuYCl9dGhpcy5jb21tb25PYmpzLmNsZWFyKCk7dHx8dGhpcy5mb250TG9hZGVyLmNsZWFyKCk7dGhpcy4jbz1udWxsO3RoaXMuX2dldEZpZWxkT2JqZWN0c1Byb21pc2U9bnVsbDt0aGlzLl9oYXNKU0FjdGlvbnNQcm9taXNlPW51bGx9fWdldCBsb2FkaW5nUGFyYW1zKCl7Y29uc3QgdD10aGlzLl9wYXJhbXM7cmV0dXJuKDAsX3V0aWwuc2hhZG93KSh0aGlzLCJsb2FkaW5nUGFyYW1zIix7ZGlzYWJsZUF1dG9GZXRjaDp0LmRpc2FibGVBdXRvRmV0Y2gsZW5hYmxlWGZhOnQuZW5hYmxlWGZhfSl9fWNsYXNzIFBERk9iamVjdHN7I2w9T2JqZWN0LmNyZWF0ZShudWxsKTsjYyh0KXtjb25zdCBlPXRoaXMuI2xbdF07cmV0dXJuIGV8fCh0aGlzLiNsW3RdPXtjYXBhYmlsaXR5OigwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpLGRhdGE6bnVsbH0pfWdldCh0LGU9bnVsbCl7aWYoZSl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuY2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCgpPT5lKHMuZGF0YSkpKTtyZXR1cm4gbnVsbH1jb25zdCBzPXRoaXMuI2xbdF07aWYoIXM/LmNhcGFiaWxpdHkuc2V0dGxlZCl0aHJvdyBuZXcgRXJyb3IoYFJlcXVlc3Rpbmcgb2JqZWN0IHRoYXQgaXNuJ3QgcmVzb2x2ZWQgeWV0ICR7dH0uYCk7cmV0dXJuIHMuZGF0YX1oYXModCl7cmV0dXJuIHRoaXMuI2xbdF0/LmNhcGFiaWxpdHkuc2V0dGxlZHx8ITF9cmVzb2x2ZSh0LGU9bnVsbCl7Y29uc3Qgcz10aGlzLiNjKHQpO3MuZGF0YT1lO3MuY2FwYWJpbGl0eS5yZXNvbHZlKCl9Y2xlYXIoKXt0aGlzLiNsPU9iamVjdC5jcmVhdGUobnVsbCl9fWNsYXNzIFJlbmRlclRhc2t7I2g9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLiNoPXQ7dGhpcy5vbkNvbnRpbnVlPW51bGx9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy4jaC5jYXBhYmlsaXR5LnByb21pc2V9Y2FuY2VsKCl7dGhpcy4jaC5jYW5jZWwoKX1nZXQgc2VwYXJhdGVBbm5vdHMoKXtjb25zdHtzZXBhcmF0ZUFubm90czp0fT10aGlzLiNoLm9wZXJhdG9yTGlzdDtpZighdClyZXR1cm4hMTtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmV9PXRoaXMuI2g7cmV0dXJuIHQuZm9ybXx8dC5jYW52YXMmJmU/LnNpemU+MH19ZXhwb3J0cy5SZW5kZXJUYXNrPVJlbmRlclRhc2s7Y2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNre3N0YXRpYyNkPW5ldyBXZWFrU2V0O2NvbnN0cnVjdG9yKHtjYWxsYmFjazp0LHBhcmFtczplLG9ianM6cyxjb21tb25PYmpzOmksYW5ub3RhdGlvbkNhbnZhc01hcDpuLG9wZXJhdG9yTGlzdDpyLHBhZ2VJbmRleDphLGNhbnZhc0ZhY3Rvcnk6byx1c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bD0hMSxwZGZCdWc6Yz0hMSxwYWdlQ29sb3JzOmg9bnVsbH0pe3RoaXMuY2FsbGJhY2s9dDt0aGlzLnBhcmFtcz1lO3RoaXMub2Jqcz1zO3RoaXMuY29tbW9uT2Jqcz1pO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcD1uO3RoaXMub3BlcmF0b3JMaXN0SWR4PW51bGw7dGhpcy5vcGVyYXRvckxpc3Q9cjt0aGlzLl9wYWdlSW5kZXg9YTt0aGlzLmNhbnZhc0ZhY3Rvcnk9bzt0aGlzLl9wZGZCdWc9Yzt0aGlzLnBhZ2VDb2xvcnM9aDt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9bnVsbDt0aGlzLmdyYXBoaWNzUmVhZHk9ITE7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPSEwPT09bCYmInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c7dGhpcy5jYW5jZWxsZWQ9ITE7dGhpcy5jYXBhYmlsaXR5PSgwLF91dGlsLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMudGFzaz1uZXcgUmVuZGVyVGFzayh0aGlzKTt0aGlzLl9jYW5jZWxCb3VuZD10aGlzLmNhbmNlbC5iaW5kKHRoaXMpO3RoaXMuX2NvbnRpbnVlQm91bmQ9dGhpcy5fY29udGludWUuYmluZCh0aGlzKTt0aGlzLl9zY2hlZHVsZU5leHRCb3VuZD10aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTt0aGlzLl9uZXh0Qm91bmQ9dGhpcy5fbmV4dC5iaW5kKHRoaXMpO3RoaXMuX2NhbnZhcz1lLmNhbnZhc0NvbnRleHQuY2FudmFzfWdldCBjb21wbGV0ZWQoKXtyZXR1cm4gdGhpcy5jYXBhYmlsaXR5LnByb21pc2UuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpfWluaXRpYWxpemVHcmFwaGljcyh7dHJhbnNwYXJlbmN5OnQ9ITEsb3B0aW9uYWxDb250ZW50Q29uZmlnOmV9KXtpZih0aGlzLmNhbmNlbGxlZClyZXR1cm47aWYodGhpcy5fY2FudmFzKXtpZihJbnRlcm5hbFJlbmRlclRhc2suI2QuaGFzKHRoaXMuX2NhbnZhcykpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXNlIHRoZSBzYW1lIGNhbnZhcyBkdXJpbmcgbXVsdGlwbGUgcmVuZGVyKCkgb3BlcmF0aW9ucy4gVXNlIGRpZmZlcmVudCBjYW52YXMgb3IgZW5zdXJlIHByZXZpb3VzIG9wZXJhdGlvbnMgd2VyZSBjYW5jZWxsZWQgb3IgY29tcGxldGVkLiIpO0ludGVybmFsUmVuZGVyVGFzay4jZC5hZGQodGhpcy5fY2FudmFzKX1pZih0aGlzLl9wZGZCdWcmJmdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXI/LmVuYWJsZWQpe3RoaXMuc3RlcHBlcj1nbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO3RoaXMuc3RlcHBlci5pbml0KHRoaXMub3BlcmF0b3JMaXN0KTt0aGlzLnN0ZXBwZXIubmV4dEJyZWFrUG9pbnQ9dGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCl9Y29uc3R7Y2FudmFzQ29udGV4dDpzLHZpZXdwb3J0OmksdHJhbnNmb3JtOm4sYmFja2dyb3VuZDpyfT10aGlzLnBhcmFtczt0aGlzLmdmeD1uZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhzLHRoaXMuY29tbW9uT2Jqcyx0aGlzLm9ianMsdGhpcy5jYW52YXNGYWN0b3J5LGUsdGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwLHRoaXMucGFnZUNvbG9ycyk7dGhpcy5nZnguYmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06bix2aWV3cG9ydDppLHRyYW5zcGFyZW5jeTp0LGJhY2tncm91bmQ6cn0pO3RoaXMub3BlcmF0b3JMaXN0SWR4PTA7dGhpcy5ncmFwaGljc1JlYWR5PSEwO3RoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrPy4oKX1jYW5jZWwodD1udWxsKXt0aGlzLnJ1bm5pbmc9ITE7dGhpcy5jYW5jZWxsZWQ9ITA7dGhpcy5nZng/LmVuZERyYXdpbmcoKTt0aGlzLl9jYW52YXMmJkludGVybmFsUmVuZGVyVGFzay4jZC5kZWxldGUodGhpcy5fY2FudmFzKTt0aGlzLmNhbGxiYWNrKHR8fG5ldyBfZGlzcGxheV91dGlscy5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24oYFJlbmRlcmluZyBjYW5jZWxsZWQsIHBhZ2UgJHt0aGlzLl9wYWdlSW5kZXgrMX1gLCJjYW52YXMiKSl9b3BlcmF0b3JMaXN0Q2hhbmdlZCgpe2lmKHRoaXMuZ3JhcGhpY3NSZWFkeSl7dGhpcy5zdGVwcGVyPy51cGRhdGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QpO3RoaXMucnVubmluZ3x8dGhpcy5fY29udGludWUoKX1lbHNlIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrfHwodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2s9dGhpcy5fY29udGludWVCb3VuZCl9X2NvbnRpbnVlKCl7dGhpcy5ydW5uaW5nPSEwO3RoaXMuY2FuY2VsbGVkfHwodGhpcy50YXNrLm9uQ29udGludWU/dGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpOnRoaXMuX3NjaGVkdWxlTmV4dCgpKX1fc2NoZWR1bGVOZXh0KCl7dGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fbmV4dEJvdW5kKCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpfSkpOlByb21pc2UucmVzb2x2ZSgpLnRoZW4odGhpcy5fbmV4dEJvdW5kKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCl9YXN5bmMgX25leHQoKXtpZighdGhpcy5jYW5jZWxsZWQpe3RoaXMub3BlcmF0b3JMaXN0SWR4PXRoaXMuZ2Z4LmV4ZWN1dGVPcGVyYXRvckxpc3QodGhpcy5vcGVyYXRvckxpc3QsdGhpcy5vcGVyYXRvckxpc3RJZHgsdGhpcy5fY29udGludWVCb3VuZCx0aGlzLnN0ZXBwZXIpO2lmKHRoaXMub3BlcmF0b3JMaXN0SWR4PT09dGhpcy5vcGVyYXRvckxpc3QuYXJnc0FycmF5Lmxlbmd0aCl7dGhpcy5ydW5uaW5nPSExO2lmKHRoaXMub3BlcmF0b3JMaXN0Lmxhc3RDaHVuayl7dGhpcy5nZnguZW5kRHJhd2luZygpO3RoaXMuX2NhbnZhcyYmSW50ZXJuYWxSZW5kZXJUYXNrLiNkLmRlbGV0ZSh0aGlzLl9jYW52YXMpO3RoaXMuY2FsbGJhY2soKX19fX19Y29uc3QgdmVyc2lvbj0iMy4wLjI3OSI7ZXhwb3J0cy52ZXJzaW9uPXZlcnNpb247Y29uc3QgYnVpbGQ9ImQwODIzMDY2YyI7ZXhwb3J0cy5idWlsZD1idWlsZH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9ZS5Bbm5vdGF0aW9uU3RvcmFnZT12b2lkIDA7dmFyIGk9cygxKSxuPXMoNCkscj1zKDgpO2NsYXNzIEFubm90YXRpb25TdG9yYWdle2NvbnN0cnVjdG9yKCl7dGhpcy5fc3RvcmFnZT1uZXcgTWFwO3RoaXMuX21vZGlmaWVkPSExO3RoaXMub25TZXRNb2RpZmllZD1udWxsO3RoaXMub25SZXNldE1vZGlmaWVkPW51bGw7dGhpcy5vbkFubm90YXRpb25FZGl0b3I9bnVsbH1nZXRWYWx1ZSh0LGUpe2NvbnN0IHM9dGhpcy5fc3RvcmFnZS5nZXQodCk7cmV0dXJuIHZvaWQgMD09PXM/ZTpPYmplY3QuYXNzaWduKGUscyl9Z2V0UmF3VmFsdWUodCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2UuZ2V0KHQpfXJlbW92ZSh0KXt0aGlzLl9zdG9yYWdlLmRlbGV0ZSh0KTswPT09dGhpcy5fc3RvcmFnZS5zaXplJiZ0aGlzLnJlc2V0TW9kaWZpZWQoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3Ipe2Zvcihjb25zdCB0IG9mIHRoaXMuX3N0b3JhZ2UudmFsdWVzKCkpaWYodCBpbnN0YW5jZW9mIG4uQW5ub3RhdGlvbkVkaXRvcilyZXR1cm47dGhpcy5vbkFubm90YXRpb25FZGl0b3IobnVsbCl9fXNldFZhbHVlKHQsZSl7Y29uc3Qgcz10aGlzLl9zdG9yYWdlLmdldCh0KTtsZXQgaT0hMTtpZih2b2lkIDAhPT1zKXtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGUpKWlmKHNbdF0hPT1uKXtpPSEwO3NbdF09bn19ZWxzZXtpPSEwO3RoaXMuX3N0b3JhZ2Uuc2V0KHQsZSl9aSYmdGhpcy4jdSgpO2UgaW5zdGFuY2VvZiBuLkFubm90YXRpb25FZGl0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQW5ub3RhdGlvbkVkaXRvciYmdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSl9aGFzKHQpe3JldHVybiB0aGlzLl9zdG9yYWdlLmhhcyh0KX1nZXRBbGwoKXtyZXR1cm4gdGhpcy5fc3RvcmFnZS5zaXplPjA/KDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLl9zdG9yYWdlKTpudWxsfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX3N0b3JhZ2Uuc2l6ZX0jdSgpe2lmKCF0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITA7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25TZXRNb2RpZmllZCYmdGhpcy5vblNldE1vZGlmaWVkKCl9fXJlc2V0TW9kaWZpZWQoKXtpZih0aGlzLl9tb2RpZmllZCl7dGhpcy5fbW9kaWZpZWQ9ITE7ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub25SZXNldE1vZGlmaWVkJiZ0aGlzLm9uUmVzZXRNb2RpZmllZCgpfX1nZXQgcHJpbnQoKXtyZXR1cm4gbmV3IFByaW50QW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9Z2V0IHNlcmlhbGl6YWJsZSgpe2lmKDA9PT10aGlzLl9zdG9yYWdlLnNpemUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtlLHNdb2YgdGhpcy5fc3RvcmFnZSl7Y29uc3QgaT1zIGluc3RhbmNlb2Ygbi5Bbm5vdGF0aW9uRWRpdG9yP3Muc2VyaWFsaXplKCk6cztpJiZ0LnNldChlLGkpfXJldHVybiB0fXN0YXRpYyBnZXRIYXNoKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IGU9bmV3IHIuTXVybXVySGFzaDNfNjQ7Zm9yKGNvbnN0W3MsaV1vZiB0KWUudXBkYXRlKGAke3N9OiR7SlNPTi5zdHJpbmdpZnkoaSl9YCk7cmV0dXJuIGUuaGV4ZGlnZXN0KCl9fWUuQW5ub3RhdGlvblN0b3JhZ2U9QW5ub3RhdGlvblN0b3JhZ2U7Y2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdleyNwPW51bGw7Y29uc3RydWN0b3IodCl7c3VwZXIoKTt0aGlzLiNwPXN0cnVjdHVyZWRDbG9uZSh0LnNlcmlhbGl6YWJsZSl9Z2V0IHByaW50KCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50Iil9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybiB0aGlzLiNwfX1lLlByaW50QW5ub3RhdGlvblN0b3JhZ2U9UHJpbnRBbm5vdGF0aW9uU3RvcmFnZX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25FZGl0b3I9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpO2NsYXNzIEFubm90YXRpb25FZGl0b3J7I2c9dGhpcy5mb2N1c2luLmJpbmQodGhpcyk7I209dGhpcy5mb2N1c291dC5iaW5kKHRoaXMpOyNmPSExOyNiPSExOyNBPSExOyNfPUFubm90YXRpb25FZGl0b3IuX3pJbmRleCsrO3N0YXRpYyBfY29sb3JNYW5hZ2VyPW5ldyBpLkNvbG9yTWFuYWdlcjtzdGF0aWMgX3pJbmRleD0xO2NvbnN0cnVjdG9yKHQpe3RoaXMuY29uc3RydWN0b3I9PT1Bbm5vdGF0aW9uRWRpdG9yJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci4iKTt0aGlzLnBhcmVudD10LnBhcmVudDt0aGlzLmlkPXQuaWQ7dGhpcy53aWR0aD10aGlzLmhlaWdodD1udWxsO3RoaXMucGFnZUluZGV4PXQucGFyZW50LnBhZ2VJbmRleDt0aGlzLm5hbWU9dC5uYW1lO3RoaXMuZGl2PW51bGw7Y29uc3RbZSxzXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMueD10LngvZTt0aGlzLnk9dC55L3M7dGhpcy5yb3RhdGlvbj10aGlzLnBhcmVudC52aWV3cG9ydC5yb3RhdGlvbjt0aGlzLmlzQXR0YWNoZWRUb0RPTT0hMX1zdGF0aWMgZ2V0IF9kZWZhdWx0TGluZUNvbG9yKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9kZWZhdWx0TGluZUNvbG9yIix0aGlzLl9jb2xvck1hbmFnZXIuZ2V0SGV4Q29kZSgiQ2FudmFzVGV4dCIpKX1zZXRJbkJhY2tncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9MH1zZXRJbkZvcmVncm91bmQoKXt0aGlzLmRpdi5zdHlsZS56SW5kZXg9dGhpcy4jX31mb2N1c2luKHQpe3RoaXMuI2Y/dGhpcy4jZj0hMTp0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKX1mb2N1c291dCh0KXtpZighdGhpcy5pc0F0dGFjaGVkVG9ET00pcmV0dXJuO2lmKCF0LnJlbGF0ZWRUYXJnZXQ/LmNsb3Nlc3QoYCMke3RoaXMuaWR9YCkpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLnBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9ufHx0aGlzLmNvbW1pdE9yUmVtb3ZlKCl9fWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy5pc0VtcHR5KCk/dGhpcy5yZW1vdmUoKTp0aGlzLmNvbW1pdCgpfWNvbW1pdCgpe3RoaXMucGFyZW50LmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyl9ZHJhZ3N0YXJ0KHQpe2NvbnN0IGU9dGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RhcnRYPXQuY2xpZW50WC1lLng7dGhpcy5zdGFydFk9dC5jbGllbnRZLWUueTt0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3BsYWluIix0aGlzLmlkKTt0LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIn1zZXRBdCh0LGUscyxpKXtjb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7W3MsaV09dGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihzLGkpO3RoaXMueD0odCtzKS9uO3RoaXMueT0oZStpKS9yO3RoaXMuZGl2LnN0eWxlLmxlZnQ9MTAwKnRoaXMueCsiJSI7dGhpcy5kaXYuc3R5bGUudG9wPTEwMCp0aGlzLnkrIiUifXRyYW5zbGF0ZSh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztbdCxlXT10aGlzLnNjcmVlblRvUGFnZVRyYW5zbGF0aW9uKHQsZSk7dGhpcy54Kz10L3M7dGhpcy55Kz1lL2k7dGhpcy5kaXYuc3R5bGUubGVmdD0xMDAqdGhpcy54KyIlIjt0aGlzLmRpdi5zdHlsZS50b3A9MTAwKnRoaXMueSsiJSJ9c2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCxlKXtjb25zdHtyb3RhdGlvbjpzfT10aGlzLnBhcmVudC52aWV3cG9ydDtzd2l0Y2gocyl7Y2FzZSA5MDpyZXR1cm5bZSwtdF07Y2FzZSAxODA6cmV0dXJuWy10LC1lXTtjYXNlIDI3MDpyZXR1cm5bLWUsdF07ZGVmYXVsdDpyZXR1cm5bdCxlXX19c2V0RGltcyh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLmRpdi5zdHlsZS53aWR0aD0xMDAqdC9zKyIlIjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9MTAwKmUvaSsiJSJ9Zml4RGltcygpe2NvbnN0e3N0eWxlOnR9PXRoaXMuZGl2LHtoZWlnaHQ6ZSx3aWR0aDpzfT10LGk9cy5lbmRzV2l0aCgiJSIpLG49ZS5lbmRzV2l0aCgiJSIpO2lmKGkmJm4pcmV0dXJuO2NvbnN0W3IsYV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucztpfHwodC53aWR0aD0xMDAqcGFyc2VGbG9hdChzKS9yKyIlIik7bnx8KHQuaGVpZ2h0PTEwMCpwYXJzZUZsb2F0KGUpL2ErIiUiKX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bMCwwXX1yZW5kZXIoKXt0aGlzLmRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImRhdGEtZWRpdG9yLXJvdGF0aW9uIiwoMzYwLXRoaXMucm90YXRpb24pJTM2MCk7dGhpcy5kaXYuY2xhc3NOYW1lPXRoaXMubmFtZTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImlkIix0aGlzLmlkKTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoInRhYkluZGV4IiwwKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpO3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLiNtKTtjb25zdFt0LGVdPXRoaXMuZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCk7dGhpcy50cmFuc2xhdGUodCxlKTsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnc3RhcnQiLCJwb2ludGVyZG93biJdKTtyZXR1cm4gdGhpcy5kaXZ9cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt0LmN0cmxLZXkmJiFlfHx0LnNoaWZ0S2V5fHx0Lm1ldGFLZXkmJmU/dGhpcy5wYXJlbnQudG9nZ2xlU2VsZWN0ZWQodGhpcyk6dGhpcy5wYXJlbnQuc2V0U2VsZWN0ZWQodGhpcyk7dGhpcy4jZj0hMH19Z2V0UmVjdCh0LGUpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxbbixyXT10aGlzLnBhcmVudC5wYWdlRGltZW5zaW9ucyxhPW4qdC9zLG89ciplL2ksbD10aGlzLngqbixjPXRoaXMueSpyLGg9dGhpcy53aWR0aCpuLGQ9dGhpcy5oZWlnaHQqcjtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltsK2Esci1jLW8tZCxsK2EraCxyLWMtb107Y2FzZSA5MDpyZXR1cm5bbCtvLHItYythLGwrbytkLHItYythK2hdO2Nhc2UgMTgwOnJldHVybltsLWEtaCxyLWMrbyxsLWEsci1jK28rZF07Y2FzZSAyNzA6cmV0dXJuW2wtby1kLHItYy1hLWgsbC1vLHItYy1hXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQsZSl7Y29uc3RbcyxpLG4scl09dCxhPW4tcyxvPXItaTtzd2l0Y2godGhpcy5yb3RhdGlvbil7Y2FzZSAwOnJldHVybltzLGUtcixhLG9dO2Nhc2UgOTA6cmV0dXJuW3MsZS1pLG8sYV07Y2FzZSAxODA6cmV0dXJuW24sZS1pLGEsb107Y2FzZSAyNzA6cmV0dXJuW24sZS1yLG8sYV07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcm90YXRpb24iKX19b25jZUFkZGVkKCl7fWlzRW1wdHkoKXtyZXR1cm4hMX1lbmFibGVFZGl0TW9kZSgpe3RoaXMuI0E9ITB9ZGlzYWJsZUVkaXRNb2RlKCl7dGhpcy4jQT0hMX1pc0luRWRpdE1vZGUoKXtyZXR1cm4gdGhpcy4jQX1zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpe3JldHVybiExfW5lZWRzVG9CZVJlYnVpbHQoKXtyZXR1cm4gdGhpcy5kaXYmJiF0aGlzLmlzQXR0YWNoZWRUb0RPTX1yZWJ1aWxkKCl7dGhpcy5kaXY/LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuI2cpfXNlcmlhbGl6ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBbiBlZGl0b3IgbXVzdCBiZSBzZXJpYWxpemFibGUiKX1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7cGFyZW50OmUsaWQ6ZS5nZXROZXh0SWQoKX0pO3Mucm90YXRpb249dC5yb3RhdGlvbjtjb25zdFtpLG5dPWUucGFnZURpbWVuc2lvbnMsW3IsYSxvLGxdPXMuZ2V0UmVjdEluQ3VycmVudENvb3Jkcyh0LnJlY3Qsbik7cy54PXIvaTtzLnk9YS9uO3Mud2lkdGg9by9pO3MuaGVpZ2h0PWwvbjtyZXR1cm4gc31yZW1vdmUoKXt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c2luIix0aGlzLiNnKTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy4jbSk7dGhpcy5pc0VtcHR5KCl8fHRoaXMuY29tbWl0KCk7dGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpfXNlbGVjdCgpe3RoaXMuZGl2Py5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZEVkaXRvciIpfXVuc2VsZWN0KCl7dGhpcy5kaXY/LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkRWRpdG9yIil9dXBkYXRlUGFyYW1zKHQsZSl7fWRpc2FibGVFZGl0aW5nKCl7fWVuYWJsZUVkaXRpbmcoKXt9Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybnt9fWdldCBjb250ZW50RGl2KCl7cmV0dXJuIHRoaXMuZGl2fWdldCBpc0VkaXRpbmcoKXtyZXR1cm4gdGhpcy4jYn1zZXQgaXNFZGl0aW5nKHQpe3RoaXMuI2I9dDtpZih0KXt0aGlzLnBhcmVudC5zZXRTZWxlY3RlZCh0aGlzKTt0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IodGhpcyl9ZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCl9fWUuQW5ub3RhdGlvbkVkaXRvcj1Bbm5vdGF0aW9uRWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuS2V5Ym9hcmRNYW5hZ2VyPWUuQ29tbWFuZE1hbmFnZXI9ZS5Db2xvck1hbmFnZXI9ZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyPXZvaWQgMDtlLmJpbmRFdmVudHM9ZnVuY3Rpb24gYmluZEV2ZW50cyh0LGUscyl7Zm9yKGNvbnN0IGkgb2YgcyllLmFkZEV2ZW50TGlzdGVuZXIoaSx0W2ldLmJpbmQodCkpfTtlLm9wYWNpdHlUb0hleD1mdW5jdGlvbiBvcGFjaXR5VG9IZXgodCl7cmV0dXJuIE1hdGgucm91bmQoTWF0aC5taW4oMjU1LE1hdGgubWF4KDEsMjU1KnQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX07dmFyIGk9cygxKSxuPXMoNik7Y2xhc3MgSWRNYW5hZ2VyeyN2PTA7Z2V0SWQoKXtyZXR1cm5gJHtpLkFubm90YXRpb25FZGl0b3JQcmVmaXh9JHt0aGlzLiN2Kyt9YH19Y2xhc3MgQ29tbWFuZE1hbmFnZXJ7I3k9W107I1M9ITE7I3g7I0U9LTE7Y29uc3RydWN0b3IodD0xMjgpe3RoaXMuI3g9dH1hZGQoe2NtZDp0LHVuZG86ZSxtdXN0RXhlYzpzLHR5cGU6aT1OYU4sb3ZlcndyaXRlSWZTYW1lVHlwZTpuPSExLGtlZXBVbmRvOnI9ITF9KXtzJiZ0KCk7aWYodGhpcy4jUylyZXR1cm47Y29uc3QgYT17Y21kOnQsdW5kbzplLHR5cGU6aX07aWYoLTE9PT10aGlzLiNFKXt0aGlzLiN5Lmxlbmd0aD4wJiYodGhpcy4jeS5sZW5ndGg9MCk7dGhpcy4jRT0wO3RoaXMuI3kucHVzaChhKTtyZXR1cm59aWYobiYmdGhpcy4jeVt0aGlzLiNFXS50eXBlPT09aSl7ciYmKGEudW5kbz10aGlzLiN5W3RoaXMuI0VdLnVuZG8pO3RoaXMuI3lbdGhpcy4jRV09YTtyZXR1cm59Y29uc3Qgbz10aGlzLiNFKzE7aWYobz09PXRoaXMuI3gpdGhpcy4jeS5zcGxpY2UoMCwxKTtlbHNle3RoaXMuI0U9bztvPHRoaXMuI3kubGVuZ3RoJiZ0aGlzLiN5LnNwbGljZShvKX10aGlzLiN5LnB1c2goYSl9dW5kbygpe2lmKC0xIT09dGhpcy4jRSl7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLnVuZG8oKTt0aGlzLiNTPSExO3RoaXMuI0UtPTF9fXJlZG8oKXtpZih0aGlzLiNFPHRoaXMuI3kubGVuZ3RoLTEpe3RoaXMuI0UrPTE7dGhpcy4jUz0hMDt0aGlzLiN5W3RoaXMuI0VdLmNtZCgpO3RoaXMuI1M9ITF9fWhhc1NvbWV0aGluZ1RvVW5kbygpe3JldHVybi0xIT09dGhpcy4jRX1oYXNTb21ldGhpbmdUb1JlZG8oKXtyZXR1cm4gdGhpcy4jRTx0aGlzLiN5Lmxlbmd0aC0xfWRlc3Ryb3koKXt0aGlzLiN5PW51bGx9fWUuQ29tbWFuZE1hbmFnZXI9Q29tbWFuZE1hbmFnZXI7Y2xhc3MgS2V5Ym9hcmRNYW5hZ2Vye2NvbnN0cnVjdG9yKHQpe3RoaXMuYnVmZmVyPVtdO3RoaXMuY2FsbGJhY2tzPW5ldyBNYXA7dGhpcy5hbGxLZXlzPW5ldyBTZXQ7Y29uc3QgZT1LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7Zm9yKGNvbnN0W3MsaV1vZiB0KWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IHM9dC5zdGFydHNXaXRoKCJtYWMrIik7aWYoZSYmcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQuc2xpY2UoNCksaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX1lbHNlIGlmKCFlJiYhcyl7dGhpcy5jYWxsYmFja3Muc2V0KHQsaSk7dGhpcy5hbGxLZXlzLmFkZCh0LnNwbGl0KCIrIikuYXQoLTEpKX19fXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5wbGF0Zm9ybToiIjtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywicGxhdGZvcm0iLHtpc1dpbjp0LmluY2x1ZGVzKCJXaW4iKSxpc01hYzp0LmluY2x1ZGVzKCJNYWMiKX0pfSNDKHQpe3QuYWx0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJhbHQiKTt0LmN0cmxLZXkmJnRoaXMuYnVmZmVyLnB1c2goImN0cmwiKTt0Lm1ldGFLZXkmJnRoaXMuYnVmZmVyLnB1c2goIm1ldGEiKTt0LnNoaWZ0S2V5JiZ0aGlzLmJ1ZmZlci5wdXNoKCJzaGlmdCIpO3RoaXMuYnVmZmVyLnB1c2godC5rZXkpO2NvbnN0IGU9dGhpcy5idWZmZXIuam9pbigiKyIpO3RoaXMuYnVmZmVyLmxlbmd0aD0wO3JldHVybiBlfWV4ZWModCxlKXtpZighdGhpcy5hbGxLZXlzLmhhcyhlLmtleSkpcmV0dXJuO2NvbnN0IHM9dGhpcy5jYWxsYmFja3MuZ2V0KHRoaXMuI0MoZSkpO2lmKHMpe3MuYmluZCh0KSgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpfX19ZS5LZXlib2FyZE1hbmFnZXI9S2V5Ym9hcmRNYW5hZ2VyO2NsYXNzIENvbG9yTWFuYWdlcntzdGF0aWMgX2NvbG9yc01hcHBpbmc9bmV3IE1hcChbWyJDYW52YXNUZXh0IixbMCwwLDBdXSxbIkNhbnZhcyIsWzI1NSwyNTUsMjU1XV1dKTtnZXQgX2NvbG9ycygpe2NvbnN0IHQ9bmV3IE1hcChbWyJDYW52YXNUZXh0IixudWxsXSxbIkNhbnZhcyIsbnVsbF1dKTsoMCxuLmdldENvbG9yVmFsdWVzKSh0KTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2NvbG9ycyIsdCl9Y29udmVydCh0KXtjb25zdCBlPSgwLG4uZ2V0UkdCKSh0KTtpZighd2luZG93Lm1hdGNoTWVkaWEoIihmb3JjZWQtY29sb3JzOiBhY3RpdmUpIikubWF0Y2hlcylyZXR1cm4gZTtmb3IoY29uc3RbdCxzXW9mIHRoaXMuX2NvbG9ycylpZihzLmV2ZXJ5KCgodCxzKT0+dD09PWVbc10pKSlyZXR1cm4gQ29sb3JNYW5hZ2VyLl9jb2xvcnNNYXBwaW5nLmdldCh0KTtyZXR1cm4gZX1nZXRIZXhDb2RlKHQpe2NvbnN0IGU9dGhpcy5fY29sb3JzLmdldCh0KTtyZXR1cm4gZT9pLlV0aWwubWFrZUhleENvbG9yKC4uLmUpOnR9fWUuQ29sb3JNYW5hZ2VyPUNvbG9yTWFuYWdlcjtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyeyNQPW51bGw7I1Q9bmV3IE1hcDsjdz1uZXcgTWFwOyNrPW5ldyBDb21tYW5kTWFuYWdlcjsjRj0wOyNNPW51bGw7I1I9bnVsbDsjRD1uZXcgSWRNYW5hZ2VyOyNJPSExOyNPPWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORTsjTD1uZXcgU2V0OyNOPXRoaXMuY29weS5iaW5kKHRoaXMpOyNCPXRoaXMuY3V0LmJpbmQodGhpcyk7I2o9dGhpcy5wYXN0ZS5iaW5kKHRoaXMpOyNVPXRoaXMua2V5ZG93bi5iaW5kKHRoaXMpOyNxPXRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcyk7I1c9dGhpcy5vblBhZ2VDaGFuZ2luZy5iaW5kKHRoaXMpOyNHPXtpc0VkaXRpbmc6ITEsaXNFbXB0eTohMCxoYXNTb21ldGhpbmdUb1VuZG86ITEsaGFzU29tZXRoaW5nVG9SZWRvOiExLGhhc1NlbGVjdGVkRWRpdG9yOiExfTsjSD1udWxsO3N0YXRpYyBfa2V5Ym9hcmRNYW5hZ2VyPW5ldyBLZXlib2FyZE1hbmFnZXIoW1tbImN0cmwrYSIsIm1hYyttZXRhK2EiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5zZWxlY3RBbGxdLFtbImN0cmwreiIsIm1hYyttZXRhK3oiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bmRvXSxbWyJjdHJsK3kiLCJjdHJsK3NoaWZ0K1oiLCJtYWMrbWV0YStzaGlmdCtaIl0sQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5wcm90b3R5cGUucmVkb10sW1siQmFja3NwYWNlIiwiYWx0K0JhY2tzcGFjZSIsImN0cmwrQmFja3NwYWNlIiwic2hpZnQrQmFja3NwYWNlIiwibWFjK0JhY2tzcGFjZSIsIm1hYythbHQrQmFja3NwYWNlIiwibWFjK2N0cmwrQmFja3NwYWNlIiwiRGVsZXRlIiwiY3RybCtEZWxldGUiLCJzaGlmdCtEZWxldGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS5kZWxldGVdLFtbIkVzY2FwZSIsIm1hYytFc2NhcGUiXSxBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLnByb3RvdHlwZS51bnNlbGVjdEFsbF1dKTtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuI0g9dDt0aGlzLiNSPWU7dGhpcy4jUi5fb24oImVkaXRpbmdhY3Rpb24iLHRoaXMuI3EpO3RoaXMuI1IuX29uKCJwYWdlY2hhbmdpbmciLHRoaXMuI1cpfWRlc3Ryb3koKXt0aGlzLiN6KCk7dGhpcy4jUi5fb2ZmKCJlZGl0aW5nYWN0aW9uIix0aGlzLiNxKTt0aGlzLiNSLl9vZmYoInBhZ2VjaGFuZ2luZyIsdGhpcy4jVyk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jdy52YWx1ZXMoKSl0LmRlc3Ryb3koKTt0aGlzLiN3LmNsZWFyKCk7dGhpcy4jVC5jbGVhcigpO3RoaXMuI1A9bnVsbDt0aGlzLiNMLmNsZWFyKCk7dGhpcy4jay5kZXN0cm95KCl9b25QYWdlQ2hhbmdpbmcoe3BhZ2VOdW1iZXI6dH0pe3RoaXMuI0Y9dC0xfWZvY3VzTWFpbkNvbnRhaW5lcigpe3RoaXMuI0guZm9jdXMoKX0jVigpe3RoaXMuI0guYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy4jVSl9I3ooKXt0aGlzLiNILnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuI1UpfSNYKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsdGhpcy4jTik7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY3V0Iix0aGlzLiNCKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsdGhpcy4jail9IyQoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb3B5Iix0aGlzLiNOKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjdXQiLHRoaXMuI0IpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBhc3RlIix0aGlzLiNqKX1jb3B5KHQpe3QucHJldmVudERlZmF1bHQoKTt0aGlzLiNQJiZ0aGlzLiNQLmNvbW1pdE9yUmVtb3ZlKCk7aWYoIXRoaXMuaGFzU2VsZWN0aW9uKXJldHVybjtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuI0wpdC5pc0VtcHR5KCl8fGUucHVzaCh0LnNlcmlhbGl6ZSgpKTswIT09ZS5sZW5ndGgmJnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJhcHBsaWNhdGlvbi9wZGZqcyIsSlNPTi5zdHJpbmdpZnkoZSkpfWN1dCh0KXt0aGlzLmNvcHkodCk7dGhpcy5kZWxldGUoKX1wYXN0ZSh0KXt0LnByZXZlbnREZWZhdWx0KCk7bGV0IGU9dC5jbGlwYm9hcmREYXRhLmdldERhdGEoImFwcGxpY2F0aW9uL3BkZmpzIik7aWYoIWUpcmV0dXJuO3RyeXtlPUpTT04ucGFyc2UoZSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApO3JldHVybn1pZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47dGhpcy51bnNlbGVjdEFsbCgpO2NvbnN0IHM9dGhpcy4jdy5nZXQodGhpcy4jRik7dHJ5e2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1zLmRlc2VyaWFsaXplKGkpO2lmKCFlKXJldHVybjt0LnB1c2goZSl9Y29uc3QgY21kPSgpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpO3RoaXMuI0sodCl9LHVuZG89KCk9Pntmb3IoY29uc3QgZSBvZiB0KWUucmVtb3ZlKCl9O3RoaXMuYWRkQ29tbWFuZHMoe2NtZDpjbWQsdW5kbzp1bmRvLG11c3RFeGVjOiEwfSl9Y2F0Y2godCl7KDAsaS53YXJuKShgcGFzdGU6ICIke3QubWVzc2FnZX0iLmApfX1rZXlkb3duKHQpe3RoaXMuZ2V0QWN0aXZlKCk/LnNob3VsZEdldEtleWJvYXJkRXZlbnRzKCl8fEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9b25FZGl0aW5nQWN0aW9uKHQpe1sidW5kbyIsInJlZG8iLCJkZWxldGUiLCJzZWxlY3RBbGwiXS5pbmNsdWRlcyh0Lm5hbWUpJiZ0aGlzW3QubmFtZV0oKX0jSih0KXtPYmplY3QuZW50cmllcyh0KS5zb21lKCgoW3QsZV0pPT50aGlzLiNHW3RdIT09ZSkpJiZ0aGlzLiNSLmRpc3BhdGNoKCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZCIse3NvdXJjZTp0aGlzLGRldGFpbHM6T2JqZWN0LmFzc2lnbih0aGlzLiNHLHQpfSl9I1EodCl7dGhpcy4jUi5kaXNwYXRjaCgiYW5ub3RhdGlvbmVkaXRvcnBhcmFtc2NoYW5nZWQiLHtzb3VyY2U6dGhpcyxkZXRhaWxzOnR9KX1zZXRFZGl0aW5nU3RhdGUodCl7aWYodCl7dGhpcy4jVigpO3RoaXMuI1goKTt0aGlzLiNKKHtpc0VkaXRpbmc6dGhpcy4jTyE9PWkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSxpc0VtcHR5OnRoaXMuI1ooKSxoYXNTb21ldGhpbmdUb1VuZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1VuZG8oKSxoYXNTb21ldGhpbmdUb1JlZG86dGhpcy4jay5oYXNTb21ldGhpbmdUb1JlZG8oKSxoYXNTZWxlY3RlZEVkaXRvcjohMX0pfWVsc2V7dGhpcy4jeigpO3RoaXMuIyQoKTt0aGlzLiNKKHtpc0VkaXRpbmc6ITF9KX19cmVnaXN0ZXJFZGl0b3JUeXBlcyh0KXtpZighdGhpcy4jTSl7dGhpcy4jTT10O2Zvcihjb25zdCB0IG9mIHRoaXMuI00pdGhpcy4jUSh0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpfX1nZXRJZCgpe3JldHVybiB0aGlzLiNELmdldElkKCl9YWRkTGF5ZXIodCl7dGhpcy4jdy5zZXQodC5wYWdlSW5kZXgsdCk7dGhpcy4jST90LmVuYWJsZSgpOnQuZGlzYWJsZSgpfXJlbW92ZUxheWVyKHQpe3RoaXMuI3cuZGVsZXRlKHQucGFnZUluZGV4KX11cGRhdGVNb2RlKHQpe3RoaXMuI089dDtpZih0PT09aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FKXt0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7dGhpcy4jdHQoKX1lbHNle3RoaXMuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLiNldCgpO2Zvcihjb25zdCBlIG9mIHRoaXMuI3cudmFsdWVzKCkpZS51cGRhdGVNb2RlKHQpfX11cGRhdGVUb29sYmFyKHQpe3QhPT10aGlzLiNPJiZ0aGlzLiNSLmRpc3BhdGNoKCJzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZSIse3NvdXJjZTp0aGlzLG1vZGU6dH0pfXVwZGF0ZVBhcmFtcyh0LGUpe2lmKHRoaXMuI00pe2Zvcihjb25zdCBzIG9mIHRoaXMuI0wpcy51cGRhdGVQYXJhbXModCxlKTtmb3IoY29uc3QgcyBvZiB0aGlzLiNNKXMudXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpfX0jZXQoKXtpZighdGhpcy4jSSl7dGhpcy4jST0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLiN3LnZhbHVlcygpKXQuZW5hYmxlKCl9fSN0dCgpe3RoaXMudW5zZWxlY3RBbGwoKTtpZih0aGlzLiNJKXt0aGlzLiNJPSExO2Zvcihjb25zdCB0IG9mIHRoaXMuI3cudmFsdWVzKCkpdC5kaXNhYmxlKCl9fWdldEVkaXRvcnModCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0aGlzLiNULnZhbHVlcygpKXMucGFnZUluZGV4PT09dCYmZS5wdXNoKHMpO3JldHVybiBlfWdldEVkaXRvcih0KXtyZXR1cm4gdGhpcy4jVC5nZXQodCl9YWRkRWRpdG9yKHQpe3RoaXMuI1Quc2V0KHQuaWQsdCl9cmVtb3ZlRWRpdG9yKHQpe3RoaXMuI1QuZGVsZXRlKHQuaWQpO3RoaXMudW5zZWxlY3QodCl9I1kodCl7Y29uc3QgZT10aGlzLiN3LmdldCh0LnBhZ2VJbmRleCk7ZT9lLmFkZE9yUmVidWlsZCh0KTp0aGlzLmFkZEVkaXRvcih0KX1zZXRBY3RpdmVFZGl0b3IodCl7aWYodGhpcy4jUCE9PXQpe3RoaXMuI1A9dDt0JiZ0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKX19dG9nZ2xlU2VsZWN0ZWQodCl7aWYodGhpcy4jTC5oYXModCkpe3RoaXMuI0wuZGVsZXRlKHQpO3QudW5zZWxlY3QoKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjp0aGlzLmhhc1NlbGVjdGlvbn0pfWVsc2V7dGhpcy4jTC5hZGQodCk7dC5zZWxlY3QoKTt0aGlzLiNRKHQucHJvcGVydGllc1RvVXBkYXRlKTt0aGlzLiNKKHtoYXNTZWxlY3RlZEVkaXRvcjohMH0pfX1zZXRTZWxlY3RlZCh0KXtmb3IoY29uc3QgZSBvZiB0aGlzLiNMKWUhPT10JiZlLnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0wuYWRkKHQpO3Quc2VsZWN0KCk7dGhpcy4jUSh0LnByb3BlcnRpZXNUb1VwZGF0ZSk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLiNMLmhhcyh0KX11bnNlbGVjdCh0KXt0LnVuc2VsZWN0KCk7dGhpcy4jTC5kZWxldGUodCk7dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6dGhpcy5oYXNTZWxlY3Rpb259KX1nZXQgaGFzU2VsZWN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLiNMLnNpemV9dW5kbygpe3RoaXMuI2sudW5kbygpO3RoaXMuI0ooe2hhc1NvbWV0aGluZ1RvVW5kbzp0aGlzLiNrLmhhc1NvbWV0aGluZ1RvVW5kbygpLGhhc1NvbWV0aGluZ1RvUmVkbzohMCxpc0VtcHR5OnRoaXMuI1ooKX0pfXJlZG8oKXt0aGlzLiNrLnJlZG8oKTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOnRoaXMuI2suaGFzU29tZXRoaW5nVG9SZWRvKCksaXNFbXB0eTp0aGlzLiNaKCl9KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNrLmFkZCh0KTt0aGlzLiNKKHtoYXNTb21ldGhpbmdUb1VuZG86ITAsaGFzU29tZXRoaW5nVG9SZWRvOiExLGlzRW1wdHk6dGhpcy4jWigpfSl9I1ooKXtpZigwPT09dGhpcy4jVC5zaXplKXJldHVybiEwO2lmKDE9PT10aGlzLiNULnNpemUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jVC52YWx1ZXMoKSlyZXR1cm4gdC5pc0VtcHR5KCk7cmV0dXJuITF9ZGVsZXRlKCl7dGhpcy5jb21taXRPclJlbW92ZSgpO2lmKCF0aGlzLmhhc1NlbGVjdGlvbilyZXR1cm47Y29uc3QgdD1bLi4udGhpcy4jTF07dGhpcy5hZGRDb21tYW5kcyh7Y21kOigpPT57Zm9yKGNvbnN0IGUgb2YgdCllLnJlbW92ZSgpfSx1bmRvOigpPT57Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLiNZKGUpfSxtdXN0RXhlYzohMH0pfWNvbW1pdE9yUmVtb3ZlKCl7dGhpcy4jUD8uY29tbWl0T3JSZW1vdmUoKX0jSyh0KXt0aGlzLiNMLmNsZWFyKCk7Zm9yKGNvbnN0IGUgb2YgdClpZighZS5pc0VtcHR5KCkpe3RoaXMuI0wuYWRkKGUpO2Uuc2VsZWN0KCl9dGhpcy4jSih7aGFzU2VsZWN0ZWRFZGl0b3I6ITB9KX1zZWxlY3RBbGwoKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNMKXQuY29tbWl0KCk7dGhpcy4jSyh0aGlzLiNULnZhbHVlcygpKX11bnNlbGVjdEFsbCgpe2lmKHRoaXMuI1ApdGhpcy4jUC5jb21taXRPclJlbW92ZSgpO2Vsc2UgaWYoMCE9PXRoaXMuI0wuc2l6ZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jTCl0LnVuc2VsZWN0KCk7dGhpcy4jTC5jbGVhcigpO3RoaXMuI0ooe2hhc1NlbGVjdGVkRWRpdG9yOiExfSl9fWlzQWN0aXZlKHQpe3JldHVybiB0aGlzLiNQPT09dH1nZXRBY3RpdmUoKXtyZXR1cm4gdGhpcy4jUH1nZXRNb2RlKCl7cmV0dXJuIHRoaXMuI099fWUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcj1Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuU3RhdFRpbWVyPWUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uPWUuUGl4ZWxzUGVySW5jaD1lLlBhZ2VWaWV3cG9ydD1lLlBERkRhdGVTdHJpbmc9ZS5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1lLkRPTVNWR0ZhY3Rvcnk9ZS5ET01DYW52YXNGYWN0b3J5PWUuRE9NQ01hcFJlYWRlckZhY3Rvcnk9ZS5Bbm5vdGF0aW9uUHJlZml4PXZvaWQgMDtlLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24gZGVwcmVjYXRlZCh0KXtjb25zb2xlLmxvZygiRGVwcmVjYXRlZCBBUEkgdXNhZ2U6ICIrdCl9O2UuZ2V0Q29sb3JWYWx1ZXM9ZnVuY3Rpb24gZ2V0Q29sb3JWYWx1ZXModCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO2RvY3VtZW50LmJvZHkuYXBwZW5kKGUpO2Zvcihjb25zdCBzIG9mIHQua2V5cygpKXtlLnN0eWxlLmNvbG9yPXM7Y29uc3QgaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjt0LnNldChzLGdldFJHQihpKSl9ZS5yZW1vdmUoKX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtPWZ1bmN0aW9uIGdldEN1cnJlbnRUcmFuc2Zvcm0odCl7Y29uc3R7YTplLGI6cyxjOmksZDpuLGU6cixmOmF9PXQuZ2V0VHJhbnNmb3JtKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZT1mdW5jdGlvbiBnZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSh0KXtjb25zdHthOmUsYjpzLGM6aSxkOm4sZTpyLGY6YX09dC5nZXRUcmFuc2Zvcm0oKS5pbnZlcnRTZWxmKCk7cmV0dXJuW2UscyxpLG4scixhXX07ZS5nZXRGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpe2NvbnN0IGU9dC5pbmRleE9mKCIjIikscz10LmluZGV4T2YoIj8iKSxpPU1hdGgubWluKGU+MD9lOnQubGVuZ3RoLHM+MD9zOnQubGVuZ3RoKTtyZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZigiLyIsaSkrMSxpKX07ZS5nZXRQZGZGaWxlbmFtZUZyb21Vcmw9ZnVuY3Rpb24gZ2V0UGRmRmlsZW5hbWVGcm9tVXJsKHQsZT0iZG9jdW1lbnQucGRmIil7aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiBlO2lmKGlzRGF0YVNjaGVtZSh0KSl7KDAsbi53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgImRhdGE6Ii1VUkwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuJyk7cmV0dXJuIGV9Y29uc3Qgcz0vW14vPyM9XStcLnBkZlxiKD8hLipcLnBkZlxiKS9pLGk9L14oPzooPzpbXjpdKzopP1wvXC9bXi9dKyk/KFtePyNdKikoXD9bXiNdKik/KCMuKik/JC8uZXhlYyh0KTtsZXQgcj1zLmV4ZWMoaVsxXSl8fHMuZXhlYyhpWzJdKXx8cy5leGVjKGlbM10pO2lmKHIpe3I9clswXTtpZihyLmluY2x1ZGVzKCIlIikpdHJ5e3I9cy5leGVjKGRlY29kZVVSSUNvbXBvbmVudChyKSlbMF19Y2F0Y2godCl7fX1yZXR1cm4gcnx8ZX07ZS5nZXRSR0I9Z2V0UkdCO2UuZ2V0WGZhUGFnZVZpZXdwb3J0PWZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LHtzY2FsZTplPTEscm90YXRpb246cz0wfSl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6bn09dC5hdHRyaWJ1dGVzLnN0eWxlLHI9WzAsMCxwYXJzZUludChpKSxwYXJzZUludChuKV07cmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe3ZpZXdCb3g6cixzY2FsZTplLHJvdGF0aW9uOnN9KX07ZS5pc0RhdGFTY2hlbWU9aXNEYXRhU2NoZW1lO2UuaXNQZGZGaWxlPWZ1bmN0aW9uIGlzUGRmRmlsZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJi9cLnBkZiQvaS50ZXN0KHQpfTtlLmlzVmFsaWRGZXRjaFVybD1pc1ZhbGlkRmV0Y2hVcmw7ZS5sb2FkU2NyaXB0PWZ1bmN0aW9uIGxvYWRTY3JpcHQodCxlPSExKXtyZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLnNyYz10O24ub25sb2FkPWZ1bmN0aW9uKHQpe2UmJm4ucmVtb3ZlKCk7cyh0KX07bi5vbmVycm9yPWZ1bmN0aW9uKCl7aShuZXcgRXJyb3IoYENhbm5vdCBsb2FkIHNjcmlwdCBhdDogJHtuLnNyY31gKSl9Oyhkb2N1bWVudC5oZWFkfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZChuKX0pKX07dmFyIGk9cyg3KSxuPXMoMSk7ZS5Bbm5vdGF0aW9uUHJlZml4PSJwZGZqc19pbnRlcm5hbF9pZF8iO2NsYXNzIFBpeGVsc1BlckluY2h7c3RhdGljIENTUz05NjtzdGF0aWMgUERGPTcyO3N0YXRpYyBQREZfVE9fQ1NTX1VOSVRTPXRoaXMuQ1NTL3RoaXMuUERGfWUuUGl4ZWxzUGVySW5jaD1QaXhlbHNQZXJJbmNoO2NsYXNzIERPTUNhbnZhc0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDYW52YXNGYWN0b3J5e2NvbnN0cnVjdG9yKHtvd25lckRvY3VtZW50OnQ9Z2xvYmFsVGhpcy5kb2N1bWVudH09e30pe3N1cGVyKCk7dGhpcy5fZG9jdW1lbnQ9dH1fY3JlYXRlQ2FudmFzKHQsZSl7Y29uc3Qgcz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtzLndpZHRoPXQ7cy5oZWlnaHQ9ZTtyZXR1cm4gc319ZS5ET01DYW52YXNGYWN0b3J5PURPTUNhbnZhc0ZhY3Rvcnk7YXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHQsZT0hMSl7aWYoaXNWYWxpZEZldGNoVXJsKHQsZG9jdW1lbnQuYmFzZVVSSSkpe2NvbnN0IHM9YXdhaXQgZmV0Y2godCk7aWYoIXMub2spdGhyb3cgbmV3IEVycm9yKHMuc3RhdHVzVGV4dCk7cmV0dXJuIGU/bmV3IFVpbnQ4QXJyYXkoYXdhaXQgcy5hcnJheUJ1ZmZlcigpKTooMCxuLnN0cmluZ1RvQnl0ZXMpKGF3YWl0IHMudGV4dCgpKX1yZXR1cm4gbmV3IFByb21pc2UoKChzLGkpPT57Y29uc3Qgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKCJHRVQiLHQsITApO2UmJihyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiKTtyLm9ucmVhZHlzdGF0ZWNoYW5nZT0oKT0+e2lmKHIucmVhZHlTdGF0ZT09PVhNTEh0dHBSZXF1ZXN0LkRPTkUpe2lmKDIwMD09PXIuc3RhdHVzfHwwPT09ci5zdGF0dXMpe2xldCB0O2UmJnIucmVzcG9uc2U/dD1uZXcgVWludDhBcnJheShyLnJlc3BvbnNlKTohZSYmci5yZXNwb25zZVRleHQmJih0PSgwLG4uc3RyaW5nVG9CeXRlcykoci5yZXNwb25zZVRleHQpKTtpZih0KXtzKHQpO3JldHVybn19aShuZXcgRXJyb3Ioci5zdGF0dXNUZXh0KSl9fTtyLnNlbmQobnVsbCl9KSl9Y2xhc3MgRE9NQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0LHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLkRPTUNNYXBSZWFkZXJGYWN0b3J5PURPTUNNYXBSZWFkZXJGYWN0b3J5O2NsYXNzIERPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQsITApfX1lLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PURPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5e19jcmVhdGVTVkcodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpfX1lLkRPTVNWR0ZhY3Rvcnk9RE9NU1ZHRmFjdG9yeTtjbGFzcyBQYWdlVmlld3BvcnR7Y29uc3RydWN0b3Ioe3ZpZXdCb3g6dCxzY2FsZTplLHJvdGF0aW9uOnMsb2Zmc2V0WDppPTAsb2Zmc2V0WTpuPTAsZG9udEZsaXA6cj0hMX0pe3RoaXMudmlld0JveD10O3RoaXMuc2NhbGU9ZTt0aGlzLnJvdGF0aW9uPXM7dGhpcy5vZmZzZXRYPWk7dGhpcy5vZmZzZXRZPW47Y29uc3QgYT0odFsyXSt0WzBdKS8yLG89KHRbM10rdFsxXSkvMjtsZXQgbCxjLGgsZCx1LHAsZyxtOyhzJT0zNjApPDAmJihzKz0zNjApO3N3aXRjaChzKXtjYXNlIDE4MDpsPS0xO2M9MDtoPTA7ZD0xO2JyZWFrO2Nhc2UgOTA6bD0wO2M9MTtoPTE7ZD0wO2JyZWFrO2Nhc2UgMjcwOmw9MDtjPS0xO2g9LTE7ZD0wO2JyZWFrO2Nhc2UgMDpsPTE7Yz0wO2g9MDtkPS0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLiIpfWlmKHIpe2g9LWg7ZD0tZH1pZigwPT09bCl7dT1NYXRoLmFicyhvLXRbMV0pKmUraTtwPU1hdGguYWJzKGEtdFswXSkqZStuO2c9TWF0aC5hYnModFszXS10WzFdKSplO209TWF0aC5hYnModFsyXS10WzBdKSplfWVsc2V7dT1NYXRoLmFicyhhLXRbMF0pKmUraTtwPU1hdGguYWJzKG8tdFsxXSkqZStuO2c9TWF0aC5hYnModFsyXS10WzBdKSplO209TWF0aC5hYnModFszXS10WzFdKSplfXRoaXMudHJhbnNmb3JtPVtsKmUsYyplLGgqZSxkKmUsdS1sKmUqYS1oKmUqbyxwLWMqZSphLWQqZSpvXTt0aGlzLndpZHRoPWc7dGhpcy5oZWlnaHQ9bX1jbG9uZSh7c2NhbGU6dD10aGlzLnNjYWxlLHJvdGF0aW9uOmU9dGhpcy5yb3RhdGlvbixvZmZzZXRYOnM9dGhpcy5vZmZzZXRYLG9mZnNldFk6aT10aGlzLm9mZnNldFksZG9udEZsaXA6bj0hMX09e30pe3JldHVybiBuZXcgUGFnZVZpZXdwb3J0KHt2aWV3Qm94OnRoaXMudmlld0JveC5zbGljZSgpLHNjYWxlOnQscm90YXRpb246ZSxvZmZzZXRYOnMsb2Zmc2V0WTppLGRvbnRGbGlwOm59KX1jb252ZXJ0VG9WaWV3cG9ydFBvaW50KHQsZSl7cmV0dXJuIG4uVXRpbC5hcHBseVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9Y29udmVydFRvVmlld3BvcnRSZWN0YW5nbGUodCl7Y29uc3QgZT1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMF0sdFsxXV0sdGhpcy50cmFuc2Zvcm0pLHM9bi5VdGlsLmFwcGx5VHJhbnNmb3JtKFt0WzJdLHRbM11dLHRoaXMudHJhbnNmb3JtKTtyZXR1cm5bZVswXSxlWzFdLHNbMF0sc1sxXV19Y29udmVydFRvUGRmUG9pbnQodCxlKXtyZXR1cm4gbi5VdGlsLmFwcGx5SW52ZXJzZVRyYW5zZm9ybShbdCxlXSx0aGlzLnRyYW5zZm9ybSl9fWUuUGFnZVZpZXdwb3J0PVBhZ2VWaWV3cG9ydDtjbGFzcyBSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24gZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iKTt0aGlzLnR5cGU9ZX19ZS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb249UmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO2Z1bmN0aW9uIGlzRGF0YVNjaGVtZSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPGUmJiIiPT09dFtzXS50cmltKCk7KXMrKztyZXR1cm4iZGF0YToiPT09dC5zdWJzdHJpbmcocyxzKzUpLnRvTG93ZXJDYXNlKCl9ZS5TdGF0VGltZXI9Y2xhc3MgU3RhdFRpbWVye2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFydGVkPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy50aW1lcz1bXX10aW1lKHQpe3QgaW4gdGhpcy5zdGFydGVkJiYoMCxuLndhcm4pKGBUaW1lciBpcyBhbHJlYWR5IHJ1bm5pbmcgZm9yICR7dH1gKTt0aGlzLnN0YXJ0ZWRbdF09RGF0ZS5ub3coKX10aW1lRW5kKHQpe3QgaW4gdGhpcy5zdGFydGVkfHwoMCxuLndhcm4pKGBUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgJHt0fWApO3RoaXMudGltZXMucHVzaCh7bmFtZTp0LHN0YXJ0OnRoaXMuc3RhcnRlZFt0XSxlbmQ6RGF0ZS5ub3coKX0pO2RlbGV0ZSB0aGlzLnN0YXJ0ZWRbdF19dG9TdHJpbmcoKXtjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy50aW1lcyl7Y29uc3Qgcz10Lm5hbWU7cy5sZW5ndGg+ZSYmKGU9cy5sZW5ndGgpfWZvcihjb25zdCBzIG9mIHRoaXMudGltZXMpe2NvbnN0IGk9cy5lbmQtcy5zdGFydDt0LnB1c2goYCR7cy5uYW1lLnBhZEVuZChlKX0gJHtpfW1zXG5gKX1yZXR1cm4gdC5qb2luKCIiKX19O2Z1bmN0aW9uIGlzVmFsaWRGZXRjaFVybCh0LGUpe3RyeXtjb25zdHtwcm90b2NvbDpzfT1lP25ldyBVUkwodCxlKTpuZXcgVVJMKHQpO3JldHVybiJodHRwOiI9PT1zfHwiaHR0cHM6Ij09PXN9Y2F0Y2godCl7cmV0dXJuITF9fWxldCByO2UuUERGRGF0ZVN0cmluZz1jbGFzcyBQREZEYXRlU3RyaW5ne3N0YXRpYyB0b0RhdGVPYmplY3QodCl7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gbnVsbDtyfHwocj1uZXcgUmVnRXhwKCJeRDooXFxkezR9KShcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhcXGR7Mn0pPyhbWnwrfC1dKT8oXFxkezJ9KT8nPyhcXGR7Mn0pPyc/IikpO2NvbnN0IGU9ci5leGVjKHQpO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHM9cGFyc2VJbnQoZVsxXSwxMCk7bGV0IGk9cGFyc2VJbnQoZVsyXSwxMCk7aT1pPj0xJiZpPD0xMj9pLTE6MDtsZXQgbj1wYXJzZUludChlWzNdLDEwKTtuPW4+PTEmJm48PTMxP246MTtsZXQgYT1wYXJzZUludChlWzRdLDEwKTthPWE+PTAmJmE8PTIzP2E6MDtsZXQgbz1wYXJzZUludChlWzVdLDEwKTtvPW8+PTAmJm88PTU5P286MDtsZXQgbD1wYXJzZUludChlWzZdLDEwKTtsPWw+PTAmJmw8PTU5P2w6MDtjb25zdCBjPWVbN118fCJaIjtsZXQgaD1wYXJzZUludChlWzhdLDEwKTtoPWg+PTAmJmg8PTIzP2g6MDtsZXQgZD1wYXJzZUludChlWzldLDEwKXx8MDtkPWQ+PTAmJmQ8PTU5P2Q6MDtpZigiLSI9PT1jKXthKz1oO28rPWR9ZWxzZSBpZigiKyI9PT1jKXthLT1oO28tPWR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHMsaSxuLGEsbyxsKSl9fTtmdW5jdGlvbiBnZXRSR0IodCl7aWYodC5zdGFydHNXaXRoKCIjIikpe2NvbnN0IGU9cGFyc2VJbnQodC5zbGljZSgxKSwxNik7cmV0dXJuWygxNjcxMTY4MCZlKT4+MTYsKDY1MjgwJmUpPj44LDI1NSZlXX1pZih0LnN0YXJ0c1dpdGgoInJnYigiKSlyZXR1cm4gdC5zbGljZSg0LC0xKS5zcGxpdCgiLCIpLm1hcCgodD0+cGFyc2VJbnQodCkpKTtpZih0LnN0YXJ0c1dpdGgoInJnYmEoIikpcmV0dXJuIHQuc2xpY2UoNSwtMSkuc3BsaXQoIiwiKS5tYXAoKHQ9PnBhcnNlSW50KHQpKSkuc2xpY2UoMCwzKTsoMCxuLndhcm4pKGBOb3QgYSB2YWxpZCBjb2xvciBmb3JtYXQ6ICIke3R9ImApO3JldHVyblswLDAsMF19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuQmFzZVNWR0ZhY3Rvcnk9ZS5CYXNlQ2FudmFzRmFjdG9yeT1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT12b2lkIDA7dmFyIGk9cygxKTtjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeXtjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ2FudmFzRmFjdG9yeSYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LiIpfWNyZWF0ZSh0LGUpe2lmKHQ8PTB8fGU8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7Y29uc3Qgcz10aGlzLl9jcmVhdGVDYW52YXModCxlKTtyZXR1cm57Y2FudmFzOnMsY29udGV4dDpzLmdldENvbnRleHQoIjJkIil9fXJlc2V0KHQsZSxzKXtpZighdC5jYW52YXMpdGhyb3cgbmV3IEVycm9yKCJDYW52YXMgaXMgbm90IHNwZWNpZmllZCIpO2lmKGU8PTB8fHM8PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNhbnZhcyBzaXplIik7dC5jYW52YXMud2lkdGg9ZTt0LmNhbnZhcy5oZWlnaHQ9c31kZXN0cm95KHQpe2lmKCF0LmNhbnZhcyl0aHJvdyBuZXcgRXJyb3IoIkNhbnZhcyBpcyBub3Qgc3BlY2lmaWVkIik7dC5jYW52YXMud2lkdGg9MDt0LmNhbnZhcy5oZWlnaHQ9MDt0LmNhbnZhcz1udWxsO3QuY29udGV4dD1udWxsfV9jcmVhdGVDYW52YXModCxlKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuIil9fWUuQmFzZUNhbnZhc0ZhY3Rvcnk9QmFzZUNhbnZhc0ZhY3Rvcnk7Y2xhc3MgQmFzZUNNYXBSZWFkZXJGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbCxpc0NvbXByZXNzZWQ6ZT0hMX0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlQ01hcFJlYWRlckZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlQ01hcFJlYWRlckZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXQ7dGhpcy5pc0NvbXByZXNzZWQ9ZX1hc3luYyBmZXRjaCh7bmFtZTp0fSl7aWYoIXRoaXMuYmFzZVVybCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSBDTWFwICJiYXNlVXJsIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSAiY01hcFVybCIgYW5kICJjTWFwUGFja2VkIiBBUEkgcGFyYW1ldGVycyBhcmUgcHJvdmlkZWQuJyk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJDTWFwIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuIik7Y29uc3QgZT10aGlzLmJhc2VVcmwrdCsodGhpcy5pc0NvbXByZXNzZWQ/Ii5iY21hcCI6IiIpLHM9dGhpcy5pc0NvbXByZXNzZWQ/aS5DTWFwQ29tcHJlc3Npb25UeXBlLkJJTkFSWTppLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUscykuY2F0Y2goKHQ9Pnt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBsb2FkICR7dGhpcy5pc0NvbXByZXNzZWQ/ImJpbmFyeSAiOiIifUNNYXAgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQsZSl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLiIpfX1lLkJhc2VDTWFwUmVhZGVyRmFjdG9yeT1CYXNlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5e2NvbnN0cnVjdG9yKHtiYXNlVXJsOnQ9bnVsbH0pe3RoaXMuY29uc3RydWN0b3I9PT1CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkmJigwLGkudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkuIik7dGhpcy5iYXNlVXJsPXR9YXN5bmMgZmV0Y2goe2ZpbGVuYW1lOnR9KXtpZighdGhpcy5iYXNlVXJsKXRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgImJhc2VVcmwiIHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCwgZW5zdXJlIHRoYXQgdGhlICJzdGFuZGFyZEZvbnREYXRhVXJsIiBBUEkgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiRm9udCBmaWxlbmFtZSBtdXN0IGJlIHNwZWNpZmllZC4iKTtjb25zdCBlPWAke3RoaXMuYmFzZVVybH0ke3R9YDtyZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKGUpLmNhdGNoKCh0PT57dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBmb250IGRhdGEgYXQ6ICR7ZX1gKX0pKX1fZmV0Y2hEYXRhKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9mZXRjaERhdGFgIGNhbGxlZC4iKX19ZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk9QmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O2NsYXNzIEJhc2VTVkdGYWN0b3J5e2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTVkdGYWN0b3J5JiYoMCxpLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNWR0ZhY3RvcnkuIil9Y3JlYXRlKHQsZSxzPSExKXtpZih0PD0wfHxlPD0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZGltZW5zaW9ucyIpO2NvbnN0IGk9dGhpcy5fY3JlYXRlU1ZHKCJzdmc6c3ZnIik7aS5zZXRBdHRyaWJ1dGUoInZlcnNpb24iLCIxLjEiKTtpZighcyl7aS5zZXRBdHRyaWJ1dGUoIndpZHRoIixgJHt0fXB4YCk7aS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsYCR7ZX1weGApfWkuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwibm9uZSIpO2kuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixgMCAwICR7dH0gJHtlfWApO3JldHVybiBpfWNyZWF0ZUVsZW1lbnQodCl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTVkcgZWxlbWVudCB0eXBlIik7cmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KX1fY3JlYXRlU1ZHKHQpeygwLGkudW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC4iKX19ZS5CYXNlU1ZHRmFjdG9yeT1CYXNlU1ZHRmFjdG9yeX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk11cm11ckhhc2gzXzY0PXZvaWQgMDt2YXIgaT1zKDEpO2NvbnN0IG49MzI4NTM3NzUyMCxyPTQyOTQ5MDE3NjAsYT02NTUzNTtlLk11cm11ckhhc2gzXzY0PWNsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaDE9dD80Mjk0OTY3Mjk1JnQ6bjt0aGlzLmgyPXQ/NDI5NDk2NzI5NSZ0Om59dXBkYXRlKHQpe2xldCBlLHM7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtlPW5ldyBVaW50OEFycmF5KDIqdC5sZW5ndGgpO3M9MDtmb3IobGV0IGk9MCxuPXQubGVuZ3RoO2k8bjtpKyspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGkpO2lmKG48PTI1NSllW3MrK109bjtlbHNle2VbcysrXT1uPj4+ODtlW3MrK109MjU1Jm59fX1lbHNle2lmKCEoMCxpLmlzQXJyYXlCdWZmZXIpKHQpKXRocm93IG5ldyBFcnJvcigiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LiIpO2U9dC5zbGljZSgpO3M9ZS5ieXRlTGVuZ3RofWNvbnN0IG49cz4+MixvPXMtNCpuLGw9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsbik7bGV0IGM9MCxoPTAsZD10aGlzLmgxLHU9dGhpcy5oMjtjb25zdCBwPTM0MzI5MTgzNTMsZz00NjE4NDU5MDcsbT0xMTYwMSxmPTEzNzE1O2ZvcihsZXQgdD0wO3Q8bjt0KyspaWYoMSZ0KXtjPWxbdF07Yz1jKnAmcnxjKm0mYTtjPWM8PDE1fGM+Pj4xNztjPWMqZyZyfGMqZiZhO2RePWM7ZD1kPDwxM3xkPj4+MTk7ZD01KmQrMzg2NDI5MjE5Nn1lbHNle2g9bFt0XTtoPWgqcCZyfGgqbSZhO2g9aDw8MTV8aD4+PjE3O2g9aCpnJnJ8aCpmJmE7dV49aDt1PXU8PDEzfHU+Pj4xOTt1PTUqdSszODY0MjkyMTk2fWM9MDtzd2l0Y2gobyl7Y2FzZSAzOmNePWVbNCpuKzJdPDwxNjtjYXNlIDI6Y149ZVs0Km4rMV08PDg7Y2FzZSAxOmNePWVbNCpuXTtjPWMqcCZyfGMqbSZhO2M9Yzw8MTV8Yz4+PjE3O2M9YypnJnJ8YypmJmE7MSZuP2RePWM6dV49Y310aGlzLmgxPWQ7dGhpcy5oMj11fWhleGRpZ2VzdCgpe2xldCB0PXRoaXMuaDEsZT10aGlzLmgyO3RePWU+Pj4xO3Q9Mzk4MTgwNjc5Nyp0JnJ8MzYwNDUqdCZhO2U9NDI4MzU0MzUxMSplJnJ8KDI5NTAxNjM3OTcqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTt0PTQ0NDk4NDQwMyp0JnJ8NjA0OTkqdCZhO2U9MzMwMTg4MjM2NiplJnJ8KDMxMjA0Mzc4OTMqKGU8PDE2fHQ+Pj4xNikmcik+Pj4xNjt0Xj1lPj4+MTtjb25zdCBzPSh0Pj4+MCkudG9TdHJpbmcoMTYpLGk9KGU+Pj4wKS50b1N0cmluZygxNik7cmV0dXJuIHMucGFkU3RhcnQoOCwiMCIpK2kucGFkU3RhcnQoOCwiMCIpfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Gb250TG9hZGVyPWUuRm9udEZhY2VPYmplY3Q9dm9pZCAwO3ZhciBpPXMoMSk7ZS5Gb250TG9hZGVyPWNsYXNzIEZvbnRMb2FkZXJ7Y29uc3RydWN0b3Ioe29uVW5zdXBwb3J0ZWRGZWF0dXJlOnQsb3duZXJEb2N1bWVudDplPWdsb2JhbFRoaXMuZG9jdW1lbnQsc3R5bGVFbGVtZW50OnM9bnVsbH0pe3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPXQ7dGhpcy5fZG9jdW1lbnQ9ZTt0aGlzLm5hdGl2ZUZvbnRGYWNlcz1bXTt0aGlzLnN0eWxlRWxlbWVudD1udWxsO3RoaXMubG9hZGluZ1JlcXVlc3RzPVtdO3RoaXMubG9hZFRlc3RGb250SWQ9MH1hZGROYXRpdmVGb250RmFjZSh0KXt0aGlzLm5hdGl2ZUZvbnRGYWNlcy5wdXNoKHQpO3RoaXMuX2RvY3VtZW50LmZvbnRzLmFkZCh0KX1pbnNlcnRSdWxlKHQpe2lmKCF0aGlzLnN0eWxlRWxlbWVudCl7dGhpcy5zdHlsZUVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpfWNvbnN0IGU9dGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7ZS5pbnNlcnRSdWxlKHQsZS5jc3NSdWxlcy5sZW5ndGgpfWNsZWFyKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO3RoaXMubmF0aXZlRm9udEZhY2VzLmxlbmd0aD0wO2lmKHRoaXMuc3R5bGVFbGVtZW50KXt0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTt0aGlzLnN0eWxlRWxlbWVudD1udWxsfX1hc3luYyBiaW5kKHQpe2lmKHQuYXR0YWNoZWR8fHQubWlzc2luZ0ZpbGUpcmV0dXJuO3QuYXR0YWNoZWQ9ITA7aWYodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKXtjb25zdCBlPXQuY3JlYXRlTmF0aXZlRm9udEZhY2UoKTtpZihlKXt0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO3RyeXthd2FpdCBlLmxvYWRlZH1jYXRjaChzKXt0aGlzLl9vblVuc3VwcG9ydGVkRmVhdHVyZSh7ZmVhdHVyZUlkOmkuVU5TVVBQT1JURURfRkVBVFVSRVMuZXJyb3JGb250TG9hZE5hdGl2ZX0pOygwLGkud2FybikoYEZhaWxlZCB0byBsb2FkIGZvbnQgJyR7ZS5mYW1pbHl9JzogJyR7c30nLmApO3QuZGlzYWJsZUZvbnRGYWNlPSEwO3Rocm93IHN9fXJldHVybn1jb25zdCBlPXQuY3JlYXRlRm9udEZhY2VSdWxlKCk7aWYoZSl7dGhpcy5pbnNlcnRSdWxlKGUpO2lmKHRoaXMuaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQpcmV0dXJuO2F3YWl0IG5ldyBQcm9taXNlKChlPT57Y29uc3Qgcz10aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTt0aGlzLl9wcmVwYXJlRm9udExvYWRFdmVudCh0LHMpfSkpfX1nZXQgaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZCgpe2NvbnN0IHQ9ISF0aGlzLl9kb2N1bWVudD8uZm9udHM7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQiLHQpfWdldCBpc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCgpe2xldCB0PSExO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yKXQ9ITA7ZWxzZXsvTW96aWxsYVwvNS4wLio/cnY6KFxkKykuKj8gR2Vja28vLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk/LlsxXT49MTQmJih0PSEwKX1yZXR1cm4oMCxpLnNoYWRvdykodGhpcywiaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQiLHQpfV9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KXtjb25zdHtsb2FkaW5nUmVxdWVzdHM6ZX09dGhpcyxzPXtkb25lOiExLGNvbXBsZXRlOmZ1bmN0aW9uIGNvbXBsZXRlUmVxdWVzdCgpeygwLGkuYXNzZXJ0KSghcy5kb25lLCJjb21wbGV0ZVJlcXVlc3QoKSBjYW5ub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3MuZG9uZT0hMDtmb3IoO2UubGVuZ3RoPjAmJmVbMF0uZG9uZTspe2NvbnN0IHQ9ZS5zaGlmdCgpO3NldFRpbWVvdXQodC5jYWxsYmFjaywwKX19LGNhbGxiYWNrOnR9O2UucHVzaChzKTtyZXR1cm4gc31nZXQgX2xvYWRUZXN0Rm9udCgpe2NvbnN0IHQ9YXRvYigiVDFSVVR3QUxBSUFBQXdBd1EwWkdJREh0Wmc0QUFBT1lBQUFBZ1VaR1ZFMWxrelp3QUFBRUhBQUFBQnhIUkVWR0FCUUFGUUFBQkRnQUFBQWVUMU12TWxZTll3a0FBQUVnQUFBQVlHTnRZWEFCRFFMVUFBQUNOQUFBQVVKb1pXRmsveFZGRFFBQUFMd0FBQUEyYUdobFlRZGtBK29BQUFEMEFBQUFKR2h0ZEhnRDZBQUFBQUFFV0FBQUFBWnRZWGh3QUFKUUFBQUFBUmdBQUFBR2JtRnRaVmptZEg0QUFBR0FBQUFBc1hCdmMzVC9oZ0F6QUFBRGVBQUFBQ0FBQVFBQUFBRUFBTFpSRnNSZkR6ejFBQXNENkFBQUFBRE9CT1RMQUFBQUFNNEtIRHdBQUFBQUErZ0RJUUFBQUFnQUFnQUFBQUFBQUFBQkFBQURJUUFBQUZvRDZBQUFBQUFENkFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQVVBQUFBZ0FBQUFRRDZBSDBBQVVBQUFLS0Fyd0FBQUNNQW9vQ3ZBQUFBZUFBTVFFQ0FBQUNBQVlKQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFGQm1SV1FBd0FBdUFDNERJUDg0QUZvRElRQUFBQUFBQVFBQUFBQUFBQUFBQUNBQUlBQUJBQUFBRGdDdUFBRUFBQUFBQUFBQUFRQUFBQUVBQUFBQUFBRUFBUUFBQUFFQUFBQUFBQUlBQVFBQUFBRUFBQUFBQUFNQUFRQUFBQUVBQUFBQUFBUUFBUUFBQUFFQUFBQUFBQVVBQVFBQUFBRUFBQUFBQUFZQUFRQUFBQU1BQVFRSkFBQUFBZ0FCQUFNQUFRUUpBQUVBQWdBQkFBTUFBUVFKQUFJQUFnQUJBQU1BQVFRSkFBTUFBZ0FCQUFNQUFRUUpBQVFBQWdBQkFBTUFBUVFKQUFVQUFnQUJBQU1BQVFRSkFBWUFBZ0FCV0FCWUFBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUFBQUFBRHdBQXdBQkFBQUFIQUFFQUNBQUFBQUVBQVFBQVFBQUFDNy8vd0FBQUM3Ly8vL1RBQUVBQUFBQUFBQUJCZ0FBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1BQUFBQUFBRC9nd0F5QUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBUUVBQUVCQVFKWUFBRUJBU0g0RHdENEd3SEVBdmdjQS9nWEJJd01BWXVMK256NXRRWGtENWozQ0JMbkVRQUNBUUVCSVZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlBQUFCQVFBQUR3QUNBUUVFRS90M0RvdjZmQUg2ZkFUK2ZQcDgrbndIRG9zTUN2bTFDdm0xREF6NmZCUUFBQUFBQUFBQkFBQUFBTW1KYnpFQUFBQUF6Z1RqRlFBQUFBRE9CT1FwQUFFQUFBQUFBQUFBREFBVUFBUUFBQUFCQUFBQUFnQUJBQUFBQUFBQUFBQUQ2QUFBQUFBQUFBPT0iKTtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiX2xvYWRUZXN0Rm9udCIsdCl9X3ByZXBhcmVGb250TG9hZEV2ZW50KHQsZSl7ZnVuY3Rpb24gaW50MzIodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpPDwyNHx0LmNoYXJDb2RlQXQoZSsxKTw8MTZ8dC5jaGFyQ29kZUF0KGUrMik8PDh8MjU1JnQuY2hhckNvZGVBdChlKzMpfWZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LGUscyxpKXtyZXR1cm4gdC5zdWJzdHJpbmcoMCxlKStpK3Quc3Vic3RyaW5nKGUrcyl9bGV0IHMsbjtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3Iud2lkdGg9MTtyLmhlaWdodD0xO2NvbnN0IGE9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBvPTA7Y29uc3QgbD1gbHQke0RhdGUubm93KCl9JHt0aGlzLmxvYWRUZXN0Rm9udElkKyt9YDtsZXQgYz10aGlzLl9sb2FkVGVzdEZvbnQ7Yz1zcGxpY2VTdHJpbmcoYyw5NzYsbC5sZW5ndGgsbCk7Y29uc3QgaD0xNDgyMTg0NzkyO2xldCBkPWludDMyKGMsMTYpO2ZvcihzPTAsbj1sLmxlbmd0aC0zO3M8bjtzKz00KWQ9ZC1oK2ludDMyKGwscyl8MDtzPGwubGVuZ3RoJiYoZD1kLWgraW50MzIobCsiWFhYIixzKXwwKTtjPXNwbGljZVN0cmluZyhjLDE2LDQsKDAsaS5zdHJpbmczMikoZCkpO2NvbnN0IHU9YEBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiIke2x9IjtzcmM6JHtgdXJsKGRhdGE6Zm9udC9vcGVudHlwZTtiYXNlNjQsJHtidG9hKGMpfSk7YH19YDt0aGlzLmluc2VydFJ1bGUodSk7Y29uc3QgcD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7cC5zdHlsZS53aWR0aD1wLnN0eWxlLmhlaWdodD0iMTBweCI7cC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3Auc3R5bGUudG9wPXAuc3R5bGUubGVmdD0iMHB4Ijtmb3IoY29uc3QgZSBvZlt0LmxvYWRlZE5hbWUsbF0pe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9IkhpIjt0LnN0eWxlLmZvbnRGYW1pbHk9ZTtwLmFwcGVuZCh0KX10aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTshZnVuY3Rpb24gaXNGb250UmVhZHkodCxlKXtpZigrK28+MzApeygwLGkud2FybikoIkxvYWQgdGVzdCBmb250IG5ldmVyIGxvYWRlZC4iKTtlKCk7cmV0dXJufWEuZm9udD0iMzBweCAiK3Q7YS5maWxsVGV4dCgiLiIsMCwyMCk7YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXT4wP2UoKTpzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCx0LGUpKX0obCwoKCk9PntwLnJlbW92ZSgpO2UuY29tcGxldGUoKX0pKX19O2UuRm9udEZhY2VPYmplY3Q9Y2xhc3MgRm9udEZhY2VPYmplY3R7Y29uc3RydWN0b3IodCx7aXNFdmFsU3VwcG9ydGVkOmU9ITAsZGlzYWJsZUZvbnRGYWNlOnM9ITEsaWdub3JlRXJyb3JzOmk9ITEsb25VbnN1cHBvcnRlZEZlYXR1cmU6bixmb250UmVnaXN0cnk6cj1udWxsfSl7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHQpdGhpc1tlXT10W2VdO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09ZTt0aGlzLmRpc2FibGVGb250RmFjZT0hMD09PXM7dGhpcy5pZ25vcmVFcnJvcnM9ITA9PT1pO3RoaXMuX29uVW5zdXBwb3J0ZWRGZWF0dXJlPW47dGhpcy5mb250UmVnaXN0cnk9cn1jcmVhdGVOYXRpdmVGb250RmFjZSgpe2lmKCF0aGlzLmRhdGF8fHRoaXMuZGlzYWJsZUZvbnRGYWNlKXJldHVybiBudWxsO2xldCB0O2lmKHRoaXMuY3NzRm9udEluZm8pe2NvbnN0IGU9e3dlaWdodDp0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O3RoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUmJihlLnN0eWxlPWBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWdgKTt0PW5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksdGhpcy5kYXRhLGUpfWVsc2UgdD1uZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLHRoaXMuZGF0YSx7fSk7dGhpcy5mb250UmVnaXN0cnk/LnJlZ2lzdGVyRm9udCh0aGlzKTtyZXR1cm4gdH1jcmVhdGVGb250RmFjZVJ1bGUoKXtpZighdGhpcy5kYXRhfHx0aGlzLmRpc2FibGVGb250RmFjZSlyZXR1cm4gbnVsbDtjb25zdCB0PSgwLGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxlPWB1cmwoZGF0YToke3RoaXMubWltZXR5cGV9O2Jhc2U2NCwke2J0b2EodCl9KTtgO2xldCBzO2lmKHRoaXMuY3NzRm9udEluZm8pe2xldCB0PWBmb250LXdlaWdodDogJHt0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHR9O2A7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSYmKHQrPWBmb250LXN0eWxlOiBvYmxpcXVlICR7dGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZX1kZWc7YCk7cz1gQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6IiR7dGhpcy5jc3NGb250SW5mby5mb250RmFtaWx5fSI7JHt0fXNyYzoke2V9fWB9ZWxzZSBzPWBAZm9udC1mYWNlIHtmb250LWZhbWlseToiJHt0aGlzLmxvYWRlZE5hbWV9IjtzcmM6JHtlfX1gO3RoaXMuZm9udFJlZ2lzdHJ5Py5yZWdpc3RlckZvbnQodGhpcyxlKTtyZXR1cm4gc31nZXRQYXRoR2VuZXJhdG9yKHQsZSl7aWYodm9pZCAwIT09dGhpcy5jb21waWxlZEdseXBoc1tlXSlyZXR1cm4gdGhpcy5jb21waWxlZEdseXBoc1tlXTtsZXQgczt0cnl7cz10LmdldCh0aGlzLmxvYWRlZE5hbWUrIl9wYXRoXyIrZSl9Y2F0Y2godCl7aWYoIXRoaXMuaWdub3JlRXJyb3JzKXRocm93IHQ7dGhpcy5fb25VbnN1cHBvcnRlZEZlYXR1cmUoe2ZlYXR1cmVJZDppLlVOU1VQUE9SVEVEX0ZFQVRVUkVTLmVycm9yRm9udEdldFBhdGh9KTsoMCxpLndhcm4pKGBnZXRQYXRoR2VuZXJhdG9yIC0gaWdub3JpbmcgY2hhcmFjdGVyOiAiJHt0fSIuYCk7cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXt9fWlmKHRoaXMuaXNFdmFsU3VwcG9ydGVkJiZpLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgdD1bXTtmb3IoY29uc3QgZSBvZiBzKXtjb25zdCBzPXZvaWQgMCE9PWUuYXJncz9lLmFyZ3Muam9pbigiLCIpOiIiO3QucHVzaCgiYy4iLGUuY21kLCIoIixzLCIpO1xuIil9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09bmV3IEZ1bmN0aW9uKCJjIiwic2l6ZSIsdC5qb2luKCIiKSl9cmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV09ZnVuY3Rpb24odCxlKXtmb3IoY29uc3QgaSBvZiBzKXsic2NhbGUiPT09aS5jbWQmJihpLmFyZ3M9W2UsLWVdKTt0W2kuY21kXS5hcHBseSh0LGkuYXJncyl9fX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuQ2FudmFzR3JhcGhpY3M9dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpLHI9cygxMSksYT1zKDEzKSxvPXMoMTIpO2NvbnN0IGw9NDA5NixjPW8uaXNOb2RlSlMmJiJ1bmRlZmluZWQiPT10eXBlb2YgUGF0aDJEPy0xOjFlMyxoPTE2O2NsYXNzIENhY2hlZENhbnZhc2Vze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FudmFzRmFjdG9yeT10O3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRDYW52YXModCxlLHMpe2xldCBpO2lmKHZvaWQgMCE9PXRoaXMuY2FjaGVbdF0pe2k9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkucmVzZXQoaSxlLHMpfWVsc2V7aT10aGlzLmNhbnZhc0ZhY3RvcnkuY3JlYXRlKGUscyk7dGhpcy5jYWNoZVt0XT1pfXJldHVybiBpfWRlbGV0ZSh0KXtkZWxldGUgdGhpcy5jYWNoZVt0XX1jbGVhcigpe2Zvcihjb25zdCB0IGluIHRoaXMuY2FjaGUpe2NvbnN0IGU9dGhpcy5jYWNoZVt0XTt0aGlzLmNhbnZhc0ZhY3RvcnkuZGVzdHJveShlKTtkZWxldGUgdGhpcy5jYWNoZVt0XX19fWZ1bmN0aW9uIGRyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh0LGUscyxpLHIsYSxvLGwsYyxoKXtjb25zdFtkLHUscCxnLG0sZl09KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtpZigwPT09dSYmMD09PXApe2NvbnN0IG49bypkK20sYj1NYXRoLnJvdW5kKG4pLEE9bCpnK2YsXz1NYXRoLnJvdW5kKEEpLHY9KG8rYykqZCttLHk9TWF0aC5hYnMoTWF0aC5yb3VuZCh2KS1iKXx8MSxTPShsK2gpKmcrZix4PU1hdGguYWJzKE1hdGgucm91bmQoUyktXyl8fDE7dC5zZXRUcmFuc2Zvcm0oTWF0aC5zaWduKGQpLDAsMCxNYXRoLnNpZ24oZyksYixfKTt0LmRyYXdJbWFnZShlLHMsaSxyLGEsMCwwLHkseCk7dC5zZXRUcmFuc2Zvcm0oZCx1LHAsZyxtLGYpO3JldHVyblt5LHhdfWlmKDA9PT1kJiYwPT09Zyl7Y29uc3Qgbj1sKnArbSxiPU1hdGgucm91bmQobiksQT1vKnUrZixfPU1hdGgucm91bmQoQSksdj0obCtoKSpwK20seT1NYXRoLmFicyhNYXRoLnJvdW5kKHYpLWIpfHwxLFM9KG8rYykqdStmLHg9TWF0aC5hYnMoTWF0aC5yb3VuZChTKS1fKXx8MTt0LnNldFRyYW5zZm9ybSgwLE1hdGguc2lnbih1KSxNYXRoLnNpZ24ocCksMCxiLF8pO3QuZHJhd0ltYWdlKGUscyxpLHIsYSwwLDAseCx5KTt0LnNldFRyYW5zZm9ybShkLHUscCxnLG0sZik7cmV0dXJuW3gseV19dC5kcmF3SW1hZ2UoZSxzLGkscixhLG8sbCxjLGgpO3JldHVybltNYXRoLmh5cG90KGQsdSkqYyxNYXRoLmh5cG90KHAsZykqaF19Y2xhc3MgQ2FudmFzRXh0cmFTdGF0ZXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYWxwaGFJc1NoYXBlPSExO3RoaXMuZm9udFNpemU9MDt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLnRleHRNYXRyaXg9aS5JREVOVElUWV9NQVRSSVg7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmZvbnRNYXRyaXg9aS5GT05UX0lERU5USVRZX01BVFJJWDt0aGlzLmxlYWRpbmc9MDt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1pLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPSIjMDAwMDAwIjt0aGlzLnN0cm9rZUNvbG9yPSIjMDAwMDAwIjt0aGlzLnBhdHRlcm5GaWxsPSExO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5hY3RpdmVTTWFzaz1udWxsO3RoaXMudHJhbnNmZXJNYXBzPW51bGw7dGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsdCxlXSl9Y2xvbmUoKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5jbGlwQm94PXRoaXMuY2xpcEJveC5zbGljZSgpO3JldHVybiB0fXNldEN1cnJlbnRQb2ludCh0LGUpe3RoaXMueD10O3RoaXMueT1lfXVwZGF0ZVBhdGhNaW5NYXgodCxlLHMpe1tlLHNdPWkuVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSx0KTt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLGUpO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblkscyk7dGhpcy5tYXhYPU1hdGgubWF4KHRoaXMubWF4WCxlKTt0aGlzLm1heFk9TWF0aC5tYXgodGhpcy5tYXhZLHMpfXVwZGF0ZVJlY3RNaW5NYXgodCxlKXtjb25zdCBzPWkuVXRpbC5hcHBseVRyYW5zZm9ybShlLHQpLG49aS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiksdCk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxzWzBdLG5bMF0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksc1sxXSxuWzFdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHNbMF0sblswXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxzWzFdLG5bMV0pfXVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsZSl7aS5VdGlsLnNjYWxlTWluTWF4KHQsZSk7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCxlWzBdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLGVbMV0pO3RoaXMubWluWT1NYXRoLm1pbih0aGlzLm1pblksZVsyXSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSxlWzNdKX11cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCxlLHMsbixyLGEsbyxsLGMsaCl7Y29uc3QgZD1pLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLG4scixhLG8sbCxjKTtpZihoKXtoWzBdPU1hdGgubWluKGhbMF0sZFswXSxkWzJdKTtoWzFdPU1hdGgubWF4KGhbMV0sZFswXSxkWzJdKTtoWzJdPU1hdGgubWluKGhbMl0sZFsxXSxkWzNdKTtoWzNdPU1hdGgubWF4KGhbM10sZFsxXSxkWzNdKX1lbHNlIHRoaXMudXBkYXRlUmVjdE1pbk1heCh0LGQpfWdldFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe2NvbnN0IHM9W3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV07aWYodD09PXIuUGF0aFR5cGUuU1RST0tFKXtlfHwoMCxpLnVucmVhY2hhYmxlKSgiU3Ryb2tlIGJvdW5kaW5nIGJveCBtdXN0IGluY2x1ZGUgdHJhbnNmb3JtLiIpO2NvbnN0IHQ9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLG49dFswXSp0aGlzLmxpbmVXaWR0aC8yLHI9dFsxXSp0aGlzLmxpbmVXaWR0aC8yO3NbMF0tPW47c1sxXS09cjtzWzJdKz1uO3NbM10rPXJ9cmV0dXJuIHN9dXBkYXRlQ2xpcEZyb21QYXRoKCl7Y29uc3QgdD1pLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnN0YXJ0TmV3UGF0aEFuZENsaXBCb3godHx8WzAsMCwwLDBdKX1pc0VtcHR5Q2xpcCgpe3JldHVybiB0aGlzLm1pblg9PT0xLzB9c3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KXt0aGlzLmNsaXBCb3g9dDt0aGlzLm1pblg9MS8wO3RoaXMubWluWT0xLzA7dGhpcy5tYXhYPTA7dGhpcy5tYXhZPTB9Z2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCh0PXIuUGF0aFR5cGUuRklMTCxlPW51bGwpe3JldHVybiBpLlV0aWwuaW50ZXJzZWN0KHRoaXMuY2xpcEJveCx0aGlzLmdldFBhdGhCb3VuZGluZ0JveCh0LGUpKX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsZSxzPW51bGwpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEYXRhJiZlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKXt0LnB1dEltYWdlRGF0YShlLDAsMCk7cmV0dXJufWNvbnN0IG49ZS5oZWlnaHQscj1lLndpZHRoLGE9biVoLG89KG4tYSkvaCxsPTA9PT1hP286bysxLGM9dC5jcmVhdGVJbWFnZURhdGEocixoKTtsZXQgZCx1PTA7Y29uc3QgcD1lLmRhdGEsZz1jLmRhdGE7bGV0IG0sZixiLEEsXyx2LHksUztpZihzKXN3aXRjaChzLmxlbmd0aCl7Y2FzZSAxOl89c1swXTt2PXNbMF07eT1zWzBdO1M9c1swXTticmVhaztjYXNlIDQ6Xz1zWzBdO3Y9c1sxXTt5PXNbMl07Uz1zWzNdfWlmKGUua2luZD09PWkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKXtjb25zdCBlPXAuYnl0ZUxlbmd0aCxzPW5ldyBVaW50MzJBcnJheShnLmJ1ZmZlciwwLGcuYnl0ZUxlbmd0aD4+Miksbj1zLmxlbmd0aCxBPXIrNz4+MztsZXQgXz00Mjk0OTY3Mjk1LHY9aS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtTJiYyNTU9PT1TWzBdJiYwPT09U1syNTVdJiYoW18sdl09W3YsX10pO2ZvcihtPTA7bTxsO20rKyl7Yj1tPG8/aDphO2Q9MDtmb3IoZj0wO2Y8YjtmKyspe2NvbnN0IHQ9ZS11O2xldCBpPTA7Y29uc3Qgbj10PkE/cjo4KnQtNyxhPS04Jm47bGV0IG89MCxsPTA7Zm9yKDtpPGE7aSs9OCl7bD1wW3UrK107c1tkKytdPTEyOCZsP186djtzW2QrK109NjQmbD9fOnY7c1tkKytdPTMyJmw/Xzp2O3NbZCsrXT0xNiZsP186djtzW2QrK109OCZsP186djtzW2QrK109NCZsP186djtzW2QrK109MiZsP186djtzW2QrK109MSZsP186dn1mb3IoO2k8bjtpKyspe2lmKDA9PT1vKXtsPXBbdSsrXTtvPTEyOH1zW2QrK109bCZvP186djtvPj49MX19Zm9yKDtkPG47KXNbZCsrXT0wO3QucHV0SW1hZ2VEYXRhKGMsMCxtKmgpfX1lbHNlIGlmKGUua2luZD09PWkuSW1hZ2VLaW5kLlJHQkFfMzJCUFApe2NvbnN0IGU9ISEoX3x8dnx8eSk7Zj0wO0E9cipoKjQ7Zm9yKG09MDttPG87bSsrKXtnLnNldChwLnN1YmFycmF5KHUsdStBKSk7dSs9QTtpZihlKWZvcihsZXQgdD0wO3Q8QTt0Kz00KXtfJiYoZ1t0KzBdPV9bZ1t0KzBdXSk7diYmKGdbdCsxXT12W2dbdCsxXV0pO3kmJihnW3QrMl09eVtnW3QrMl1dKX10LnB1dEltYWdlRGF0YShjLDAsZik7Zis9aH1pZihtPGwpe0E9ciphKjQ7Zy5zZXQocC5zdWJhcnJheSh1LHUrQSkpO2lmKGUpZm9yKGxldCB0PTA7dDxBO3QrPTQpe18mJihnW3QrMF09X1tnW3QrMF1dKTt2JiYoZ1t0KzFdPXZbZ1t0KzFdXSk7eSYmKGdbdCsyXT15W2dbdCsyXV0pfXQucHV0SW1hZ2VEYXRhKGMsMCxmKX19ZWxzZXtpZihlLmtpbmQhPT1pLkltYWdlS2luZC5SR0JfMjRCUFApdGhyb3cgbmV3IEVycm9yKGBiYWQgaW1hZ2Uga2luZDogJHtlLmtpbmR9YCk7e2NvbnN0IGU9ISEoX3x8dnx8eSk7Yj1oO0E9cipiO2ZvcihtPTA7bTxsO20rKyl7aWYobT49byl7Yj1hO0E9cipifWQ9MDtmb3IoZj1BO2YtLTspe2dbZCsrXT1wW3UrK107Z1tkKytdPXBbdSsrXTtnW2QrK109cFt1KytdO2dbZCsrXT0yNTV9aWYoZSlmb3IobGV0IHQ9MDt0PGQ7dCs9NCl7XyYmKGdbdCswXT1fW2dbdCswXV0pO3YmJihnW3QrMV09dltnW3QrMV1dKTt5JiYoZ1t0KzJdPXlbZ1t0KzJdXSl9dC5wdXRJbWFnZURhdGEoYywwLG0qaCl9fX19ZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VNYXNrKHQsZSl7aWYoZS5iaXRtYXApe3QuZHJhd0ltYWdlKGUuYml0bWFwLDAsMCk7cmV0dXJufWNvbnN0IHM9ZS5oZWlnaHQsaT1lLndpZHRoLG49cyVoLHI9KHMtbikvaCxvPTA9PT1uP3I6cisxLGw9dC5jcmVhdGVJbWFnZURhdGEoaSxoKTtsZXQgYz0wO2NvbnN0IGQ9ZS5kYXRhLHU9bC5kYXRhO2ZvcihsZXQgZT0wO2U8bztlKyspe2NvbnN0IHM9ZTxyP2g6bjsoe3NyY1BvczpjfT0oMCxhLmFwcGx5TWFza0ltYWdlRGF0YSkoe3NyYzpkLHNyY1BvczpjLGRlc3Q6dSx3aWR0aDppLGhlaWdodDpzfSkpO3QucHV0SW1hZ2VEYXRhKGwsMCxlKmgpfX1mdW5jdGlvbiBjb3B5Q3R4U3RhdGUodCxlKXtjb25zdCBzPVsic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsUnVsZSIsImdsb2JhbEFscGhhIiwibGluZVdpZHRoIiwibGluZUNhcCIsImxpbmVKb2luIiwibWl0ZXJMaW1pdCIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZvbnQiXTtmb3IoY29uc3QgaSBvZiBzKXZvaWQgMCE9PXRbaV0mJihlW2ldPXRbaV0pO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe2Uuc2V0TGluZURhc2godC5nZXRMaW5lRGFzaCgpKTtlLmxpbmVEYXNoT2Zmc2V0PXQubGluZURhc2hPZmZzZXR9fWZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQsZSl7dC5zdHJva2VTdHlsZT10LmZpbGxTdHlsZT1lfHwiIzAwMDAwMCI7dC5maWxsUnVsZT0ibm9uemVybyI7dC5nbG9iYWxBbHBoYT0xO3QubGluZVdpZHRoPTE7dC5saW5lQ2FwPSJidXR0Ijt0LmxpbmVKb2luPSJtaXRlciI7dC5taXRlckxpbWl0PTEwO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5mb250PSIxMHB4IHNhbnMtc2VyaWYiO2lmKHZvaWQgMCE9PXQuc2V0TGluZURhc2gpe3Quc2V0TGluZURhc2goW10pO3QubGluZURhc2hPZmZzZXQ9MH19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQmFja2Ryb3AodCxlLHMsaSl7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IHI9MztyPG47cis9NCl7Y29uc3Qgbj10W3JdO2lmKDA9PT1uKXt0W3ItM109ZTt0W3ItMl09czt0W3ItMV09aX1lbHNlIGlmKG48MjU1KXtjb25zdCBhPTI1NS1uO3Rbci0zXT10W3ItM10qbitlKmE+Pjg7dFtyLTJdPXRbci0yXSpuK3MqYT4+ODt0W3ItMV09dFtyLTFdKm4raSphPj44fX19ZnVuY3Rpb24gY29tcG9zZVNNYXNrQWxwaGEodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9cz9zW3Rbbl1dOnRbbl07ZVtuXT1lW25dKmkqLjAwMzkyMTU2ODYyNzQ1MDk4fDB9fWZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCxlLHMpe2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTM7bjxpO24rPTQpe2NvbnN0IGk9NzcqdFtuLTNdKzE1Mip0W24tMl0rMjgqdFtuLTFdO2Vbbl09cz9lW25dKnNbaT4+OF0+Pjg6ZVtuXSppPj4xNn19ZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsZSxzLGkpe2NvbnN0IG49aVswXSxyPWlbMV0sYT1pWzJdLW4sbz1pWzNdLXI7aWYoMCE9PWEmJjAhPT1vKXshZnVuY3Rpb24gZ2VuZXJpY0NvbXBvc2VTTWFzayh0LGUscyxpLG4scixhLG8sbCxjLGgpe2NvbnN0IGQ9ISFyLHU9ZD9yWzBdOjAscD1kP3JbMV06MCxnPWQ/clsyXTowO2xldCBtO209Ikx1bWlub3NpdHkiPT09bj9jb21wb3NlU01hc2tMdW1pbm9zaXR5OmNvbXBvc2VTTWFza0FscGhhO2NvbnN0IGY9TWF0aC5taW4oaSxNYXRoLmNlaWwoMTA0ODU3Ni9zKSk7Zm9yKGxldCBuPTA7bjxpO24rPWYpe2NvbnN0IHI9TWF0aC5taW4oZixpLW4pLGI9dC5nZXRJbWFnZURhdGEoby1jLG4rKGwtaCkscyxyKSxBPWUuZ2V0SW1hZ2VEYXRhKG8sbitsLHMscik7ZCYmY29tcG9zZVNNYXNrQmFja2Ryb3AoYi5kYXRhLHUscCxnKTttKGIuZGF0YSxBLmRhdGEsYSk7ZS5wdXRJbWFnZURhdGEoQSxvLG4rbCl9fShlLmNvbnRleHQscyxhLG8sZS5zdWJ0eXBlLGUuYmFja2Ryb3AsZS50cmFuc2Zlck1hcCxuLHIsZS5vZmZzZXRYLGUub2Zmc2V0WSk7dC5zYXZlKCk7dC5nbG9iYWxBbHBoYT0xO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPSJzb3VyY2Utb3ZlciI7dC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3QuZHJhd0ltYWdlKHMuY2FudmFzLDAsMCk7dC5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdldEltYWdlU21vb3RoaW5nRW5hYmxlZCh0LGUpe2NvbnN0IHM9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHQpO3NbMF09TWF0aC5mcm91bmQoc1swXSk7c1sxXT1NYXRoLmZyb3VuZChzWzFdKTtjb25zdCByPU1hdGguZnJvdW5kKChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW98fDEpKm4uUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTKTtyZXR1cm4gdm9pZCAwIT09ZT9lOnNbMF08PXJ8fHNbMV08PXJ9Y29uc3QgZD1bImJ1dHQiLCJyb3VuZCIsInNxdWFyZSJdLHU9WyJtaXRlciIsInJvdW5kIiwiYmV2ZWwiXSxwPXt9LGc9e307Y2xhc3MgQ2FudmFzR3JhcGhpY3N7Y29uc3RydWN0b3IodCxlLHMsaSxuLHIsYSl7dGhpcy5jdHg9dDt0aGlzLmN1cnJlbnQ9bmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQpO3RoaXMuc3RhdGVTdGFjaz1bXTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMucmVzPW51bGw7dGhpcy54b2Jqcz1udWxsO3RoaXMuY29tbW9uT2Jqcz1lO3RoaXMub2Jqcz1zO3RoaXMuY2FudmFzRmFjdG9yeT1pO3RoaXMuZ3JvdXBTdGFjaz1bXTt0aGlzLnByb2Nlc3NpbmdUeXBlMz1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybT1udWxsO3RoaXMuYmFzZVRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZ3JvdXBMZXZlbD0wO3RoaXMuc21hc2tTdGFjaz1bXTt0aGlzLnNtYXNrQ291bnRlcj0wO3RoaXMudGVtcFNNYXNrPW51bGw7dGhpcy5zdXNwZW5kZWRDdHg9bnVsbDt0aGlzLmNvbnRlbnRWaXNpYmxlPSEwO3RoaXMubWFya2VkQ29udGVudFN0YWNrPVtdO3RoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnPW47dGhpcy5jYWNoZWRDYW52YXNlcz1uZXcgQ2FjaGVkQ2FudmFzZXModGhpcy5jYW52YXNGYWN0b3J5KTt0aGlzLmNhY2hlZFBhdHRlcm5zPW5ldyBNYXA7dGhpcy5hbm5vdGF0aW9uQ2FudmFzTWFwPXI7dGhpcy52aWV3cG9ydFNjYWxlPTE7dGhpcy5vdXRwdXRTY2FsZVg9MTt0aGlzLm91dHB1dFNjYWxlWT0xO3RoaXMuYmFja2dyb3VuZENvbG9yPWE/LmJhY2tncm91bmR8fG51bGw7dGhpcy5mb3JlZ3JvdW5kQ29sb3I9YT8uZm9yZWdyb3VuZHx8bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXA9bmV3IE1hcH1nZXRPYmplY3QodCxlPW51bGwpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnN0YXJ0c1dpdGgoImdfIik/dGhpcy5jb21tb25PYmpzLmdldCh0KTp0aGlzLm9ianMuZ2V0KHQpOmV9YmVnaW5EcmF3aW5nKHt0cmFuc2Zvcm06dCx2aWV3cG9ydDplLHRyYW5zcGFyZW5jeTpzPSExLGJhY2tncm91bmQ6aT1udWxsfSl7Y29uc3Qgcj10aGlzLmN0eC5jYW52YXMud2lkdGgsYT10aGlzLmN0eC5jYW52YXMuaGVpZ2h0LG89aXx8IiNmZmZmZmYiO3RoaXMuY3R4LnNhdmUoKTtpZih0aGlzLmZvcmVncm91bmRDb2xvciYmdGhpcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmZvcmVncm91bmRDb2xvcjtjb25zdCB0PXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuY3R4LmZpbGxTdHlsZTt0aGlzLmN0eC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3I7Y29uc3QgZT10aGlzLmJhY2tncm91bmRDb2xvcj10aGlzLmN0eC5maWxsU3R5bGU7bGV0IHM9ITAsaT1vO3RoaXMuY3R4LmZpbGxTdHlsZT1vO2k9dGhpcy5jdHguZmlsbFN0eWxlO3M9InN0cmluZyI9PXR5cGVvZiBpJiYvXiNbMC05QS1GYS1mXXs2fSQvLnRlc3QoaSk7aWYoIiMwMDAwMDAiPT09dCYmIiNmZmZmZmYiPT09ZXx8dD09PWV8fCFzKXRoaXMuZm9yZWdyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGw7ZWxzZXtjb25zdFtzLHIsYV09KDAsbi5nZXRSR0IpKGkpLG5ld0NvbXA9dD0+KHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOigodCsuMDU1KS8xLjA1NSkqKjIuNCxvPU1hdGgucm91bmQoLjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKHIpKy4wNzIyKm5ld0NvbXAoYSkpO3RoaXMuc2VsZWN0Q29sb3I9KHMsaSxuKT0+e2NvbnN0IHI9LjIxMjYqbmV3Q29tcChzKSsuNzE1MipuZXdDb21wKGkpKy4wNzIyKm5ld0NvbXAobik7cmV0dXJuIE1hdGgucm91bmQocik9PT1vP2U6dH19fXRoaXMuY3R4LmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmRDb2xvcnx8bzt0aGlzLmN0eC5maWxsUmVjdCgwLDAscixhKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYocyl7Y29uc3QgdD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygidHJhbnNwYXJlbnQiLHIsYSk7dGhpcy5jb21wb3NpdGVDdHg9dGhpcy5jdHg7dGhpcy50cmFuc3BhcmVudENhbnZhcz10LmNhbnZhczt0aGlzLmN0eD10LmNvbnRleHQ7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY29tcG9zaXRlQ3R4KSl9dGhpcy5jdHguc2F2ZSgpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTtpZih0KXt0aGlzLmN0eC50cmFuc2Zvcm0oLi4udCk7dGhpcy5vdXRwdXRTY2FsZVg9dFswXTt0aGlzLm91dHB1dFNjYWxlWT10WzBdfXRoaXMuY3R4LnRyYW5zZm9ybSguLi5lLnRyYW5zZm9ybSk7dGhpcy52aWV3cG9ydFNjYWxlPWUuc2NhbGU7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpfWV4ZWN1dGVPcGVyYXRvckxpc3QodCxlLHMsbil7Y29uc3Qgcj10LmFyZ3NBcnJheSxhPXQuZm5BcnJheTtsZXQgbz1lfHwwO2NvbnN0IGw9ci5sZW5ndGg7aWYobD09PW8pcmV0dXJuIG87Y29uc3QgYz1sLW8+MTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBzLGg9Yz9EYXRlLm5vdygpKzE1OjA7bGV0IGQ9MDtjb25zdCB1PXRoaXMuY29tbW9uT2JqcyxwPXRoaXMub2JqcztsZXQgZztmb3IoOzspe2lmKHZvaWQgMCE9PW4mJm89PT1uLm5leHRCcmVha1BvaW50KXtuLmJyZWFrSXQobyxzKTtyZXR1cm4gb31nPWFbb107aWYoZyE9PWkuT1BTLmRlcGVuZGVuY3kpdGhpc1tnXS5hcHBseSh0aGlzLHJbb10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgcltvXSl7Y29uc3QgZT10LnN0YXJ0c1dpdGgoImdfIik/dTpwO2lmKCFlLmhhcyh0KSl7ZS5nZXQodCxzKTtyZXR1cm4gb319bysrO2lmKG89PT1sKXJldHVybiBvO2lmKGMmJisrZD4xMCl7aWYoRGF0ZS5ub3coKT5oKXtzKCk7cmV0dXJuIG99ZD0wfX19I3N0KCl7Zm9yKDt0aGlzLnN0YXRlU3RhY2subGVuZ3RofHx0aGlzLmluU01hc2tNb2RlOyl0aGlzLnJlc3RvcmUoKTt0aGlzLmN0eC5yZXN0b3JlKCk7aWYodGhpcy50cmFuc3BhcmVudENhbnZhcyl7dGhpcy5jdHg9dGhpcy5jb21wb3NpdGVDdHg7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguZHJhd0ltYWdlKHRoaXMudHJhbnNwYXJlbnRDYW52YXMsMCwwKTt0aGlzLmN0eC5yZXN0b3JlKCk7dGhpcy50cmFuc3BhcmVudENhbnZhcz1udWxsfX1lbmREcmF3aW5nKCl7dGhpcy4jc3QoKTt0aGlzLmNhY2hlZENhbnZhc2VzLmNsZWFyKCk7dGhpcy5jYWNoZWRQYXR0ZXJucy5jbGVhcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50JiYoZS53aWR0aD1lLmhlaWdodD0wKTt0LmNsZWFyKCl9dGhpcy5fY2FjaGVkQml0bWFwc01hcC5jbGVhcigpfV9zY2FsZUltYWdlKHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQ7bGV0IG4scixhPU1hdGgubWF4KE1hdGguaHlwb3QoZVswXSxlWzFdKSwxKSxvPU1hdGgubWF4KE1hdGguaHlwb3QoZVsyXSxlWzNdKSwxKSxsPXMsYz1pLGg9InByZXNjYWxlMSI7Zm9yKDthPjImJmw+MXx8bz4yJiZjPjE7KXtsZXQgZT1sLHM9YztpZihhPjImJmw+MSl7ZT1NYXRoLmNlaWwobC8yKTthLz1sL2V9aWYobz4yJiZjPjEpe3M9TWF0aC5jZWlsKGMvMik7by89Yy9zfW49dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoaCxlLHMpO3I9bi5jb250ZXh0O3IuY2xlYXJSZWN0KDAsMCxlLHMpO3IuZHJhd0ltYWdlKHQsMCwwLGwsYywwLDAsZSxzKTt0PW4uY2FudmFzO2w9ZTtjPXM7aD0icHJlc2NhbGUxIj09PWg/InByZXNjYWxlMiI6InByZXNjYWxlMSJ9cmV0dXJue2ltZzp0LHBhaW50V2lkdGg6bCxwYWludEhlaWdodDpjfX1fY3JlYXRlTWFza0NhbnZhcyh0KXtjb25zdCBlPXRoaXMuY3R4LHt3aWR0aDpzLGhlaWdodDphfT10LG89dGhpcy5jdXJyZW50LmZpbGxDb2xvcixsPXRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCxjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7bGV0IGgsZCx1LHA7aWYoKHQuYml0bWFwfHx0LmRhdGEpJiZ0LmNvdW50PjEpe2NvbnN0IGU9dC5iaXRtYXB8fHQuZGF0YS5idWZmZXI7ZD1KU09OLnN0cmluZ2lmeShsP2M6W2Muc2xpY2UoMCw0KSxvXSk7aD10aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmdldChlKTtpZighaCl7aD1uZXcgTWFwO3RoaXMuX2NhY2hlZEJpdG1hcHNNYXAuc2V0KGUsaCl9Y29uc3Qgcz1oLmdldChkKTtpZihzJiYhbCl7cmV0dXJue2NhbnZhczpzLG9mZnNldFg6TWF0aC5yb3VuZChNYXRoLm1pbihjWzBdLGNbMl0pK2NbNF0pLG9mZnNldFk6TWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLGNbM10pK2NbNV0pfX11PXN9aWYoIXUpe3A9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoIm1hc2tDYW52YXMiLHMsYSk7cHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCx0KX1sZXQgZz1pLlV0aWwudHJhbnNmb3JtKGMsWzEvcywwLDAsLTEvYSwwLDBdKTtnPWkuVXRpbC50cmFuc2Zvcm0oZyxbMSwwLDAsMSwwLC1hXSk7Y29uc3QgbT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sZyksZj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsYV0sZyksYj1pLlV0aWwubm9ybWFsaXplUmVjdChbbVswXSxtWzFdLGZbMF0sZlsxXV0pLEE9TWF0aC5yb3VuZChiWzJdLWJbMF0pfHwxLF89TWF0aC5yb3VuZChiWzNdLWJbMV0pfHwxLHY9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImZpbGxDYW52YXMiLEEsXykseT12LmNvbnRleHQsUz1NYXRoLm1pbihtWzBdLGZbMF0pLHg9TWF0aC5taW4obVsxXSxmWzFdKTt5LnRyYW5zbGF0ZSgtUywteCk7eS50cmFuc2Zvcm0oLi4uZyk7aWYoIXUpe3U9dGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKSh5KSk7dT11LmltZztoJiZsJiZoLnNldChkLHUpfXkuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3Jkcyh5LHUsMCwwLHUud2lkdGgsdS5oZWlnaHQsMCwwLHMsYSk7eS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249InNvdXJjZS1pbiI7Y29uc3QgRT1pLlV0aWwudHJhbnNmb3JtKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKHkpLFsxLDAsMCwxLC1TLC14XSk7eS5maWxsU3R5bGU9bD9vLmdldFBhdHRlcm4oZSx0aGlzLEUsci5QYXRoVHlwZS5GSUxMKTpvO3kuZmlsbFJlY3QoMCwwLHMsYSk7aWYoaCYmIWwpe3RoaXMuY2FjaGVkQ2FudmFzZXMuZGVsZXRlKCJmaWxsQ2FudmFzIik7aC5zZXQoZCx2LmNhbnZhcyl9cmV0dXJue2NhbnZhczp2LmNhbnZhcyxvZmZzZXRYOk1hdGgucm91bmQoUyksb2Zmc2V0WTpNYXRoLnJvdW5kKHgpfX1zZXRMaW5lV2lkdGgodCl7dCE9PXRoaXMuY3VycmVudC5saW5lV2lkdGgmJih0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGwpO3RoaXMuY3VycmVudC5saW5lV2lkdGg9dDt0aGlzLmN0eC5saW5lV2lkdGg9dH1zZXRMaW5lQ2FwKHQpe3RoaXMuY3R4LmxpbmVDYXA9ZFt0XX1zZXRMaW5lSm9pbih0KXt0aGlzLmN0eC5saW5lSm9pbj11W3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdHgubWl0ZXJMaW1pdD10fXNldERhc2godCxlKXtjb25zdCBzPXRoaXMuY3R4O2lmKHZvaWQgMCE9PXMuc2V0TGluZURhc2gpe3Muc2V0TGluZURhc2godCk7cy5saW5lRGFzaE9mZnNldD1lfX1zZXRSZW5kZXJpbmdJbnRlbnQodCl7fXNldEZsYXRuZXNzKHQpe31zZXRHU3RhdGUodCl7Zm9yKGNvbnN0W2Usc11vZiB0KXN3aXRjaChlKXtjYXNlIkxXIjp0aGlzLnNldExpbmVXaWR0aChzKTticmVhaztjYXNlIkxDIjp0aGlzLnNldExpbmVDYXAocyk7YnJlYWs7Y2FzZSJMSiI6dGhpcy5zZXRMaW5lSm9pbihzKTticmVhaztjYXNlIk1MIjp0aGlzLnNldE1pdGVyTGltaXQocyk7YnJlYWs7Y2FzZSJEIjp0aGlzLnNldERhc2goc1swXSxzWzFdKTticmVhaztjYXNlIlJJIjp0aGlzLnNldFJlbmRlcmluZ0ludGVudChzKTticmVhaztjYXNlIkZMIjp0aGlzLnNldEZsYXRuZXNzKHMpO2JyZWFrO2Nhc2UiRm9udCI6dGhpcy5zZXRGb250KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJDQSI6dGhpcy5jdXJyZW50LnN0cm9rZUFscGhhPXM7YnJlYWs7Y2FzZSJjYSI6dGhpcy5jdXJyZW50LmZpbGxBbHBoYT1zO3RoaXMuY3R4Lmdsb2JhbEFscGhhPXM7YnJlYWs7Y2FzZSJCTSI6dGhpcy5jdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uPXM7YnJlYWs7Y2FzZSJTTWFzayI6dGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrPXM/dGhpcy50ZW1wU01hc2s6bnVsbDt0aGlzLnRlbXBTTWFzaz1udWxsO3RoaXMuY2hlY2tTTWFza1N0YXRlKCk7YnJlYWs7Y2FzZSJUUiI6dGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcz1zfX1nZXQgaW5TTWFza01vZGUoKXtyZXR1cm4hIXRoaXMuc3VzcGVuZGVkQ3R4fWNoZWNrU01hc2tTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5pblNNYXNrTW9kZTt0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2smJiF0P3RoaXMuYmVnaW5TTWFza01vZGUoKTohdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrJiZ0JiZ0aGlzLmVuZFNNYXNrTW9kZSgpfWJlZ2luU01hc2tNb2RlKCl7aWYodGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luU01hc2tNb2RlIGNhbGxlZCB3aGlsZSBhbHJlYWR5IGluIHNtYXNrIG1vZGUiKTtjb25zdCB0PXRoaXMuY3R4LmNhbnZhcy53aWR0aCxlPXRoaXMuY3R4LmNhbnZhcy5oZWlnaHQscz0ic21hc2tHcm91cEF0Iit0aGlzLmdyb3VwTGV2ZWwsaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhzLHQsZSk7dGhpcy5zdXNwZW5kZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9aS5jb250ZXh0O2NvbnN0IHI9dGhpcy5jdHg7ci5zZXRUcmFuc2Zvcm0oLi4uKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLnN1c3BlbmRlZEN0eCkpO2NvcHlDdHhTdGF0ZSh0aGlzLnN1c3BlbmRlZEN0eCxyKTshZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCxlKXtpZih0Ll9yZW1vdmVNaXJyb3JpbmcpdGhyb3cgbmV3IEVycm9yKCJDb250ZXh0IGlzIGFscmVhZHkgZm9yd2FyZGluZyBvcGVyYXRpb25zLiIpO3QuX19vcmlnaW5hbFNhdmU9dC5zYXZlO3QuX19vcmlnaW5hbFJlc3RvcmU9dC5yZXN0b3JlO3QuX19vcmlnaW5hbFJvdGF0ZT10LnJvdGF0ZTt0Ll9fb3JpZ2luYWxTY2FsZT10LnNjYWxlO3QuX19vcmlnaW5hbFRyYW5zbGF0ZT10LnRyYW5zbGF0ZTt0Ll9fb3JpZ2luYWxUcmFuc2Zvcm09dC50cmFuc2Zvcm07dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtPXQuc2V0VHJhbnNmb3JtO3QuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtPXQucmVzZXRUcmFuc2Zvcm07dC5fX29yaWdpbmFsQ2xpcD10LmNsaXA7dC5fX29yaWdpbmFsTW92ZVRvPXQubW92ZVRvO3QuX19vcmlnaW5hbExpbmVUbz10LmxpbmVUbzt0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvPXQuYmV6aWVyQ3VydmVUbzt0Ll9fb3JpZ2luYWxSZWN0PXQucmVjdDt0Ll9fb3JpZ2luYWxDbG9zZVBhdGg9dC5jbG9zZVBhdGg7dC5fX29yaWdpbmFsQmVnaW5QYXRoPXQuYmVnaW5QYXRoO3QuX3JlbW92ZU1pcnJvcmluZz0oKT0+e3Quc2F2ZT10Ll9fb3JpZ2luYWxTYXZlO3QucmVzdG9yZT10Ll9fb3JpZ2luYWxSZXN0b3JlO3Qucm90YXRlPXQuX19vcmlnaW5hbFJvdGF0ZTt0LnNjYWxlPXQuX19vcmlnaW5hbFNjYWxlO3QudHJhbnNsYXRlPXQuX19vcmlnaW5hbFRyYW5zbGF0ZTt0LnRyYW5zZm9ybT10Ll9fb3JpZ2luYWxUcmFuc2Zvcm07dC5zZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsU2V0VHJhbnNmb3JtO3QucmVzZXRUcmFuc2Zvcm09dC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm07dC5jbGlwPXQuX19vcmlnaW5hbENsaXA7dC5tb3ZlVG89dC5fX29yaWdpbmFsTW92ZVRvO3QubGluZVRvPXQuX19vcmlnaW5hbExpbmVUbzt0LmJlemllckN1cnZlVG89dC5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbzt0LnJlY3Q9dC5fX29yaWdpbmFsUmVjdDt0LmNsb3NlUGF0aD10Ll9fb3JpZ2luYWxDbG9zZVBhdGg7dC5iZWdpblBhdGg9dC5fX29yaWdpbmFsQmVnaW5QYXRoO2RlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmd9O3Quc2F2ZT1mdW5jdGlvbiBjdHhTYXZlKCl7ZS5zYXZlKCk7dGhpcy5fX29yaWdpbmFsU2F2ZSgpfTt0LnJlc3RvcmU9ZnVuY3Rpb24gY3R4UmVzdG9yZSgpe2UucmVzdG9yZSgpO3RoaXMuX19vcmlnaW5hbFJlc3RvcmUoKX07dC50cmFuc2xhdGU9ZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQscyl7ZS50cmFuc2xhdGUodCxzKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2xhdGUodCxzKX07dC5zY2FsZT1mdW5jdGlvbiBjdHhTY2FsZSh0LHMpe2Uuc2NhbGUodCxzKTt0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LHMpfTt0LnRyYW5zZm9ybT1mdW5jdGlvbiBjdHhUcmFuc2Zvcm0odCxzLGksbixyLGEpe2UudHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnNldFRyYW5zZm9ybT1mdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpe2Uuc2V0VHJhbnNmb3JtKHQscyxpLG4scixhKTt0aGlzLl9fb3JpZ2luYWxTZXRUcmFuc2Zvcm0odCxzLGksbixyLGEpfTt0LnJlc2V0VHJhbnNmb3JtPWZ1bmN0aW9uIGN0eFJlc2V0VHJhbnNmb3JtKCl7ZS5yZXNldFRyYW5zZm9ybSgpO3RoaXMuX19vcmlnaW5hbFJlc2V0VHJhbnNmb3JtKCl9O3Qucm90YXRlPWZ1bmN0aW9uIGN0eFJvdGF0ZSh0KXtlLnJvdGF0ZSh0KTt0aGlzLl9fb3JpZ2luYWxSb3RhdGUodCl9O3QuY2xpcD1mdW5jdGlvbiBjdHhSb3RhdGUodCl7ZS5jbGlwKHQpO3RoaXMuX19vcmlnaW5hbENsaXAodCl9O3QubW92ZVRvPWZ1bmN0aW9uKHQscyl7ZS5tb3ZlVG8odCxzKTt0aGlzLl9fb3JpZ2luYWxNb3ZlVG8odCxzKX07dC5saW5lVG89ZnVuY3Rpb24odCxzKXtlLmxpbmVUbyh0LHMpO3RoaXMuX19vcmlnaW5hbExpbmVUbyh0LHMpfTt0LmJlemllckN1cnZlVG89ZnVuY3Rpb24odCxzLGksbixyLGEpe2UuYmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSk7dGhpcy5fX29yaWdpbmFsQmV6aWVyQ3VydmVUbyh0LHMsaSxuLHIsYSl9O3QucmVjdD1mdW5jdGlvbih0LHMsaSxuKXtlLnJlY3QodCxzLGksbik7dGhpcy5fX29yaWdpbmFsUmVjdCh0LHMsaSxuKX07dC5jbG9zZVBhdGg9ZnVuY3Rpb24oKXtlLmNsb3NlUGF0aCgpO3RoaXMuX19vcmlnaW5hbENsb3NlUGF0aCgpfTt0LmJlZ2luUGF0aD1mdW5jdGlvbigpe2UuYmVnaW5QYXRoKCk7dGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCl9fShyLHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLnNldEdTdGF0ZShbWyJCTSIsInNvdXJjZS1vdmVyIl0sWyJjYSIsMV0sWyJDQSIsMV1dKX1lbmRTTWFza01vZGUoKXtpZighdGhpcy5pblNNYXNrTW9kZSl0aHJvdyBuZXcgRXJyb3IoImVuZFNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgbm90IGluIHNtYXNrIG1vZGUiKTt0aGlzLmN0eC5fcmVtb3ZlTWlycm9yaW5nKCk7Y29weUN0eFN0YXRlKHRoaXMuY3R4LHRoaXMuc3VzcGVuZGVkQ3R4KTt0aGlzLmN0eD10aGlzLnN1c3BlbmRlZEN0eDt0aGlzLnN1c3BlbmRlZEN0eD1udWxsfWNvbXBvc2UodCl7aWYoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaylyZXR1cm47aWYodCl7dFswXT1NYXRoLmZsb29yKHRbMF0pO3RbMV09TWF0aC5mbG9vcih0WzFdKTt0WzJdPU1hdGguY2VpbCh0WzJdKTt0WzNdPU1hdGguY2VpbCh0WzNdKX1lbHNlIHQ9WzAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodF07Y29uc3QgZT10aGlzLmN1cnJlbnQuYWN0aXZlU01hc2s7Y29tcG9zZVNNYXNrKHRoaXMuc3VzcGVuZGVkQ3R4LGUsdGhpcy5jdHgsdCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7dGhpcy5jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmN0eC5jYW52YXMud2lkdGgsdGhpcy5jdHguY2FudmFzLmhlaWdodCk7dGhpcy5jdHgucmVzdG9yZSgpfXNhdmUoKXtpZih0aGlzLmluU01hc2tNb2RlKXtjb3B5Q3R4U3RhdGUodGhpcy5jdHgsdGhpcy5zdXNwZW5kZWRDdHgpO3RoaXMuc3VzcGVuZGVkQ3R4LnNhdmUoKX1lbHNlIHRoaXMuY3R4LnNhdmUoKTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXswPT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCYmdGhpcy5pblNNYXNrTW9kZSYmdGhpcy5lbmRTTWFza01vZGUoKTtpZigwIT09dGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCl7dGhpcy5jdXJyZW50PXRoaXMuc3RhdGVTdGFjay5wb3AoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLnN1c3BlbmRlZEN0eC5yZXN0b3JlKCk7Y29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LHRoaXMuY3R4KX1lbHNlIHRoaXMuY3R4LnJlc3RvcmUoKTt0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsfX10cmFuc2Zvcm0odCxlLHMsaSxuLHIpe3RoaXMuY3R4LnRyYW5zZm9ybSh0LGUscyxpLG4scik7dGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZz1udWxsO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9bnVsbH1jb25zdHJ1Y3RQYXRoKHQsZSxzKXtjb25zdCByPXRoaXMuY3R4LGE9dGhpcy5jdXJyZW50O2xldCBvLGwsYz1hLngsaD1hLnk7Y29uc3QgZD0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHIpLHU9MD09PWRbMF0mJjA9PT1kWzNdfHwwPT09ZFsxXSYmMD09PWRbMl0scD11P3Muc2xpY2UoMCk6bnVsbDtmb3IobGV0IHM9MCxuPTAsZz10Lmxlbmd0aDtzPGc7cysrKXN3aXRjaCgwfHRbc10pe2Nhc2UgaS5PUFMucmVjdGFuZ2xlOmM9ZVtuKytdO2g9ZVtuKytdO2NvbnN0IHQ9ZVtuKytdLHM9ZVtuKytdLGc9Yyt0LG09aCtzO3IubW92ZVRvKGMsaCk7aWYoMD09PXR8fDA9PT1zKXIubGluZVRvKGcsbSk7ZWxzZXtyLmxpbmVUbyhnLGgpO3IubGluZVRvKGcsbSk7ci5saW5lVG8oYyxtKX11fHxhLnVwZGF0ZVJlY3RNaW5NYXgoZCxbYyxoLGcsbV0pO3IuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSBpLk9QUy5tb3ZlVG86Yz1lW24rK107aD1lW24rK107ci5tb3ZlVG8oYyxoKTt1fHxhLnVwZGF0ZVBhdGhNaW5NYXgoZCxjLGgpO2JyZWFrO2Nhc2UgaS5PUFMubGluZVRvOmM9ZVtuKytdO2g9ZVtuKytdO3IubGluZVRvKGMsaCk7dXx8YS51cGRhdGVQYXRoTWluTWF4KGQsYyxoKTticmVhaztjYXNlIGkuT1BTLmN1cnZlVG86bz1jO2w9aDtjPWVbbis0XTtoPWVbbis1XTtyLmJlemllckN1cnZlVG8oZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10sYyxoLHApO24rPTY7YnJlYWs7Y2FzZSBpLk9QUy5jdXJ2ZVRvMjpvPWM7bD1oO3IuYmV6aWVyQ3VydmVUbyhjLGgsZVtuXSxlW24rMV0sZVtuKzJdLGVbbiszXSk7YS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCxvLGwsYyxoLGVbbl0sZVtuKzFdLGVbbisyXSxlW24rM10scCk7Yz1lW24rMl07aD1lW24rM107bis9NDticmVhaztjYXNlIGkuT1BTLmN1cnZlVG8zOm89YztsPWg7Yz1lW24rMl07aD1lW24rM107ci5iZXppZXJDdXJ2ZVRvKGVbbl0sZVtuKzFdLGMsaCxjLGgpO2EudXBkYXRlQ3VydmVQYXRoTWluTWF4KGQsbyxsLGVbbl0sZVtuKzFdLGMsaCxjLGgscCk7bis9NDticmVhaztjYXNlIGkuT1BTLmNsb3NlUGF0aDpyLmNsb3NlUGF0aCgpfXUmJmEudXBkYXRlU2NhbGluZ1BhdGhNaW5NYXgoZCxwKTthLnNldEN1cnJlbnRQb2ludChjLGgpfWNsb3NlUGF0aCgpe3RoaXMuY3R4LmNsb3NlUGF0aCgpfXN0cm9rZSh0KXt0PXZvaWQgMD09PXR8fHQ7Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5zdHJva2VDb2xvcjtlLmdsb2JhbEFscGhhPXRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlKWlmKCJvYmplY3QiPT10eXBlb2YgcyYmcz8uZ2V0UGF0dGVybil7ZS5zYXZlKCk7ZS5zdHJva2VTdHlsZT1zLmdldFBhdHRlcm4oZSx0aGlzLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLHIuUGF0aFR5cGUuU1RST0tFKTt0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO2UucmVzdG9yZSgpfWVsc2UgdGhpcy5yZXNjYWxlQW5kU3Ryb2tlKCEwKTt0JiZ0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO2UuZ2xvYmFsQWxwaGE9dGhpcy5jdXJyZW50LmZpbGxBbHBoYX1jbG9zZVN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5zdHJva2UoKX1maWxsKHQpe3Q9dm9pZCAwPT09dHx8dDtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LmZpbGxDb2xvcjtsZXQgaT0hMTtpZih0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwpe2Uuc2F2ZSgpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTtpPSEwfWNvbnN0IGE9dGhpcy5jdXJyZW50LmdldENsaXBwZWRQYXRoQm91bmRpbmdCb3goKTtpZih0aGlzLmNvbnRlbnRWaXNpYmxlJiZudWxsIT09YSlpZih0aGlzLnBlbmRpbmdFT0ZpbGwpe2UuZmlsbCgiZXZlbm9kZCIpO3RoaXMucGVuZGluZ0VPRmlsbD0hMX1lbHNlIGUuZmlsbCgpO2kmJmUucmVzdG9yZSgpO3QmJnRoaXMuY29uc3VtZVBhdGgoYSl9ZW9GaWxsKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbCgpfWZpbGxTdHJva2UoKXt0aGlzLmZpbGwoITEpO3RoaXMuc3Ryb2tlKCExKTt0aGlzLmNvbnN1bWVQYXRoKCl9ZW9GaWxsU3Ryb2tlKCl7dGhpcy5wZW5kaW5nRU9GaWxsPSEwO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLnBlbmRpbmdFT0ZpbGw9ITA7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLmZpbGxTdHJva2UoKX1lbmRQYXRoKCl7dGhpcy5jb25zdW1lUGF0aCgpfWNsaXAoKXt0aGlzLnBlbmRpbmdDbGlwPXB9ZW9DbGlwKCl7dGhpcy5wZW5kaW5nQ2xpcD1nfWJlZ2luVGV4dCgpe3RoaXMuY3VycmVudC50ZXh0TWF0cml4PWkuSURFTlRJVFlfTUFUUklYO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLmN1cnJlbnQueD10aGlzLmN1cnJlbnQubGluZVg9MDt0aGlzLmN1cnJlbnQueT10aGlzLmN1cnJlbnQubGluZVk9MH1lbmRUZXh0KCl7Y29uc3QgdD10aGlzLnBlbmRpbmdUZXh0UGF0aHMsZT10aGlzLmN0eDtpZih2b2lkIDAhPT10KXtlLnNhdmUoKTtlLmJlZ2luUGF0aCgpO2Zvcihjb25zdCBzIG9mIHQpe2Uuc2V0VHJhbnNmb3JtKC4uLnMudHJhbnNmb3JtKTtlLnRyYW5zbGF0ZShzLngscy55KTtzLmFkZFRvUGF0aChlLHMuZm9udFNpemUpfWUucmVzdG9yZSgpO2UuY2xpcCgpO2UuYmVnaW5QYXRoKCk7ZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRoc31lbHNlIGUuYmVnaW5QYXRoKCl9c2V0Q2hhclNwYWNpbmcodCl7dGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nPXR9c2V0V29yZFNwYWNpbmcodCl7dGhpcy5jdXJyZW50LndvcmRTcGFjaW5nPXR9c2V0SFNjYWxlKHQpe3RoaXMuY3VycmVudC50ZXh0SFNjYWxlPXQvMTAwfXNldExlYWRpbmcodCl7dGhpcy5jdXJyZW50LmxlYWRpbmc9LXR9c2V0Rm9udCh0LGUpe2NvbnN0IHM9dGhpcy5jb21tb25PYmpzLmdldCh0KSxuPXRoaXMuY3VycmVudDtpZighcyl0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgZm9udCBmb3IgJHt0fWApO24uZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVg7MCE9PW4uZm9udE1hdHJpeFswXSYmMCE9PW4uZm9udE1hdHJpeFszXXx8KDAsaS53YXJuKSgiSW52YWxpZCBmb250IG1hdHJpeCBmb3IgZm9udCAiK3QpO2lmKGU8MCl7ZT0tZTtuLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBuLmZvbnREaXJlY3Rpb249MTt0aGlzLmN1cnJlbnQuZm9udD1zO3RoaXMuY3VycmVudC5mb250U2l6ZT1lO2lmKHMuaXNUeXBlM0ZvbnQpcmV0dXJuO2NvbnN0IHI9cy5sb2FkZWROYW1lfHwic2Fucy1zZXJpZiI7bGV0IGE9Im5vcm1hbCI7cy5ibGFjaz9hPSI5MDAiOnMuYm9sZCYmKGE9ImJvbGQiKTtjb25zdCBvPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiLGw9YCIke3J9IiwgJHtzLmZhbGxiYWNrTmFtZX1gO2xldCBjPWU7ZTwxNj9jPTE2OmU+MTAwJiYoYz0xMDApO3RoaXMuY3VycmVudC5mb250U2l6ZVNjYWxlPWUvYzt0aGlzLmN0eC5mb250PWAke299ICR7YX0gJHtjfXB4ICR7bH1gfXNldFRleHRSZW5kZXJpbmdNb2RlKHQpe3RoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZT10fXNldFRleHRSaXNlKHQpe3RoaXMuY3VycmVudC50ZXh0UmlzZT10fW1vdmVUZXh0KHQsZSl7dGhpcy5jdXJyZW50Lng9dGhpcy5jdXJyZW50LmxpbmVYKz10O3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWSs9ZX1zZXRMZWFkaW5nTW92ZVRleHQodCxlKXt0aGlzLnNldExlYWRpbmcoLWUpO3RoaXMubW92ZVRleHQodCxlKX1zZXRUZXh0TWF0cml4KHQsZSxzLGksbixyKXt0aGlzLmN1cnJlbnQudGV4dE1hdHJpeD1bdCxlLHMsaSxuLHJdO3RoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGU9TWF0aC5oeXBvdCh0LGUpO3RoaXMuY3VycmVudC54PXRoaXMuY3VycmVudC5saW5lWD0wO3RoaXMuY3VycmVudC55PXRoaXMuY3VycmVudC5saW5lWT0wfW5leHRMaW5lKCl7dGhpcy5tb3ZlVGV4dCgwLHRoaXMuY3VycmVudC5sZWFkaW5nKX1wYWludENoYXIodCxlLHMscil7Y29uc3QgYT10aGlzLmN0eCxvPXRoaXMuY3VycmVudCxsPW8uZm9udCxjPW8udGV4dFJlbmRlcmluZ01vZGUsaD1vLmZvbnRTaXplL28uZm9udFNpemVTY2FsZSxkPWMmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLLHU9ISEoYyZpLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIX0ZMQUcpLHA9by5wYXR0ZXJuRmlsbCYmIWwubWlzc2luZ0ZpbGU7bGV0IGc7KGwuZGlzYWJsZUZvbnRGYWNlfHx1fHxwKSYmKGc9bC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2Jqcyx0KSk7aWYobC5kaXNhYmxlRm9udEZhY2V8fHApe2Euc2F2ZSgpO2EudHJhbnNsYXRlKGUscyk7YS5iZWdpblBhdGgoKTtnKGEsaCk7ciYmYS5zZXRUcmFuc2Zvcm0oLi4ucik7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTCYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuZmlsbCgpO2QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fGEuc3Ryb2tlKCk7YS5yZXN0b3JlKCl9ZWxzZXtkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5maWxsVGV4dCh0LGUscyk7ZCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFJiZkIT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRXx8YS5zdHJva2VUZXh0KHQsZSxzKX1pZih1KXsodGhpcy5wZW5kaW5nVGV4dFBhdGhzfHwodGhpcy5wZW5kaW5nVGV4dFBhdGhzPVtdKSkucHVzaCh7dHJhbnNmb3JtOigwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoYSkseDplLHk6cyxmb250U2l6ZTpoLGFkZFRvUGF0aDpnfSl9fWdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpe2NvbnN0e2NvbnRleHQ6dH09dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIiwxMCwxMCk7dC5zY2FsZSgxLjUsMSk7dC5maWxsVGV4dCgiSSIsMCwxMCk7Y29uc3QgZT10LmdldEltYWdlRGF0YSgwLDAsMTAsMTApLmRhdGE7bGV0IHM9ITE7Zm9yKGxldCB0PTM7dDxlLmxlbmd0aDt0Kz00KWlmKGVbdF0+MCYmZVt0XTwyNTUpe3M9ITA7YnJlYWt9cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsImlzRm9udFN1YnBpeGVsQUFFbmFibGVkIixzKX1zaG93VGV4dCh0KXtjb25zdCBlPXRoaXMuY3VycmVudCxzPWUuZm9udDtpZihzLmlzVHlwZTNGb250KXJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7Y29uc3QgYT1lLmZvbnRTaXplO2lmKDA9PT1hKXJldHVybjtjb25zdCBvPXRoaXMuY3R4LGw9ZS5mb250U2l6ZVNjYWxlLGM9ZS5jaGFyU3BhY2luZyxoPWUud29yZFNwYWNpbmcsZD1lLmZvbnREaXJlY3Rpb24sdT1lLnRleHRIU2NhbGUqZCxwPXQubGVuZ3RoLGc9cy52ZXJ0aWNhbCxtPWc/MTotMSxmPXMuZGVmYXVsdFZNZXRyaWNzLGI9YSplLmZvbnRNYXRyaXhbMF0sQT1lLnRleHRSZW5kZXJpbmdNb2RlPT09aS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMJiYhcy5kaXNhYmxlRm9udEZhY2UmJiFlLnBhdHRlcm5GaWxsO28uc2F2ZSgpO28udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7by50cmFuc2xhdGUoZS54LGUueStlLnRleHRSaXNlKTtkPjA/by5zY2FsZSh1LC0xKTpvLnNjYWxlKHUsMSk7bGV0IF87aWYoZS5wYXR0ZXJuRmlsbCl7by5zYXZlKCk7Y29uc3QgdD1lLmZpbGxDb2xvci5nZXRQYXR0ZXJuKG8sdGhpcywoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShvKSxyLlBhdGhUeXBlLkZJTEwpO189KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShvKTtvLnJlc3RvcmUoKTtvLmZpbGxTdHlsZT10fWxldCB2PWUubGluZVdpZHRoO2NvbnN0IHk9ZS50ZXh0TWF0cml4U2NhbGU7aWYoMD09PXl8fDA9PT12KXtjb25zdCB0PWUudGV4dFJlbmRlcmluZ01vZGUmaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRV9NQVNLO3QhPT1pLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSYmdCE9PWkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0V8fCh2PXRoaXMuZ2V0U2luZ2xlUGl4ZWxXaWR0aCgpKX1lbHNlIHYvPXk7aWYoMSE9PWwpe28uc2NhbGUobCxsKTt2Lz1sfW8ubGluZVdpZHRoPXY7bGV0IFMseD0wO2ZvcihTPTA7UzxwOysrUyl7Y29uc3QgZT10W1NdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7eCs9bSplKmEvMWUzO2NvbnRpbnVlfWxldCBpPSExO2NvbnN0IG49KGUuaXNTcGFjZT9oOjApK2Mscj1lLmZvbnRDaGFyLHU9ZS5hY2NlbnQ7bGV0IHAsdix5LEU9ZS53aWR0aDtpZihnKXtjb25zdCB0PWUudm1ldHJpY3x8ZixzPS0oZS52bWV0cmljP3RbMV06LjUqRSkqYixpPXRbMl0qYjtFPXQ/LXRbMF06RTtwPXMvbDt2PSh4K2kpL2x9ZWxzZXtwPXgvbDt2PTB9aWYocy5yZW1lYXN1cmUmJkU+MCl7Y29uc3QgdD0xZTMqby5tZWFzdXJlVGV4dChyKS53aWR0aC9hKmw7aWYoRTx0JiZ0aGlzLmlzRm9udFN1YnBpeGVsQUFFbmFibGVkKXtjb25zdCBlPUUvdDtpPSEwO28uc2F2ZSgpO28uc2NhbGUoZSwxKTtwLz1lfWVsc2UgRSE9PXQmJihwKz0oRS10KS8yZTMqYS9sKX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlJiYoZS5pc0luRm9udHx8cy5taXNzaW5nRmlsZSkpaWYoQSYmIXUpby5maWxsVGV4dChyLHAsdik7ZWxzZXt0aGlzLnBhaW50Q2hhcihyLHAsdixfKTtpZih1KXtjb25zdCB0PXArYSp1Lm9mZnNldC54L2wsZT12LWEqdS5vZmZzZXQueS9sO3RoaXMucGFpbnRDaGFyKHUuZm9udENoYXIsdCxlLF8pfX15PWc/RSpiLW4qZDpFKmIrbipkO3grPXk7aSYmby5yZXN0b3JlKCl9Zz9lLnktPXg6ZS54Kz14KnU7by5yZXN0b3JlKCk7dGhpcy5jb21wb3NlKCl9c2hvd1R5cGUzVGV4dCh0KXtjb25zdCBlPXRoaXMuY3R4LHM9dGhpcy5jdXJyZW50LG49cy5mb250LHI9cy5mb250U2l6ZSxhPXMuZm9udERpcmVjdGlvbixvPW4udmVydGljYWw/MTotMSxsPXMuY2hhclNwYWNpbmcsYz1zLndvcmRTcGFjaW5nLGg9cy50ZXh0SFNjYWxlKmEsZD1zLmZvbnRNYXRyaXh8fGkuRk9OVF9JREVOVElUWV9NQVRSSVgsdT10Lmxlbmd0aDtsZXQgcCxnLG0sZjtpZighKHMudGV4dFJlbmRlcmluZ01vZGU9PT1pLlRleHRSZW5kZXJpbmdNb2RlLklOVklTSUJMRSkmJjAhPT1yKXt0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nPW51bGw7dGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aD1udWxsO2Uuc2F2ZSgpO2UudHJhbnNmb3JtKC4uLnMudGV4dE1hdHJpeCk7ZS50cmFuc2xhdGUocy54LHMueSk7ZS5zY2FsZShoLGEpO2ZvcihwPTA7cDx1OysrcCl7Zz10W3BdO2lmKCJudW1iZXIiPT10eXBlb2YgZyl7Zj1vKmcqci8xZTM7dGhpcy5jdHgudHJhbnNsYXRlKGYsMCk7cy54Kz1mKmg7Y29udGludWV9Y29uc3QgYT0oZy5pc1NwYWNlP2M6MCkrbCx1PW4uY2hhclByb2NPcGVyYXRvckxpc3RbZy5vcGVyYXRvckxpc3RJZF07aWYoIXUpeygwLGkud2FybikoYFR5cGUzIGNoYXJhY3RlciAiJHtnLm9wZXJhdG9yTGlzdElkfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb250aW51ZX1pZih0aGlzLmNvbnRlbnRWaXNpYmxlKXt0aGlzLnByb2Nlc3NpbmdUeXBlMz1nO3RoaXMuc2F2ZSgpO2Uuc2NhbGUocixyKTtlLnRyYW5zZm9ybSguLi5kKTt0aGlzLmV4ZWN1dGVPcGVyYXRvckxpc3QodSk7dGhpcy5yZXN0b3JlKCl9bT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2cud2lkdGgsMF0sZClbMF0qcithO2UudHJhbnNsYXRlKG0sMCk7cy54Kz1tKmh9ZS5yZXN0b3JlKCk7dGhpcy5wcm9jZXNzaW5nVHlwZTM9bnVsbH19c2V0Q2hhcldpZHRoKHQsZSl7fXNldENoYXJXaWR0aEFuZEJvdW5kcyh0LGUscyxpLG4scil7dGhpcy5jdHgucmVjdChzLGksbi1zLHItaSk7dGhpcy5jdHguY2xpcCgpO3RoaXMuZW5kUGF0aCgpfWdldENvbG9yTl9QYXR0ZXJuKHQpe2xldCBlO2lmKCJUaWxpbmdQYXR0ZXJuIj09PXRbMF0pe2NvbnN0IHM9dFsxXSxpPXRoaXMuYmFzZVRyYW5zZm9ybXx8KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksYT17Y3JlYXRlQ2FudmFzR3JhcGhpY3M6dD0+bmV3IENhbnZhc0dyYXBoaWNzKHQsdGhpcy5jb21tb25PYmpzLHRoaXMub2Jqcyx0aGlzLmNhbnZhc0ZhY3RvcnkpfTtlPW5ldyByLlRpbGluZ1BhdHRlcm4odCxzLHRoaXMuY3R4LGEsaSl9ZWxzZSBlPXRoaXMuX2dldFBhdHRlcm4odFsxXSx0WzJdKTtyZXR1cm4gZX1zZXRTdHJva2VDb2xvck4oKXt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dGhpcy5nZXRDb2xvck5fUGF0dGVybihhcmd1bWVudHMpfXNldEZpbGxDb2xvck4oKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTt0aGlzLmN1cnJlbnQucGF0dGVybkZpbGw9ITB9c2V0U3Ryb2tlUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguc3Ryb2tlU3R5bGU9bjt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9bn1zZXRGaWxsUkdCQ29sb3IodCxlLHMpe2NvbnN0IG49dGhpcy5zZWxlY3RDb2xvcj8uKHQsZSxzKXx8aS5VdGlsLm1ha2VIZXhDb2xvcih0LGUscyk7dGhpcy5jdHguZmlsbFN0eWxlPW47dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1uO3RoaXMuY3VycmVudC5wYXR0ZXJuRmlsbD0hMX1fZ2V0UGF0dGVybih0LGU9bnVsbCl7bGV0IHM7aWYodGhpcy5jYWNoZWRQYXR0ZXJucy5oYXModCkpcz10aGlzLmNhY2hlZFBhdHRlcm5zLmdldCh0KTtlbHNle3M9KDAsci5nZXRTaGFkaW5nUGF0dGVybikodGhpcy5vYmpzLmdldCh0KSk7dGhpcy5jYWNoZWRQYXR0ZXJucy5zZXQodCxzKX1lJiYocy5tYXRyaXg9ZSk7cmV0dXJuIHN9c2hhZGluZ0ZpbGwodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dGhpcy5jdHg7dGhpcy5zYXZlKCk7Y29uc3Qgcz10aGlzLl9nZXRQYXR0ZXJuKHQpO2UuZmlsbFN0eWxlPXMuZ2V0UGF0dGVybihlLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5TSEFESU5HKTtjb25zdCBhPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO2lmKGEpe2NvbnN0IHQ9ZS5jYW52YXMscz10LndpZHRoLG49dC5oZWlnaHQscj1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sYSksbz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsbl0sYSksbD1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3MsMF0sYSksYz1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3Msbl0sYSksaD1NYXRoLm1pbihyWzBdLG9bMF0sbFswXSxjWzBdKSxkPU1hdGgubWluKHJbMV0sb1sxXSxsWzFdLGNbMV0pLHU9TWF0aC5tYXgoclswXSxvWzBdLGxbMF0sY1swXSkscD1NYXRoLm1heChyWzFdLG9bMV0sbFsxXSxjWzFdKTt0aGlzLmN0eC5maWxsUmVjdChoLGQsdS1oLHAtZCl9ZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwtMWUxMCwyZTEwLDJlMTApO3RoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTt0aGlzLnJlc3RvcmUoKX1iZWdpbklubGluZUltYWdlKCl7KDAsaS51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlIil9YmVnaW5JbWFnZURhdGEoKXsoMCxpLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGJlZ2luSW1hZ2VEYXRhIil9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5zYXZlKCk7dGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmJhc2VUcmFuc2Zvcm0pO0FycmF5LmlzQXJyYXkodCkmJjY9PT10Lmxlbmd0aCYmdGhpcy50cmFuc2Zvcm0oLi4udCk7dGhpcy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpO2lmKGUpe2NvbnN0IHQ9ZVsyXS1lWzBdLHM9ZVszXS1lWzFdO3RoaXMuY3R4LnJlY3QoZVswXSxlWzFdLHQscyk7dGhpcy5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksZSk7dGhpcy5jbGlwKCk7dGhpcy5lbmRQYXRoKCl9fX1wYWludEZvcm1YT2JqZWN0RW5kKCl7aWYodGhpcy5jb250ZW50VmlzaWJsZSl7dGhpcy5yZXN0b3JlKCk7dGhpcy5iYXNlVHJhbnNmb3JtPXRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnBvcCgpfX1iZWdpbkdyb3VwKHQpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjt0aGlzLnNhdmUoKTtpZih0aGlzLmluU01hc2tNb2RlKXt0aGlzLmVuZFNNYXNrTW9kZSgpO3RoaXMuY3VycmVudC5hY3RpdmVTTWFzaz1udWxsfWNvbnN0IGU9dGhpcy5jdHg7dC5pc29sYXRlZHx8KDAsaS5pbmZvKSgiVE9ETzogU3VwcG9ydCBub24taXNvbGF0ZWQgZ3JvdXBzLiIpO3Qua25vY2tvdXQmJigwLGkud2FybikoIktub2Nrb3V0IGdyb3VwcyBub3Qgc3VwcG9ydGVkLiIpO2NvbnN0IHM9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTt0Lm1hdHJpeCYmZS50cmFuc2Zvcm0oLi4udC5tYXRyaXgpO2lmKCF0LmJib3gpdGhyb3cgbmV3IEVycm9yKCJCb3VuZGluZyBib3ggaXMgcmVxdWlyZWQuIik7bGV0IHI9aS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQuYmJveCwoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtjb25zdCBhPVswLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0XTtyPWkuVXRpbC5pbnRlcnNlY3QocixhKXx8WzAsMCwwLDBdO2NvbnN0IG89TWF0aC5mbG9vcihyWzBdKSxjPU1hdGguZmxvb3IoclsxXSk7bGV0IGg9TWF0aC5tYXgoTWF0aC5jZWlsKHJbMl0pLW8sMSksZD1NYXRoLm1heChNYXRoLmNlaWwoclszXSktYywxKSx1PTEscD0xO2lmKGg+bCl7dT1oL2w7aD1sfWlmKGQ+bCl7cD1kL2w7ZD1sfXRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLDAsaCxkXSk7bGV0IGc9Imdyb3VwQXQiK3RoaXMuZ3JvdXBMZXZlbDt0LnNtYXNrJiYoZys9Il9zbWFza18iK3RoaXMuc21hc2tDb3VudGVyKyslMik7Y29uc3QgbT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhnLGgsZCksZj1tLmNvbnRleHQ7Zi5zY2FsZSgxL3UsMS9wKTtmLnRyYW5zbGF0ZSgtbywtYyk7Zi50cmFuc2Zvcm0oLi4ucyk7aWYodC5zbWFzayl0aGlzLnNtYXNrU3RhY2sucHVzaCh7Y2FudmFzOm0uY2FudmFzLGNvbnRleHQ6ZixvZmZzZXRYOm8sb2Zmc2V0WTpjLHNjYWxlWDp1LHNjYWxlWTpwLHN1YnR5cGU6dC5zbWFzay5zdWJ0eXBlLGJhY2tkcm9wOnQuc21hc2suYmFja2Ryb3AsdHJhbnNmZXJNYXA6dC5zbWFzay50cmFuc2Zlck1hcHx8bnVsbCxzdGFydFRyYW5zZm9ybUludmVyc2U6bnVsbH0pO2Vsc2V7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UudHJhbnNsYXRlKG8sYyk7ZS5zY2FsZSh1LHApO2Uuc2F2ZSgpfWNvcHlDdHhTdGF0ZShlLGYpO3RoaXMuY3R4PWY7dGhpcy5zZXRHU3RhdGUoW1siQk0iLCJzb3VyY2Utb3ZlciJdLFsiY2EiLDFdLFsiQ0EiLDFdXSk7dGhpcy5ncm91cFN0YWNrLnB1c2goZSk7dGhpcy5ncm91cExldmVsKyt9ZW5kR3JvdXAodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO3RoaXMuZ3JvdXBMZXZlbC0tO2NvbnN0IGU9dGhpcy5jdHgscz10aGlzLmdyb3VwU3RhY2sucG9wKCk7dGhpcy5jdHg9czt0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7aWYodC5zbWFzayl7dGhpcy50ZW1wU01hc2s9dGhpcy5zbWFza1N0YWNrLnBvcCgpO3RoaXMucmVzdG9yZSgpfWVsc2V7dGhpcy5jdHgucmVzdG9yZSgpO2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7dGhpcy5yZXN0b3JlKCk7dGhpcy5jdHguc2F2ZSgpO3RoaXMuY3R4LnNldFRyYW5zZm9ybSguLi50KTtjb25zdCBzPWkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodF0sdCk7dGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLDAsMCk7dGhpcy5jdHgucmVzdG9yZSgpO3RoaXMuY29tcG9zZShzKX19YmVnaW5Bbm5vdGF0aW9uKHQsZSxzLHIsYSl7dGhpcy4jc3QoKTtyZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCx0aGlzLmZvcmVncm91bmRDb2xvcik7dGhpcy5jdHguc2F2ZSgpO3RoaXMuc2F2ZSgpO3RoaXMuYmFzZVRyYW5zZm9ybSYmdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnRoaXMuYmFzZVRyYW5zZm9ybSk7aWYoQXJyYXkuaXNBcnJheShlKSYmND09PWUubGVuZ3RoKXtjb25zdCByPWVbMl0tZVswXSxvPWVbM10tZVsxXTtpZihhJiZ0aGlzLmFubm90YXRpb25DYW52YXNNYXApeyhzPXMuc2xpY2UoKSlbNF0tPWVbMF07c1s1XS09ZVsxXTsoZT1lLnNsaWNlKCkpWzBdPWVbMV09MDtlWzJdPXI7ZVszXT1vO2NvbnN0W2EsbF09aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpKSx7dmlld3BvcnRTY2FsZTpjfT10aGlzLGg9TWF0aC5jZWlsKHIqdGhpcy5vdXRwdXRTY2FsZVgqYyksZD1NYXRoLmNlaWwobyp0aGlzLm91dHB1dFNjYWxlWSpjKTt0aGlzLmFubm90YXRpb25DYW52YXM9dGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLGQpO2NvbnN0e2NhbnZhczp1LGNvbnRleHQ6cH09dGhpcy5hbm5vdGF0aW9uQ2FudmFzO3RoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCx1KTt0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg9dGhpcy5jdHg7dGhpcy5jdHg9cDt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oYSwwLDAsLWwsMCxvKmwpO3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKX1lbHNle3Jlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4LHRoaXMuZm9yZWdyb3VuZENvbG9yKTt0aGlzLmN0eC5yZWN0KGVbMF0sZVsxXSxyLG8pO3RoaXMuY3R4LmNsaXAoKTt0aGlzLmVuZFBhdGgoKX19dGhpcy5jdXJyZW50PW5ldyBDYW52YXNFeHRyYVN0YXRlKHRoaXMuY3R4LmNhbnZhcy53aWR0aCx0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTt0aGlzLnRyYW5zZm9ybSguLi5zKTt0aGlzLnRyYW5zZm9ybSguLi5yKX1lbmRBbm5vdGF0aW9uKCl7aWYodGhpcy5hbm5vdGF0aW9uQ2FudmFzKXt0aGlzLmN0eD10aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7ZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eDtkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzfX1wYWludEltYWdlTWFza1hPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC5jb3VudDsodD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCkpLmNvdW50PWU7Y29uc3Qgcz10aGlzLmN0eCxpPXRoaXMucHJvY2Vzc2luZ1R5cGUzO2lmKGkpe3ZvaWQgMD09PWkuY29tcGlsZWQmJihpLmNvbXBpbGVkPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnN9PXQ7aWYoZT5jfHxzPmMpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxuPWUrMTtsZXQgcixhLG8sbD1uZXcgVWludDhBcnJheShuKihzKzEpKTtjb25zdCBoPWUrNyYtODtsZXQgZD1uZXcgVWludDhBcnJheShoKnMpLHU9MDtmb3IoY29uc3QgZSBvZiB0LmRhdGEpe2xldCB0PTEyODtmb3IoO3Q+MDspe2RbdSsrXT1lJnQ/MDoyNTU7dD4+PTF9fWxldCBwPTA7dT0wO2lmKDAhPT1kW3VdKXtsWzBdPTE7KytwfWZvcihhPTE7YTxlO2ErKyl7aWYoZFt1XSE9PWRbdSsxXSl7bFthXT1kW3VdPzI6MTsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW2FdPTI7KytwfWZvcihyPTE7cjxzO3IrKyl7dT1yKmg7bz1yKm47aWYoZFt1LWhdIT09ZFt1XSl7bFtvXT1kW3VdPzE6ODsrK3B9bGV0IHQ9KGRbdV0/NDowKSsoZFt1LWhdPzg6MCk7Zm9yKGE9MTthPGU7YSsrKXt0PSh0Pj4yKSsoZFt1KzFdPzQ6MCkrKGRbdS1oKzFdPzg6MCk7aWYoaVt0XSl7bFtvK2FdPWlbdF07KytwfXUrK31pZihkW3UtaF0hPT1kW3VdKXtsW28rYV09ZFt1XT8yOjQ7KytwfWlmKHA+MWUzKXJldHVybiBudWxsfXU9aCoocy0xKTtvPXIqbjtpZigwIT09ZFt1XSl7bFtvXT04OysrcH1mb3IoYT0xO2E8ZTthKyspe2lmKGRbdV0hPT1kW3UrMV0pe2xbbythXT1kW3VdPzQ6ODsrK3B9dSsrfWlmKDAhPT1kW3VdKXtsW28rYV09NDsrK3B9aWYocD4xZTMpcmV0dXJuIG51bGw7Y29uc3QgZz1uZXcgSW50MzJBcnJheShbMCxuLC0xLDAsLW4sMCwwLDAsMV0pLG09bmV3IFBhdGgyRDtmb3Iocj0wO3AmJnI8PXM7cisrKXtsZXQgdD1yKm47Y29uc3Qgcz10K2U7Zm9yKDt0PHMmJiFsW3RdOyl0Kys7aWYodD09PXMpY29udGludWU7bS5tb3ZlVG8odCVuLHIpO2NvbnN0IGk9dDtsZXQgYT1sW3RdO2Rve2NvbnN0IGU9Z1thXTtkb3t0Kz1lfXdoaWxlKCFsW3RdKTtjb25zdCBzPWxbdF07aWYoNSE9PXMmJjEwIT09cyl7YT1zO2xbdF09MH1lbHNle2E9cyY1MSphPj40O2xbdF0mPWE+PjJ8YTw8Mn1tLmxpbmVUbyh0JW4sdC9ufDApO2xbdF18fC0tcH13aGlsZShpIT09dCk7LS1yfWQ9bnVsbDtsPW51bGw7cmV0dXJuIGZ1bmN0aW9uKHQpe3Quc2F2ZSgpO3Quc2NhbGUoMS9lLC0xL3MpO3QudHJhbnNsYXRlKDAsLXMpO3QuZmlsbChtKTt0LmJlZ2luUGF0aCgpO3QucmVzdG9yZSgpfX0odCkpO2lmKGkuY29tcGlsZWQpe2kuY29tcGlsZWQocyk7cmV0dXJufX1jb25zdCBuPXRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCkscj1uLmNhbnZhcztzLnNhdmUoKTtzLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7cy5kcmF3SW1hZ2UocixuLm9mZnNldFgsbi5vZmZzZXRZKTtzLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQodCxlLHM9MCxyPTAsYSxvKXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47dD10aGlzLmdldE9iamVjdCh0LmRhdGEsdCk7Y29uc3QgbD10aGlzLmN0eDtsLnNhdmUoKTtjb25zdCBjPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7bC50cmFuc2Zvcm0oZSxzLHIsYSwwLDApO2NvbnN0IGg9dGhpcy5fY3JlYXRlTWFza0NhbnZhcyh0KTtsLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCs9Mil7Y29uc3Qgbj1pLlV0aWwudHJhbnNmb3JtKGMsW2UscyxyLGEsb1t0XSxvW3QrMV1dKSxbZCx1XT1pLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsMF0sbik7bC5kcmF3SW1hZ2UoaC5jYW52YXMsZCx1KX1sLnJlc3RvcmUoKTt0aGlzLmNvbXBvc2UoKX1wYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmN0eCxzPXRoaXMuY3VycmVudC5maWxsQ29sb3IsaT10aGlzLmN1cnJlbnQucGF0dGVybkZpbGw7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3R7ZGF0YTp0LHdpZHRoOm8saGVpZ2h0OmwsdHJhbnNmb3JtOmN9PWEsaD10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygibWFza0NhbnZhcyIsbyxsKSxkPWguY29udGV4dDtkLnNhdmUoKTtwdXRCaW5hcnlJbWFnZU1hc2soZCx0aGlzLmdldE9iamVjdCh0LGEpKTtkLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIjtkLmZpbGxTdHlsZT1pP3MuZ2V0UGF0dGVybihkLHRoaXMsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksci5QYXRoVHlwZS5GSUxMKTpzO2QuZmlsbFJlY3QoMCwwLG8sbCk7ZC5yZXN0b3JlKCk7ZS5zYXZlKCk7ZS50cmFuc2Zvcm0oLi4uYyk7ZS5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSxoLmNhbnZhcywwLDAsbyxsLDAsLTEsMSwxKTtlLnJlc3RvcmUoKX10aGlzLmNvbXBvc2UoKX1wYWludEltYWdlWE9iamVjdCh0KXtpZighdGhpcy5jb250ZW50VmlzaWJsZSlyZXR1cm47Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsaS53YXJuKSgiRGVwZW5kZW50IGltYWdlIGlzbid0IHJlYWR5IHlldCIpfXBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsZSxzLG4pe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCByPXRoaXMuZ2V0T2JqZWN0KHQpO2lmKCFyKXsoMCxpLndhcm4pKCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0Iik7cmV0dXJufWNvbnN0IGE9ci53aWR0aCxvPXIuaGVpZ2h0LGw9W107Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCs9MilsLnB1c2goe3RyYW5zZm9ybTpbZSwwLDAscyxuW3RdLG5bdCsxXV0seDowLHk6MCx3OmEsaDpvfSk7dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHIsbCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCl7aWYoIXRoaXMuY29udGVudFZpc2libGUpcmV0dXJuO2NvbnN0IGU9dC53aWR0aCxzPXQuaGVpZ2h0LGk9dGhpcy5jdHg7dGhpcy5zYXZlKCk7aS5zY2FsZSgxL2UsLTEvcyk7bGV0IHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEhUTUxFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fCF0LmRhdGEpcj10O2Vsc2V7Y29uc3QgaT10aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcygiaW5saW5lSW1hZ2UiLGUscyk7cHV0QmluYXJ5SW1hZ2VEYXRhKGkuY29udGV4dCx0LHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMpO3I9aS5jYW52YXN9Y29uc3QgYT10aGlzLl9zY2FsZUltYWdlKHIsKDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoaSkpO2kuaW1hZ2VTbW9vdGhpbmdFbmFibGVkPWdldEltYWdlU21vb3RoaW5nRW5hYmxlZCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGkpLHQuaW50ZXJwb2xhdGUpO2RyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhpLGEuaW1nLDAsMCxhLnBhaW50V2lkdGgsYS5wYWludEhlaWdodCwwLC1zLGUscyk7dGhpcy5jb21wb3NlKCk7dGhpcy5yZXN0b3JlKCl9cGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LGUpe2lmKCF0aGlzLmNvbnRlbnRWaXNpYmxlKXJldHVybjtjb25zdCBzPXRoaXMuY3R4LGk9dC53aWR0aCxuPXQuaGVpZ2h0LHI9dGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoImlubGluZUltYWdlIixpLG4pO3B1dEJpbmFyeUltYWdlRGF0YShyLmNvbnRleHQsdCx0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzKTtmb3IoY29uc3QgdCBvZiBlKXtzLnNhdmUoKTtzLnRyYW5zZm9ybSguLi50LnRyYW5zZm9ybSk7cy5zY2FsZSgxLC0xKTtkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMocyxyLmNhbnZhcyx0LngsdC55LHQudyx0LmgsMCwtMSwxLDEpO3MucmVzdG9yZSgpfXRoaXMuY29tcG9zZSgpfXBhaW50U29saWRDb2xvckltYWdlTWFzaygpe2lmKHRoaXMuY29udGVudFZpc2libGUpe3RoaXMuY3R4LmZpbGxSZWN0KDAsMCwxLDEpO3RoaXMuY29tcG9zZSgpfX1tYXJrUG9pbnQodCl7fW1hcmtQb2ludFByb3BzKHQsZSl7fWJlZ2luTWFya2VkQ29udGVudCh0KXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOiEwfSl9YmVnaW5NYXJrZWRDb250ZW50UHJvcHModCxlKXsiT0MiPT09dD90aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHt2aXNpYmxlOnRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKX0pOnRoaXMubWFya2VkQ29udGVudFN0YWNrLnB1c2goe3Zpc2libGU6ITB9KTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWVuZE1hcmtlZENvbnRlbnQoKXt0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wb3AoKTt0aGlzLmNvbnRlbnRWaXNpYmxlPXRoaXMuaXNDb250ZW50VmlzaWJsZSgpfWJlZ2luQ29tcGF0KCl7fWVuZENvbXBhdCgpe31jb25zdW1lUGF0aCh0KXtjb25zdCBlPXRoaXMuY3VycmVudC5pc0VtcHR5Q2xpcCgpO3RoaXMucGVuZGluZ0NsaXAmJnRoaXMuY3VycmVudC51cGRhdGVDbGlwRnJvbVBhdGgoKTt0aGlzLnBlbmRpbmdDbGlwfHx0aGlzLmNvbXBvc2UodCk7Y29uc3Qgcz10aGlzLmN0eDtpZih0aGlzLnBlbmRpbmdDbGlwKXtlfHwodGhpcy5wZW5kaW5nQ2xpcD09PWc/cy5jbGlwKCJldmVub2RkIik6cy5jbGlwKCkpO3RoaXMucGVuZGluZ0NsaXA9bnVsbH10aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7cy5iZWdpblBhdGgoKX1nZXRTaW5nbGVQaXhlbFdpZHRoKCl7aWYoIXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGgpe2NvbnN0IHQ9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7aWYoMD09PXRbMV0mJjA9PT10WzJdKXRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9MS9NYXRoLm1pbihNYXRoLmFicyh0WzBdKSxNYXRoLmFicyh0WzNdKSk7ZWxzZXtjb25zdCBlPU1hdGguYWJzKHRbMF0qdFszXS10WzJdKnRbMV0pLHM9TWF0aC5oeXBvdCh0WzBdLHRbMl0pLGk9TWF0aC5oeXBvdCh0WzFdLHRbM10pO3RoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGg9TWF0aC5tYXgocyxpKS9lfX1yZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aH1nZXRTY2FsZUZvclN0cm9raW5nKCl7aWYoIXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcpe2NvbnN0e2xpbmVXaWR0aDp0fT10aGlzLmN1cnJlbnQsZT0oMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtsZXQgcyxpO2lmKDA9PT1lWzFdJiYwPT09ZVsyXSl7Y29uc3Qgbj1NYXRoLmFicyhlWzBdKSxyPU1hdGguYWJzKGVbM10pO2lmKDA9PT10KXtzPTEvbjtpPTEvcn1lbHNle2NvbnN0IGU9bip0LGE9cip0O3M9ZTwxPzEvZToxO2k9YTwxPzEvYToxfX1lbHNle2NvbnN0IG49TWF0aC5hYnMoZVswXSplWzNdLWVbMl0qZVsxXSkscj1NYXRoLmh5cG90KGVbMF0sZVsxXSksYT1NYXRoLmh5cG90KGVbMl0sZVszXSk7aWYoMD09PXQpe3M9YS9uO2k9ci9ufWVsc2V7Y29uc3QgZT10Km47cz1hPmU/YS9lOjE7aT1yPmU/ci9lOjF9fXRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc9W3MsaV19cmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmd9cmVzY2FsZUFuZFN0cm9rZSh0KXtjb25zdHtjdHg6ZX09dGhpcyx7bGluZVdpZHRoOnN9PXRoaXMuY3VycmVudCxbaSxyXT10aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtlLmxpbmVXaWR0aD1zfHwxO2lmKDE9PT1pJiYxPT09cil7ZS5zdHJva2UoKTtyZXR1cm59bGV0IGEsbyxsO2lmKHQpe2E9KDAsbi5nZXRDdXJyZW50VHJhbnNmb3JtKShlKTtvPWUuZ2V0TGluZURhc2goKS5zbGljZSgpO2w9ZS5saW5lRGFzaE9mZnNldH1lLnNjYWxlKGkscik7Y29uc3QgYz1NYXRoLm1heChpLHIpO2Uuc2V0TGluZURhc2goZS5nZXRMaW5lRGFzaCgpLm1hcCgodD0+dC9jKSkpO2UubGluZURhc2hPZmZzZXQvPWM7ZS5zdHJva2UoKTtpZih0KXtlLnNldFRyYW5zZm9ybSguLi5hKTtlLnNldExpbmVEYXNoKG8pO2UubGluZURhc2hPZmZzZXQ9bH19aXNDb250ZW50VmlzaWJsZSgpe2ZvcihsZXQgdD10aGlzLm1hcmtlZENvbnRlbnRTdGFjay5sZW5ndGgtMTt0Pj0wO3QtLSlpZighdGhpcy5tYXJrZWRDb250ZW50U3RhY2tbdF0udmlzaWJsZSlyZXR1cm4hMTtyZXR1cm4hMH19ZS5DYW52YXNHcmFwaGljcz1DYW52YXNHcmFwaGljcztmb3IoY29uc3QgdCBpbiBpLk9QUyl2b2lkIDAhPT1DYW52YXNHcmFwaGljcy5wcm90b3R5cGVbdF0mJihDYW52YXNHcmFwaGljcy5wcm90b3R5cGVbaS5PUFNbdF1dPUNhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UaWxpbmdQYXR0ZXJuPWUuUGF0aFR5cGU9dm9pZCAwO2UuZ2V0U2hhZGluZ1BhdHRlcm49ZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCl7c3dpdGNoKHRbMF0pe2Nhc2UiUmFkaWFsQXhpYWwiOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtjYXNlIk1lc2giOnJldHVybiBuZXcgTWVzaFNoYWRpbmdQYXR0ZXJuKHQpO2Nhc2UiRHVtbXkiOnJldHVybiBuZXcgRHVtbXlTaGFkaW5nUGF0dGVybn10aHJvdyBuZXcgRXJyb3IoYFVua25vd24gSVIgdHlwZTogJHt0WzBdfWApfTt2YXIgaT1zKDEpLG49cyg2KSxyPXMoMTIpO2NvbnN0IGE9e0ZJTEw6IkZpbGwiLFNUUk9LRToiU3Ryb2tlIixTSEFESU5HOiJTaGFkaW5nIn07ZS5QYXRoVHlwZT1hO2Z1bmN0aW9uIGFwcGx5Qm91bmRpbmdCb3godCxlKXtpZighZXx8ci5pc05vZGVKUylyZXR1cm47Y29uc3Qgcz1lWzJdLWVbMF0saT1lWzNdLWVbMV0sbj1uZXcgUGF0aDJEO24ucmVjdChlWzBdLGVbMV0scyxpKTt0LmNsaXAobil9Y2xhc3MgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VTaGFkaW5nUGF0dGVybiYmKDAsaS51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTaGFkaW5nUGF0dGVybi4iKX1nZXRQYXR0ZXJuKCl7KDAsaS51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLiIpfX1jbGFzcyBSYWRpYWxBeGlhbFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fdHlwZT10WzFdO3RoaXMuX2Jib3g9dFsyXTt0aGlzLl9jb2xvclN0b3BzPXRbM107dGhpcy5fcDA9dFs0XTt0aGlzLl9wMT10WzVdO3RoaXMuX3IwPXRbNl07dGhpcy5fcjE9dFs3XTt0aGlzLm1hdHJpeD1udWxsfV9jcmVhdGVHcmFkaWVudCh0KXtsZXQgZTsiYXhpYWwiPT09dGhpcy5fdHlwZT9lPXQuY3JlYXRlTGluZWFyR3JhZGllbnQodGhpcy5fcDBbMF0sdGhpcy5fcDBbMV0sdGhpcy5fcDFbMF0sdGhpcy5fcDFbMV0pOiJyYWRpYWwiPT09dGhpcy5fdHlwZSYmKGU9dC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSx0aGlzLl9wMFsxXSx0aGlzLl9yMCx0aGlzLl9wMVswXSx0aGlzLl9wMVsxXSx0aGlzLl9yMSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpZS5hZGRDb2xvclN0b3AodFswXSx0WzFdKTtyZXR1cm4gZX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2xldCBvO2lmKHI9PT1hLlNUUk9LRXx8cj09PWEuRklMTCl7Y29uc3QgYT1lLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChyLCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpfHxbMCwwLDAsMF0sbD1NYXRoLmNlaWwoYVsyXS1hWzBdKXx8MSxjPU1hdGguY2VpbChhWzNdLWFbMV0pfHwxLGg9ZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoInBhdHRlcm4iLGwsYywhMCksZD1oLmNvbnRleHQ7ZC5jbGVhclJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC5iZWdpblBhdGgoKTtkLnJlY3QoMCwwLGQuY2FudmFzLndpZHRoLGQuY2FudmFzLmhlaWdodCk7ZC50cmFuc2xhdGUoLWFbMF0sLWFbMV0pO3M9aS5VdGlsLnRyYW5zZm9ybShzLFsxLDAsMCwxLGFbMF0sYVsxXV0pO2QudHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7dGhpcy5tYXRyaXgmJmQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTthcHBseUJvdW5kaW5nQm94KGQsdGhpcy5fYmJveCk7ZC5maWxsU3R5bGU9dGhpcy5fY3JlYXRlR3JhZGllbnQoZCk7ZC5maWxsKCk7bz10LmNyZWF0ZVBhdHRlcm4oaC5jYW52YXMsIm5vLXJlcGVhdCIpO2NvbnN0IHU9bmV3IERPTU1hdHJpeChzKTtvLnNldFRyYW5zZm9ybSh1KX1lbHNle2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtvPXRoaXMuX2NyZWF0ZUdyYWRpZW50KHQpfXJldHVybiBvfX1mdW5jdGlvbiBkcmF3VHJpYW5nbGUodCxlLHMsaSxuLHIsYSxvKXtjb25zdCBsPWUuY29vcmRzLGM9ZS5jb2xvcnMsaD10LmRhdGEsZD00KnQud2lkdGg7bGV0IHU7aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9aWYobFtpKzFdPmxbbisxXSl7dT1pO2k9bjtuPXU7dT1hO2E9bztvPXV9aWYobFtzKzFdPmxbaSsxXSl7dT1zO3M9aTtpPXU7dT1yO3I9YTthPXV9Y29uc3QgcD0obFtzXStlLm9mZnNldFgpKmUuc2NhbGVYLGc9KGxbcysxXStlLm9mZnNldFkpKmUuc2NhbGVZLG09KGxbaV0rZS5vZmZzZXRYKSplLnNjYWxlWCxmPShsW2krMV0rZS5vZmZzZXRZKSplLnNjYWxlWSxiPShsW25dK2Uub2Zmc2V0WCkqZS5zY2FsZVgsQT0obFtuKzFdK2Uub2Zmc2V0WSkqZS5zY2FsZVk7aWYoZz49QSlyZXR1cm47Y29uc3QgXz1jW3JdLHY9Y1tyKzFdLHk9Y1tyKzJdLFM9Y1thXSx4PWNbYSsxXSxFPWNbYSsyXSxDPWNbb10sUD1jW28rMV0sVD1jW28rMl0sdz1NYXRoLnJvdW5kKGcpLGs9TWF0aC5yb3VuZChBKTtsZXQgRixNLFIsRCxJLE8sTCxOO2ZvcihsZXQgdD13O3Q8PWs7dCsrKXtpZih0PGYpe2xldCBlO2U9dDxnPzA6KGctdCkvKGctZik7Rj1wLShwLW0pKmU7TT1fLShfLVMpKmU7Uj12LSh2LXgpKmU7RD15LSh5LUUpKmV9ZWxzZXtsZXQgZTtlPXQ+QT8xOmY9PT1BPzA6KGYtdCkvKGYtQSk7Rj1tLShtLWIpKmU7TT1TLShTLUMpKmU7Uj14LSh4LVApKmU7RD1FLShFLVQpKmV9bGV0IGU7ZT10PGc/MDp0PkE/MTooZy10KS8oZy1BKTtJPXAtKHAtYikqZTtPPV8tKF8tQykqZTtMPXYtKHYtUCkqZTtOPXktKHktVCkqZTtjb25zdCBzPU1hdGgucm91bmQoTWF0aC5taW4oRixJKSksaT1NYXRoLnJvdW5kKE1hdGgubWF4KEYsSSkpO2xldCBuPWQqdCs0KnM7Zm9yKGxldCB0PXM7dDw9aTt0Kyspe2U9KEYtdCkvKEYtSSk7ZTwwP2U9MDplPjEmJihlPTEpO2hbbisrXT1NLShNLU8pKmV8MDtoW24rK109Ui0oUi1MKSplfDA7aFtuKytdPUQtKEQtTikqZXwwO2hbbisrXT0yNTV9fX1mdW5jdGlvbiBkcmF3RmlndXJlKHQsZSxzKXtjb25zdCBpPWUuY29vcmRzLG49ZS5jb2xvcnM7bGV0IHIsYTtzd2l0Y2goZS50eXBlKXtjYXNlImxhdHRpY2UiOmNvbnN0IG89ZS52ZXJ0aWNlc1BlclJvdyxsPU1hdGguZmxvb3IoaS5sZW5ndGgvbyktMSxjPW8tMTtmb3Iocj0wO3I8bDtyKyspe2xldCBlPXIqbztmb3IobGV0IHI9MDtyPGM7cisrLGUrKyl7ZHJhd1RyaWFuZ2xlKHQscyxpW2VdLGlbZSsxXSxpW2Urb10sbltlXSxuW2UrMV0sbltlK29dKTtkcmF3VHJpYW5nbGUodCxzLGlbZStvKzFdLGlbZSsxXSxpW2Urb10sbltlK28rMV0sbltlKzFdLG5bZStvXSl9fWJyZWFrO2Nhc2UidHJpYW5nbGVzIjpmb3Iocj0wLGE9aS5sZW5ndGg7cjxhO3IrPTMpZHJhd1RyaWFuZ2xlKHQscyxpW3JdLGlbcisxXSxpW3IrMl0sbltyXSxuW3IrMV0sbltyKzJdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBmaWd1cmUiKX19Y2xhc3MgTWVzaFNoYWRpbmdQYXR0ZXJuIGV4dGVuZHMgQmFzZVNoYWRpbmdQYXR0ZXJue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCk7dGhpcy5fY29vcmRzPXRbMl07dGhpcy5fY29sb3JzPXRbM107dGhpcy5fZmlndXJlcz10WzRdO3RoaXMuX2JvdW5kcz10WzVdO3RoaXMuX2Jib3g9dFs3XTt0aGlzLl9iYWNrZ3JvdW5kPXRbOF07dGhpcy5tYXRyaXg9bnVsbH1fY3JlYXRlTWVzaENhbnZhcyh0LGUscyl7Y29uc3QgaT1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksbj1NYXRoLmZsb29yKHRoaXMuX2JvdW5kc1sxXSkscj1NYXRoLmNlaWwodGhpcy5fYm91bmRzWzJdKS1pLGE9TWF0aC5jZWlsKHRoaXMuX2JvdW5kc1szXSktbixvPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhyKnRbMF0qMS4xKSksM2UzKSxsPU1hdGgubWluKE1hdGguY2VpbChNYXRoLmFicyhhKnRbMV0qMS4xKSksM2UzKSxjPXIvbyxoPWEvbCxkPXtjb29yZHM6dGhpcy5fY29vcmRzLGNvbG9yczp0aGlzLl9jb2xvcnMsb2Zmc2V0WDotaSxvZmZzZXRZOi1uLHNjYWxlWDoxL2Msc2NhbGVZOjEvaH0sdT1vKzQscD1sKzQsZz1zLmdldENhbnZhcygibWVzaCIsdSxwLCExKSxtPWcuY29udGV4dCxmPW0uY3JlYXRlSW1hZ2VEYXRhKG8sbCk7aWYoZSl7Y29uc3QgdD1mLmRhdGE7Zm9yKGxldCBzPTAsaT10Lmxlbmd0aDtzPGk7cys9NCl7dFtzXT1lWzBdO3RbcysxXT1lWzFdO3RbcysyXT1lWzJdO3RbcyszXT0yNTV9fWZvcihjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpZHJhd0ZpZ3VyZShmLHQsZCk7bS5wdXRJbWFnZURhdGEoZiwyLDIpO3JldHVybntjYW52YXM6Zy5jYW52YXMsb2Zmc2V0WDppLTIqYyxvZmZzZXRZOm4tMipoLHNjYWxlWDpjLHNjYWxlWTpofX1nZXRQYXR0ZXJuKHQsZSxzLHIpe2FwcGx5Qm91bmRpbmdCb3godCx0aGlzLl9iYm94KTtsZXQgbztpZihyPT09YS5TSEFESU5HKW89aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkodCkpO2Vsc2V7bz1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZS5iYXNlVHJhbnNmb3JtKTtpZih0aGlzLm1hdHJpeCl7Y29uc3QgdD1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpO289W29bMF0qdFswXSxvWzFdKnRbMV1dfX1jb25zdCBsPXRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobyxyPT09YS5TSEFESU5HP251bGw6dGhpcy5fYmFja2dyb3VuZCxlLmNhY2hlZENhbnZhc2VzKTtpZihyIT09YS5TSEFESU5HKXt0LnNldFRyYW5zZm9ybSguLi5lLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiZ0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCl9dC50cmFuc2xhdGUobC5vZmZzZXRYLGwub2Zmc2V0WSk7dC5zY2FsZShsLnNjYWxlWCxsLnNjYWxlWSk7cmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywibm8tcmVwZWF0Iil9fWNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm57Z2V0UGF0dGVybigpe3JldHVybiJob3RwaW5rIn19Y29uc3Qgbz0xLGw9MjtjbGFzcyBUaWxpbmdQYXR0ZXJue3N0YXRpYyBnZXQgTUFYX1BBVFRFUk5fU0laRSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJNQVhfUEFUVEVSTl9TSVpFIiwzZTMpfWNvbnN0cnVjdG9yKHQsZSxzLGksbil7dGhpcy5vcGVyYXRvckxpc3Q9dFsyXTt0aGlzLm1hdHJpeD10WzNdfHxbMSwwLDAsMSwwLDBdO3RoaXMuYmJveD10WzRdO3RoaXMueHN0ZXA9dFs1XTt0aGlzLnlzdGVwPXRbNl07dGhpcy5wYWludFR5cGU9dFs3XTt0aGlzLnRpbGluZ1R5cGU9dFs4XTt0aGlzLmNvbG9yPWU7dGhpcy5jdHg9czt0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeT1pO3RoaXMuYmFzZVRyYW5zZm9ybT1ufWNyZWF0ZVBhdHRlcm5DYW52YXModCl7Y29uc3QgZT10aGlzLm9wZXJhdG9yTGlzdCxzPXRoaXMuYmJveCxyPXRoaXMueHN0ZXAsYT10aGlzLnlzdGVwLG89dGhpcy5wYWludFR5cGUsbD10aGlzLnRpbGluZ1R5cGUsYz10aGlzLmNvbG9yLGg9dGhpcy5jYW52YXNHcmFwaGljc0ZhY3Rvcnk7KDAsaS5pbmZvKSgiVGlsaW5nVHlwZTogIitsKTtjb25zdCBkPXNbMF0sdT1zWzFdLHA9c1syXSxnPXNbM10sbT1pLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5tYXRyaXgpLGY9aS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMuYmFzZVRyYW5zZm9ybSksYj1bbVswXSpmWzBdLG1bMV0qZlsxXV0sQT10aGlzLmdldFNpemVBbmRTY2FsZShyLHRoaXMuY3R4LmNhbnZhcy53aWR0aCxiWzBdKSxfPXRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsdGhpcy5jdHguY2FudmFzLmhlaWdodCxiWzFdKSx2PXQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKCJwYXR0ZXJuIixBLnNpemUsXy5zaXplLCEwKSx5PXYuY29udGV4dCxTPWguY3JlYXRlQ2FudmFzR3JhcGhpY3MoeSk7Uy5ncm91cExldmVsPXQuZ3JvdXBMZXZlbDt0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLG8sYyk7bGV0IHg9ZCxFPXUsQz1wLFA9ZztpZihkPDApe3g9MDtDKz1NYXRoLmFicyhkKX1pZih1PDApe0U9MDtQKz1NYXRoLmFicyh1KX15LnRyYW5zbGF0ZSgtQS5zY2FsZSp4LC1fLnNjYWxlKkUpO1MudHJhbnNmb3JtKEEuc2NhbGUsMCwwLF8uc2NhbGUsMCwwKTt5LnNhdmUoKTt0aGlzLmNsaXBCYm94KFMseCxFLEMsUCk7Uy5iYXNlVHJhbnNmb3JtPSgwLG4uZ2V0Q3VycmVudFRyYW5zZm9ybSkoUy5jdHgpO1MuZXhlY3V0ZU9wZXJhdG9yTGlzdChlKTtTLmVuZERyYXdpbmcoKTtyZXR1cm57Y2FudmFzOnYuY2FudmFzLHNjYWxlWDpBLnNjYWxlLHNjYWxlWTpfLnNjYWxlLG9mZnNldFg6eCxvZmZzZXRZOkV9fWdldFNpemVBbmRTY2FsZSh0LGUscyl7dD1NYXRoLmFicyh0KTtjb25zdCBpPU1hdGgubWF4KFRpbGluZ1BhdHRlcm4uTUFYX1BBVFRFUk5fU0laRSxlKTtsZXQgbj1NYXRoLmNlaWwodCpzKTtuPj1pP249aTpzPW4vdDtyZXR1cm57c2NhbGU6cyxzaXplOm59fWNsaXBCYm94KHQsZSxzLGkscil7Y29uc3QgYT1pLWUsbz1yLXM7dC5jdHgucmVjdChlLHMsYSxvKTt0LmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCxuLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHQuY3R4KSxbZSxzLGkscl0pO3QuY2xpcCgpO3QuZW5kUGF0aCgpfXNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LGUscyl7Y29uc3Qgbj10LmN0eCxyPXQuY3VycmVudDtzd2l0Y2goZSl7Y2FzZSBvOmNvbnN0IHQ9dGhpcy5jdHg7bi5maWxsU3R5bGU9dC5maWxsU3R5bGU7bi5zdHJva2VTdHlsZT10LnN0cm9rZVN0eWxlO3IuZmlsbENvbG9yPXQuZmlsbFN0eWxlO3Iuc3Ryb2tlQ29sb3I9dC5zdHJva2VTdHlsZTticmVhaztjYXNlIGw6Y29uc3QgYT1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtuLmZpbGxTdHlsZT1hO24uc3Ryb2tlU3R5bGU9YTtyLmZpbGxDb2xvcj1hO3Iuc3Ryb2tlQ29sb3I9YTticmVhaztkZWZhdWx0OnRocm93IG5ldyBpLkZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwYWludCB0eXBlOiAke2V9YCl9fWdldFBhdHRlcm4odCxlLHMsbil7bGV0IHI9cztpZihuIT09YS5TSEFESU5HKXtyPWkuVXRpbC50cmFuc2Zvcm0ocixlLmJhc2VUcmFuc2Zvcm0pO3RoaXMubWF0cml4JiYocj1pLlV0aWwudHJhbnNmb3JtKHIsdGhpcy5tYXRyaXgpKX1jb25zdCBvPXRoaXMuY3JlYXRlUGF0dGVybkNhbnZhcyhlKTtsZXQgbD1uZXcgRE9NTWF0cml4KHIpO2w9bC50cmFuc2xhdGUoby5vZmZzZXRYLG8ub2Zmc2V0WSk7bD1sLnNjYWxlKDEvby5zY2FsZVgsMS9vLnNjYWxlWSk7Y29uc3QgYz10LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsInJlcGVhdCIpO2Muc2V0VHJhbnNmb3JtKGwpO3JldHVybiBjfX1lLlRpbGluZ1BhdHRlcm49VGlsaW5nUGF0dGVybn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5pc05vZGVKUz12b2lkIDA7Y29uc3Qgcz0hKCJvYmplY3QiIT10eXBlb2YgcHJvY2Vzc3x8cHJvY2VzcysiIiE9IltvYmplY3QgcHJvY2Vzc10ifHxwcm9jZXNzLnZlcnNpb25zLm53fHxwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uJiZwcm9jZXNzLnR5cGUmJiJicm93c2VyIiE9PXByb2Nlc3MudHlwZSk7ZS5pc05vZGVKUz1zfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuYXBwbHlNYXNrSW1hZ2VEYXRhPWZ1bmN0aW9uIGFwcGx5TWFza0ltYWdlRGF0YSh7c3JjOnQsc3JjUG9zOmU9MCxkZXN0OnMsZGVzdFBvczpuPTAsd2lkdGg6cixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOm89ITF9KXtjb25zdCBsPWkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsaF09bz9bMCxsXTpbbCwwXSxkPXI+PjMsdT03JnIscD10Lmxlbmd0aDtzPW5ldyBVaW50MzJBcnJheShzLmJ1ZmZlcik7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGNvbnN0IGk9ZStkO2U8aTtlKyspe2NvbnN0IGk9ZTxwP3RbZV06MjU1O3NbbisrXT0xMjgmaT9oOmM7c1tuKytdPTY0Jmk/aDpjO3NbbisrXT0zMiZpP2g6YztzW24rK109MTYmaT9oOmM7c1tuKytdPTgmaT9oOmM7c1tuKytdPTQmaT9oOmM7c1tuKytdPTImaT9oOmM7c1tuKytdPTEmaT9oOmN9aWYoMD09PXUpY29udGludWU7Y29uc3QgaT1lPHA/dFtlKytdOjI1NTtmb3IobGV0IHQ9MDt0PHU7dCsrKXNbbisrXT1pJjE8PDctdD9oOmN9cmV0dXJue3NyY1BvczplLGRlc3RQb3M6bn19O3ZhciBpPXMoMSl9LCh0LGUpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuR2xvYmFsV29ya2VyT3B0aW9ucz12b2lkIDA7Y29uc3Qgcz1PYmplY3QuY3JlYXRlKG51bGwpO2UuR2xvYmFsV29ya2VyT3B0aW9ucz1zO3Mud29ya2VyUG9ydD12b2lkIDA9PT1zLndvcmtlclBvcnQ/bnVsbDpzLndvcmtlclBvcnQ7cy53b3JrZXJTcmM9dm9pZCAwPT09cy53b3JrZXJTcmM/IiI6cy53b3JrZXJTcmN9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5NZXNzYWdlSGFuZGxlcj12b2lkIDA7dmFyIGk9cygxKTtjb25zdCBuPTEscj0yLGE9MSxvPTIsbD0zLGM9NCxoPTUsZD02LHU9NyxwPTg7ZnVuY3Rpb24gd3JhcFJlYXNvbih0KXt0IGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR8fCgwLGkudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpO3N3aXRjaCh0Lm5hbWUpe2Nhc2UiQWJvcnRFeGNlcHRpb24iOnJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO2Nhc2UiTWlzc2luZ1BERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24odC5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGkuUGFzc3dvcmRFeGNlcHRpb24odC5tZXNzYWdlLHQuY29kZSk7Y2FzZSJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iOnJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24odC5tZXNzYWdlLHQuc3RhdHVzKTtjYXNlIlVua25vd25FcnJvckV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBpLlVua25vd25FcnJvckV4Y2VwdGlvbih0Lm1lc3NhZ2UsdC5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLHQudG9TdHJpbmcoKSl9fWUuTWVzc2FnZUhhbmRsZXI9Y2xhc3MgTWVzc2FnZUhhbmRsZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuc291cmNlTmFtZT10O3RoaXMudGFyZ2V0TmFtZT1lO3RoaXMuY29tT2JqPXM7dGhpcy5jYWxsYmFja0lkPTE7dGhpcy5zdHJlYW1JZD0xO3RoaXMuc3RyZWFtU2lua3M9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuYWN0aW9uSGFuZGxlcj1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX29uQ29tT2JqT25NZXNzYWdlPXQ9Pntjb25zdCBlPXQuZGF0YTtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLl9wcm9jZXNzU3RyZWFtTWVzc2FnZShlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQscz10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFzKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1uKXMucmVzb2x2ZShlLmRhdGEpO2Vsc2V7aWYoZS5jYWxsYmFjayE9PXIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtzLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke2UuYWN0aW9ufWApO2lmKGUuY2FsbGJhY2tJZCl7Y29uc3QgdD10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QoaShlLmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihpKXtzLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnQsdGFyZ2V0TmFtZTphLGNhbGxiYWNrOm4sY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTppfSl9KSwoZnVuY3Rpb24oaSl7cy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0LHRhcmdldE5hbWU6YSxjYWxsYmFjazpyLGNhbGxiYWNrSWQ6ZS5jYWxsYmFja0lkLHJlYXNvbjp3cmFwUmVhc29uKGkpfSl9KSl9ZWxzZSBlLnN0cmVhbUlkP3RoaXMuX2NyZWF0ZVN0cmVhbVNpbmsoZSk6aShlLmRhdGEpfTtzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX1vbih0LGUpe2NvbnN0IHM9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKHNbdF0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke3R9ImApO3NbdF09ZX1zZW5kKHQsZSxzKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOnQsZGF0YTplfSxzKX1zZW5kV2l0aFByb21pc2UodCxlLHMpe2NvbnN0IG49dGhpcy5jYWxsYmFja0lkKysscj0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjp0LGNhbGxiYWNrSWQ6bixkYXRhOmV9LHMpfWNhdGNoKHQpe3IucmVqZWN0KHQpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0odCxlLHMsbil7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKyssbz10aGlzLnNvdXJjZU5hbWUsbD10aGlzLnRhcmdldE5hbWUsYz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpzPT57Y29uc3QgYT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl09e2NvbnRyb2xsZXI6cyxzdGFydENhbGw6YSxwdWxsQ2FsbDpudWxsLGNhbmNlbENhbGw6bnVsbCxpc0Nsb3NlZDohMX07Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxhY3Rpb246dCxzdHJlYW1JZDpyLGRhdGE6ZSxkZXNpcmVkU2l6ZTpzLmRlc2lyZWRTaXplfSxuKTtyZXR1cm4gYS5wcm9taXNlfSxwdWxsOnQ9Pntjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD1lO2MucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6byx0YXJnZXROYW1lOmwsc3RyZWFtOmQsc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplfSk7cmV0dXJuIGUucHJvbWlzZX0sY2FuY2VsOnQ9PnsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgZT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uY2FuY2VsQ2FsbD1lO3RoaXMuc3RyZWFtQ29udHJvbGxlcnNbcl0uaXNDbG9zZWQ9ITA7Yy5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpvLHRhcmdldE5hbWU6bCxzdHJlYW06YSxzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKHQpfSk7cmV0dXJuIGUucHJvbWlzZX19LHMpfV9jcmVhdGVTdHJlYW1TaW5rKHQpe2NvbnN0IGU9dC5zdHJlYW1JZCxzPXRoaXMuc291cmNlTmFtZSxuPXQuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLGE9dGhpcyxvPXRoaXMuYWN0aW9uSGFuZGxlclt0LmFjdGlvbl0sZD17ZW5xdWV1ZSh0LGE9MSxvKXtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBsPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09YTtpZihsPjAmJnRoaXMuZGVzaXJlZFNpemU8PTApe3RoaXMuc2lua0NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpjLHN0cmVhbUlkOmUsY2h1bms6dH0sbyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06bCxzdHJlYW1JZDplfSk7ZGVsZXRlIGEuc3RyZWFtU2lua3NbZV19fSxlcnJvcih0KXsoMCxpLmFzc2VydCkodCBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtpZighdGhpcy5pc0NhbmNlbGxlZCl7dGhpcy5pc0NhbmNlbGxlZD0hMDtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpoLHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX19LHNpbmtDYXBhYmlsaXR5OigwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTp0LmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O2Quc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO2QucmVhZHk9ZC5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbZV09ZDtuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShvKHQuZGF0YSxkKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpwLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnAsc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpfV9wcm9jZXNzU3RyZWFtTWVzc2FnZSh0KXtjb25zdCBlPXQuc3RyZWFtSWQscz10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixnPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbZV0sbT10aGlzLnN0cmVhbVNpbmtzW2VdO3N3aXRjaCh0LnN0cmVhbSl7Y2FzZSBwOnQuc3VjY2Vzcz9nLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6Zy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIHU6dC5zdWNjZXNzP2cucHVsbENhbGwucmVzb2x2ZSgpOmcucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTticmVhaztjYXNlIGQ6aWYoIW0pe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOnUsc3RyZWFtSWQ6ZSxzdWNjZXNzOiEwfSk7YnJlYWt9bS5kZXNpcmVkU2l6ZTw9MCYmdC5kZXNpcmVkU2l6ZT4wJiZtLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTttLmRlc2lyZWRTaXplPXQuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobS5vblB1bGwmJm0ub25QdWxsKCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06dSxzdHJlYW1JZDplLHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbih0KXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTp1LHN0cmVhbUlkOmUscmVhc29uOndyYXBSZWFzb24odCl9KX0pKTticmVhaztjYXNlIGM6KDAsaS5hc3NlcnQpKGcsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuY29udHJvbGxlci5lbnF1ZXVlKHQuY2h1bmspO2JyZWFrO2Nhc2UgbDooMCxpLmFzc2VydCkoZywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihnLmlzQ2xvc2VkKWJyZWFrO2cuaXNDbG9zZWQ9ITA7Zy5jb250cm9sbGVyLmNsb3NlKCk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgaDooMCxpLmFzc2VydCkoZywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtnLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO3RoaXMuX2RlbGV0ZVN0cmVhbUNvbnRyb2xsZXIoZyxlKTticmVhaztjYXNlIG86dC5zdWNjZXNzP2cuY2FuY2VsQ2FsbC5yZXNvbHZlKCk6Zy5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7dGhpcy5fZGVsZXRlU3RyZWFtQ29udHJvbGxlcihnLGUpO2JyZWFrO2Nhc2UgYTppZighbSlicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ZShtLm9uQ2FuY2VsJiZtLm9uQ2FuY2VsKHdyYXBSZWFzb24odC5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTpuLHN0cmVhbTpvLHN0cmVhbUlkOmUsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOm8sc3RyZWFtSWQ6ZSxyZWFzb246d3JhcFJlYXNvbih0KX0pfSkpO20uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTttLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIF9kZWxldGVTdHJlYW1Db250cm9sbGVyKHQsZSl7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFt0LnN0YXJ0Q2FsbCYmdC5zdGFydENhbGwucHJvbWlzZSx0LnB1bGxDYWxsJiZ0LnB1bGxDYWxsLnByb21pc2UsdC5jYW5jZWxDYWxsJiZ0LmNhbmNlbENhbGwucHJvbWlzZV0pO2RlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk1ldGFkYXRhPXZvaWQgMDt2YXIgaT1zKDEpO2UuTWV0YWRhdGE9Y2xhc3MgTWV0YWRhdGF7I2l0OyNudDtjb25zdHJ1Y3Rvcih7cGFyc2VkRGF0YTp0LHJhd0RhdGE6ZX0pe3RoaXMuI2l0PXQ7dGhpcy4jbnQ9ZX1nZXRSYXcoKXtyZXR1cm4gdGhpcy4jbnR9Z2V0KHQpe3JldHVybiB0aGlzLiNpdC5nZXQodCk/P251bGx9Z2V0QWxsKCl7cmV0dXJuKDAsaS5vYmplY3RGcm9tTWFwKSh0aGlzLiNpdCl9aGFzKHQpe3JldHVybiB0aGlzLiNpdC5oYXModCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLk9wdGlvbmFsQ29udGVudENvbmZpZz12b2lkIDA7dmFyIGk9cygxKSxuPXMoOCk7Y29uc3Qgcj1TeW1ib2woIklOVEVSTkFMIik7Y2xhc3MgT3B0aW9uYWxDb250ZW50R3JvdXB7I3J0PSEwO2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQ7dGhpcy5pbnRlbnQ9ZX1nZXQgdmlzaWJsZSgpe3JldHVybiB0aGlzLiNydH1fc2V0VmlzaWJsZSh0LGUpe3QhPT1yJiYoMCxpLnVucmVhY2hhYmxlKSgiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLiIpO3RoaXMuI3J0PWV9fWUuT3B0aW9uYWxDb250ZW50Q29uZmlnPWNsYXNzIE9wdGlvbmFsQ29udGVudENvbmZpZ3sjYXQ9bnVsbDsjb3Q9bmV3IE1hcDsjbHQ9bnVsbDsjY3Q9bnVsbDtjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hbWU9bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDtpZihudWxsIT09dCl7dGhpcy5uYW1lPXQubmFtZTt0aGlzLmNyZWF0b3I9dC5jcmVhdG9yO3RoaXMuI2N0PXQub3JkZXI7Zm9yKGNvbnN0IGUgb2YgdC5ncm91cHMpdGhpcy4jb3Quc2V0KGUuaWQsbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSxlLmludGVudCkpO2lmKCJPRkYiPT09dC5iYXNlU3RhdGUpZm9yKGNvbnN0IHQgb2YgdGhpcy4jb3QudmFsdWVzKCkpdC5fc2V0VmlzaWJsZShyLCExKTtmb3IoY29uc3QgZSBvZiB0Lm9uKXRoaXMuI290LmdldChlKS5fc2V0VmlzaWJsZShyLCEwKTtmb3IoY29uc3QgZSBvZiB0Lm9mZil0aGlzLiNvdC5nZXQoZSkuX3NldFZpc2libGUociwhMSk7dGhpcy4jbHQ9dGhpcy5nZXRIYXNoKCl9fSNodCh0KXtjb25zdCBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4hMDtjb25zdCBzPXRbMF07Zm9yKGxldCBuPTE7bjxlO24rKyl7Y29uc3QgZT10W25dO2xldCByO2lmKEFycmF5LmlzQXJyYXkoZSkpcj10aGlzLiNodChlKTtlbHNle2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9cj10aGlzLiNvdC5nZXQoZSkudmlzaWJsZX1zd2l0Y2gocyl7Y2FzZSJBbmQiOmlmKCFyKXJldHVybiExO2JyZWFrO2Nhc2UiT3IiOmlmKHIpcmV0dXJuITA7YnJlYWs7Y2FzZSJOb3QiOnJldHVybiFyO2RlZmF1bHQ6cmV0dXJuITB9fXJldHVybiJBbmQiPT09c31pc1Zpc2libGUodCl7aWYoMD09PXRoaXMuI290LnNpemUpcmV0dXJuITA7aWYoIXQpeygwLGkud2FybikoIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuIik7cmV0dXJuITB9aWYoIk9DRyI9PT10LnR5cGUpe2lmKCF0aGlzLiNvdC5oYXModC5pZCkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke3QuaWR9YCk7cmV0dXJuITB9cmV0dXJuIHRoaXMuI290LmdldCh0LmlkKS52aXNpYmxlfWlmKCJPQ01EIj09PXQudHlwZSl7aWYodC5leHByZXNzaW9uKXJldHVybiB0aGlzLiNodCh0LmV4cHJlc3Npb24pO2lmKCF0LnBvbGljeXx8IkFueU9uIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZih0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMH1yZXR1cm4hMX1pZigiQWxsT24iPT09dC5wb2xpY3kpe2Zvcihjb25zdCBlIG9mIHQuaWRzKXtpZighdGhpcy4jb3QuaGFzKGUpKXsoMCxpLndhcm4pKGBPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogJHtlfWApO3JldHVybiEwfWlmKCF0aGlzLiNvdC5nZXQoZSkudmlzaWJsZSlyZXR1cm4hMX1yZXR1cm4hMH1pZigiQW55T2ZmIj09PXQucG9saWN5KXtmb3IoY29uc3QgZSBvZiB0Lmlkcyl7aWYoIXRoaXMuI290LmhhcyhlKSl7KDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4hMH1pZighdGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITB9cmV0dXJuITF9aWYoIkFsbE9mZiI9PT10LnBvbGljeSl7Zm9yKGNvbnN0IGUgb2YgdC5pZHMpe2lmKCF0aGlzLiNvdC5oYXMoZSkpeygwLGkud2FybikoYE9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiAke2V9YCk7cmV0dXJuITB9aWYodGhpcy4jb3QuZ2V0KGUpLnZpc2libGUpcmV0dXJuITF9cmV0dXJuITB9KDAsaS53YXJuKShgVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSAke3QucG9saWN5fS5gKTtyZXR1cm4hMH0oMCxpLndhcm4pKGBVbmtub3duIGdyb3VwIHR5cGUgJHt0LnR5cGV9LmApO3JldHVybiEwfXNldFZpc2liaWxpdHkodCxlPSEwKXtpZih0aGlzLiNvdC5oYXModCkpe3RoaXMuI290LmdldCh0KS5fc2V0VmlzaWJsZShyLCEhZSk7dGhpcy4jYXQ9bnVsbH1lbHNlKDAsaS53YXJuKShgT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6ICR7dH1gKX1nZXQgaGFzSW5pdGlhbFZpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5nZXRIYXNoKCk9PT10aGlzLiNsdH1nZXRPcmRlcigpe3JldHVybiB0aGlzLiNvdC5zaXplP3RoaXMuI2N0P3RoaXMuI2N0LnNsaWNlKCk6Wy4uLnRoaXMuI290LmtleXMoKV06bnVsbH1nZXRHcm91cHMoKXtyZXR1cm4gdGhpcy4jb3Quc2l6ZT4wPygwLGkub2JqZWN0RnJvbU1hcCkodGhpcy4jb3QpOm51bGx9Z2V0R3JvdXAodCl7cmV0dXJuIHRoaXMuI290LmdldCh0KXx8bnVsbH1nZXRIYXNoKCl7aWYobnVsbCE9PXRoaXMuI2F0KXJldHVybiB0aGlzLiNhdDtjb25zdCB0PW5ldyBuLk11cm11ckhhc2gzXzY0O2Zvcihjb25zdFtlLHNdb2YgdGhpcy4jb3QpdC51cGRhdGUoYCR7ZX06JHtzLnZpc2libGV9YCk7cmV0dXJuIHRoaXMuI2F0PXQuaGV4ZGlnZXN0KCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkRhdGFUcmFuc3BvcnRTdHJlYW09dm9pZCAwO3ZhciBpPXMoMSksbj1zKDYpO2UuUERGRGF0YVRyYW5zcG9ydFN0cmVhbT1jbGFzcyBQREZEYXRhVHJhbnNwb3J0U3RyZWFte2NvbnN0cnVjdG9yKHQsZSl7KDAsaS5hc3NlcnQpKGUsJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkICJwZGZEYXRhUmFuZ2VUcmFuc3BvcnQiIGFyZ3VtZW50LicpO3RoaXMuX3F1ZXVlZENodW5rcz1bXTt0aGlzLl9wcm9ncmVzc2l2ZURvbmU9dC5wcm9ncmVzc2l2ZURvbmV8fCExO3RoaXMuX2NvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lPXQuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWV8fG51bGw7Y29uc3Qgcz10LmluaXRpYWxEYXRhO2lmKHM/Lmxlbmd0aD4wKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KHMpLmJ1ZmZlcjt0aGlzLl9xdWV1ZWRDaHVua3MucHVzaCh0KX10aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQ9ZTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hdC5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IXQuZGlzYWJsZVJhbmdlO3RoaXMuX2NvbnRlbnRMZW5ndGg9dC5sZW5ndGg7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlYWRlcnM9W107dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFJhbmdlTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25SZWNlaXZlRGF0YSh7YmVnaW46dCxjaHVuazplfSl9KSk7dGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKCh0LGUpPT57dGhpcy5fb25Qcm9ncmVzcyh7bG9hZGVkOnQsdG90YWw6ZX0pfSkpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcigodD0+e3RoaXMuX29uUmVjZWl2ZURhdGEoe2NodW5rOnR9KX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXIoKCgpPT57dGhpcy5fb25Qcm9ncmVzc2l2ZURvbmUoKX0pKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQudHJhbnNwb3J0UmVhZHkoKX1fb25SZWNlaXZlRGF0YSh0KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQuY2h1bmspLmJ1ZmZlcjtpZih2b2lkIDA9PT10LmJlZ2luKXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyP3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKGUpOnRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKGUpO2Vsc2V7Y29uc3Qgcz10aGlzLl9yYW5nZVJlYWRlcnMuc29tZSgoZnVuY3Rpb24ocyl7aWYocy5fYmVnaW4hPT10LmJlZ2luKXJldHVybiExO3MuX2VucXVldWUoZSk7cmV0dXJuITB9KSk7KDAsaS5hc3NlcnQpKHMsIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuIil9fWdldCBfcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5fbG9hZGVkPz8wfV9vblByb2dyZXNzKHQpe3ZvaWQgMD09PXQudG90YWw/dGhpcy5fcmFuZ2VSZWFkZXJzWzBdPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZH0pOnRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5vblByb2dyZXNzPy4oe2xvYWRlZDp0LmxvYWRlZCx0b3RhbDp0LnRvdGFsfSl9X29uUHJvZ3Jlc3NpdmVEb25lKCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LnByb2dyZXNzaXZlRG9uZSgpO3RoaXMuX3Byb2dyZXNzaXZlRG9uZT0hMH1fcmVtb3ZlUmFuZ2VSZWFkZXIodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlYWRlcnMuaW5kZXhPZih0KTtlPj0wJiZ0aGlzLl9yYW5nZVJlYWRlcnMuc3BsaWNlKGUsMSl9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkRhdGFUcmFuc3BvcnRTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rczt0aGlzLl9xdWV1ZWRDaHVua3M9bnVsbDtyZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcyx0LHRoaXMuX3Byb2dyZXNzaXZlRG9uZSx0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSl9Z2V0UmFuZ2VSZWFkZXIodCxlKXtpZihlPD10aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuIG51bGw7Y29uc3Qgcz1uZXcgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQucmVxdWVzdERhdGFSYW5nZSh0LGUpO3RoaXMuX3JhbmdlUmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpO3RoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpfX07Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscz0hMSxpPW51bGwpe3RoaXMuX3N0cmVhbT10O3RoaXMuX2RvbmU9c3x8ITE7dGhpcy5fZmlsZW5hbWU9KDAsbi5pc1BkZkZpbGUpKGkpP2k6bnVsbDt0aGlzLl9xdWV1ZWRDaHVua3M9ZXx8W107dGhpcy5fbG9hZGVkPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcXVldWVkQ2h1bmtzKXRoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RoO3RoaXMuX3JlcXVlc3RzPVtdO3RoaXMuX2hlYWRlcnNSZWFkeT1Qcm9taXNlLnJlc29sdmUoKTt0Ll9mdWxsUmVxdWVzdFJlYWRlcj10aGlzO3RoaXMub25Qcm9ncmVzcz1udWxsfV9lbnF1ZXVlKHQpe2lmKCF0aGlzLl9kb25lKXtpZih0aGlzLl9yZXF1ZXN0cy5sZW5ndGg+MCl7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KX1lbHNlIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO3RoaXMuX2xvYWRlZCs9dC5ieXRlTGVuZ3RofX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9zdHJlYW0uX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3N0cmVhbS5fY29udGVudExlbmd0aH1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfXByb2dyZXNzaXZlRG9uZSgpe3RoaXMuX2RvbmV8fCh0aGlzLl9kb25lPSEwKX19Y2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXt0aGlzLl9zdHJlYW09dDt0aGlzLl9iZWdpbj1lO3RoaXMuX2VuZD1zO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fZG9uZT0hMTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbH1fZW5xdWV1ZSh0KXtpZighdGhpcy5fZG9uZSl7aWYoMD09PXRoaXMuX3JlcXVlc3RzLmxlbmd0aCl0aGlzLl9xdWV1ZWRDaHVuaz10O2Vsc2V7dGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp0LGRvbmU6ITF9KTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTB9dGhpcy5fZG9uZT0hMDt0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpfX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fcXVldWVkQ2h1bmspe2NvbnN0IHQ9dGhpcy5fcXVldWVkQ2h1bms7dGhpcy5fcXVldWVkQ2h1bms9bnVsbDtyZXR1cm57dmFsdWU6dCxkb25lOiExfX1pZih0aGlzLl9kb25lKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07Y29uc3QgdD0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX3JlcXVlc3RzLnB1c2godCk7cmV0dXJuIHQucHJvbWlzZX1jYW5jZWwodCl7dGhpcy5fZG9uZT0hMDtmb3IoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cyl0LnJlc29sdmUoe3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk7dGhpcy5fcmVxdWVzdHMubGVuZ3RoPTA7dGhpcy5fc3RyZWFtLl9yZW1vdmVSYW5nZVJlYWRlcih0aGlzKX19fSwodCxlKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlhmYVRleHQ9dm9pZCAwO2NsYXNzIFhmYVRleHR7c3RhdGljIHRleHRDb250ZW50KHQpe2NvbnN0IGU9W10scz17aXRlbXM6ZSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKX07IWZ1bmN0aW9uIHdhbGsodCl7aWYoIXQpcmV0dXJuO2xldCBzPW51bGw7Y29uc3QgaT10Lm5hbWU7aWYoIiN0ZXh0Ij09PWkpcz10LnZhbHVlO2Vsc2V7aWYoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKXJldHVybjt0Py5hdHRyaWJ1dGVzPy50ZXh0Q29udGVudD9zPXQuYXR0cmlidXRlcy50ZXh0Q29udGVudDp0LnZhbHVlJiYocz10LnZhbHVlKX1udWxsIT09cyYmZS5wdXNoKHtzdHI6c30pO2lmKHQuY2hpbGRyZW4pZm9yKGNvbnN0IGUgb2YgdC5jaGlsZHJlbil3YWxrKGUpfSh0KTtyZXR1cm4gc31zdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpe3JldHVybiEoInRleHRhcmVhIj09PXR8fCJpbnB1dCI9PT10fHwib3B0aW9uIj09PXR8fCJzZWxlY3QiPT09dCl9fWUuWGZhVGV4dD1YZmFUZXh0fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5PWUuTm9kZUNhbnZhc0ZhY3Rvcnk9ZS5Ob2RlQ01hcFJlYWRlckZhY3Rvcnk9dm9pZCAwO3ZhciBpPXMoNyk7Y29uc3QgZmV0Y2hEYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUscyk9PntyZXF1aXJlKCJmcyIpLnJlYWRGaWxlKHQsKCh0LGkpPT57IXQmJmk/ZShuZXcgVWludDhBcnJheShpKSk6cyhuZXcgRXJyb3IodCkpfSkpfSkpfTtjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnl7X2NyZWF0ZUNhbnZhcyh0LGUpe3JldHVybiByZXF1aXJlKCJjYW52YXMiKS5jcmVhdGVDYW52YXModCxlKX19ZS5Ob2RlQ2FudmFzRmFjdG9yeT1Ob2RlQ2FudmFzRmFjdG9yeTtjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeXtfZmV0Y2hEYXRhKHQsZSl7cmV0dXJuIGZldGNoRGF0YSh0KS50aGVuKCh0PT4oe2NNYXBEYXRhOnQsY29tcHJlc3Npb25UeXBlOmV9KSkpfX1lLk5vZGVDTWFwUmVhZGVyRmFjdG9yeT1Ob2RlQ01hcFJlYWRlckZhY3Rvcnk7Y2xhc3MgTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IGV4dGVuZHMgaS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl7X2ZldGNoRGF0YSh0KXtyZXR1cm4gZmV0Y2hEYXRhKHQpfX1lLk5vZGVTdGFuZGFyZEZvbnREYXRhRmFjdG9yeT1Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXI9dm9pZCAwO3ZhciBpPXMoNSksbj1zKDEpLHI9cygyMiksYT1zKDIzKTtjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXJ7I2R0OyN1dD0hMTsjcHQ9dGhpcy5wb2ludGVydXAuYmluZCh0aGlzKTsjZ3Q9dGhpcy5wb2ludGVyZG93bi5iaW5kKHRoaXMpOyNtdD1uZXcgTWFwOyNmdD0hMTsjYnQ9ITE7I0F0O3N0YXRpYyBfaW5pdGlhbGl6ZWQ9ITE7Y29uc3RydWN0b3IodCl7aWYoIUFubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQpe0Fubm90YXRpb25FZGl0b3JMYXllci5faW5pdGlhbGl6ZWQ9ITA7ci5GcmVlVGV4dEVkaXRvci5pbml0aWFsaXplKHQubDEwbik7YS5JbmtFZGl0b3IuaW5pdGlhbGl6ZSh0LmwxMG4pfXQudWlNYW5hZ2VyLnJlZ2lzdGVyRWRpdG9yVHlwZXMoW3IuRnJlZVRleHRFZGl0b3IsYS5JbmtFZGl0b3JdKTt0aGlzLiNBdD10LnVpTWFuYWdlcjt0aGlzLmFubm90YXRpb25TdG9yYWdlPXQuYW5ub3RhdGlvblN0b3JhZ2U7dGhpcy5wYWdlSW5kZXg9dC5wYWdlSW5kZXg7dGhpcy5kaXY9dC5kaXY7dGhpcy4jZHQ9dC5hY2Nlc3NpYmlsaXR5TWFuYWdlcjt0aGlzLiNBdC5hZGRMYXllcih0aGlzKX11cGRhdGVUb29sYmFyKHQpe3RoaXMuI0F0LnVwZGF0ZVRvb2xiYXIodCl9dXBkYXRlTW9kZSh0PXRoaXMuI0F0LmdldE1vZGUoKSl7dGhpcy4jX3QoKTtpZih0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspe3RoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO3RoaXMuZGlzYWJsZUNsaWNrKCl9ZWxzZSB0aGlzLmVuYWJsZUNsaWNrKCk7dGhpcy4jQXQudW5zZWxlY3RBbGwoKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJmcmVlVGV4dEVkaXRpbmciLHQ9PT1uLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTt0aGlzLmRpdi5jbGFzc0xpc3QudG9nZ2xlKCJpbmtFZGl0aW5nIix0PT09bi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspfWFkZElua0VkaXRvcklmTmVlZGVkKHQpe2lmKCF0JiZ0aGlzLiNBdC5nZXRNb2RlKCkhPT1uLkFubm90YXRpb25FZGl0b3JUeXBlLklOSylyZXR1cm47aWYoIXQpZm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpaWYodC5pc0VtcHR5KCkpe3Quc2V0SW5CYWNrZ3JvdW5kKCk7cmV0dXJufXRoaXMuI3Z0KHtvZmZzZXRYOjAsb2Zmc2V0WTowfSkuc2V0SW5CYWNrZ3JvdW5kKCl9c2V0RWRpdGluZ1N0YXRlKHQpe3RoaXMuI0F0LnNldEVkaXRpbmdTdGF0ZSh0KX1hZGRDb21tYW5kcyh0KXt0aGlzLiNBdC5hZGRDb21tYW5kcyh0KX1lbmFibGUoKXt0aGlzLmRpdi5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIjtmb3IoY29uc3QgdCBvZiB0aGlzLiNtdC52YWx1ZXMoKSl0LmVuYWJsZUVkaXRpbmcoKX1kaXNhYmxlKCl7dGhpcy5kaXYuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSI7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5kaXNhYmxlRWRpdGluZygpfXNldEFjdGl2ZUVkaXRvcih0KXt0aGlzLiNBdC5nZXRBY3RpdmUoKSE9PXQmJnRoaXMuI0F0LnNldEFjdGl2ZUVkaXRvcih0KX1lbmFibGVDbGljaygpe3RoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNndCk7dGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNwdCl9ZGlzYWJsZUNsaWNrKCl7dGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHRoaXMuI2d0KTt0aGlzLmRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLHRoaXMuI3B0KX1hdHRhY2godCl7dGhpcy4jbXQuc2V0KHQuaWQsdCl9ZGV0YWNoKHQpe3RoaXMuI210LmRlbGV0ZSh0LmlkKTt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdil9cmVtb3ZlKHQpe3RoaXMuI0F0LnJlbW92ZUVkaXRvcih0KTt0aGlzLmRldGFjaCh0KTt0aGlzLmFubm90YXRpb25TdG9yYWdlLnJlbW92ZSh0LmlkKTt0LmRpdi5zdHlsZS5kaXNwbGF5PSJub25lIjtzZXRUaW1lb3V0KCgoKT0+e3QuZGl2LnN0eWxlLmRpc3BsYXk9IiI7dC5kaXYucmVtb3ZlKCk7dC5pc0F0dGFjaGVkVG9ET009ITE7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWRvY3VtZW50LmJvZHkmJnRoaXMuI0F0LmZvY3VzTWFpbkNvbnRhaW5lcigpfSksMCk7dGhpcy4jYnR8fHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpfSN5dCh0KXtpZih0LnBhcmVudCE9PXRoaXMpe3RoaXMuYXR0YWNoKHQpO3QucGFnZUluZGV4PXRoaXMucGFnZUluZGV4O3QucGFyZW50Py5kZXRhY2godCk7dC5wYXJlbnQ9dGhpcztpZih0LmRpdiYmdC5pc0F0dGFjaGVkVG9ET00pe3QuZGl2LnJlbW92ZSgpO3RoaXMuZGl2LmFwcGVuZCh0LmRpdil9fX1hZGQodCl7dGhpcy4jeXQodCk7dGhpcy4jQXQuYWRkRWRpdG9yKHQpO3RoaXMuYXR0YWNoKHQpO2lmKCF0LmlzQXR0YWNoZWRUb0RPTSl7Y29uc3QgZT10LnJlbmRlcigpO3RoaXMuZGl2LmFwcGVuZChlKTt0LmlzQXR0YWNoZWRUb0RPTT0hMH10aGlzLm1vdmVFZGl0b3JJbkRPTSh0KTt0Lm9uY2VBZGRlZCgpO3RoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KX1tb3ZlRWRpdG9ySW5ET00odCl7dGhpcy4jZHQ/Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsdC5kaXYsdC5jb250ZW50RGl2LCEwKX1hZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpe3QuaXNFbXB0eSgpfHx0aGlzLmFubm90YXRpb25TdG9yYWdlLmhhcyh0LmlkKXx8dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0LmlkLHQpfWFkZE9yUmVidWlsZCh0KXt0Lm5lZWRzVG9CZVJlYnVpbHQoKT90LnJlYnVpbGQoKTp0aGlzLmFkZCh0KX1hZGRBTmV3RWRpdG9yKHQpe3RoaXMuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuYWRkT3JSZWJ1aWxkKHQpfSx1bmRvOigpPT57dC5yZW1vdmUoKX0sbXVzdEV4ZWM6ITB9KX1hZGRVbmRvYWJsZUVkaXRvcih0KXt0aGlzLmFkZENvbW1hbmRzKHtjbWQ6KCk9Pnt0aGlzLmFkZE9yUmVidWlsZCh0KX0sdW5kbzooKT0+e3QucmVtb3ZlKCl9LG11c3RFeGVjOiExfSl9Z2V0TmV4dElkKCl7cmV0dXJuIHRoaXMuI0F0LmdldElkKCl9I1N0KHQpe3N3aXRjaCh0aGlzLiNBdC5nZXRNb2RlKCkpe2Nhc2Ugbi5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDpyZXR1cm4gbmV3IHIuRnJlZVRleHRFZGl0b3IodCk7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpyZXR1cm4gbmV3IGEuSW5rRWRpdG9yKHQpfXJldHVybiBudWxsfWRlc2VyaWFsaXplKHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6cmV0dXJuIHIuRnJlZVRleHRFZGl0b3IuZGVzZXJpYWxpemUodCx0aGlzKTtjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOnJldHVybiBhLklua0VkaXRvci5kZXNlcmlhbGl6ZSh0LHRoaXMpfXJldHVybiBudWxsfSN2dCh0KXtjb25zdCBlPXRoaXMuZ2V0TmV4dElkKCkscz10aGlzLiNTdCh7cGFyZW50OnRoaXMsaWQ6ZSx4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0pO3MmJnRoaXMuYWRkKHMpO3JldHVybiBzfXNldFNlbGVjdGVkKHQpe3RoaXMuI0F0LnNldFNlbGVjdGVkKHQpfXRvZ2dsZVNlbGVjdGVkKHQpe3RoaXMuI0F0LnRvZ2dsZVNlbGVjdGVkKHQpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuI0F0LmlzU2VsZWN0ZWQodCl9dW5zZWxlY3QodCl7dGhpcy4jQXQudW5zZWxlY3QodCl9cG9pbnRlcnVwKHQpe2NvbnN0IGU9aS5LZXlib2FyZE1hbmFnZXIucGxhdGZvcm0uaXNNYWM7aWYoISgwIT09dC5idXR0b258fHQuY3RybEtleSYmZSkmJnQudGFyZ2V0PT09dGhpcy5kaXYmJnRoaXMuI2Z0KXt0aGlzLiNmdD0hMTt0aGlzLiN1dD90aGlzLiN2dCh0KTp0aGlzLiN1dD0hMH19cG9pbnRlcmRvd24odCl7Y29uc3QgZT1pLktleWJvYXJkTWFuYWdlci5wbGF0Zm9ybS5pc01hYztpZigwIT09dC5idXR0b258fHQuY3RybEtleSYmZSlyZXR1cm47aWYodC50YXJnZXQhPT10aGlzLmRpdilyZXR1cm47dGhpcy4jZnQ9ITA7Y29uc3Qgcz10aGlzLiNBdC5nZXRBY3RpdmUoKTt0aGlzLiN1dD0hc3x8cy5pc0VtcHR5KCl9ZHJvcCh0KXtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKSxzPXRoaXMuI0F0LmdldEVkaXRvcihlKTtpZighcylyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO3QuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9Im1vdmUiO3RoaXMuI3l0KHMpO2NvbnN0IGk9dGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10LmNsaWVudFgtaS54LHI9dC5jbGllbnRZLWkueTtzLnRyYW5zbGF0ZShuLXMuc3RhcnRYLHItcy5zdGFydFkpO3RoaXMubW92ZUVkaXRvckluRE9NKHMpO3MuZGl2LmZvY3VzKCl9ZHJhZ292ZXIodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWRlc3Ryb3koKXt0aGlzLiNBdC5nZXRBY3RpdmUoKT8ucGFyZW50PT09dGhpcyYmdGhpcy4jQXQuc2V0QWN0aXZlRWRpdG9yKG51bGwpO2Zvcihjb25zdCB0IG9mIHRoaXMuI210LnZhbHVlcygpKXt0aGlzLiNkdD8ucmVtb3ZlUG9pbnRlckluVGV4dExheWVyKHQuY29udGVudERpdik7dC5pc0F0dGFjaGVkVG9ET009ITE7dC5kaXYucmVtb3ZlKCk7dC5wYXJlbnQ9bnVsbH10aGlzLmRpdj1udWxsO3RoaXMuI210LmNsZWFyKCk7dGhpcy4jQXQucmVtb3ZlTGF5ZXIodGhpcyl9I190KCl7dGhpcy4jYnQ9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jbXQudmFsdWVzKCkpdC5pc0VtcHR5KCkmJnQucmVtb3ZlKCk7dGhpcy4jYnQ9ITF9cmVuZGVyKHQpe3RoaXMudmlld3BvcnQ9dC52aWV3cG9ydDsoMCxpLmJpbmRFdmVudHMpKHRoaXMsdGhpcy5kaXYsWyJkcmFnb3ZlciIsImRyb3AiXSk7dGhpcy5zZXREaW1lbnNpb25zKCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jQXQuZ2V0RWRpdG9ycyh0aGlzLnBhZ2VJbmRleCkpdGhpcy5hZGQodCk7dGhpcy51cGRhdGVNb2RlKCl9dXBkYXRlKHQpe3RoaXMuI0F0LmNvbW1pdE9yUmVtb3ZlKCk7dGhpcy52aWV3cG9ydD10LnZpZXdwb3J0O3RoaXMuc2V0RGltZW5zaW9ucygpO3RoaXMudXBkYXRlTW9kZSgpfWdldCBzY2FsZUZhY3Rvcigpe3JldHVybiB0aGlzLnZpZXdwb3J0LnNjYWxlfWdldCBwYWdlRGltZW5zaW9ucygpe2NvbnN0W3QsZSxzLGldPXRoaXMudmlld3BvcnQudmlld0JveDtyZXR1cm5bcy10LGktZV19Z2V0IHZpZXdwb3J0QmFzZURpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQ7cmV0dXJuIHMlMTgwPT0wP1t0LGVdOltlLHRdfXNldERpbWVuc2lvbnMoKXtjb25zdHt3aWR0aDp0LGhlaWdodDplLHJvdGF0aW9uOnN9PXRoaXMudmlld3BvcnQsaT1zJTE4MCE9MCxuPU1hdGguZmxvb3IodCkrInB4IixyPU1hdGguZmxvb3IoZSkrInB4Ijt0aGlzLmRpdi5zdHlsZS53aWR0aD1pP3I6bjt0aGlzLmRpdi5zdHlsZS5oZWlnaHQ9aT9uOnI7dGhpcy5kaXYuc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLHMpfX1lLkFubm90YXRpb25FZGl0b3JMYXllcj1Bbm5vdGF0aW9uRWRpdG9yTGF5ZXJ9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5GcmVlVGV4dEVkaXRvcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNSkscj1zKDQpO2NsYXNzIEZyZWVUZXh0RWRpdG9yIGV4dGVuZHMgci5Bbm5vdGF0aW9uRWRpdG9yeyN4dD10aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKTsjRXQ9dGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpOyNDdD10aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcyk7I1B0PXRoaXMuZWRpdG9yRGl2S2V5ZG93bi5iaW5kKHRoaXMpOyNUdDsjd3Q9IiI7I2t0PWAke3RoaXMuaWR9LWVkaXRvcmA7I0Z0PSExOyNNdDtzdGF0aWMgX2ZyZWVUZXh0RGVmYXVsdENvbnRlbnQ9IiI7c3RhdGljIF9sMTBuUHJvbWlzZTtzdGF0aWMgX2ludGVybmFsUGFkZGluZz0wO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0Rm9udFNpemU9MTA7c3RhdGljIF9rZXlib2FyZE1hbmFnZXI9bmV3IG4uS2V5Ym9hcmRNYW5hZ2VyKFtbWyJjdHJsK0VudGVyIiwibWFjK21ldGErRW50ZXIiLCJFc2NhcGUiLCJtYWMrRXNjYXBlIl0sRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLmNvbW1pdE9yUmVtb3ZlXV0pO3N0YXRpYyBfdHlwZT0iZnJlZXRleHQiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6ImZyZWVUZXh0RWRpdG9yIn0pO3RoaXMuI1R0PXQuY29sb3J8fEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3J8fHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcjt0aGlzLiNNdD10LmZvbnRTaXplfHxGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplfXN0YXRpYyBpbml0aWFsaXplKHQpe3RoaXMuX2wxMG5Qcm9taXNlPW5ldyBNYXAoWyJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIsImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWwiXS5tYXAoKGU9PltlLHQuZ2V0KGUpXSkpKTtjb25zdCBlPWdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTt0aGlzLl9pbnRlcm5hbFBhZGRpbmc9cGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoIi0tZnJlZXRleHQtcGFkZGluZyIpKX1zdGF0aWMgdXBkYXRlRGVmYXVsdFBhcmFtcyh0LGUpe3N3aXRjaCh0KXtjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRTpGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SOkZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3I9ZX19dXBkYXRlUGFyYW1zKHQsZSl7c3dpdGNoKHQpe2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOnRoaXMuI1J0KGUpO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjp0aGlzLiNEdChlKX19c3RhdGljIGdldCBkZWZhdWx0UHJvcGVydGllc1RvVXBkYXRlKCl7cmV0dXJuW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZV0sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1IsRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvcnx8ci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLHRoaXMuI010XSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUix0aGlzLiNUdF1dfSNSdCh0KXtjb25zdCBzZXRGb250c2l6ZT10PT57dGhpcy5lZGl0b3JEaXYuc3R5bGUuZm9udFNpemU9YGNhbGMoJHt0fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3RoaXMudHJhbnNsYXRlKDAsLSh0LXRoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik7dGhpcy4jTXQ9dDt0aGlzLiNJdCgpfSxlPXRoaXMuI010O3RoaXMucGFyZW50LmFkZENvbW1hbmRzKHtjbWQ6KCk9PntzZXRGb250c2l6ZSh0KX0sdW5kbzooKT0+e3NldEZvbnRzaXplKGUpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy4jVHQ7dGhpcy5wYXJlbnQuYWRkQ29tbWFuZHMoe2NtZDooKT0+e3RoaXMuI1R0PXQ7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9dH0sdW5kbzooKT0+e3RoaXMuI1R0PWU7dGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3I9ZX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX0NPTE9SLG92ZXJ3cml0ZUlmU2FtZVR5cGU6ITAsa2VlcFVuZG86ITB9KX1nZXRJbml0aWFsVHJhbnNsYXRpb24oKXtyZXR1cm5bLUZyZWVUZXh0RWRpdG9yLl9pbnRlcm5hbFBhZGRpbmcqdGhpcy5wYXJlbnQuc2NhbGVGYWN0b3IsLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nK3RoaXMuI010KSp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcl19cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtudWxsIT09dGhpcy5kaXYmJih0aGlzLmlzQXR0YWNoZWRUb0RPTXx8dGhpcy5wYXJlbnQuYWRkKHRoaXMpKX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLmlzSW5FZGl0TW9kZSgpKXt0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO3RoaXMucGFyZW50LnVwZGF0ZVRvb2xiYXIoaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCk7c3VwZXIuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZSgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMDt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KX19ZGlzYWJsZUVkaXRNb2RlKCl7aWYodGhpcy5pc0luRWRpdE1vZGUoKSl7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LmFkZCgiZW5hYmxlZCIpO3RoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZT0hMTt0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdGhpcy4ja3QpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLiNQdCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuI0V0KTt0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLiN4dCk7dGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuI0N0KTt0aGlzLmRpdi5mb2N1cygpO3RoaXMuaXNFZGl0aW5nPSExO3RoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKCJmcmVlVGV4dEVkaXRpbmciKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3QudGFyZ2V0IT09dGhpcy5lZGl0b3JEaXYmJnRoaXMuZWRpdG9yRGl2LmZvY3VzKCl9b25jZUFkZGVkKCl7aWYoIXRoaXMud2lkdGgpe3RoaXMuZW5hYmxlRWRpdE1vZGUoKTt0aGlzLmVkaXRvckRpdi5mb2N1cygpfX1pc0VtcHR5KCl7cmV0dXJuIXRoaXMuZWRpdG9yRGl2fHwiIj09PXRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dC50cmltKCl9cmVtb3ZlKCl7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LmFkZCgiZnJlZVRleHRFZGl0aW5nIik7c3VwZXIucmVtb3ZlKCl9I090KCl7Y29uc3QgdD10aGlzLmVkaXRvckRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGl2Iik7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQ7Y29uc3QgZT1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdCB0PXMuZmlyc3RDaGlsZDsiI3RleHQiPT09dD8ubm9kZU5hbWU/ZS5wdXNoKHQuZGF0YSk6ZS5wdXNoKCIiKX1yZXR1cm4gZS5qb2luKCJcbiIpfSNJdCgpe2NvbnN0W3QsZV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9ucyxzPXRoaXMuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMud2lkdGg9cy53aWR0aC90O3RoaXMuaGVpZ2h0PXMuaGVpZ2h0L2V9Y29tbWl0KCl7c3VwZXIuY29tbWl0KCk7aWYoIXRoaXMuI0Z0KXt0aGlzLiNGdD0hMDt0aGlzLnBhcmVudC5hZGRVbmRvYWJsZUVkaXRvcih0aGlzKX10aGlzLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuI3d0PXRoaXMuI090KCkudHJpbUVuZCgpO3RoaXMuI0l0KCl9c2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKXtyZXR1cm4gdGhpcy5pc0luRWRpdE1vZGUoKX1kYmxjbGljayh0KXt0aGlzLmVuYWJsZUVkaXRNb2RlKCk7dGhpcy5lZGl0b3JEaXYuZm9jdXMoKX1rZXlkb3duKHQpe2lmKHQudGFyZ2V0PT09dGhpcy5kaXYmJiJFbnRlciI9PT10LmtleSl7dGhpcy5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZWRpdG9yRGl2LmZvY3VzKCl9fWVkaXRvckRpdktleWRvd24odCl7RnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsdCl9ZWRpdG9yRGl2Rm9jdXModCl7dGhpcy5pc0VkaXRpbmc9ITB9ZWRpdG9yRGl2Qmx1cih0KXt0aGlzLmlzRWRpdGluZz0hMX1lZGl0b3JEaXZJbnB1dCh0KXt0aGlzLnBhcmVudC5kaXYuY2xhc3NMaXN0LnRvZ2dsZSgiZnJlZVRleHRFZGl0aW5nIix0aGlzLmlzRW1wdHkoKSl9ZGlzYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJjb21tZW50Iik7dGhpcy5lZGl0b3JEaXYucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIpfWVuYWJsZUVkaXRpbmcoKXt0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZXh0Ym94Iik7dGhpcy5lZGl0b3JEaXYuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpbGluZSIsITApfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO3RoaXMuZWRpdG9yRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuZWRpdG9yRGl2LmNsYXNzTmFtZT0iaW50ZXJuYWwiO3RoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZSgiaWQiLHRoaXMuI2t0KTt0aGlzLmVuYWJsZUVkaXRpbmcoKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5lZGl0b3JEaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudCIpLnRoZW4oKHQ9PnRoaXMuZWRpdG9yRGl2Py5zZXRBdHRyaWJ1dGUoImRlZmF1bHQtY29udGVudCIsdCkpKTt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITA7Y29uc3R7c3R5bGU6c309dGhpcy5lZGl0b3JEaXY7cy5mb250U2l6ZT1gY2FsYygke3RoaXMuI010fXB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlgO3MuY29sb3I9dGhpcy4jVHQ7dGhpcy5kaXYuYXBwZW5kKHRoaXMuZWRpdG9yRGl2KTt0aGlzLm92ZXJsYXlEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoIm92ZXJsYXkiLCJlbmFibGVkIik7dGhpcy5kaXYuYXBwZW5kKHRoaXMub3ZlcmxheURpdik7KDAsbi5iaW5kRXZlbnRzKSh0aGlzLHRoaXMuZGl2LFsiZGJsY2xpY2siLCJrZXlkb3duIl0pO2lmKHRoaXMud2lkdGgpe2NvbnN0W3MsaV09dGhpcy5wYXJlbnQudmlld3BvcnRCYXNlRGltZW5zaW9uczt0aGlzLnNldEF0KHQqcyxlKmksdGhpcy53aWR0aCpzLHRoaXMuaGVpZ2h0KmkpO2Zvcihjb25zdCB0IG9mIHRoaXMuI3d0LnNwbGl0KCJcbiIpKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuYXBwZW5kKHQ/ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7dGhpcy5lZGl0b3JEaXYuYXBwZW5kKGUpfXRoaXMuZGl2LmRyYWdnYWJsZT0hMDt0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGU9ITF9ZWxzZXt0aGlzLmRpdi5kcmFnZ2FibGU9ITE7dGhpcy5lZGl0b3JEaXYuY29udGVudEVkaXRhYmxlPSEwfXJldHVybiB0aGlzLmRpdn1nZXQgY29udGVudERpdigpe3JldHVybiB0aGlzLmVkaXRvckRpdn1zdGF0aWMgZGVzZXJpYWxpemUodCxlKXtjb25zdCBzPXN1cGVyLmRlc2VyaWFsaXplKHQsZSk7cy4jTXQ9dC5mb250U2l6ZTtzLiNUdD1pLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO3MuI3d0PXQudmFsdWU7cmV0dXJuIHN9c2VyaWFsaXplKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIG51bGw7Y29uc3QgdD1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nKnRoaXMucGFyZW50LnNjYWxlRmFjdG9yLGU9dGhpcy5nZXRSZWN0KHQsdCkscz1yLkFubm90YXRpb25FZGl0b3IuX2NvbG9yTWFuYWdlci5jb252ZXJ0KGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yKTtyZXR1cm57YW5ub3RhdGlvblR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVCxjb2xvcjpzLGZvbnRTaXplOnRoaXMuI010LHZhbHVlOnRoaXMuI3d0LHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDplLHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLkZyZWVUZXh0RWRpdG9yPUZyZWVUZXh0RWRpdG9yfSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuSW5rRWRpdG9yPXZvaWQgMDtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiZml0Q3VydmUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLmZpdEN1cnZlfX0pO3ZhciBpPXMoMSksbj1zKDQpLHI9cygyNCksYT1zKDUpO2NvbnN0IG89MTY7Y2xhc3MgSW5rRWRpdG9yIGV4dGVuZHMgbi5Bbm5vdGF0aW9uRWRpdG9yeyNMdD0wOyNOdD0wOyNCdD0wOyNqdD10aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcyk7I1V0PXRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcyk7I3F0PXRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcyk7I1d0PXRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKTsjR3Q9ITE7I0h0PSExOyN6dD1udWxsOyNWdD1udWxsOyNYdD0wOyMkdD0wOyNZdD1udWxsO3N0YXRpYyBfZGVmYXVsdENvbG9yPW51bGw7c3RhdGljIF9kZWZhdWx0T3BhY2l0eT0xO3N0YXRpYyBfZGVmYXVsdFRoaWNrbmVzcz0xO3N0YXRpYyBfbDEwblByb21pc2U7c3RhdGljIF90eXBlPSJpbmsiO2NvbnN0cnVjdG9yKHQpe3N1cGVyKHsuLi50LG5hbWU6Imlua0VkaXRvciJ9KTt0aGlzLmNvbG9yPXQuY29sb3J8fG51bGw7dGhpcy50aGlja25lc3M9dC50aGlja25lc3N8fG51bGw7dGhpcy5vcGFjaXR5PXQub3BhY2l0eXx8bnVsbDt0aGlzLnBhdGhzPVtdO3RoaXMuYmV6aWVyUGF0aDJEPVtdO3RoaXMuY3VycmVudFBhdGg9W107dGhpcy5zY2FsZUZhY3Rvcj0xO3RoaXMudHJhbnNsYXRpb25YPXRoaXMudHJhbnNsYXRpb25ZPTA7dGhpcy54PTA7dGhpcy55PTB9c3RhdGljIGluaXRpYWxpemUodCl7dGhpcy5fbDEwblByb21pc2U9bmV3IE1hcChbImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiLCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIl0ubWFwKChlPT5bZSx0LmdldChlKV0pKSl9c3RhdGljIHVwZGF0ZURlZmF1bHRQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzPWU7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjpJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcj1lO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWTpJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5PWUvMTAwfX11cGRhdGVQYXJhbXModCxlKXtzd2l0Y2godCl7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6dGhpcy4jS3QoZSk7YnJlYWs7Y2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUjp0aGlzLiNEdChlKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6dGhpcy4jSnQoZSl9fXN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX0NPTE9SLElua0VkaXRvci5fZGVmYXVsdENvbG9yfHxuLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLE1hdGgucm91bmQoMTAwKklua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV19Z2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpe3JldHVybltbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLHRoaXMudGhpY2tuZXNzfHxJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUix0aGlzLmNvbG9yfHxJbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yXSxbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxNYXRoLnJvdW5kKDEwMCoodGhpcy5vcGFjaXR5Pz9JbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXX0jS3QodCl7Y29uc3QgZT10aGlzLnRoaWNrbmVzczt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy50aGlja25lc3M9dDt0aGlzLiNRdCgpfSx1bmRvOigpPT57dGhpcy50aGlja25lc3M9ZTt0aGlzLiNRdCgpfSxtdXN0RXhlYzohMCx0eXBlOmkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX1RISUNLTkVTUyxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0R0KHQpe2NvbnN0IGU9dGhpcy5jb2xvcjt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5jb2xvcj10O3RoaXMuI1p0KCl9LHVuZG86KCk9Pnt0aGlzLmNvbG9yPWU7dGhpcy4jWnQoKX0sbXVzdEV4ZWM6ITAsdHlwZTppLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9I0p0KHQpe3QvPTEwMDtjb25zdCBlPXRoaXMub3BhY2l0eTt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5vcGFjaXR5PXQ7dGhpcy4jWnQoKX0sdW5kbzooKT0+e3RoaXMub3BhY2l0eT1lO3RoaXMuI1p0KCl9LG11c3RFeGVjOiEwLHR5cGU6aS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSxvdmVyd3JpdGVJZlNhbWVUeXBlOiEwLGtlZXBVbmRvOiEwfSl9cmVidWlsZCgpe3N1cGVyLnJlYnVpbGQoKTtpZihudWxsIT09dGhpcy5kaXYpe2lmKCF0aGlzLmNhbnZhcyl7dGhpcy4jdGUoKTt0aGlzLiNlZSgpfWlmKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSl7dGhpcy5wYXJlbnQuYWRkKHRoaXMpO3RoaXMuI3NlKCl9dGhpcy4jUXQoKX19cmVtb3ZlKCl7aWYobnVsbCE9PXRoaXMuY2FudmFzKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5jb21taXQoKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5yZW1vdmUoKTt0aGlzLmNhbnZhcz1udWxsO3RoaXMuI1Z0LmRpc2Nvbm5lY3QoKTt0aGlzLiNWdD1udWxsO3N1cGVyLnJlbW92ZSgpfX1lbmFibGVFZGl0TW9kZSgpe2lmKCF0aGlzLiNHdCYmbnVsbCE9PXRoaXMuY2FudmFzKXtzdXBlci5lbmFibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hMTt0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy4jV3QpO3RoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsdGhpcy4jcXQpfX1kaXNhYmxlRWRpdE1vZGUoKXtpZih0aGlzLmlzSW5FZGl0TW9kZSgpJiZudWxsIT09dGhpcy5jYW52YXMpe3N1cGVyLmRpc2FibGVFZGl0TW9kZSgpO3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCk7dGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix0aGlzLiNXdCk7dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIix0aGlzLiNxdCl9fW9uY2VBZGRlZCgpe3RoaXMuZGl2LmRyYWdnYWJsZT0hdGhpcy5pc0VtcHR5KCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5wYXRocy5sZW5ndGh8fDE9PT10aGlzLnBhdGhzLmxlbmd0aCYmMD09PXRoaXMucGF0aHNbMF0ubGVuZ3RofSNpZSgpe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmUscm90YXRpb246c309dGhpcy5wYXJlbnQudmlld3BvcnQ7c3dpdGNoKHMpe2Nhc2UgOTA6cmV0dXJuWzAsdCx0LGVdO2Nhc2UgMTgwOnJldHVyblt0LGUsdCxlXTtjYXNlIDI3MDpyZXR1cm5bZSwwLHQsZV07ZGVmYXVsdDpyZXR1cm5bMCwwLHQsZV19fSNuZSgpe3RoaXMuY3R4LmxpbmVXaWR0aD10aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvci90aGlzLnNjYWxlRmFjdG9yO3RoaXMuY3R4LmxpbmVDYXA9InJvdW5kIjt0aGlzLmN0eC5saW5lSm9pbj0icm91bmQiO3RoaXMuY3R4Lm1pdGVyTGltaXQ9MTA7dGhpcy5jdHguc3Ryb2tlU3R5bGU9YCR7dGhpcy5jb2xvcn0keygwLGEub3BhY2l0eVRvSGV4KSh0aGlzLm9wYWNpdHkpfWB9I3JlKHQsZSl7dGhpcy5pc0VkaXRpbmc9ITA7aWYoIXRoaXMuI0h0KXt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMudGhpY2tuZXNzfHw9SW5rRWRpdG9yLl9kZWZhdWx0VGhpY2tuZXNzO3RoaXMuY29sb3J8fD1JbmtFZGl0b3IuX2RlZmF1bHRDb2xvcnx8bi5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yO3RoaXMub3BhY2l0eT8/PUlua0VkaXRvci5fZGVmYXVsdE9wYWNpdHl9dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTt0aGlzLiN6dD1udWxsO3RoaXMuI25lKCk7dGhpcy5jdHguYmVnaW5QYXRoKCk7dGhpcy5jdHgubW92ZVRvKHQsZSk7dGhpcy4jWXQ9KCk9PntpZih0aGlzLiNZdCl7aWYodGhpcy4jenQpe2lmKHRoaXMuaXNFbXB0eSgpKXt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO3RoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMud2lkdGgsdGhpcy5jYW52YXMuaGVpZ2h0KX1lbHNlIHRoaXMuI1p0KCk7dGhpcy5jdHgubGluZVRvKC4uLnRoaXMuI3p0KTt0aGlzLiN6dD1udWxsO3RoaXMuY3R4LnN0cm9rZSgpfXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy4jWXQpfX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLiNZdCl9I2FlKHQsZSl7Y29uc3RbcyxpXT10aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtpZih0IT09c3x8ZSE9PWkpe3RoaXMuY3VycmVudFBhdGgucHVzaChbdCxlXSk7dGhpcy4jenQ9W3QsZV19fSNvZSh0LGUpe3RoaXMuY3R4LmNsb3NlUGF0aCgpO3RoaXMuI1l0PW51bGw7dD1NYXRoLm1pbihNYXRoLm1heCh0LDApLHRoaXMuY2FudmFzLndpZHRoKTtlPU1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5jYW52YXMuaGVpZ2h0KTtjb25zdFtzLGldPXRoaXMuY3VycmVudFBhdGguYXQoLTEpO3Q9PT1zJiZlPT09aXx8dGhpcy5jdXJyZW50UGF0aC5wdXNoKFt0LGVdKTtsZXQgbjtpZigxIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpbj0oMCxyLmZpdEN1cnZlKSh0aGlzLmN1cnJlbnRQYXRoLDMwLG51bGwpO2Vsc2V7Y29uc3Qgcz1bdCxlXTtuPVtbcyxzLnNsaWNlKCkscy5zbGljZSgpLHNdXX1jb25zdCBhPUlua0VkaXRvci4jbGUobik7dGhpcy5jdXJyZW50UGF0aC5sZW5ndGg9MDt0aGlzLnBhcmVudC5hZGRDb21tYW5kcyh7Y21kOigpPT57dGhpcy5wYXRocy5wdXNoKG4pO3RoaXMuYmV6aWVyUGF0aDJELnB1c2goYSk7dGhpcy5yZWJ1aWxkKCl9LHVuZG86KCk9Pnt0aGlzLnBhdGhzLnBvcCgpO3RoaXMuYmV6aWVyUGF0aDJELnBvcCgpO2lmKDA9PT10aGlzLnBhdGhzLmxlbmd0aCl0aGlzLnJlbW92ZSgpO2Vsc2V7aWYoIXRoaXMuY2FudmFzKXt0aGlzLiN0ZSgpO3RoaXMuI2VlKCl9dGhpcy4jUXQoKX19LG11c3RFeGVjOiEwfSl9I1p0KCl7aWYodGhpcy5pc0VtcHR5KCkpe3RoaXMuI2NlKCk7cmV0dXJufXRoaXMuI25lKCk7Y29uc3R7Y2FudmFzOnQsY3R4OmV9PXRoaXM7ZS5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2UuY2xlYXJSZWN0KDAsMCx0LndpZHRoLHQuaGVpZ2h0KTt0aGlzLiNjZSgpO2Zvcihjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKWUuc3Ryb2tlKHQpfWNvbW1pdCgpe2lmKCF0aGlzLiNHdCl7c3VwZXIuY29tbWl0KCk7dGhpcy5pc0VkaXRpbmc9ITE7dGhpcy5kaXNhYmxlRWRpdE1vZGUoKTt0aGlzLnNldEluRm9yZWdyb3VuZCgpO3RoaXMuI0d0PSEwO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIik7dGhpcy4jUXQoITApO3RoaXMucGFyZW50LmFkZElua0VkaXRvcklmTmVlZGVkKCEwKTt0aGlzLnBhcmVudC5tb3ZlRWRpdG9ySW5ET00odGhpcyk7dGhpcy5kaXYuZm9jdXMoKX19Zm9jdXNpbih0KXtzdXBlci5mb2N1c2luKHQpO3RoaXMuZW5hYmxlRWRpdE1vZGUoKX1jYW52YXNQb2ludGVyZG93bih0KXtpZigwPT09dC5idXR0b24mJnRoaXMuaXNJbkVkaXRNb2RlKCkmJiF0aGlzLiNHdCl7dGhpcy5zZXRJbkZvcmVncm91bmQoKTsibW91c2UiIT09dC50eXBlJiZ0aGlzLmRpdi5mb2N1cygpO3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIix0aGlzLiNVdCk7dGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHRoaXMuI2p0KTt0aGlzLiNyZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX19Y2FudmFzUG9pbnRlcm1vdmUodCl7dC5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLiNhZSh0Lm9mZnNldFgsdC5vZmZzZXRZKX1jYW52YXNQb2ludGVydXAodCl7aWYoMD09PXQuYnV0dG9uJiZ0aGlzLmlzSW5FZGl0TW9kZSgpJiYwIT09dGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy4jaGUodCk7dGhpcy5zZXRJbkJhY2tncm91bmQoKX19Y2FudmFzUG9pbnRlcmxlYXZlKHQpe3RoaXMuI2hlKHQpO3RoaXMuc2V0SW5CYWNrZ3JvdW5kKCl9I2hlKHQpe3RoaXMuI29lKHQub2Zmc2V0WCx0Lm9mZnNldFkpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJsZWF2ZSIsdGhpcy4jVXQpO3RoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix0aGlzLiNqdCk7dGhpcy5wYXJlbnQuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0aGlzKX0jdGUoKXt0aGlzLmNhbnZhcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0aGlzLmNhbnZhcy53aWR0aD10aGlzLmNhbnZhcy5oZWlnaHQ9MDt0aGlzLmNhbnZhcy5jbGFzc05hbWU9Imlua0VkaXRvckNhbnZhcyI7SW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoImVkaXRvcl9pbmtfY2FudmFzX2FyaWFfbGFiZWwiKS50aGVuKCh0PT50aGlzLmNhbnZhcz8uc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSkpO3RoaXMuZGl2LmFwcGVuZCh0aGlzLmNhbnZhcyk7dGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKX0jZWUoKXtsZXQgdD1udWxsO3RoaXMuI1Z0PW5ldyBSZXNpemVPYnNlcnZlcigoZT0+e2NvbnN0IHM9ZVswXS5jb250ZW50UmVjdDtpZihzLndpZHRoJiZzLmhlaWdodCl7bnVsbCE9PXQmJmNsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5maXhEaW1zKCk7dD1udWxsfSksMTAwKTt0aGlzLnNldERpbWVuc2lvbnMocy53aWR0aCxzLmhlaWdodCl9fSkpO3RoaXMuI1Z0Lm9ic2VydmUodGhpcy5kaXYpfXJlbmRlcigpe2lmKHRoaXMuZGl2KXJldHVybiB0aGlzLmRpdjtsZXQgdCxlO2lmKHRoaXMud2lkdGgpe3Q9dGhpcy54O2U9dGhpcy55fXN1cGVyLnJlbmRlcigpO0lua0VkaXRvci5fbDEwblByb21pc2UuZ2V0KCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsIikudGhlbigodD0+dGhpcy5kaXY/LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCkpKTtjb25zdFtzLGksbixyXT10aGlzLiNpZSgpO3RoaXMuc2V0QXQocyxpLDAsMCk7dGhpcy5zZXREaW1zKG4scik7dGhpcy4jdGUoKTtpZih0aGlzLndpZHRoKXtjb25zdFtzLGldPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy5zZXRBdCh0KnMsZSppLHRoaXMud2lkdGgqcyx0aGlzLmhlaWdodCppKTt0aGlzLiNIdD0hMDt0aGlzLiNzZSgpO3RoaXMuc2V0RGltcyh0aGlzLndpZHRoKnMsdGhpcy5oZWlnaHQqaSk7dGhpcy4jWnQoKTt0aGlzLiNkZSgpO3RoaXMuZGl2LmNsYXNzTGlzdC5hZGQoImRpc2FibGVkIil9ZWxzZXt0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKCJlZGl0aW5nIik7dGhpcy5lbmFibGVFZGl0TW9kZSgpfXRoaXMuI2VlKCk7cmV0dXJuIHRoaXMuZGl2fSNzZSgpe2lmKCF0aGlzLiNIdClyZXR1cm47Y29uc3RbdCxlXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMuY2FudmFzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKnQpO3RoaXMuY2FudmFzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQqZSk7dGhpcy4jY2UoKX1zZXREaW1lbnNpb25zKHQsZSl7Y29uc3Qgcz1NYXRoLnJvdW5kKHQpLGk9TWF0aC5yb3VuZChlKTtpZih0aGlzLiNYdD09PXMmJnRoaXMuIyR0PT09aSlyZXR1cm47dGhpcy4jWHQ9czt0aGlzLiMkdD1pO3RoaXMuY2FudmFzLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7aWYodGhpcy4jTHQmJk1hdGguYWJzKHRoaXMuI0x0LXQvZSk+LjAxKXtlPU1hdGguY2VpbCh0L3RoaXMuI0x0KTt0aGlzLnNldERpbXModCxlKX1jb25zdFtuLHJdPXRoaXMucGFyZW50LnZpZXdwb3J0QmFzZURpbWVuc2lvbnM7dGhpcy53aWR0aD10L247dGhpcy5oZWlnaHQ9ZS9yO3RoaXMuI0d0JiZ0aGlzLiN1ZSh0LGUpO3RoaXMuI3NlKCk7dGhpcy4jWnQoKTt0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn0jdWUodCxlKXtjb25zdCBzPXRoaXMuI3BlKCksaT0odC1zKS90aGlzLiNCdCxuPShlLXMpL3RoaXMuI050O3RoaXMuc2NhbGVGYWN0b3I9TWF0aC5taW4oaSxuKX0jY2UoKXtjb25zdCB0PXRoaXMuI3BlKCkvMjt0aGlzLmN0eC5zZXRUcmFuc2Zvcm0odGhpcy5zY2FsZUZhY3RvciwwLDAsdGhpcy5zY2FsZUZhY3Rvcix0aGlzLnRyYW5zbGF0aW9uWCp0aGlzLnNjYWxlRmFjdG9yK3QsdGhpcy50cmFuc2xhdGlvblkqdGhpcy5zY2FsZUZhY3Rvcit0KX1zdGF0aWMjbGUodCl7Y29uc3QgZT1uZXcgUGF0aDJEO2ZvcihsZXQgcz0wLGk9dC5sZW5ndGg7czxpO3MrKyl7Y29uc3RbaSxuLHIsYV09dFtzXTswPT09cyYmZS5tb3ZlVG8oLi4uaSk7ZS5iZXppZXJDdXJ2ZVRvKG5bMF0sblsxXSxyWzBdLHJbMV0sYVswXSxhWzFdKX1yZXR1cm4gZX0jZ2UodCxlLHMsaSl7Y29uc3Qgbj1bXSxyPXRoaXMudGhpY2tuZXNzLzI7bGV0IGEsbztmb3IoY29uc3QgbCBvZiB0aGlzLnBhdGhzKXthPVtdO289W107Zm9yKGxldCBuPTAsYz1sLmxlbmd0aDtuPGM7bisrKXtjb25zdFtjLGgsZCx1XT1sW25dLHA9dCooY1swXStlKStyLGc9aS10KihjWzFdK3MpLXIsbT10KihoWzBdK2UpK3IsZj1pLXQqKGhbMV0rcyktcixiPXQqKGRbMF0rZSkrcixBPWktdCooZFsxXStzKS1yLF89dCoodVswXStlKStyLHY9aS10Kih1WzFdK3MpLXI7aWYoMD09PW4pe2EucHVzaChwLGcpO28ucHVzaChwLGcpfWEucHVzaChtLGYsYixBLF8sdik7dGhpcy4jbWUocCxnLG0sZixiLEEsXyx2LDQsbyl9bi5wdXNoKHtiZXppZXI6YSxwb2ludHM6b30pfXJldHVybiBufSNtZSh0LGUscyxpLG4scixhLG8sbCxjKXtpZih0aGlzLiNmZSh0LGUscyxpLG4scixhLG8pKWMucHVzaChhLG8pO2Vsc2V7Zm9yKGxldCBoPTE7aDxsLTE7aCsrKXtjb25zdCBkPWgvbCx1PTEtZDtsZXQgcD1kKnQrdSpzLGc9ZCplK3UqaSxtPWQqcyt1Km4sZj1kKmkrdSpyO3A9ZCpwK3UqbTtnPWQqZyt1KmY7bT1kKm0rdSooZCpuK3UqYSk7Zj1kKmYrdSooZCpyK3Uqbyk7cD1kKnArdSptO2c9ZCpnK3UqZjtjLnB1c2gocCxnKX1jLnB1c2goYSxvKX19I2ZlKHQsZSxzLGksbixyLGEsbyl7Y29uc3QgbD0oMypzLTIqdC1hKSoqMixjPSgzKmktMiplLW8pKioyLGg9KDMqbi10LTIqYSkqKjIsZD0oMypyLWUtMipvKSoqMjtyZXR1cm4gTWF0aC5tYXgobCxoKStNYXRoLm1heChjLGQpPD0xMH0jYmUoKXtsZXQgdD0xLzAsZT0tMS8wLHM9MS8wLG49LTEvMDtmb3IoY29uc3QgciBvZiB0aGlzLnBhdGhzKWZvcihjb25zdFthLG8sbCxjXW9mIHIpe2NvbnN0IHI9aS5VdGlsLmJlemllckJvdW5kaW5nQm94KC4uLmEsLi4ubywuLi5sLC4uLmMpO3Q9TWF0aC5taW4odCxyWzBdKTtzPU1hdGgubWluKHMsclsxXSk7ZT1NYXRoLm1heChlLHJbMl0pO249TWF0aC5tYXgobixyWzNdKX1yZXR1cm5bdCxzLGUsbl19I3BlKCl7cmV0dXJuIHRoaXMuI0d0P01hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyp0aGlzLnBhcmVudC5zY2FsZUZhY3Rvcik6MH0jUXQodD0hMSl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuO2lmKCF0aGlzLiNHdCl7dGhpcy4jWnQoKTtyZXR1cm59Y29uc3QgZT10aGlzLiNiZSgpLHM9dGhpcy4jcGUoKTt0aGlzLiNCdD1NYXRoLm1heChvLGVbMl0tZVswXSk7dGhpcy4jTnQ9TWF0aC5tYXgobyxlWzNdLWVbMV0pO2NvbnN0IGk9TWF0aC5jZWlsKHMrdGhpcy4jQnQqdGhpcy5zY2FsZUZhY3Rvciksbj1NYXRoLmNlaWwocyt0aGlzLiNOdCp0aGlzLnNjYWxlRmFjdG9yKSxbcixhXT10aGlzLnBhcmVudC52aWV3cG9ydEJhc2VEaW1lbnNpb25zO3RoaXMud2lkdGg9aS9yO3RoaXMuaGVpZ2h0PW4vYTt0aGlzLiNMdD1pL247dGhpcy4jZGUoKTtjb25zdCBsPXRoaXMudHJhbnNsYXRpb25YLGM9dGhpcy50cmFuc2xhdGlvblk7dGhpcy50cmFuc2xhdGlvblg9LWVbMF07dGhpcy50cmFuc2xhdGlvblk9LWVbMV07dGhpcy4jc2UoKTt0aGlzLiNadCgpO3RoaXMuI1h0PWk7dGhpcy4jJHQ9bjt0aGlzLnNldERpbXMoaSxuKTtjb25zdCBoPXQ/cy90aGlzLnNjYWxlRmFjdG9yLzI6MDt0aGlzLnRyYW5zbGF0ZShsLXRoaXMudHJhbnNsYXRpb25YLWgsYy10aGlzLnRyYW5zbGF0aW9uWS1oKX0jZGUoKXtjb25zdHtzdHlsZTp0fT10aGlzLmRpdjtpZih0aGlzLiNMdD49MSl7dC5taW5IZWlnaHQ9IjE2cHgiO3QubWluV2lkdGg9YCR7TWF0aC5yb3VuZCh0aGlzLiNMdCpvKX1weGB9ZWxzZXt0Lm1pbldpZHRoPSIxNnB4Ijt0Lm1pbkhlaWdodD1gJHtNYXRoLnJvdW5kKG8vdGhpcy4jTHQpfXB4YH19c3RhdGljIGRlc2VyaWFsaXplKHQsZSl7Y29uc3Qgcz1zdXBlci5kZXNlcmlhbGl6ZSh0LGUpO3MudGhpY2tuZXNzPXQudGhpY2tuZXNzO3MuY29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvciguLi50LmNvbG9yKTtzLm9wYWNpdHk9dC5vcGFjaXR5O2NvbnN0W24scl09ZS5wYWdlRGltZW5zaW9ucyxhPXMud2lkdGgqbixsPXMuaGVpZ2h0KnIsYz1lLnNjYWxlRmFjdG9yLGg9dC50aGlja25lc3MvMjtzLiNMdD1hL2w7cy4jR3Q9ITA7cy4jWHQ9TWF0aC5yb3VuZChhKTtzLiMkdD1NYXRoLnJvdW5kKGwpO2Zvcihjb25zdHtiZXppZXI6ZX1vZiB0LnBhdGhzKXtjb25zdCB0PVtdO3MucGF0aHMucHVzaCh0KTtsZXQgaT1jKihlWzBdLWgpLG49YyoobC1lWzFdLWgpO2ZvcihsZXQgcz0yLHI9ZS5sZW5ndGg7czxyO3MrPTYpe2NvbnN0IHI9YyooZVtzXS1oKSxhPWMqKGwtZVtzKzFdLWgpLG89YyooZVtzKzJdLWgpLGQ9YyoobC1lW3MrM10taCksdT1jKihlW3MrNF0taCkscD1jKihsLWVbcys1XS1oKTt0LnB1c2goW1tpLG5dLFtyLGFdLFtvLGRdLFt1LHBdXSk7aT11O249cH1jb25zdCByPXRoaXMuI2xlKHQpO3MuYmV6aWVyUGF0aDJELnB1c2gocil9Y29uc3QgZD1zLiNiZSgpO3MuI0J0PU1hdGgubWF4KG8sZFsyXS1kWzBdKTtzLiNOdD1NYXRoLm1heChvLGRbM10tZFsxXSk7cy4jdWUoYSxsKTtyZXR1cm4gc31zZXJpYWxpemUoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZ2V0UmVjdCgwLDApLGU9dGhpcy5yb3RhdGlvbiUxODA9PTA/dFszXS10WzFdOnRbMl0tdFswXSxzPW4uQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO3JldHVybnthbm5vdGF0aW9uVHlwZTppLkFubm90YXRpb25FZGl0b3JUeXBlLklOSyxjb2xvcjpzLHRoaWNrbmVzczp0aGlzLnRoaWNrbmVzcyxvcGFjaXR5OnRoaXMub3BhY2l0eSxwYXRoczp0aGlzLiNnZSh0aGlzLnNjYWxlRmFjdG9yL3RoaXMucGFyZW50LnNjYWxlRmFjdG9yLHRoaXMudHJhbnNsYXRpb25YLHRoaXMudHJhbnNsYXRpb25ZLGUpLHBhZ2VJbmRleDp0aGlzLnBhcmVudC5wYWdlSW5kZXgscmVjdDp0LHJvdGF0aW9uOnRoaXMucm90YXRpb259fX1lLklua0VkaXRvcj1JbmtFZGl0b3J9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5maXRDdXJ2ZT12b2lkIDA7Y29uc3QgaT1zKDI1KTtlLmZpdEN1cnZlPWl9LHQ9PntmdW5jdGlvbiBmaXRDdWJpYyh0LGUscyxpLG4pe3ZhciByLGEsbyxsLGMsaCxkLHUscCxnLG0sZixiO2lmKDI9PT10Lmxlbmd0aCl7Zj1tYXRocy52ZWN0b3JMZW4obWF0aHMuc3VidHJhY3QodFswXSx0WzFdKSkvMztyZXR1cm5bcj1bdFswXSxtYXRocy5hZGRBcnJheXModFswXSxtYXRocy5tdWxJdGVtcyhlLGYpKSxtYXRocy5hZGRBcnJheXModFsxXSxtYXRocy5tdWxJdGVtcyhzLGYpKSx0WzFdXV19YT1mdW5jdGlvbiBjaG9yZExlbmd0aFBhcmFtZXRlcml6ZSh0KXt2YXIgZSxzLGksbj1bXTt0LmZvckVhY2goKCh0LHIpPT57ZT1yP3MrbWF0aHMudmVjdG9yTGVuKG1hdGhzLnN1YnRyYWN0KHQsaSkpOjA7bi5wdXNoKGUpO3M9ZTtpPXR9KSk7cmV0dXJuIG49bi5tYXAoKHQ9PnQvcykpfSh0KTtbcixsLGhdPWdlbmVyYXRlQW5kUmVwb3J0KHQsYSxhLGUscyxuKTtpZigwPT09bHx8bDxpKXJldHVybltyXTtpZihsPGkqaSl7bz1hO2M9bDtkPWg7Zm9yKGI9MDtiPDIwO2IrKyl7bz1yZXBhcmFtZXRlcml6ZShyLHQsbyk7W3IsbCxoXT1nZW5lcmF0ZUFuZFJlcG9ydCh0LGEsbyxlLHMsbik7aWYobDxpKXJldHVybltyXTtpZihoPT09ZCl7bGV0IHQ9bC9jO2lmKHQ+Ljk5OTkmJnQ8MS4wMDAxKWJyZWFrfWM9bDtkPWh9fW09W107aWYoKHU9bWF0aHMuc3VidHJhY3QodFtoLTFdLHRbaCsxXSkpLmV2ZXJ5KCh0PT4wPT09dCkpKXt1PW1hdGhzLnN1YnRyYWN0KHRbaC0xXSx0W2hdKTtbdVswXSx1WzFdXT1bLXVbMV0sdVswXV19cD1tYXRocy5ub3JtYWxpemUodSk7Zz1tYXRocy5tdWxJdGVtcyhwLC0xKTtyZXR1cm4gbT0obT1tLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKDAsaCsxKSxlLHAsaSxuKSkpLmNvbmNhdChmaXRDdWJpYyh0LnNsaWNlKGgpLGcscyxpLG4pKX1mdW5jdGlvbiBnZW5lcmF0ZUFuZFJlcG9ydCh0LGUscyxpLG4scil7dmFyIGEsbyxsO2E9ZnVuY3Rpb24gZ2VuZXJhdGVCZXppZXIodCxlLHMsaSl7dmFyIG4scixhLG8sbCxjLGgsZCx1LHAsZyxtLGYsYixBLF8sdix5PXRbMF0sUz10W3QubGVuZ3RoLTFdO249W3ksbnVsbCxudWxsLFNdO3I9bWF0aHMuemVyb3NfWHgyeDIoZS5sZW5ndGgpO2ZvcihmPTAsYj1lLmxlbmd0aDtmPGI7ZisrKXt2PTEtKF89ZVtmXSk7KGE9cltmXSlbMF09bWF0aHMubXVsSXRlbXMocywzKl8qKHYqdikpO2FbMV09bWF0aHMubXVsSXRlbXMoaSwzKnYqKF8qXykpfW89W1swLDBdLFswLDBdXTtsPVswLDBdO2ZvcihmPTAsYj10Lmxlbmd0aDtmPGI7ZisrKXtfPWVbZl07YT1yW2ZdO29bMF1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMF0pO29bMF1bMV0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMF0rPW1hdGhzLmRvdChhWzBdLGFbMV0pO29bMV1bMV0rPW1hdGhzLmRvdChhWzFdLGFbMV0pO0E9bWF0aHMuc3VidHJhY3QodFtmXSxiZXppZXIucShbeSx5LFMsU10sXykpO2xbMF0rPW1hdGhzLmRvdChhWzBdLEEpO2xbMV0rPW1hdGhzLmRvdChhWzFdLEEpfWM9b1swXVswXSpvWzFdWzFdLW9bMV1bMF0qb1swXVsxXTtoPW9bMF1bMF0qbFsxXS1vWzFdWzBdKmxbMF07ZD1sWzBdKm9bMV1bMV0tbFsxXSpvWzBdWzFdO3U9MD09PWM/MDpkL2M7cD0wPT09Yz8wOmgvYzttPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdCh5LFMpKTtpZih1PChnPTFlLTYqbSl8fHA8Zyl7blsxXT1tYXRocy5hZGRBcnJheXMoeSxtYXRocy5tdWxJdGVtcyhzLG0vMykpO25bMl09bWF0aHMuYWRkQXJyYXlzKFMsbWF0aHMubXVsSXRlbXMoaSxtLzMpKX1lbHNle25bMV09bWF0aHMuYWRkQXJyYXlzKHksbWF0aHMubXVsSXRlbXMocyx1KSk7blsyXT1tYXRocy5hZGRBcnJheXMoUyxtYXRocy5tdWxJdGVtcyhpLHApKX1yZXR1cm4gbn0odCxzLGksbik7W28sbF09ZnVuY3Rpb24gY29tcHV0ZU1heEVycm9yKHQsZSxzKXt2YXIgaSxuLHIsYSxvLGwsYyxoO249MDtyPU1hdGguZmxvb3IodC5sZW5ndGgvMik7Y29uc3QgZD1tYXBUdG9SZWxhdGl2ZURpc3RhbmNlcyhlLDEwKTtmb3Iobz0wLGw9dC5sZW5ndGg7bzxsO28rKyl7Yz10W29dO2g9ZmluZF90KGUsc1tvXSxkLDEwKTtpZigoaT0oYT1tYXRocy5zdWJ0cmFjdChiZXppZXIucShlLGgpLGMpKVswXSphWzBdK2FbMV0qYVsxXSk+bil7bj1pO3I9b319cmV0dXJuW24scl19KHQsYSxlKTtyJiZyKHtiZXo6YSxwb2ludHM6dCxwYXJhbXM6ZSxtYXhFcnI6byxtYXhQb2ludDpsfSk7cmV0dXJuW2EsbyxsXX1mdW5jdGlvbiByZXBhcmFtZXRlcml6ZSh0LGUscyl7cmV0dXJuIHMubWFwKCgocyxpKT0+bmV3dG9uUmFwaHNvblJvb3RGaW5kKHQsZVtpXSxzKSkpfWZ1bmN0aW9uIG5ld3RvblJhcGhzb25Sb290RmluZCh0LGUscyl7dmFyIGk9bWF0aHMuc3VidHJhY3QoYmV6aWVyLnEodCxzKSxlKSxuPWJlemllci5xcHJpbWUodCxzKSxyPW1hdGhzLm11bE1hdHJpeChpLG4pLGE9bWF0aHMuc3VtKG1hdGhzLnNxdWFyZUl0ZW1zKG4pKSsyKm1hdGhzLm11bE1hdHJpeChpLGJlemllci5xcHJpbWVwcmltZSh0LHMpKTtyZXR1cm4gMD09PWE/czpzLXIvYX12YXIgbWFwVHRvUmVsYXRpdmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHMsaT1bMF0sbj10WzBdLHI9MCxhPTE7YTw9ZTthKyspe3M9YmV6aWVyLnEodCxhL2UpO3IrPW1hdGhzLnZlY3RvckxlbihtYXRocy5zdWJ0cmFjdChzLG4pKTtpLnB1c2gocik7bj1zfXJldHVybiBpPWkubWFwKCh0PT50L3IpKX07ZnVuY3Rpb24gZmluZF90KHQsZSxzLGkpe2lmKGU8MClyZXR1cm4gMDtpZihlPjEpcmV0dXJuIDE7Zm9yKHZhciBuLHIsYSxvLGw9MTtsPD1pO2wrKylpZihlPD1zW2xdKXthPShsLTEpL2k7cj1sL2k7bz0oZS0obj1zW2wtMV0pKS8oc1tsXS1uKSooci1hKSthO2JyZWFrfXJldHVybiBvfWZ1bmN0aW9uIGNyZWF0ZVRhbmdlbnQodCxlKXtyZXR1cm4gbWF0aHMubm9ybWFsaXplKG1hdGhzLnN1YnRyYWN0KHQsZSkpfWNsYXNzIG1hdGhze3N0YXRpYyB6ZXJvc19YeDJ4Mih0KXtmb3IodmFyIGU9W107dC0tOyllLnB1c2goWzAsMF0pO3JldHVybiBlfXN0YXRpYyBtdWxJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dCplKSl9c3RhdGljIG11bE1hdHJpeCh0LGUpe3JldHVybiB0LnJlZHVjZSgoKHQscyxpKT0+dCtzKmVbaV0pLDApfXN0YXRpYyBzdWJ0cmFjdCh0LGUpe3JldHVybiB0Lm1hcCgoKHQscyk9PnQtZVtzXSkpfXN0YXRpYyBhZGRBcnJheXModCxlKXtyZXR1cm4gdC5tYXAoKCh0LHMpPT50K2Vbc10pKX1zdGF0aWMgYWRkSXRlbXModCxlKXtyZXR1cm4gdC5tYXAoKHQ9PnQrZSkpfXN0YXRpYyBzdW0odCl7cmV0dXJuIHQucmVkdWNlKCgodCxlKT0+dCtlKSl9c3RhdGljIGRvdCh0LGUpe3JldHVybiBtYXRocy5tdWxNYXRyaXgodCxlKX1zdGF0aWMgdmVjdG9yTGVuKHQpe3JldHVybiBNYXRoLmh5cG90KC4uLnQpfXN0YXRpYyBkaXZJdGVtcyh0LGUpe3JldHVybiB0Lm1hcCgodD0+dC9lKSl9c3RhdGljIHNxdWFyZUl0ZW1zKHQpe3JldHVybiB0Lm1hcCgodD0+dCp0KSl9c3RhdGljIG5vcm1hbGl6ZSh0KXtyZXR1cm4gdGhpcy5kaXZJdGVtcyh0LHRoaXMudmVjdG9yTGVuKHQpKX19Y2xhc3MgYmV6aWVye3N0YXRpYyBxKHQsZSl7dmFyIHM9MS1lLGk9bWF0aHMubXVsSXRlbXModFswXSxzKnMqcyksbj1tYXRocy5tdWxJdGVtcyh0WzFdLDMqcypzKmUpLHI9bWF0aHMubXVsSXRlbXModFsyXSwzKnMqZSplKSxhPW1hdGhzLm11bEl0ZW1zKHRbM10sZSplKmUpO3JldHVybiBtYXRocy5hZGRBcnJheXMobWF0aHMuYWRkQXJyYXlzKGksbiksbWF0aHMuYWRkQXJyYXlzKHIsYSkpfXN0YXRpYyBxcHJpbWUodCxlKXt2YXIgcz0xLWUsaT1tYXRocy5tdWxJdGVtcyhtYXRocy5zdWJ0cmFjdCh0WzFdLHRbMF0pLDMqcypzKSxuPW1hdGhzLm11bEl0ZW1zKG1hdGhzLnN1YnRyYWN0KHRbMl0sdFsxXSksNipzKmUpLHI9bWF0aHMubXVsSXRlbXMobWF0aHMuc3VidHJhY3QodFszXSx0WzJdKSwzKmUqZSk7cmV0dXJuIG1hdGhzLmFkZEFycmF5cyhtYXRocy5hZGRBcnJheXMoaSxuKSxyKX1zdGF0aWMgcXByaW1lcHJpbWUodCxlKXtyZXR1cm4gbWF0aHMuYWRkQXJyYXlzKG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzJdLG1hdGhzLm11bEl0ZW1zKHRbMV0sMikpLHRbMF0pLDYqKDEtZSkpLG1hdGhzLm11bEl0ZW1zKG1hdGhzLmFkZEFycmF5cyhtYXRocy5zdWJ0cmFjdCh0WzNdLG1hdGhzLm11bEl0ZW1zKHRbMl0sMikpLHRbMV0pLDYqZSkpfX10LmV4cG9ydHM9ZnVuY3Rpb24gZml0Q3VydmUodCxlLHMpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBhcnJheSIpO3QuZm9yRWFjaCgoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLnNvbWUoKHQ9PiJudW1iZXIiIT10eXBlb2YgdCkpfHxlLmxlbmd0aCE9PXRbMF0ubGVuZ3RoKXRocm93IEVycm9yKCJFYWNoIHBvaW50IHNob3VsZCBiZSBhbiBhcnJheSBvZiBudW1iZXJzLiBFYWNoIHBvaW50IHNob3VsZCBoYXZlIHRoZSBzYW1lIGFtb3VudCBvZiBudW1iZXJzLiIpfSkpO2lmKCh0PXQuZmlsdGVyKCgoZSxzKT0+MD09PXN8fCFlLmV2ZXJ5KCgoZSxpKT0+ZT09PXRbcy0xXVtpXSkpKSkpLmxlbmd0aDwyKXJldHVybltdO2NvbnN0IGk9dC5sZW5ndGgsbj1jcmVhdGVUYW5nZW50KHRbMV0sdFswXSkscj1jcmVhdGVUYW5nZW50KHRbaS0yXSx0W2ktMV0pO3JldHVybiBmaXRDdWJpYyh0LG4scixlLHMpfTt0LmV4cG9ydHMuZml0Q3ViaWM9Zml0Q3ViaWM7dC5leHBvcnRzLmNyZWF0ZVRhbmdlbnQ9Y3JlYXRlVGFuZ2VudH0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLkFubm90YXRpb25MYXllcj12b2lkIDA7dmFyIGk9cygxKSxuPXMoNikscj1zKDMpLGE9cygyNyksbz1zKDI4KTtjb25zdCBsPTFlMyxjPW5ldyBXZWFrU2V0O2Z1bmN0aW9uIGdldFJlY3REaW1zKHQpe3JldHVybnt3aWR0aDp0WzJdLXRbMF0saGVpZ2h0OnRbM10tdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5e3N0YXRpYyBjcmVhdGUodCl7c3dpdGNoKHQuZGF0YS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBpLkFubm90YXRpb25UeXBlLkxJTks6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlRFWFQ6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLldJREdFVDpzd2l0Y2godC5kYXRhLmZpZWxkVHlwZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJCdG4iOnJldHVybiB0LmRhdGEucmFkaW9CdXR0b24/bmV3IFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk6dC5kYXRhLmNoZWNrQm94P25ldyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpOm5ldyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KX1yZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkZSRUVURVhUOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuTElORTpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVQVJFOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNJUkNMRTpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZTElORTpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkNBUkVUOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuSU5LOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLlBPTFlHT046cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQodCk7Y2FzZSBpLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVDpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5VTkRFUkxJTkU6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1FVSUdHTFk6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5TVFJJS0VPVVQ6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uRWxlbWVudCh0KTtjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RBTVA6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb25FbGVtZW50KHQpO2Nhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVDpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbkVsZW1lbnQodCk7ZGVmYXVsdDpyZXR1cm4gbmV3IEFubm90YXRpb25FbGVtZW50KHQpfX19Y2xhc3MgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCx7aXNSZW5kZXJhYmxlOmU9ITEsaWdub3JlQm9yZGVyOnM9ITEsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6aT0hMX09e30pe3RoaXMuaXNSZW5kZXJhYmxlPWU7dGhpcy5kYXRhPXQuZGF0YTt0aGlzLmxheWVyPXQubGF5ZXI7dGhpcy5wYWdlPXQucGFnZTt0aGlzLnZpZXdwb3J0PXQudmlld3BvcnQ7dGhpcy5saW5rU2VydmljZT10LmxpbmtTZXJ2aWNlO3RoaXMuZG93bmxvYWRNYW5hZ2VyPXQuZG93bmxvYWRNYW5hZ2VyO3RoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoPXQuaW1hZ2VSZXNvdXJjZXNQYXRoO3RoaXMucmVuZGVyRm9ybXM9dC5yZW5kZXJGb3Jtczt0aGlzLnN2Z0ZhY3Rvcnk9dC5zdmdGYWN0b3J5O3RoaXMuYW5ub3RhdGlvblN0b3JhZ2U9dC5hbm5vdGF0aW9uU3RvcmFnZTt0aGlzLmVuYWJsZVNjcmlwdGluZz10LmVuYWJsZVNjcmlwdGluZzt0aGlzLmhhc0pTQWN0aW9ucz10Lmhhc0pTQWN0aW9uczt0aGlzLl9maWVsZE9iamVjdHM9dC5maWVsZE9iamVjdHM7dGhpcy5fbW91c2VTdGF0ZT10Lm1vdXNlU3RhdGU7ZSYmKHRoaXMuY29udGFpbmVyPXRoaXMuX2NyZWF0ZUNvbnRhaW5lcihzKSk7aSYmKHRoaXMucXVhZHJpbGF0ZXJhbHM9dGhpcy5fY3JlYXRlUXVhZHJpbGF0ZXJhbHMocykpfV9jcmVhdGVDb250YWluZXIodD0hMSl7Y29uc3QgZT10aGlzLmRhdGEscz10aGlzLnBhZ2Usbj10aGlzLnZpZXdwb3J0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIpLHt3aWR0aDphLGhlaWdodDpvfT1nZXRSZWN0RGltcyhlLnJlY3QpLFtsLGMsaCxkXT1uLnZpZXdCb3gsdT1oLWwscD1kLWM7ci5zZXRBdHRyaWJ1dGUoImRhdGEtYW5ub3RhdGlvbi1pZCIsZS5pZCk7Y29uc3QgZz1pLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLHMudmlld1szXS1lLnJlY3RbMV0rcy52aWV3WzFdLGUucmVjdFsyXSxzLnZpZXdbM10tZS5yZWN0WzNdK3Mudmlld1sxXV0pO2lmKCF0JiZlLmJvcmRlclN0eWxlLndpZHRoPjApe3Iuc3R5bGUuYm9yZGVyV2lkdGg9YCR7ZS5ib3JkZXJTdHlsZS53aWR0aH1weGA7Y29uc3QgdD1lLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMscz1lLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO2lmKHQ+MHx8cz4wKXtjb25zdCBlPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke3N9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9ZX1lbHNlIGlmKHRoaXMgaW5zdGFuY2VvZiBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KXtjb25zdCB0PWBjYWxjKCR7YX1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYygke299cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5zdHlsZS5ib3JkZXJSYWRpdXM9dH1zd2l0Y2goZS5ib3JkZXJTdHlsZS5zdHlsZSl7Y2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ6ci5zdHlsZS5ib3JkZXJTdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpyLnN0eWxlLmJvcmRlclN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkJFVkVMRUQ6KDAsaS53YXJuKSgiVW5pbXBsZW1lbnRlZCBib3JkZXIgc3R5bGU6IGJldmVsZWQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDooMCxpLndhcm4pKCJVbmltcGxlbWVudGVkIGJvcmRlciBzdHlsZTogaW5zZXQiKTticmVhaztjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkU6ci5zdHlsZS5ib3JkZXJCb3R0b21TdHlsZT0ic29saWQifWNvbnN0IG49ZS5ib3JkZXJDb2xvcnx8bnVsbDtuP3Iuc3R5bGUuYm9yZGVyQ29sb3I9aS5VdGlsLm1ha2VIZXhDb2xvcigwfG5bMF0sMHxuWzFdLDB8blsyXSk6ci5zdHlsZS5ib3JkZXJXaWR0aD0wfXIuc3R5bGUubGVmdD0xMDAqKGdbMF0tbCkvdSsiJSI7ci5zdHlsZS50b3A9MTAwKihnWzFdLWMpL3ArIiUiO2NvbnN0e3JvdGF0aW9uOm19PWU7aWYoZS5oYXNPd25DYW52YXN8fDA9PT1tKXtyLnN0eWxlLndpZHRoPTEwMCphL3UrIiUiO3Iuc3R5bGUuaGVpZ2h0PTEwMCpvL3ArIiUifWVsc2UgdGhpcy5zZXRSb3RhdGlvbihtLHIpO3JldHVybiByfXNldFJvdGF0aW9uKHQsZT10aGlzLmNvbnRhaW5lcil7Y29uc3RbcyxpLG4scl09dGhpcy52aWV3cG9ydC52aWV3Qm94LGE9bi1zLG89ci1pLHt3aWR0aDpsLGhlaWdodDpjfT1nZXRSZWN0RGltcyh0aGlzLmRhdGEucmVjdCk7bGV0IGgsZDtpZih0JTE4MD09MCl7aD0xMDAqbC9hO2Q9MTAwKmMvb31lbHNle2g9MTAwKmMvYTtkPTEwMCpsL299ZS5zdHlsZS53aWR0aD1gJHtofSVgO2Uuc3R5bGUuaGVpZ2h0PWAke2R9JWA7ZS5zZXRBdHRyaWJ1dGUoImRhdGEtbWFpbi1yb3RhdGlvbiIsKDM2MC10KSUzNjApfWdldCBfY29tbW9uQWN0aW9ucygpe2NvbnN0IHNldENvbG9yPSh0LGUscyk9Pntjb25zdCBpPXMuZGV0YWlsW3RdO3MudGFyZ2V0LnN0eWxlW2VdPWEuQ29sb3JDb252ZXJ0ZXJzW2Ake2lbMF19X0hUTUxgXShpLnNsaWNlKDEpKX07cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsIl9jb21tb25BY3Rpb25zIix7ZGlzcGxheTp0PT57Y29uc3QgZT10LmRldGFpbC5kaXNwbGF5JTI9PTE7dGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eT1lPyJoaWRkZW4iOiJ2aXNpYmxlIjt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7aGlkZGVuOmUscHJpbnQ6MD09PXQuZGV0YWlsLmRpc3BsYXl8fDM9PT10LmRldGFpbC5kaXNwbGF5fSl9LHByaW50OnQ9Pnt0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCx7cHJpbnQ6dC5kZXRhaWwucHJpbnR9KX0saGlkZGVuOnQ9Pnt0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5PXQuZGV0YWlsLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSI7dGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQse2hpZGRlbjp0LmRldGFpbC5oaWRkZW59KX0sZm9jdXM6dD0+e3NldFRpbWVvdXQoKCgpPT50LnRhcmdldC5mb2N1cyh7cHJldmVudFNjcm9sbDohMX0pKSwwKX0sdXNlck5hbWU6dD0+e3QudGFyZ2V0LnRpdGxlPXQuZGV0YWlsLnVzZXJOYW1lfSxyZWFkb25seTp0PT57dC5kZXRhaWwucmVhZG9ubHk/dC50YXJnZXQuc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpOnQudGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgicmVhZG9ubHkiKX0scmVxdWlyZWQ6dD0+e3RoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LHQuZGV0YWlsLnJlcXVpcmVkKX0sYmdDb2xvcjp0PT57c2V0Q29sb3IoImJnQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmaWxsQ29sb3I6dD0+e3NldENvbG9yKCJmaWxsQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLHQpfSxmZ0NvbG9yOnQ9PntzZXRDb2xvcigiZmdDb2xvciIsImNvbG9yIix0KX0sdGV4dENvbG9yOnQ9PntzZXRDb2xvcigidGV4dENvbG9yIiwiY29sb3IiLHQpfSxib3JkZXJDb2xvcjp0PT57c2V0Q29sb3IoImJvcmRlckNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxzdHJva2VDb2xvcjp0PT57c2V0Q29sb3IoInN0cm9rZUNvbG9yIiwiYm9yZGVyQ29sb3IiLHQpfSxyb3RhdGlvbjp0PT57Y29uc3QgZT10LmRldGFpbC5yb3RhdGlvbjt0aGlzLnNldFJvdGF0aW9uKGUpO3RoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLHtyb3RhdGlvbjplfSl9fSl9X2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh0LGUpe2NvbnN0IHM9dGhpcy5fY29tbW9uQWN0aW9ucztmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhlLmRldGFpbCkpeyh0W2ldfHxzW2ldKT8uKGUpfX1fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCl7aWYoIXRoaXMuZW5hYmxlU2NyaXB0aW5nKXJldHVybjtjb25zdCBlPXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UuZ2V0UmF3VmFsdWUodGhpcy5kYXRhLmlkKTtpZighZSlyZXR1cm47Y29uc3Qgcz10aGlzLl9jb21tb25BY3Rpb25zO2Zvcihjb25zdFtpLG5db2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IHI9c1tpXTtpZihyKXtyKHtkZXRhaWw6e1tpXTpufSx0YXJnZXQ6dH0pO2RlbGV0ZSBlW2ldfX19X2NyZWF0ZVF1YWRyaWxhdGVyYWxzKHQ9ITEpe2lmKCF0aGlzLmRhdGEucXVhZFBvaW50cylyZXR1cm4gbnVsbDtjb25zdCBlPVtdLHM9dGhpcy5kYXRhLnJlY3Q7Zm9yKGNvbnN0IHMgb2YgdGhpcy5kYXRhLnF1YWRQb2ludHMpe3RoaXMuZGF0YS5yZWN0PVtzWzJdLngsc1syXS55LHNbMV0ueCxzWzFdLnldO2UucHVzaCh0aGlzLl9jcmVhdGVDb250YWluZXIodCkpfXRoaXMuZGF0YS5yZWN0PXM7cmV0dXJuIGV9X2NyZWF0ZVBvcHVwKHQsZSl7bGV0IHM9dGhpcy5jb250YWluZXI7aWYodGhpcy5xdWFkcmlsYXRlcmFscyl7dD10fHx0aGlzLnF1YWRyaWxhdGVyYWxzO3M9dGhpcy5xdWFkcmlsYXRlcmFsc1swXX1pZighdCl7KHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7cy5hcHBlbmQodCl9Y29uc3QgaT1uZXcgUG9wdXBFbGVtZW50KHtjb250YWluZXI6cyx0cmlnZ2VyOnQsY29sb3I6ZS5jb2xvcix0aXRsZU9iajplLnRpdGxlT2JqLG1vZGlmaWNhdGlvbkRhdGU6ZS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOmUuY29udGVudHNPYmoscmljaFRleHQ6ZS5yaWNoVGV4dCxoaWRlV3JhcHBlcjohMH0pLnJlbmRlcigpO2kuc3R5bGUubGVmdD0iMTAwJSI7cy5hcHBlbmQoaSl9X3JlbmRlclF1YWRyaWxhdGVyYWxzKHQpe2Zvcihjb25zdCBlIG9mIHRoaXMucXVhZHJpbGF0ZXJhbHMpZS5jbGFzc05hbWU9dDtyZXR1cm4gdGhpcy5xdWFkcmlsYXRlcmFsc31yZW5kZXIoKXsoMCxpLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBBbm5vdGF0aW9uRWxlbWVudC5yZW5kZXJgIGNhbGxlZCIpfV9nZXRFbGVtZW50c0J5TmFtZSh0LGU9bnVsbCl7Y29uc3Qgcz1bXTtpZih0aGlzLl9maWVsZE9iamVjdHMpe2NvbnN0IG49dGhpcy5fZmllbGRPYmplY3RzW3RdO2lmKG4pZm9yKGNvbnN0e3BhZ2U6dCxpZDpyLGV4cG9ydFZhbHVlczphfW9mIG4pe2lmKC0xPT09dCljb250aW51ZTtpZihyPT09ZSljb250aW51ZTtjb25zdCBuPSJzdHJpbmciPT10eXBlb2YgYT9hOm51bGwsbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1lbGVtZW50LWlkPSIke3J9Il1gKTshb3x8Yy5oYXMobyk/cy5wdXNoKHtpZDpyLGV4cG9ydFZhbHVlOm4sZG9tRWxlbWVudDpvfSk6KDAsaS53YXJuKShgX2dldEVsZW1lbnRzQnlOYW1lIC0gZWxlbWVudCBub3QgYWxsb3dlZDogJHtyfWApfXJldHVybiBzfWZvcihjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKXtjb25zdHtleHBvcnRWYWx1ZTp0fT1pLG49aS5nZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIpO24hPT1lJiYoYy5oYXMoaSkmJnMucHVzaCh7aWQ6bixleHBvcnRWYWx1ZTp0LGRvbUVsZW1lbnQ6aX0pKX1yZXR1cm4gc31zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IucGxhdGZvcm06IiI7cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsInBsYXRmb3JtIix7aXNXaW46dC5pbmNsdWRlcygiV2luIiksaXNNYWM6dC5pbmNsdWRlcygiTWFjIil9KX19Y2xhc3MgTGlua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCxlPW51bGwpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMCxpZ25vcmVCb3JkZXI6ISFlPy5pZ25vcmVCb3JkZXIsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KTt0aGlzLmlzVG9vbHRpcE9ubHk9dC5kYXRhLmlzVG9vbHRpcE9ubHl9cmVuZGVyKCl7Y29uc3R7ZGF0YTp0LGxpbmtTZXJ2aWNlOmV9PXRoaXMscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsdC5pZCk7bGV0IGk9ITE7aWYodC51cmwpe2UuYWRkTGlua0F0dHJpYnV0ZXMocyx0LnVybCx0Lm5ld1dpbmRvdyk7aT0hMH1lbHNlIGlmKHQuYWN0aW9uKXt0aGlzLl9iaW5kTmFtZWRBY3Rpb24ocyx0LmFjdGlvbik7aT0hMH1lbHNlIGlmKHQuYXR0YWNobWVudCl7dGhpcy5fYmluZEF0dGFjaG1lbnQocyx0LmF0dGFjaG1lbnQpO2k9ITB9ZWxzZSBpZih0LnNldE9DR1N0YXRlKXt0aGlzLiNBZShzLHQuc2V0T0NHU3RhdGUpO2k9ITB9ZWxzZSBpZih0LmRlc3Qpe3RoaXMuX2JpbmRMaW5rKHMsdC5kZXN0KTtpPSEwfWVsc2V7aWYodC5hY3Rpb25zJiYodC5hY3Rpb25zLkFjdGlvbnx8dC5hY3Rpb25zWyJNb3VzZSBVcCJdfHx0LmFjdGlvbnNbIk1vdXNlIERvd24iXSkmJnRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7dGhpcy5fYmluZEpTQWN0aW9uKHMsdCk7aT0hMH1pZih0LnJlc2V0Rm9ybSl7dGhpcy5fYmluZFJlc2V0Rm9ybUFjdGlvbihzLHQucmVzZXRGb3JtKTtpPSEwfWVsc2UgaWYodGhpcy5pc1Rvb2x0aXBPbmx5JiYhaSl7dGhpcy5fYmluZExpbmsocywiIik7aT0hMH19aWYodGhpcy5xdWFkcmlsYXRlcmFscylyZXR1cm4gdGhpcy5fcmVuZGVyUXVhZHJpbGF0ZXJhbHMoImxpbmtBbm5vdGF0aW9uIikubWFwKCgodCxlKT0+e2NvbnN0IGk9MD09PWU/czpzLmNsb25lTm9kZSgpO3QuYXBwZW5kKGkpO3JldHVybiB0fSkpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ibGlua0Fubm90YXRpb24iO2kmJnRoaXMuY29udGFpbmVyLmFwcGVuZChzKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2JpbmRMaW5rKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO3Qub25jbGljaz0oKT0+e2UmJnRoaXMubGlua1NlcnZpY2UuZ29Ub0Rlc3RpbmF0aW9uKGUpO3JldHVybiExfTsoZXx8IiI9PT1lKSYmKHQuY2xhc3NOYW1lPSJpbnRlcm5hbExpbmsiKX1fYmluZE5hbWVkQWN0aW9uKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRBdHRhY2htZW50KHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmRvd25sb2FkTWFuYWdlcj8ub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLGUuY29udGVudCxlLmZpbGVuYW1lKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9I0FlKHQsZSl7dC5ocmVmPXRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKCIiKTt0Lm9uY2xpY2s9KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVTZXRPQ0dTdGF0ZShlKTtyZXR1cm4hMX07dC5jbGFzc05hbWU9ImludGVybmFsTGluayJ9X2JpbmRKU0FjdGlvbih0LGUpe3QuaHJlZj10aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybCgiIik7Y29uc3Qgcz1uZXcgTWFwKFtbIkFjdGlvbiIsIm9uY2xpY2siXSxbIk1vdXNlIFVwIiwib25tb3VzZXVwIl0sWyJNb3VzZSBEb3duIiwib25tb3VzZWRvd24iXV0pO2Zvcihjb25zdCBpIG9mIE9iamVjdC5rZXlzKGUuYWN0aW9ucykpe2NvbnN0IG49cy5nZXQoaSk7biYmKHRbbl09KCk9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ZS5pZCxuYW1lOml9fSk7cmV0dXJuITF9KX10Lm9uY2xpY2t8fCh0Lm9uY2xpY2s9KCk9PiExKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIn1fYmluZFJlc2V0Rm9ybUFjdGlvbih0LGUpe2NvbnN0IHM9dC5vbmNsaWNrO3N8fCh0LmhyZWY9dGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoIiIpKTt0LmNsYXNzTmFtZT0iaW50ZXJuYWxMaW5rIjtpZih0aGlzLl9maWVsZE9iamVjdHMpdC5vbmNsaWNrPSgpPT57cz8uKCk7Y29uc3R7ZmllbGRzOnQscmVmczpuLGluY2x1ZGU6cn09ZSxhPVtdO2lmKDAhPT10Lmxlbmd0aHx8MCE9PW4ubGVuZ3RoKXtjb25zdCBlPW5ldyBTZXQobik7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgdD10aGlzLl9maWVsZE9iamVjdHNbc118fFtdO2Zvcihjb25zdHtpZDpzfW9mIHQpZS5hZGQocyl9Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKWZvcihjb25zdCBzIG9mIHQpZS5oYXMocy5pZCk9PT1yJiZhLnB1c2gocyl9ZWxzZSBmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpYS5wdXNoKC4uLnQpO2NvbnN0IG89dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxsPVtdO2Zvcihjb25zdCB0IG9mIGEpe2NvbnN0e2lkOmV9PXQ7bC5wdXNoKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2UidGV4dCI6e2NvbnN0IHM9dC5kZWZhdWx0VmFsdWV8fCIiO28uc2V0VmFsdWUoZSx7dmFsdWU6c30pO2JyZWFrfWNhc2UiY2hlY2tib3giOmNhc2UicmFkaW9idXR0b24iOntjb25zdCBzPXQuZGVmYXVsdFZhbHVlPT09dC5leHBvcnRWYWx1ZXM7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9Y2FzZSJjb21ib2JveCI6Y2FzZSJsaXN0Ym94Ijp7Y29uc3Qgcz10LmRlZmF1bHRWYWx1ZXx8IiI7by5zZXRWYWx1ZShlLHt2YWx1ZTpzfSk7YnJlYWt9ZGVmYXVsdDpjb250aW51ZX1jb25zdCBzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWVsZW1lbnQtaWQ9IiR7ZX0iXWApO3MmJihjLmhhcyhzKT9zLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJyZXNldGZvcm0iKSk6KDAsaS53YXJuKShgX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBlbGVtZW50IG5vdCBhbGxvd2VkOiAke2V9YCkpfXRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6ImFwcCIsaWRzOmwsbmFtZToiUmVzZXRGb3JtIn19KTtyZXR1cm4hMX07ZWxzZXsoMCxpLndhcm4pKCdfYmluZFJlc2V0Rm9ybUFjdGlvbiAtICJyZXNldEZvcm0iIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO3N8fCh0Lm9uY2xpY2s9KCk9PiExKX19fWNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ0ZXh0QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTt0LnNyYz10aGlzLmltYWdlUmVzb3VyY2VzUGF0aCsiYW5ub3RhdGlvbi0iK3RoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkrIi5zdmciO3QuYWx0PSJbe3t0eXBlfX0gQW5ub3RhdGlvbl0iO3QuZGF0YXNldC5sMTBuSWQ9InRleHRfYW5ub3RhdGlvbl90eXBlIjt0LmRhdGFzZXQubDEwbkFyZ3M9SlNPTi5zdHJpbmdpZnkoe3R5cGU6dGhpcy5kYXRhLm5hbWV9KTt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKHQsdGhpcy5kYXRhKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e3JlbmRlcigpe3RoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQmJih0aGlzLmNvbnRhaW5lci50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2dldEtleU1vZGlmaWVyKHQpe2NvbnN0e2lzV2luOmUsaXNNYWM6c309QW5ub3RhdGlvbkVsZW1lbnQucGxhdGZvcm07cmV0dXJuIGUmJnQuY3RybEtleXx8cyYmdC5tZXRhS2V5fV9zZXRFdmVudExpc3RlbmVyKHQsZSxzLGkpe2UuaW5jbHVkZXMoIm1vdXNlIik/dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpLHNoaWZ0OnQuc2hpZnRLZXksbW9kaWZpZXI6dGhpcy5fZ2V0S2V5TW9kaWZpZXIodCl9fSl9KSk6dC5hZGRFdmVudExpc3RlbmVyKGUsKHQ9Pnt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZGlzcGF0Y2hldmVudGluc2FuZGJveCIse3NvdXJjZTp0aGlzLGRldGFpbDp7aWQ6dGhpcy5kYXRhLmlkLG5hbWU6cyx2YWx1ZTppKHQpfX0pfSkpfV9zZXRFdmVudExpc3RlbmVycyh0LGUscyl7Zm9yKGNvbnN0W2ksbl1vZiBlKSgiQWN0aW9uIj09PW58fHRoaXMuZGF0YS5hY3Rpb25zPy5bbl0pJiZ0aGlzLl9zZXRFdmVudExpc3RlbmVyKHQsaSxuLHMpfV9zZXRCYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yfHxudWxsO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPW51bGw9PT1lPyJ0cmFuc3BhcmVudCI6aS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLGVbMV0sZVsyXSl9X3NldFRleHRTdHlsZSh0KXtjb25zdCBlPVsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0se2ZvbnRDb2xvcjpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG49dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8OSxyPXQuc3R5bGU7bGV0IGE7Y29uc3Qgcm91bmRUb09uZURlY2ltYWw9dD0+TWF0aC5yb3VuZCgxMCp0KS8xMDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjb25zdCB0PU1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLTIpLGU9dC8oTWF0aC5yb3VuZCh0LyhpLkxJTkVfRkFDVE9SKm4pKXx8MSk7YT1NYXRoLm1pbihuLHJvdW5kVG9PbmVEZWNpbWFsKGUvaS5MSU5FX0ZBQ1RPUikpfWVsc2V7Y29uc3QgdD1NYXRoLmFicyh0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXS0yKTthPU1hdGgubWluKG4scm91bmRUb09uZURlY2ltYWwodC9pLkxJTkVfRkFDVE9SKSl9ci5mb250U2l6ZT1gY2FsYygke2F9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWA7ci5jb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKHNbMF0sc1sxXSxzWzJdKTtudWxsIT09dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQmJihyLnRleHRBbGlnbj1lW3RoaXMuZGF0YS50ZXh0QWxpZ25tZW50XSl9X3NldFJlcXVpcmVkKHQsZSl7ZT90LnNldEF0dHJpYnV0ZSgicmVxdWlyZWQiLCEwKTp0LnJlbW92ZUF0dHJpYnV0ZSgicmVxdWlyZWQiKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsZSl9fWNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTp0LnJlbmRlckZvcm1zfHwhdC5kYXRhLmhhc0FwcGVhcmFuY2UmJiEhdC5kYXRhLmZpZWxkVmFsdWV9KX1zZXRQcm9wZXJ0eU9uU2libGluZ3ModCxlLHMsaSl7Y29uc3Qgbj10aGlzLmFubm90YXRpb25TdG9yYWdlO2Zvcihjb25zdCByIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSx0LmlkKSl7ci5kb21FbGVtZW50JiYoci5kb21FbGVtZW50W2VdPXMpO24uc2V0VmFsdWUoci5pZCx7W2ldOnN9KX19cmVuZGVyKCl7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLmlkO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0idGV4dFdpZGdldEFubm90YXRpb24iO2xldCBzPW51bGw7aWYodGhpcy5yZW5kZXJGb3Jtcyl7Y29uc3QgaT10LmdldFZhbHVlKGUse3ZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfSk7bGV0IG49aS5mb3JtYXR0ZWRWYWx1ZXx8aS52YWx1ZXx8IiI7Y29uc3Qgcj10LmdldFZhbHVlKGUse2NoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVufSkuY2hhckxpbWl0O3ImJm4ubGVuZ3RoPnImJihuPW4uc2xpY2UoMCxyKSk7Y29uc3QgYT17dXNlclZhbHVlOm4sZm9ybWF0dGVkVmFsdWU6bnVsbCx2YWx1ZU9uRm9jdXM6IiJ9O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTtzLnRleHRDb250ZW50PW47dGhpcy5kYXRhLmRvTm90U2Nyb2xsJiYocy5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIpfWVsc2V7cz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3MudHlwZT0idGV4dCI7cy5zZXRBdHRyaWJ1dGUoInZhbHVlIixuKTt0aGlzLmRhdGEuZG9Ob3RTY3JvbGwmJihzLnN0eWxlLm92ZXJmbG93WD0iaGlkZGVuIil9Yy5hZGQocyk7cy5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIsZSk7cy5kaXNhYmxlZD10aGlzLmRhdGEucmVhZE9ubHk7cy5uYW1lPXRoaXMuZGF0YS5maWVsZE5hbWU7cy50YWJJbmRleD1sO3RoaXMuX3NldFJlcXVpcmVkKHMsdGhpcy5kYXRhLnJlcXVpcmVkKTtyJiYocy5tYXhMZW5ndGg9cik7cy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKGk9Pnt0LnNldFZhbHVlKGUse3ZhbHVlOmkudGFyZ2V0LnZhbHVlfSk7dGhpcy5zZXRQcm9wZXJ0eU9uU2libGluZ3MocywidmFsdWUiLGkudGFyZ2V0LnZhbHVlLCJ2YWx1ZSIpfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPz8iIjtzLnZhbHVlPWEudXNlclZhbHVlPWU7YS5mb3JtYXR0ZWRWYWx1ZT1udWxsfSkpO2xldCBibHVyTGlzdGVuZXI9dD0+e2NvbnN0e2Zvcm1hdHRlZFZhbHVlOmV9PWE7bnVsbCE9ZSYmKHQudGFyZ2V0LnZhbHVlPWUpO3QudGFyZ2V0LnNjcm9sbExlZnQ9MH07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwodD0+e2EudXNlclZhbHVlJiYodC50YXJnZXQudmFsdWU9YS51c2VyVmFsdWUpO2EudmFsdWVPbkZvY3VzPXQudGFyZ2V0LnZhbHVlfSkpO3MuYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChzPT57Y29uc3QgaT17dmFsdWUocyl7YS51c2VyVmFsdWU9cy5kZXRhaWwudmFsdWU/PyIiO3Quc2V0VmFsdWUoZSx7dmFsdWU6YS51c2VyVmFsdWUudG9TdHJpbmcoKX0pO3MudGFyZ2V0LnZhbHVlPWEudXNlclZhbHVlfSxmb3JtYXR0ZWRWYWx1ZShzKXtjb25zdHtmb3JtYXR0ZWRWYWx1ZTppfT1zLmRldGFpbDthLmZvcm1hdHRlZFZhbHVlPWk7bnVsbCE9aSYmcy50YXJnZXQhPT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYocy50YXJnZXQudmFsdWU9aSk7dC5zZXRWYWx1ZShlLHtmb3JtYXR0ZWRWYWx1ZTppfSl9LHNlbFJhbmdlKHQpe3QudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKX0sY2hhckxpbWl0OnM9Pntjb25zdHtjaGFyTGltaXQ6aX09cy5kZXRhaWwse3RhcmdldDpufT1zO2lmKDA9PT1pKXtuLnJlbW92ZUF0dHJpYnV0ZSgibWF4TGVuZ3RoIik7cmV0dXJufW4uc2V0QXR0cmlidXRlKCJtYXhMZW5ndGgiLGkpO2xldCByPWEudXNlclZhbHVlO2lmKHImJiEoci5sZW5ndGg8PWkpKXtyPXIuc2xpY2UoMCxpKTtuLnZhbHVlPWEudXNlclZhbHVlPXI7dC5zZXRWYWx1ZShlLHt2YWx1ZTpyfSk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpyLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6bi5zZWxlY3Rpb25TdGFydCxzZWxFbmQ6bi5zZWxlY3Rpb25FbmR9fSl9fX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGkscyl9KSk7cy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e2xldCBzPS0xOyJFc2NhcGUiPT09dC5rZXk/cz0wOiJFbnRlciIhPT10LmtleXx8dGhpcy5kYXRhLm11bHRpTGluZT8iVGFiIj09PXQua2V5JiYocz0zKTpzPTI7aWYoLTE9PT1zKXJldHVybjtjb25zdHt2YWx1ZTppfT10LnRhcmdldDtpZihhLnZhbHVlT25Gb2N1cyE9PWkpe2EudXNlclZhbHVlPWk7dGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OnMsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KX19KSk7Y29uc3QgaT1ibHVyTGlzdGVuZXI7Ymx1ckxpc3RlbmVyPW51bGw7cy5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwodD0+e2NvbnN0e3ZhbHVlOnN9PXQudGFyZ2V0O2EudXNlclZhbHVlPXM7dGhpcy5fbW91c2VTdGF0ZS5pc0Rvd24mJmEudmFsdWVPbkZvY3VzIT09cyYmdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cz8uZGlzcGF0Y2goImRpc3BhdGNoZXZlbnRpbnNhbmRib3giLHtzb3VyY2U6dGhpcyxkZXRhaWw6e2lkOmUsbmFtZToiS2V5c3Ryb2tlIix2YWx1ZTpzLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsc2VsU3RhcnQ6dC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsc2VsRW5kOnQudGFyZ2V0LnNlbGVjdGlvbkVuZH19KTtpKHQpfSkpO3RoaXMuZGF0YS5hY3Rpb25zPy5LZXlzdHJva2UmJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCh0PT57Y29uc3R7ZGF0YTpzLHRhcmdldDppfT10LHt2YWx1ZTpuLHNlbGVjdGlvblN0YXJ0OnIsc2VsZWN0aW9uRW5kOmF9PWk7bGV0IG89cixsPWE7c3dpdGNoKHQuaW5wdXRUeXBlKXtjYXNlImRlbGV0ZVdvcmRCYWNrd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcoMCxyKS5tYXRjaCgvXHcqW15cd10qJC8pO3QmJihvLT10WzBdLmxlbmd0aCk7YnJlYWt9Y2FzZSJkZWxldGVXb3JkRm9yd2FyZCI6e2NvbnN0IHQ9bi5zdWJzdHJpbmcocikubWF0Y2goL15bXlx3XSpcdyovKTt0JiYobCs9dFswXS5sZW5ndGgpO2JyZWFrfWNhc2UiZGVsZXRlQ29udGVudEJhY2t3YXJkIjpyPT09YSYmKG8tPTEpO2JyZWFrO2Nhc2UiZGVsZXRlQ29udGVudEZvcndhcmQiOnI9PT1hJiYobCs9MSl9dC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2U6c3x8IiIsd2lsbENvbW1pdDohMSxzZWxTdGFydDpvLHNlbEVuZDpsfX0pfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHMsW1siZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQudmFsdWUpKX1ibHVyTGlzdGVuZXImJnMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsYmx1ckxpc3RlbmVyKTtpZih0aGlzLmRhdGEuY29tYil7Y29uc3QgdD0odGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0pL3I7cy5jbGFzc0xpc3QuYWRkKCJjb21iIik7cy5zdHlsZS5sZXR0ZXJTcGFjaW5nPWBjYWxjKCR7dH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpYH19ZWxzZXtzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWU7cy5zdHlsZS52ZXJ0aWNhbEFsaWduPSJtaWRkbGUiO3Muc3R5bGUuZGlzcGxheT0idGFibGUtY2VsbCJ9dGhpcy5fc2V0VGV4dFN0eWxlKHMpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihzKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhzKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQocyk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBDaGVja2JveFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXtjb25zdCB0PXRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsZT10aGlzLmRhdGEscz1lLmlkO2xldCBpPXQuZ2V0VmFsdWUocyx7dmFsdWU6ZS5leHBvcnRWYWx1ZT09PWUuZmllbGRWYWx1ZX0pLnZhbHVlO2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aT0iT2ZmIiE9PWk7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJidXR0b25XaWRnZXRBbm5vdGF0aW9uIGNoZWNrQm94Ijtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5hZGQobik7bi5zZXRBdHRyaWJ1dGUoImRhdGEtZWxlbWVudC1pZCIscyk7bi5kaXNhYmxlZD1lLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKG4sdGhpcy5kYXRhLnJlcXVpcmVkKTtuLnR5cGU9ImNoZWNrYm94IjtuLm5hbWU9ZS5maWVsZE5hbWU7aSYmbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTtuLnNldEF0dHJpYnV0ZSgiZXhwb3J0VmFsdWUiLGUuZXhwb3J0VmFsdWUpO24udGFiSW5kZXg9bDtuLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKGk9Pntjb25zdHtuYW1lOm4sY2hlY2tlZDpyfT1pLnRhcmdldDtmb3IoY29uc3QgaSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShuLHMpKXtjb25zdCBzPXImJmkuZXhwb3J0VmFsdWU9PT1lLmV4cG9ydFZhbHVlO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPXMpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6c30pfXQuc2V0VmFsdWUocyx7dmFsdWU6cn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZXx8Ik9mZiI7dC50YXJnZXQuY2hlY2tlZD1zPT09ZS5leHBvcnRWYWx1ZX0pKTtpZih0aGlzLmVuYWJsZVNjcmlwdGluZyYmdGhpcy5oYXNKU0FjdGlvbnMpe24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3QgaT17dmFsdWUoZSl7ZS50YXJnZXQuY2hlY2tlZD0iT2ZmIiE9PWUuZGV0YWlsLnZhbHVlO3Quc2V0VmFsdWUocyx7dmFsdWU6ZS50YXJnZXQuY2hlY2tlZH0pfX07dGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KGksZSl9KSk7dGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobixbWyJjaGFuZ2UiLCJWYWxpZGF0ZSJdLFsiY2hhbmdlIiwiQWN0aW9uIl0sWyJmb2N1cyIsIkZvY3VzIl0sWyJibHVyIiwiQmx1ciJdLFsibW91c2Vkb3duIiwiTW91c2UgRG93biJdLFsibW91c2VlbnRlciIsIk1vdXNlIEVudGVyIl0sWyJtb3VzZWxlYXZlIiwiTW91c2UgRXhpdCJdLFsibW91c2V1cCIsIk1vdXNlIFVwIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9dGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKG4pO3RoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKG4pO3RoaXMuY29udGFpbmVyLmFwcGVuZChuKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6dC5yZW5kZXJGb3Jtc30pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiByYWRpb0J1dHRvbiI7Y29uc3QgdD10aGlzLmFubm90YXRpb25TdG9yYWdlLGU9dGhpcy5kYXRhLHM9ZS5pZDtsZXQgaT10LmdldFZhbHVlKHMse3ZhbHVlOmUuZmllbGRWYWx1ZT09PWUuYnV0dG9uVmFsdWV9KS52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2k9aSE9PWUuYnV0dG9uVmFsdWU7dC5zZXRWYWx1ZShzLHt2YWx1ZTppfSl9Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2MuYWRkKG4pO24uc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO24uZGlzYWJsZWQ9ZS5yZWFkT25seTt0aGlzLl9zZXRSZXF1aXJlZChuLHRoaXMuZGF0YS5yZXF1aXJlZCk7bi50eXBlPSJyYWRpbyI7bi5uYW1lPWUuZmllbGROYW1lO2kmJm4uc2V0QXR0cmlidXRlKCJjaGVja2VkIiwhMCk7bi50YWJJbmRleD1sO24uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwoZT0+e2NvbnN0e25hbWU6aSxjaGVja2VkOm59PWUudGFyZ2V0O2Zvcihjb25zdCBlIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGkscykpdC5zZXRWYWx1ZShlLmlkLHt2YWx1ZTohMX0pO3Quc2V0VmFsdWUocyx7dmFsdWU6bn0pfSkpO24uYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IHM9ZS5kZWZhdWx0RmllbGRWYWx1ZTt0LnRhcmdldC5jaGVja2VkPW51bGwhPXMmJnM9PT1lLmJ1dHRvblZhbHVlfSkpO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyl7Y29uc3QgaT1lLmJ1dHRvblZhbHVlO24uYWRkRXZlbnRMaXN0ZW5lcigidXBkYXRlZnJvbXNhbmRib3giLChlPT57Y29uc3Qgbj17dmFsdWU6ZT0+e2NvbnN0IG49aT09PWUuZGV0YWlsLnZhbHVlO2Zvcihjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKGUudGFyZ2V0Lm5hbWUpKXtjb25zdCBlPW4mJmkuaWQ9PT1zO2kuZG9tRWxlbWVudCYmKGkuZG9tRWxlbWVudC5jaGVja2VkPWUpO3Quc2V0VmFsdWUoaS5pZCx7dmFsdWU6ZX0pfX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLGUpfSkpO3RoaXMuX3NldEV2ZW50TGlzdGVuZXJzKG4sW1siY2hhbmdlIiwiVmFsaWRhdGUiXSxbImNoYW5nZSIsIkFjdGlvbiJdLFsiZm9jdXMiLCJGb2N1cyJdLFsiYmx1ciIsIkJsdXIiXSxbIm1vdXNlZG93biIsIk1vdXNlIERvd24iXSxbIm1vdXNlZW50ZXIiLCJNb3VzZSBFbnRlciJdLFsibW91c2VsZWF2ZSIsIk1vdXNlIEV4aXQiXSxbIm1vdXNldXAiLCJNb3VzZSBVcCJdXSwodD0+dC50YXJnZXQuY2hlY2tlZCkpfXRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQdXNoQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBMaW5rQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aWdub3JlQm9yZGVyOnQuZGF0YS5oYXNBcHBlYXJhbmNlfSl9cmVuZGVyKCl7Y29uc3QgdD1zdXBlci5yZW5kZXIoKTt0LmNsYXNzTmFtZT0iYnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBwdXNoQnV0dG9uIjt0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0JiYodC50aXRsZT10aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtjb25zdCBlPXQubGFzdENoaWxkO2lmKHRoaXMuZW5hYmxlU2NyaXB0aW5nJiZ0aGlzLmhhc0pTQWN0aW9ucyYmZSl7dGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMoZSk7ZS5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmcm9tc2FuZGJveCIsKHQ9Pnt0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goe30sdCl9KSl9cmV0dXJuIHR9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOnQucmVuZGVyRm9ybXN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNob2ljZVdpZGdldEFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxlPXRoaXMuZGF0YS5pZCxzPXQuZ2V0VmFsdWUoZSx7dmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV9KSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2MuYWRkKGkpO2kuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLGUpO2kuZGlzYWJsZWQ9dGhpcy5kYXRhLnJlYWRPbmx5O3RoaXMuX3NldFJlcXVpcmVkKGksdGhpcy5kYXRhLnJlcXVpcmVkKTtpLm5hbWU9dGhpcy5kYXRhLmZpZWxkTmFtZTtpLnRhYkluZGV4PWw7bGV0IG49dGhpcy5kYXRhLmNvbWJvJiZ0aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg+MDtpZighdGhpcy5kYXRhLmNvbWJvKXtpLnNpemU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO3RoaXMuZGF0YS5tdWx0aVNlbGVjdCYmKGkubXVsdGlwbGU9ITApfWkuYWRkRXZlbnRMaXN0ZW5lcigicmVzZXRmb3JtIiwodD0+e2NvbnN0IGU9dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPXQudmFsdWU9PT1lfSkpO2Zvcihjb25zdCB0IG9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO2UudGV4dENvbnRlbnQ9dC5kaXNwbGF5VmFsdWU7ZS52YWx1ZT10LmV4cG9ydFZhbHVlO2lmKHMudmFsdWUuaW5jbHVkZXModC5leHBvcnRWYWx1ZSkpe2Uuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsITApO249ITF9aS5hcHBlbmQoZSl9bGV0IHI9bnVsbDtpZihuKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO3QudmFsdWU9IiAiO3Quc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTt0LnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLCEwKTtpLnByZXBlbmQodCk7cj0oKT0+e3QucmVtb3ZlKCk7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJpbnB1dCIscik7cj1udWxsfTtpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixyKX1jb25zdCBnZXRWYWx1ZT0odCxlKT0+e2NvbnN0IHM9ZT8idmFsdWUiOiJ0ZXh0Q29udGVudCIsaT10LnRhcmdldC5vcHRpb25zO3JldHVybiB0LnRhcmdldC5tdWx0aXBsZT9BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoaSwodD0+dC5zZWxlY3RlZCkpLm1hcCgodD0+dFtzXSkpOi0xPT09aS5zZWxlY3RlZEluZGV4P251bGw6aVtpLnNlbGVjdGVkSW5kZXhdW3NdfSxnZXRJdGVtcz10PT57Y29uc3QgZT10LnRhcmdldC5vcHRpb25zO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZSwodD0+KHtkaXNwbGF5VmFsdWU6dC50ZXh0Q29udGVudCxleHBvcnRWYWx1ZTp0LnZhbHVlfSkpKX07aWYodGhpcy5lbmFibGVTY3JpcHRpbmcmJnRoaXMuaGFzSlNBY3Rpb25zKXtpLmFkZEV2ZW50TGlzdGVuZXIoInVwZGF0ZWZyb21zYW5kYm94Iiwocz0+e2NvbnN0IG49e3ZhbHVlKHMpe3I/LigpO2NvbnN0IG49cy5kZXRhaWwudmFsdWUsYT1uZXcgU2V0KEFycmF5LmlzQXJyYXkobik/bjpbbl0pO2Zvcihjb25zdCB0IG9mIGkub3B0aW9ucyl0LnNlbGVjdGVkPWEuaGFzKHQudmFsdWUpO3Quc2V0VmFsdWUoZSx7dmFsdWU6Z2V0VmFsdWUocywhMCl9KX0sbXVsdGlwbGVTZWxlY3Rpb24odCl7aS5tdWx0aXBsZT0hMH0scmVtb3ZlKHMpe2NvbnN0IG49aS5vcHRpb25zLHI9cy5kZXRhaWwucmVtb3ZlO25bcl0uc2VsZWN0ZWQ9ITE7aS5yZW1vdmUocik7aWYobi5sZW5ndGg+MCl7LTE9PT1BcnJheS5wcm90b3R5cGUuZmluZEluZGV4LmNhbGwobiwodD0+dC5zZWxlY3RlZCkpJiYoblswXS5zZWxlY3RlZD0hMCl9dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxjbGVhcihzKXtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpudWxsLGl0ZW1zOltdfSl9LGluc2VydChzKXtjb25zdHtpbmRleDpuLGRpc3BsYXlWYWx1ZTpyLGV4cG9ydFZhbHVlOmF9PXMuZGV0YWlsLmluc2VydCxvPWkuY2hpbGRyZW5bbl0sbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtsLnRleHRDb250ZW50PXI7bC52YWx1ZT1hO28/by5iZWZvcmUobCk6aS5hcHBlbmQobCk7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKSxpdGVtczpnZXRJdGVtcyhzKX0pfSxpdGVtcyhzKXtjb25zdHtpdGVtczpufT1zLmRldGFpbDtmb3IoOzAhPT1pLmxlbmd0aDspaS5yZW1vdmUoMCk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3R7ZGlzcGxheVZhbHVlOmUsZXhwb3J0VmFsdWU6c309dCxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpO24udGV4dENvbnRlbnQ9ZTtuLnZhbHVlPXM7aS5hcHBlbmQobil9aS5vcHRpb25zLmxlbmd0aD4wJiYoaS5vcHRpb25zWzBdLnNlbGVjdGVkPSEwKTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApLGl0ZW1zOmdldEl0ZW1zKHMpfSl9LGluZGljZXMocyl7Y29uc3QgaT1uZXcgU2V0KHMuZGV0YWlsLmluZGljZXMpO2Zvcihjb25zdCB0IG9mIHMudGFyZ2V0Lm9wdGlvbnMpdC5zZWxlY3RlZD1pLmhhcyh0LmluZGV4KTt0LnNldFZhbHVlKGUse3ZhbHVlOmdldFZhbHVlKHMsITApfSl9LGVkaXRhYmxlKHQpe3QudGFyZ2V0LmRpc2FibGVkPSF0LmRldGFpbC5lZGl0YWJsZX19O3RoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChuLHMpfSkpO2kuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLChzPT57Y29uc3QgaT1nZXRWYWx1ZShzLCEwKSxuPWdldFZhbHVlKHMsITEpO3Quc2V0VmFsdWUoZSx7dmFsdWU6aX0pO3RoaXMubGlua1NlcnZpY2UuZXZlbnRCdXM/LmRpc3BhdGNoKCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94Iix7c291cmNlOnRoaXMsZGV0YWlsOntpZDplLG5hbWU6IktleXN0cm9rZSIsdmFsdWU6bixjaGFuZ2VFeDppLHdpbGxDb21taXQ6ITAsY29tbWl0S2V5OjEsa2V5RG93bjohMX19KX0pKTt0aGlzLl9zZXRFdmVudExpc3RlbmVycyhpLFtbImZvY3VzIiwiRm9jdXMiXSxbImJsdXIiLCJCbHVyIl0sWyJtb3VzZWRvd24iLCJNb3VzZSBEb3duIl0sWyJtb3VzZWVudGVyIiwiTW91c2UgRW50ZXIiXSxbIm1vdXNlbGVhdmUiLCJNb3VzZSBFeGl0Il0sWyJtb3VzZXVwIiwiTW91c2UgVXAiXSxbImlucHV0IiwiQWN0aW9uIl1dLCh0PT50LnRhcmdldC5jaGVja2VkKSl9ZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwoZnVuY3Rpb24ocyl7dC5zZXRWYWx1ZShlLHt2YWx1ZTpnZXRWYWx1ZShzLCEwKX0pfSkpO3RoaXMuZGF0YS5jb21ibyYmdGhpcy5fc2V0VGV4dFN0eWxlKGkpO3RoaXMuX3NldEJhY2tncm91bmRDb2xvcihpKTt0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhpKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7c3RhdGljIElHTk9SRV9UWVBFUz1uZXcgU2V0KFsiTGluZSIsIlNxdWFyZSIsIkNpcmNsZSIsIlBvbHlMaW5lIiwiUG9seWdvbiIsIkluayJdKTtjb25zdHJ1Y3Rvcih0KXtjb25zdHtkYXRhOmV9PXQ7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiFQb3B1cEFubm90YXRpb25FbGVtZW50LklHTk9SRV9UWVBFUy5oYXMoZS5wYXJlbnRUeXBlKSYmISEoZS50aXRsZU9iaj8uc3RyfHxlLmNvbnRlbnRzT2JqPy5zdHJ8fGUucmljaFRleHQ/LnN0cil9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9InBvcHVwQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmxheWVyLnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7dGhpcy5kYXRhLnBhcmVudElkfSJdYCk7aWYoMD09PXQubGVuZ3RoKXJldHVybiB0aGlzLmNvbnRhaW5lcjtjb25zdCBlPW5ldyBQb3B1cEVsZW1lbnQoe2NvbnRhaW5lcjp0aGlzLmNvbnRhaW5lcix0cmlnZ2VyOkFycmF5LmZyb20odCksY29sb3I6dGhpcy5kYXRhLmNvbG9yLHRpdGxlT2JqOnRoaXMuZGF0YS50aXRsZU9iaixtb2RpZmljYXRpb25EYXRlOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlLGNvbnRlbnRzT2JqOnRoaXMuZGF0YS5jb250ZW50c09iaixyaWNoVGV4dDp0aGlzLmRhdGEucmljaFRleHR9KSxzPXRoaXMucGFnZSxuPWkuVXRpbC5ub3JtYWxpemVSZWN0KFt0aGlzLmRhdGEucGFyZW50UmVjdFswXSxzLnZpZXdbM10tdGhpcy5kYXRhLnBhcmVudFJlY3RbMV0rcy52aWV3WzFdLHRoaXMuZGF0YS5wYXJlbnRSZWN0WzJdLHMudmlld1szXS10aGlzLmRhdGEucGFyZW50UmVjdFszXStzLnZpZXdbMV1dKSxyPW5bMF0rdGhpcy5kYXRhLnBhcmVudFJlY3RbMl0tdGhpcy5kYXRhLnBhcmVudFJlY3RbMF0sYT1uWzFdLFtvLGwsYyxoXT10aGlzLnZpZXdwb3J0LnZpZXdCb3gsZD1jLW8sdT1oLWw7dGhpcy5jb250YWluZXIuc3R5bGUubGVmdD0xMDAqKHItbykvZCsiJSI7dGhpcy5jb250YWluZXIuc3R5bGUudG9wPTEwMCooYS1sKS91KyIlIjt0aGlzLmNvbnRhaW5lci5hcHBlbmQoZS5yZW5kZXIoKSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBQb3B1cEVsZW1lbnR7Y29uc3RydWN0b3IodCl7dGhpcy5jb250YWluZXI9dC5jb250YWluZXI7dGhpcy50cmlnZ2VyPXQudHJpZ2dlcjt0aGlzLmNvbG9yPXQuY29sb3I7dGhpcy50aXRsZU9iaj10LnRpdGxlT2JqO3RoaXMubW9kaWZpY2F0aW9uRGF0ZT10Lm1vZGlmaWNhdGlvbkRhdGU7dGhpcy5jb250ZW50c09iaj10LmNvbnRlbnRzT2JqO3RoaXMucmljaFRleHQ9dC5yaWNoVGV4dDt0aGlzLmhpZGVXcmFwcGVyPXQuaGlkZVdyYXBwZXJ8fCExO3RoaXMucGlubmVkPSExfXJlbmRlcigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InBvcHVwV3JhcHBlciI7dGhpcy5oaWRlRWxlbWVudD10aGlzLmhpZGVXcmFwcGVyP3Q6dGhpcy5jb250YWluZXI7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0icG9wdXAiO2NvbnN0IHM9dGhpcy5jb2xvcjtpZihzKXtjb25zdCB0PS43KigyNTUtc1swXSkrc1swXSxuPS43KigyNTUtc1sxXSkrc1sxXSxyPS43KigyNTUtc1syXSkrc1syXTtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1pLlV0aWwubWFrZUhleENvbG9yKDB8dCwwfG4sMHxyKX1jb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIik7ci5kaXI9dGhpcy50aXRsZU9iai5kaXI7ci50ZXh0Q29udGVudD10aGlzLnRpdGxlT2JqLnN0cjtlLmFwcGVuZChyKTtjb25zdCBhPW4uUERGRGF0ZVN0cmluZy50b0RhdGVPYmplY3QodGhpcy5tb2RpZmljYXRpb25EYXRlKTtpZihhKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0LmNsYXNzTmFtZT0icG9wdXBEYXRlIjt0LnRleHRDb250ZW50PSJ7e2RhdGV9fSwge3t0aW1lfX0iO3QuZGF0YXNldC5sMTBuSWQ9ImFubm90YXRpb25fZGF0ZV9zdHJpbmciO3QuZGF0YXNldC5sMTBuQXJncz1KU09OLnN0cmluZ2lmeSh7ZGF0ZTphLnRvTG9jYWxlRGF0ZVN0cmluZygpLHRpbWU6YS50b0xvY2FsZVRpbWVTdHJpbmcoKX0pO2UuYXBwZW5kKHQpfWlmKCF0aGlzLnJpY2hUZXh0Py5zdHJ8fHRoaXMuY29udGVudHNPYmo/LnN0ciYmdGhpcy5jb250ZW50c09iai5zdHIhPT10aGlzLnJpY2hUZXh0LnN0cil7Y29uc3QgdD10aGlzLl9mb3JtYXRDb250ZW50cyh0aGlzLmNvbnRlbnRzT2JqKTtlLmFwcGVuZCh0KX1lbHNle28uWGZhTGF5ZXIucmVuZGVyKHt4ZmFIdG1sOnRoaXMucmljaFRleHQuaHRtbCxpbnRlbnQ6InJpY2hUZXh0IixkaXY6ZX0pO2UubGFzdENoaWxkLmNsYXNzTmFtZT0icmljaFRleHQgcG9wdXBDb250ZW50In1BcnJheS5pc0FycmF5KHRoaXMudHJpZ2dlcil8fCh0aGlzLnRyaWdnZXI9W3RoaXMudHJpZ2dlcl0pO2Zvcihjb25zdCB0IG9mIHRoaXMudHJpZ2dlcil7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fdG9nZ2xlLmJpbmQodGhpcykpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIix0aGlzLl9zaG93LmJpbmQodGhpcywhMSkpO3QuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLHRoaXMuX2hpZGUuYmluZCh0aGlzLCExKSl9ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5faGlkZS5iaW5kKHRoaXMsITApKTt0LmFwcGVuZChlKTtyZXR1cm4gdH1fZm9ybWF0Q29udGVudHMoe3N0cjp0LGRpcjplfSl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7cy5jbGFzc05hbWU9InBvcHVwQ29udGVudCI7cy5kaXI9ZTtjb25zdCBpPXQuc3BsaXQoLyg/OlxyXG4/fFxuKS8pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlOysrdCl7Y29uc3Qgbj1pW3RdO3MuYXBwZW5kKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKTt0PGUtMSYmcy5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9cmV0dXJuIHN9X3RvZ2dsZSgpe3RoaXMucGlubmVkP3RoaXMuX2hpZGUoITApOnRoaXMuX3Nob3coITApfV9zaG93KHQ9ITEpe3QmJih0aGlzLnBpbm5lZD0hMCk7aWYodGhpcy5oaWRlRWxlbWVudC5oaWRkZW4pe3RoaXMuaGlkZUVsZW1lbnQuaGlkZGVuPSExO3RoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleD1wYXJzZUludCh0aGlzLmNvbnRhaW5lci5zdHlsZS56SW5kZXgpKzFlM319X2hpZGUodD0hMCl7dCYmKHRoaXMucGlubmVkPSExKTtpZighdGhpcy5oaWRlRWxlbWVudC5oaWRkZW4mJiF0aGlzLnBpbm5lZCl7dGhpcy5oaWRlRWxlbWVudC5oaWRkZW49ITA7dGhpcy5jb250YWluZXIuc3R5bGUuekluZGV4PXBhcnNlSW50KHRoaXMuY29udGFpbmVyLnN0eWxlLnpJbmRleCktMWUzfX19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pO3RoaXMudGV4dENvbnRlbnQ9dC5kYXRhLnRleHRDb250ZW50fXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iZnJlZVRleHRBbm5vdGF0aW9uIjtpZih0aGlzLnRleHRDb250ZW50KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJhbm5vdGF0aW9uVGV4dENvbnRlbnQiO3Quc2V0QXR0cmlidXRlKCJyb2xlIiwiY29tbWVudCIpO2Zvcihjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3MudGV4dENvbnRlbnQ9ZTt0LmFwcGVuZChzKX10aGlzLmNvbnRhaW5lci5hcHBlbmQodCl9dGhpcy5kYXRhLmhhc1BvcHVwfHx0aGlzLl9jcmVhdGVQb3B1cChudWxsLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBMaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImxpbmVBbm5vdGF0aW9uIjtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKSxuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6bGluZSIpO24uc2V0QXR0cmlidXRlKCJ4MSIsdC5yZWN0WzJdLXQubGluZUNvb3JkaW5hdGVzWzBdKTtuLnNldEF0dHJpYnV0ZSgieTEiLHQucmVjdFszXS10LmxpbmVDb29yZGluYXRlc1sxXSk7bi5zZXRBdHRyaWJ1dGUoIngyIix0LnJlY3RbMl0tdC5saW5lQ29vcmRpbmF0ZXNbMl0pO24uc2V0QXR0cmlidXRlKCJ5MiIsdC5yZWN0WzNdLXQubGluZUNvb3JkaW5hdGVzWzNdKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix0LmJvcmRlclN0eWxlLndpZHRofHwxKTtuLnNldEF0dHJpYnV0ZSgic3Ryb2tlIiwidHJhbnNwYXJlbnQiKTtuLnNldEF0dHJpYnV0ZSgiZmlsbCIsInRyYW5zcGFyZW50Iik7aS5hcHBlbmQobik7dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3F1YXJlQW5ub3RhdGlvbiI7Y29uc3QgdD10aGlzLmRhdGEse3dpZHRoOmUsaGVpZ2h0OnN9PWdldFJlY3REaW1zKHQucmVjdCksaT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUscywhMCksbj10LmJvcmRlclN0eWxlLndpZHRoLHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7ci5zZXRBdHRyaWJ1dGUoIngiLG4vMik7ci5zZXRBdHRyaWJ1dGUoInkiLG4vMik7ci5zZXRBdHRyaWJ1dGUoIndpZHRoIixlLW4pO3Iuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMtbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsbnx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImNpcmNsZUFubm90YXRpb24iO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApLG49dC5ib3JkZXJTdHlsZS53aWR0aCxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZWxsaXBzZSIpO3Iuc2V0QXR0cmlidXRlKCJjeCIsZS8yKTtyLnNldEF0dHJpYnV0ZSgiY3kiLHMvMik7ci5zZXRBdHRyaWJ1dGUoInJ4IixlLzItbi8yKTtyLnNldEF0dHJpYnV0ZSgicnkiLHMvMi1uLzIpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG58fDEpO3Iuc2V0QXR0cmlidXRlKCJzdHJva2UiLCJ0cmFuc3BhcmVudCIpO3Iuc2V0QXR0cmlidXRlKCJmaWxsIiwidHJhbnNwYXJlbnQiKTtpLmFwcGVuZChyKTt0aGlzLmNvbnRhaW5lci5hcHBlbmQoaSk7dGhpcy5fY3JlYXRlUG9wdXAocix0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFBvbHlsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITB9KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWxpbmVBbm5vdGF0aW9uIjt0aGlzLnN2Z0VsZW1lbnROYW1lPSJzdmc6cG9seWxpbmUifXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT10aGlzLmNvbnRhaW5lckNsYXNzTmFtZTtjb25zdCB0PXRoaXMuZGF0YSx7d2lkdGg6ZSxoZWlnaHQ6c309Z2V0UmVjdERpbXModC5yZWN0KSxpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSxzLCEwKTtsZXQgbj1bXTtmb3IoY29uc3QgZSBvZiB0LnZlcnRpY2VzKXtjb25zdCBzPWUueC10LnJlY3RbMF0saT10LnJlY3RbM10tZS55O24ucHVzaChzKyIsIitpKX1uPW4uam9pbigiICIpO2NvbnN0IHI9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7ci5zZXRBdHRyaWJ1dGUoInBvaW50cyIsbik7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7ci5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7ci5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO2kuYXBwZW5kKHIpO3RoaXMuY29udGFpbmVyLmFwcGVuZChpKTt0aGlzLl9jcmVhdGVQb3B1cChyLHQpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgUG9seWdvbkFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KTt0aGlzLmNvbnRhaW5lckNsYXNzTmFtZT0icG9seWdvbkFubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5Z29uIn19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMH0pfXJlbmRlcigpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iY2FyZXRBbm5vdGF0aW9uIjt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIElua0Fubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSk7dGhpcy5jb250YWluZXJDbGFzc05hbWU9Imlua0Fubm90YXRpb24iO3RoaXMuc3ZnRWxlbWVudE5hbWU9InN2Zzpwb2x5bGluZSJ9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPXRoaXMuY29udGFpbmVyQ2xhc3NOYW1lO2NvbnN0IHQ9dGhpcy5kYXRhLHt3aWR0aDplLGhlaWdodDpzfT1nZXRSZWN0RGltcyh0LnJlY3QpLGk9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLHMsITApO2Zvcihjb25zdCBlIG9mIHQuaW5rTGlzdHMpe2xldCBzPVtdO2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGU9aS54LXQucmVjdFswXSxuPXQucmVjdFszXS1pLnk7cy5wdXNoKGAke2V9LCR7bn1gKX1zPXMuam9pbigiICIpO2NvbnN0IG49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQodGhpcy5zdmdFbGVtZW50TmFtZSk7bi5zZXRBdHRyaWJ1dGUoInBvaW50cyIscyk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdC5ib3JkZXJTdHlsZS53aWR0aHx8MSk7bi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsInRyYW5zcGFyZW50Iik7bi5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ0cmFuc3BhcmVudCIpO3RoaXMuX2NyZWF0ZVBvcHVwKG4sdCk7aS5hcHBlbmQobil9dGhpcy5jb250YWluZXIuYXBwZW5kKGkpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygiaGlnaGxpZ2h0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGxpZ2h0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohISh0LmRhdGEuaGFzUG9wdXB8fHQuZGF0YS50aXRsZU9iaj8uc3RyfHx0LmRhdGEuY29udGVudHNPYmo/LnN0cnx8dC5kYXRhLnJpY2hUZXh0Py5zdHIpLGlnbm9yZUJvcmRlcjohMCxjcmVhdGVRdWFkcmlsYXRlcmFsczohMH0pfXJlbmRlcigpe3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO2lmKHRoaXMucXVhZHJpbGF0ZXJhbHMpcmV0dXJuIHRoaXMuX3JlbmRlclF1YWRyaWxhdGVyYWxzKCJ1bmRlcmxpbmVBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJ1bmRlcmxpbmVBbm5vdGF0aW9uIjtyZXR1cm4gdGhpcy5jb250YWluZXJ9fWNsYXNzIFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3F1aWdnbHlBbm5vdGF0aW9uIik7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzcXVpZ2dseUFubm90YXRpb24iO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LHtpc1JlbmRlcmFibGU6ISEodC5kYXRhLmhhc1BvcHVwfHx0LmRhdGEudGl0bGVPYmo/LnN0cnx8dC5kYXRhLmNvbnRlbnRzT2JqPy5zdHJ8fHQuZGF0YS5yaWNoVGV4dD8uc3RyKSxpZ25vcmVCb3JkZXI6ITAsY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ITB9KX1yZW5kZXIoKXt0aGlzLmRhdGEuaGFzUG9wdXB8fHRoaXMuX2NyZWF0ZVBvcHVwKG51bGwsdGhpcy5kYXRhKTtpZih0aGlzLnF1YWRyaWxhdGVyYWxzKXJldHVybiB0aGlzLl9yZW5kZXJRdWFkcmlsYXRlcmFscygic3RyaWtlb3V0QW5ub3RhdGlvbiIpO3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0ic3RyaWtlb3V0QW5ub3RhdGlvbiI7cmV0dXJuIHRoaXMuY29udGFpbmVyfX1jbGFzcyBTdGFtcEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCx7aXNSZW5kZXJhYmxlOiEhKHQuZGF0YS5oYXNQb3B1cHx8dC5kYXRhLnRpdGxlT2JqPy5zdHJ8fHQuZGF0YS5jb250ZW50c09iaj8uc3RyfHx0LmRhdGEucmljaFRleHQ/LnN0ciksaWdub3JlQm9yZGVyOiEwfSl9cmVuZGVyKCl7dGhpcy5jb250YWluZXIuY2xhc3NOYW1lPSJzdGFtcEFubm90YXRpb24iO3RoaXMuZGF0YS5oYXNQb3B1cHx8dGhpcy5fY3JlYXRlUG9wdXAobnVsbCx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmNvbnRhaW5lcn19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQse2lzUmVuZGVyYWJsZTohMH0pO2NvbnN0e2ZpbGVuYW1lOmUsY29udGVudDpzfT10aGlzLmRhdGEuZmlsZTt0aGlzLmZpbGVuYW1lPSgwLG4uZ2V0RmlsZW5hbWVGcm9tVXJsKShlKTt0aGlzLmNvbnRlbnQ9czt0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzPy5kaXNwYXRjaCgiZmlsZWF0dGFjaG1lbnRhbm5vdGF0aW9uIix7c291cmNlOnRoaXMsZmlsZW5hbWU6ZSxjb250ZW50OnN9KX1yZW5kZXIoKXt0aGlzLmNvbnRhaW5lci5jbGFzc05hbWU9ImZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiI7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0icG9wdXBUcmlnZ2VyQXJlYSI7dC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsdGhpcy5fZG93bmxvYWQuYmluZCh0aGlzKSk7IXRoaXMuZGF0YS5oYXNQb3B1cCYmKHRoaXMuZGF0YS50aXRsZU9iaj8uc3RyfHx0aGlzLmRhdGEuY29udGVudHNPYmo/LnN0cnx8dGhpcy5kYXRhLnJpY2hUZXh0KSYmdGhpcy5fY3JlYXRlUG9wdXAodCx0aGlzLmRhdGEpO3RoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtyZXR1cm4gdGhpcy5jb250YWluZXJ9X2Rvd25sb2FkKCl7dGhpcy5kb3dubG9hZE1hbmFnZXI/Lm9wZW5PckRvd25sb2FkRGF0YSh0aGlzLmNvbnRhaW5lcix0aGlzLmNvbnRlbnQsdGhpcy5maWxlbmFtZSl9fWNsYXNzIEFubm90YXRpb25MYXllcntzdGF0aWMjX2UodCxlLHMsaSl7Y29uc3Qgcj10LmZpcnN0Q2hpbGR8fHQ7ci5pZD1gJHtuLkFubm90YXRpb25QcmVmaXh9JHtlfWA7cy5hcHBlbmQodCk7aT8ubW92ZUVsZW1lbnRJbkRPTShzLHQsciwhMSl9c3RhdGljIHJlbmRlcih0KXtjb25zdHthbm5vdGF0aW9uczplLGRpdjpzLHZpZXdwb3J0OmEsYWNjZXNzaWJpbGl0eU1hbmFnZXI6b309dDt0aGlzLiN2ZShzLGEpO2xldCBsPTA7Zm9yKGNvbnN0IGMgb2YgZSl7aWYoYy5hbm5vdGF0aW9uVHlwZSE9PWkuQW5ub3RhdGlvblR5cGUuUE9QVVApe2NvbnN0e3dpZHRoOnQsaGVpZ2h0OmV9PWdldFJlY3REaW1zKGMucmVjdCk7aWYodDw9MHx8ZTw9MCljb250aW51ZX1jb25zdCBlPUFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUoe2RhdGE6YyxsYXllcjpzLHBhZ2U6dC5wYWdlLHZpZXdwb3J0OmEsbGlua1NlcnZpY2U6dC5saW5rU2VydmljZSxkb3dubG9hZE1hbmFnZXI6dC5kb3dubG9hZE1hbmFnZXIsaW1hZ2VSZXNvdXJjZXNQYXRoOnQuaW1hZ2VSZXNvdXJjZXNQYXRofHwiIixyZW5kZXJGb3JtczohMSE9PXQucmVuZGVyRm9ybXMsc3ZnRmFjdG9yeTpuZXcgbi5ET01TVkdGYWN0b3J5LGFubm90YXRpb25TdG9yYWdlOnQuYW5ub3RhdGlvblN0b3JhZ2V8fG5ldyByLkFubm90YXRpb25TdG9yYWdlLGVuYWJsZVNjcmlwdGluZzp0LmVuYWJsZVNjcmlwdGluZyxoYXNKU0FjdGlvbnM6dC5oYXNKU0FjdGlvbnMsZmllbGRPYmplY3RzOnQuZmllbGRPYmplY3RzLG1vdXNlU3RhdGU6dC5tb3VzZVN0YXRlfHx7aXNEb3duOiExfX0pO2lmKGUuaXNSZW5kZXJhYmxlKXtjb25zdCB0PWUucmVuZGVyKCk7Yy5oaWRkZW4mJih0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdCl7ZS5zdHlsZS56SW5kZXg9bCsrO0Fubm90YXRpb25MYXllci4jX2UoZSxjLmlkLHMsbyl9ZWxzZXt0LnN0eWxlLnpJbmRleD1sKys7ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQ/cy5wcmVwZW5kKHQpOkFubm90YXRpb25MYXllci4jX2UodCxjLmlkLHMsbyl9fX10aGlzLiN5ZShzLHQuYW5ub3RhdGlvbkNhbnZhc01hcCl9c3RhdGljIHVwZGF0ZSh0KXtjb25zdHthbm5vdGF0aW9uQ2FudmFzTWFwOmUsZGl2OnMsdmlld3BvcnQ6aX09dDt0aGlzLiN2ZShzLGkpO3RoaXMuI3llKHMsZSk7cy5oaWRkZW49ITF9c3RhdGljI3ZlKHQse3dpZHRoOmUsaGVpZ2h0OnMscm90YXRpb246aX0pe2NvbnN0e3N0eWxlOm59PXQscj1pJTE4MCE9MCxhPU1hdGguZmxvb3IoZSkrInB4IixvPU1hdGguZmxvb3IocykrInB4IjtuLndpZHRoPXI/bzphO24uaGVpZ2h0PXI/YTpvO3Quc2V0QXR0cmlidXRlKCJkYXRhLW1haW4tcm90YXRpb24iLGkpfXN0YXRpYyN5ZSh0LGUpe2lmKGUpe2Zvcihjb25zdFtzLGldb2YgZSl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWFubm90YXRpb24taWQ9IiR7c30iXWApO2lmKCFlKWNvbnRpbnVlO2NvbnN0e2ZpcnN0Q2hpbGQ6bn09ZTtuPyJDQU5WQVMiPT09bi5ub2RlTmFtZT9uLnJlcGxhY2VXaXRoKGkpOm4uYmVmb3JlKGkpOmUuYXBwZW5kKGkpfWUuY2xlYXIoKX19fWUuQW5ub3RhdGlvbkxheWVyPUFubm90YXRpb25MYXllcn0sKHQsZSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5Db2xvckNvbnZlcnRlcnM9dm9pZCAwO2Z1bmN0aW9uIG1ha2VDb2xvckNvbXAodCl7cmV0dXJuIE1hdGguZmxvb3IoMjU1Kk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIil9ZS5Db2xvckNvbnZlcnRlcnM9Y2xhc3MgQ29sb3JDb252ZXJ0ZXJze3N0YXRpYyBDTVlLX0coW3QsZSxzLGldKXtyZXR1cm5bIkciLDEtTWF0aC5taW4oMSwuMyp0Ky41OSpzKy4xMSplK2kpXX1zdGF0aWMgR19DTVlLKFt0XSl7cmV0dXJuWyJDTVlLIiwwLDAsMCwxLXRdfXN0YXRpYyBHX1JHQihbdF0pe3JldHVyblsiUkdCIix0LHQsdF19c3RhdGljIEdfSFRNTChbdF0pe2NvbnN0IGU9bWFrZUNvbG9yQ29tcCh0KTtyZXR1cm5gIyR7ZX0ke2V9JHtlfWB9c3RhdGljIFJHQl9HKFt0LGUsc10pe3JldHVyblsiRyIsLjMqdCsuNTkqZSsuMTEqc119c3RhdGljIFJHQl9IVE1MKFt0LGUsc10pe3JldHVybmAjJHttYWtlQ29sb3JDb21wKHQpfSR7bWFrZUNvbG9yQ29tcChlKX0ke21ha2VDb2xvckNvbXAocyl9YH1zdGF0aWMgVF9IVE1MKCl7cmV0dXJuIiMwMDAwMDAwMCJ9c3RhdGljIENNWUtfUkdCKFt0LGUscyxpXSl7cmV0dXJuWyJSR0IiLDEtTWF0aC5taW4oMSx0K2kpLDEtTWF0aC5taW4oMSxzK2kpLDEtTWF0aC5taW4oMSxlK2kpXX1zdGF0aWMgQ01ZS19IVE1MKHQpe2NvbnN0IGU9dGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtyZXR1cm4gdGhpcy5SR0JfSFRNTChlKX1zdGF0aWMgUkdCX0NNWUsoW3QsZSxzXSl7Y29uc3QgaT0xLXQsbj0xLWUscj0xLXM7cmV0dXJuWyJDTVlLIixpLG4scixNYXRoLm1pbihpLG4scildfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5YZmFMYXllcj12b2lkIDA7dmFyIGk9cygxOSk7ZS5YZmFMYXllcj1jbGFzcyBYZmFMYXllcntzdGF0aWMgc2V0dXBTdG9yYWdlKHQsZSxzLGksbil7Y29uc3Qgcj1pLmdldFZhbHVlKGUse3ZhbHVlOm51bGx9KTtzd2l0Y2gocy5uYW1lKXtjYXNlInRleHRhcmVhIjpudWxsIT09ci52YWx1ZSYmKHQudGV4dENvbnRlbnQ9ci52YWx1ZSk7aWYoInByaW50Ij09PW4pYnJlYWs7dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LnZhbHVlfSl9KSk7YnJlYWs7Y2FzZSJpbnB1dCI6aWYoInJhZGlvIj09PXMuYXR0cmlidXRlcy50eXBlfHwiY2hlY2tib3giPT09cy5hdHRyaWJ1dGVzLnR5cGUpe3IudmFsdWU9PT1zLmF0dHJpYnV0ZXMueGZhT24/dC5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCEwKTpyLnZhbHVlPT09cy5hdHRyaWJ1dGVzLnhmYU9mZiYmdC5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKTtpZigicHJpbnQiPT09bilicmVhazt0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsKHQ9PntpLnNldFZhbHVlKGUse3ZhbHVlOnQudGFyZ2V0LmNoZWNrZWQ/dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJ4ZmFPbiIpOnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgieGZhT2ZmIil9KX0pKX1lbHNle251bGwhPT1yLnZhbHVlJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIudmFsdWUpO2lmKCJwcmludCI9PT1uKWJyZWFrO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57aS5zZXRWYWx1ZShlLHt2YWx1ZTp0LnRhcmdldC52YWx1ZX0pfSkpfWJyZWFrO2Nhc2Uic2VsZWN0IjppZihudWxsIT09ci52YWx1ZSlmb3IoY29uc3QgdCBvZiBzLmNoaWxkcmVuKXQuYXR0cmlidXRlcy52YWx1ZT09PXIudmFsdWUmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9ITApO3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCh0PT57Y29uc3Qgcz10LnRhcmdldC5vcHRpb25zLG49LTE9PT1zLnNlbGVjdGVkSW5kZXg/IiI6c1tzLnNlbGVjdGVkSW5kZXhdLnZhbHVlO2kuc2V0VmFsdWUoZSx7dmFsdWU6bn0pfSkpfX1zdGF0aWMgc2V0QXR0cmlidXRlcyh7aHRtbDp0LGVsZW1lbnQ6ZSxzdG9yYWdlOnM9bnVsbCxpbnRlbnQ6aSxsaW5rU2VydmljZTpufSl7Y29uc3R7YXR0cmlidXRlczpyfT1lLGE9dCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50OyJyYWRpbyI9PT1yLnR5cGUmJihyLm5hbWU9YCR7ci5uYW1lfS0ke2l9YCk7Zm9yKGNvbnN0W2Usc11vZiBPYmplY3QuZW50cmllcyhyKSlpZihudWxsIT1zKXN3aXRjaChlKXtjYXNlImNsYXNzIjpzLmxlbmd0aCYmdC5zZXRBdHRyaWJ1dGUoZSxzLmpvaW4oIiAiKSk7YnJlYWs7Y2FzZSJkYXRhSWQiOmJyZWFrO2Nhc2UiaWQiOnQuc2V0QXR0cmlidXRlKCJkYXRhLWVsZW1lbnQtaWQiLHMpO2JyZWFrO2Nhc2Uic3R5bGUiOk9iamVjdC5hc3NpZ24odC5zdHlsZSxzKTticmVhaztjYXNlInRleHRDb250ZW50Ijp0LnRleHRDb250ZW50PXM7YnJlYWs7ZGVmYXVsdDooIWF8fCJocmVmIiE9PWUmJiJuZXdXaW5kb3ciIT09ZSkmJnQuc2V0QXR0cmlidXRlKGUscyl9YSYmbi5hZGRMaW5rQXR0cmlidXRlcyh0LHIuaHJlZixyLm5ld1dpbmRvdyk7cyYmci5kYXRhSWQmJnRoaXMuc2V0dXBTdG9yYWdlKHQsci5kYXRhSWQsZSxzKX1zdGF0aWMgcmVuZGVyKHQpe2NvbnN0IGU9dC5hbm5vdGF0aW9uU3RvcmFnZSxzPXQubGlua1NlcnZpY2Usbj10LnhmYUh0bWwscj10LmludGVudHx8ImRpc3BsYXkiLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuLm5hbWUpO24uYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmEsZWxlbWVudDpuLGludGVudDpyLGxpbmtTZXJ2aWNlOnN9KTtjb25zdCBvPVtbbiwtMSxhXV0sbD10LmRpdjtsLmFwcGVuZChhKTtpZih0LnZpZXdwb3J0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7bC5zdHlsZS50cmFuc2Zvcm09ZX0icmljaFRleHQiIT09ciYmbC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwieGZhTGF5ZXIgeGZhRm9udCIpO2NvbnN0IGM9W107Zm9yKDtvLmxlbmd0aD4wOyl7Y29uc3RbdCxuLGFdPW8uYXQoLTEpO2lmKG4rMT09PXQuY2hpbGRyZW4ubGVuZ3RoKXtvLnBvcCgpO2NvbnRpbnVlfWNvbnN0IGw9dC5jaGlsZHJlblsrK28uYXQoLTEpWzFdXTtpZihudWxsPT09bCljb250aW51ZTtjb25zdHtuYW1lOmh9PWw7aWYoIiN0ZXh0Ij09PWgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7Yy5wdXNoKHQpO2EuYXBwZW5kKHQpO2NvbnRpbnVlfWxldCBkO2Q9bD8uYXR0cmlidXRlcz8ueG1sbnM/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGwuYXR0cmlidXRlcy54bWxucyxoKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KGgpO2EuYXBwZW5kKGQpO2wuYXR0cmlidXRlcyYmdGhpcy5zZXRBdHRyaWJ1dGVzKHtodG1sOmQsZWxlbWVudDpsLHN0b3JhZ2U6ZSxpbnRlbnQ6cixsaW5rU2VydmljZTpzfSk7aWYobC5jaGlsZHJlbiYmbC5jaGlsZHJlbi5sZW5ndGg+MClvLnB1c2goW2wsLTEsZF0pO2Vsc2UgaWYobC52YWx1ZSl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsLnZhbHVlKTtpLlhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGgpJiZjLnB1c2godCk7ZC5hcHBlbmQodCl9fWZvcihjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbCgiLnhmYU5vbkludGVyYWN0aXZlIGlucHV0LCAueGZhTm9uSW50ZXJhY3RpdmUgdGV4dGFyZWEiKSl0LnNldEF0dHJpYnV0ZSgicmVhZE9ubHkiLCEwKTtyZXR1cm57dGV4dERpdnM6Y319c3RhdGljIHVwZGF0ZSh0KXtjb25zdCBlPWBtYXRyaXgoJHt0LnZpZXdwb3J0LnRyYW5zZm9ybS5qb2luKCIsIil9KWA7dC5kaXYuc3R5bGUudHJhbnNmb3JtPWU7dC5kaXYuaGlkZGVuPSExfX19LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5UZXh0TGF5ZXJSZW5kZXJUYXNrPXZvaWQgMDtlLnJlbmRlclRleHRMYXllcj1mdW5jdGlvbiByZW5kZXJUZXh0TGF5ZXIodCl7Y29uc3QgZT1uZXcgVGV4dExheWVyUmVuZGVyVGFzayh7dGV4dENvbnRlbnQ6dC50ZXh0Q29udGVudCx0ZXh0Q29udGVudFN0cmVhbTp0LnRleHRDb250ZW50U3RyZWFtLGNvbnRhaW5lcjp0LmNvbnRhaW5lcix2aWV3cG9ydDp0LnZpZXdwb3J0LHRleHREaXZzOnQudGV4dERpdnMsdGV4dENvbnRlbnRJdGVtc1N0cjp0LnRleHRDb250ZW50SXRlbXNTdHJ9KTtlLl9yZW5kZXIodC50aW1lb3V0KTtyZXR1cm4gZX07dmFyIGk9cygxKTtjb25zdCBuPTMwLHI9bmV3IE1hcDtmdW5jdGlvbiBhcHBlbmRUZXh0KHQsZSxzLGEpe2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpLGw9e2FuZ2xlOjAsY2FudmFzV2lkdGg6MCxoYXNUZXh0OiIiIT09ZS5zdHIsaGFzRU9MOmUuaGFzRU9MLGZvbnRTaXplOjB9O3QuX3RleHREaXZzLnB1c2gobyk7Y29uc3QgYz1pLlV0aWwudHJhbnNmb3JtKHQuX3ZpZXdwb3J0LnRyYW5zZm9ybSxlLnRyYW5zZm9ybSk7bGV0IGg9TWF0aC5hdGFuMihjWzFdLGNbMF0pO2NvbnN0IGQ9c1tlLmZvbnROYW1lXTtkLnZlcnRpY2FsJiYoaCs9TWF0aC5QSS8yKTtjb25zdCB1PU1hdGguaHlwb3QoY1syXSxjWzNdKSxwPXUqZnVuY3Rpb24gZ2V0QXNjZW50KHQsZSl7Y29uc3Qgcz1yLmdldCh0KTtpZihzKXJldHVybiBzO2Uuc2F2ZSgpO2UuZm9udD1gMzBweCAke3R9YDtjb25zdCBpPWUubWVhc3VyZVRleHQoIiIpO2xldCBhPWkuZm9udEJvdW5kaW5nQm94QXNjZW50LG89TWF0aC5hYnMoaS5mb250Qm91bmRpbmdCb3hEZXNjZW50KTtpZihhKXtlLnJlc3RvcmUoKTtjb25zdCBzPWEvKGErbyk7ci5zZXQodCxzKTtyZXR1cm4gc31lLnN0cm9rZVN0eWxlPSJyZWQiO2UuY2xlYXJSZWN0KDAsMCxuLG4pO2Uuc3Ryb2tlVGV4dCgiZyIsMCwwKTtsZXQgbD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO289MDtmb3IobGV0IHQ9bC5sZW5ndGgtMS0zO3Q+PTA7dC09NClpZihsW3RdPjApe289TWF0aC5jZWlsKHQvNC9uKTticmVha31lLmNsZWFyUmVjdCgwLDAsbixuKTtlLnN0cm9rZVRleHQoIkEiLDAsbik7bD1lLmdldEltYWdlRGF0YSgwLDAsbixuKS5kYXRhO2E9MDtmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3Q8ZTt0Kz00KWlmKGxbdF0+MCl7YT1uLU1hdGguZmxvb3IodC80L24pO2JyZWFrfWUucmVzdG9yZSgpO2lmKGEpe2NvbnN0IGU9YS8oYStvKTtyLnNldCh0LGUpO3JldHVybiBlfXIuc2V0KHQsLjgpO3JldHVybi44fShkLmZvbnRGYW1pbHksYSk7bGV0IGcsbTtpZigwPT09aCl7Zz1jWzRdO209Y1s1XS1wfWVsc2V7Zz1jWzRdK3AqTWF0aC5zaW4oaCk7bT1jWzVdLXAqTWF0aC5jb3MoaCl9by5zdHlsZS5sZWZ0PWAke2d9cHhgO28uc3R5bGUudG9wPWAke219cHhgO28uc3R5bGUuZm9udFNpemU9YCR7dX1weGA7by5zdHlsZS5mb250RmFtaWx5PWQuZm9udEZhbWlseTtsLmZvbnRTaXplPXU7by5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKTtvLnRleHRDb250ZW50PWUuc3RyO28uZGlyPWUuZGlyO3QuX2ZvbnRJbnNwZWN0b3JFbmFibGVkJiYoby5kYXRhc2V0LmZvbnROYW1lPWUuZm9udE5hbWUpOzAhPT1oJiYobC5hbmdsZT1oKigxODAvTWF0aC5QSSkpO2xldCBmPSExO2lmKGUuc3RyLmxlbmd0aD4xKWY9ITA7ZWxzZSBpZigiICIhPT1lLnN0ciYmZS50cmFuc2Zvcm1bMF0hPT1lLnRyYW5zZm9ybVszXSl7Y29uc3QgdD1NYXRoLmFicyhlLnRyYW5zZm9ybVswXSkscz1NYXRoLmFicyhlLnRyYW5zZm9ybVszXSk7dCE9PXMmJk1hdGgubWF4KHQscykvTWF0aC5taW4odCxzKT4xLjUmJihmPSEwKX1mJiYoZC52ZXJ0aWNhbD9sLmNhbnZhc1dpZHRoPWUuaGVpZ2h0KnQuX3ZpZXdwb3J0LnNjYWxlOmwuY2FudmFzV2lkdGg9ZS53aWR0aCp0Ll92aWV3cG9ydC5zY2FsZSk7dC5fdGV4dERpdlByb3BlcnRpZXMuc2V0KG8sbCk7dC5fdGV4dENvbnRlbnRTdHJlYW0mJnQuX2xheW91dFRleHQobyl9ZnVuY3Rpb24gcmVuZGVyKHQpe2lmKHQuX2NhbmNlbGVkKXJldHVybjtjb25zdCBlPXQuX3RleHREaXZzLHM9dC5fY2FwYWJpbGl0eTtpZihlLmxlbmd0aD4xZTUpe3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9ZWxzZXtpZighdC5fdGV4dENvbnRlbnRTdHJlYW0pZm9yKGNvbnN0IHMgb2YgZSl0Ll9sYXlvdXRUZXh0KHMpO3QuX3JlbmRlcmluZ0RvbmU9ITA7cy5yZXNvbHZlKCl9fWNsYXNzIFRleHRMYXllclJlbmRlclRhc2t7Y29uc3RydWN0b3Ioe3RleHRDb250ZW50OnQsdGV4dENvbnRlbnRTdHJlYW06ZSxjb250YWluZXI6cyx2aWV3cG9ydDpuLHRleHREaXZzOnIsdGV4dENvbnRlbnRJdGVtc1N0cjphfSl7dGhpcy5fdGV4dENvbnRlbnQ9dDt0aGlzLl90ZXh0Q29udGVudFN0cmVhbT1lO3RoaXMuX2NvbnRhaW5lcj1zO3RoaXMuX2RvY3VtZW50PXMub3duZXJEb2N1bWVudDt0aGlzLl92aWV3cG9ydD1uO3RoaXMuX3RleHREaXZzPXJ8fFtdO3RoaXMuX3RleHRDb250ZW50SXRlbXNTdHI9YXx8W107dGhpcy5fZm9udEluc3BlY3RvckVuYWJsZWQ9ISFnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3I/LmVuYWJsZWQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZT1udWxsO3RoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseT1udWxsO3RoaXMuX2xheW91dFRleHRDdHg9bnVsbDt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1uZXcgV2Vha01hcDt0aGlzLl9yZW5kZXJpbmdEb25lPSExO3RoaXMuX2NhbmNlbGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsO3RoaXMuX2JvdW5kcz1bXTt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvPWdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpb3x8MTt0aGlzLl9jYXBhYmlsaXR5LnByb21pc2UuZmluYWxseSgoKCk9Pnt0aGlzLl90ZXh0RGl2UHJvcGVydGllcz1udWxsO2lmKHRoaXMuX2xheW91dFRleHRDdHgpe3RoaXMuX2xheW91dFRleHRDdHguY2FudmFzLndpZHRoPTA7dGhpcy5fbGF5b3V0VGV4dEN0eC5jYW52YXMuaGVpZ2h0PTA7dGhpcy5fbGF5b3V0VGV4dEN0eD1udWxsfX0pKS5jYXRjaCgoKCk9Pnt9KSl9Z2V0IHByb21pc2UoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWNhbmNlbCgpe3RoaXMuX2NhbmNlbGVkPSEwO2lmKHRoaXMuX3JlYWRlcil7dGhpcy5fcmVhZGVyLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbigiVGV4dExheWVyIHRhc2sgY2FuY2VsbGVkLiIpKS5jYXRjaCgoKCk9Pnt9KSk7dGhpcy5fcmVhZGVyPW51bGx9aWYobnVsbCE9PXRoaXMuX3JlbmRlclRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy5fcmVuZGVyVGltZXIpO3RoaXMuX3JlbmRlclRpbWVyPW51bGx9dGhpcy5fY2FwYWJpbGl0eS5yZWplY3QobmV3IEVycm9yKCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuIikpfV9wcm9jZXNzSXRlbXModCxlKXtmb3IoY29uc3QgcyBvZiB0KWlmKHZvaWQgMCE9PXMuc3RyKXt0aGlzLl90ZXh0Q29udGVudEl0ZW1zU3RyLnB1c2gocy5zdHIpO2FwcGVuZFRleHQodGhpcyxzLGUsdGhpcy5fbGF5b3V0VGV4dEN0eCl9ZWxzZSBpZigiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiPT09cy50eXBlfHwiYmVnaW5NYXJrZWRDb250ZW50Ij09PXMudHlwZSl7Y29uc3QgdD10aGlzLl9jb250YWluZXI7dGhpcy5fY29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTt0aGlzLl9jb250YWluZXIuY2xhc3NMaXN0LmFkZCgibWFya2VkQ29udGVudCIpO251bGwhPT1zLmlkJiZ0aGlzLl9jb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIsYCR7cy5pZH1gKTt0LmFwcGVuZCh0aGlzLl9jb250YWluZXIpfWVsc2UiZW5kTWFya2VkQ29udGVudCI9PT1zLnR5cGUmJih0aGlzLl9jb250YWluZXI9dGhpcy5fY29udGFpbmVyLnBhcmVudE5vZGUpfV9sYXlvdXRUZXh0KHQpe2NvbnN0IGU9dGhpcy5fdGV4dERpdlByb3BlcnRpZXMuZ2V0KHQpO2xldCBzPSIiO2lmKDAhPT1lLmNhbnZhc1dpZHRoJiZlLmhhc1RleHQpe2NvbnN0e2ZvbnRGYW1pbHk6aX09dC5zdHlsZSx7Zm9udFNpemU6bn09ZTtpZihuIT09dGhpcy5fbGF5b3V0VGV4dExhc3RGb250U2l6ZXx8aSE9PXRoaXMuX2xheW91dFRleHRMYXN0Rm9udEZhbWlseSl7dGhpcy5fbGF5b3V0VGV4dEN0eC5mb250PWAke24qdGhpcy5fZGV2aWNlUGl4ZWxSYXRpb31weCAke2l9YDt0aGlzLl9sYXlvdXRUZXh0TGFzdEZvbnRTaXplPW47dGhpcy5fbGF5b3V0VGV4dExhc3RGb250RmFtaWx5PWl9Y29uc3R7d2lkdGg6cn09dGhpcy5fbGF5b3V0VGV4dEN0eC5tZWFzdXJlVGV4dCh0LnRleHRDb250ZW50KTtyPjAmJihzPWBzY2FsZVgoJHt0aGlzLl9kZXZpY2VQaXhlbFJhdGlvKmUuY2FudmFzV2lkdGgvcn0pYCl9MCE9PWUuYW5nbGUmJihzPWByb3RhdGUoJHtlLmFuZ2xlfWRlZykgJHtzfWApO3MubGVuZ3RoPjAmJih0LnN0eWxlLnRyYW5zZm9ybT1zKTtlLmhhc1RleHQmJnRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7aWYoZS5oYXNFT0wpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTt0LnNldEF0dHJpYnV0ZSgicm9sZSIsInByZXNlbnRhdGlvbiIpO3RoaXMuX2NvbnRhaW5lci5hcHBlbmQodCl9fV9yZW5kZXIodD0wKXtjb25zdCBlPSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCk7bGV0IHM9T2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCByPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3IuaGVpZ2h0PXIud2lkdGg9bjt0aGlzLl9sYXlvdXRUZXh0Q3R4PXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMX0pO2lmKHRoaXMuX3RleHRDb250ZW50KXtjb25zdCB0PXRoaXMuX3RleHRDb250ZW50Lml0ZW1zLHM9dGhpcy5fdGV4dENvbnRlbnQuc3R5bGVzO3RoaXMuX3Byb2Nlc3NJdGVtcyh0LHMpO2UucmVzb2x2ZSgpfWVsc2V7aWYoIXRoaXMuX3RleHRDb250ZW50U3RyZWFtKXRocm93IG5ldyBFcnJvcignTmVpdGhlciAidGV4dENvbnRlbnQiIG5vciAidGV4dENvbnRlbnRTdHJlYW0iIHBhcmFtZXRlcnMgc3BlY2lmaWVkLicpO3tjb25zdCBwdW1wPSgpPT57dGhpcy5fcmVhZGVyLnJlYWQoKS50aGVuKCgoe3ZhbHVlOnQsZG9uZTppfSk9PntpZihpKWUucmVzb2x2ZSgpO2Vsc2V7T2JqZWN0LmFzc2lnbihzLHQuc3R5bGVzKTt0aGlzLl9wcm9jZXNzSXRlbXModC5pdGVtcyxzKTtwdW1wKCl9fSksZS5yZWplY3QpfTt0aGlzLl9yZWFkZXI9dGhpcy5fdGV4dENvbnRlbnRTdHJlYW0uZ2V0UmVhZGVyKCk7cHVtcCgpfX1lLnByb21pc2UudGhlbigoKCk9PntzPW51bGw7dD90aGlzLl9yZW5kZXJUaW1lcj1zZXRUaW1lb3V0KCgoKT0+e3JlbmRlcih0aGlzKTt0aGlzLl9yZW5kZXJUaW1lcj1udWxsfSksdCk6cmVuZGVyKHRoaXMpfSksdGhpcy5fY2FwYWJpbGl0eS5yZWplY3QpfX1lLlRleHRMYXllclJlbmRlclRhc2s9VGV4dExheWVyUmVuZGVyVGFza30sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlNWR0dyYXBoaWNzPXZvaWQgMDt2YXIgaT1zKDYpLG49cygxKSxyPXMoMTIpO2xldCBhPWNsYXNze2NvbnN0cnVjdG9yKCl7KDAsbi51bnJlYWNoYWJsZSkoIk5vdCBpbXBsZW1lbnRlZDogU1ZHR3JhcGhpY3MiKX19O2UuU1ZHR3JhcGhpY3M9YTt7Y29uc3Qgbz17Zm9udFN0eWxlOiJub3JtYWwiLGZvbnRXZWlnaHQ6Im5vcm1hbCIsZmlsbENvbG9yOiIjMDAwMDAwIn0sbD0iaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIixjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixoPVsiYnV0dCIsInJvdW5kIiwic3F1YXJlIl0sZD1bIm1pdGVyIiwicm91bmQiLCJiZXZlbCJdLGNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbih0LGU9IiIscz0hMSl7aWYoVVJMLmNyZWF0ZU9iamVjdFVSTCYmInVuZGVmaW5lZCIhPXR5cGVvZiBCbG9iJiYhcylyZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbdF0se3R5cGU6ZX0pKTtjb25zdCBpPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSI7bGV0IG49YGRhdGE6JHtlfTtiYXNlNjQsYDtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKz0zKXtjb25zdCByPTI1NSZ0W2VdLGE9MjU1JnRbZSsxXSxvPTI1NSZ0W2UrMl07bis9aVtyPj4yXStpWygzJnIpPDw0fGE+PjRdK2lbZSsxPHM/KDE1JmEpPDwyfG8+PjY6NjRdK2lbZSsyPHM/NjMmbzo2NF19cmV0dXJuIG59LHU9ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KFsxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdKSxlPW5ldyBJbnQzMkFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgcz10O2ZvcihsZXQgdD0wO3Q8ODt0Kyspcz0xJnM/Mzk4ODI5MjM4NF5zPj4xJjIxNDc0ODM2NDc6cz4+MSYyMTQ3NDgzNjQ3O2VbdF09c31mdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQscyxpLG4pe2xldCByPW47Y29uc3QgYT1zLmxlbmd0aDtpW3JdPWE+PjI0JjI1NTtpW3IrMV09YT4+MTYmMjU1O2lbcisyXT1hPj44JjI1NTtpW3IrM109MjU1JmE7cis9NDtpW3JdPTI1NSZ0LmNoYXJDb2RlQXQoMCk7aVtyKzFdPTI1NSZ0LmNoYXJDb2RlQXQoMSk7aVtyKzJdPTI1NSZ0LmNoYXJDb2RlQXQoMik7aVtyKzNdPTI1NSZ0LmNoYXJDb2RlQXQoMyk7cis9NDtpLnNldChzLHIpO3IrPXMubGVuZ3RoO2NvbnN0IG89ZnVuY3Rpb24gY3JjMzIodCxzLGkpe2xldCBuPS0xO2ZvcihsZXQgcj1zO3I8aTtyKyspe2NvbnN0IHM9MjU1JihuXnRbcl0pO249bj4+PjheZVtzXX1yZXR1cm4tMV5ufShpLG4rNCxyKTtpW3JdPW8+PjI0JjI1NTtpW3IrMV09bz4+MTYmMjU1O2lbcisyXT1vPj44JjI1NTtpW3IrM109MjU1Jm99ZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl7bGV0IGU9dC5sZW5ndGg7Y29uc3Qgcz02NTUzNSxpPU1hdGguY2VpbChlL3MpLG49bmV3IFVpbnQ4QXJyYXkoMitlKzUqaSs0KTtsZXQgcj0wO25bcisrXT0xMjA7bltyKytdPTE1NjtsZXQgYT0wO2Zvcig7ZT5zOyl7bltyKytdPTA7bltyKytdPTI1NTtuW3IrK109MjU1O25bcisrXT0wO25bcisrXT0wO24uc2V0KHQuc3ViYXJyYXkoYSxhK3MpLHIpO3IrPXM7YSs9cztlLT1zfW5bcisrXT0xO25bcisrXT0yNTUmZTtuW3IrK109ZT4+OCYyNTU7bltyKytdPTI1NSZ+ZTtuW3IrK109KDY1NTM1Jn5lKT4+OCYyNTU7bi5zZXQodC5zdWJhcnJheShhKSxyKTtyKz10Lmxlbmd0aC1hO2NvbnN0IG89ZnVuY3Rpb24gYWRsZXIzMih0LGUscyl7bGV0IGk9MSxuPTA7Zm9yKGxldCByPWU7cjxzOysrcil7aT0oaSsoMjU1JnRbcl0pKSU2NTUyMTtuPShuK2kpJTY1NTIxfXJldHVybiBuPDwxNnxpfSh0LDAsdC5sZW5ndGgpO25bcisrXT1vPj4yNCYyNTU7bltyKytdPW8+PjE2JjI1NTtuW3IrK109bz4+OCYyNTU7bltyKytdPTI1NSZvO3JldHVybiBufWZ1bmN0aW9uIGVuY29kZShlLHMsaSxhKXtjb25zdCBvPWUud2lkdGgsbD1lLmhlaWdodDtsZXQgYyxoLGQ7Y29uc3QgdT1lLmRhdGE7c3dpdGNoKHMpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6aD0wO2M9MTtkPW8rNz4+MzticmVhaztjYXNlIG4uSW1hZ2VLaW5kLlJHQl8yNEJQUDpoPTI7Yz04O2Q9MypvO2JyZWFrO2Nhc2Ugbi5JbWFnZUtpbmQuUkdCQV8zMkJQUDpoPTY7Yz04O2Q9NCpvO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWNvbnN0IHA9bmV3IFVpbnQ4QXJyYXkoKDErZCkqbCk7bGV0IGc9MCxtPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7cFtnKytdPTA7cC5zZXQodS5zdWJhcnJheShtLG0rZCksZyk7bSs9ZDtnKz1kfWlmKHM9PT1uLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUCYmYSl7Zz0wO2ZvcihsZXQgdD0wO3Q8bDt0Kyspe2crKztmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbZysrXV49MjU1fX1jb25zdCBmPW5ldyBVaW50OEFycmF5KFtvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGw+PjI0JjI1NSxsPj4xNiYyNTUsbD4+OCYyNTUsMjU1JmwsYyxoLDAsMCwwXSksYj1mdW5jdGlvbiBkZWZsYXRlU3luYyh0KXtpZighci5pc05vZGVKUylyZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7dHJ5e2xldCBlO2U9cGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9ucy5ub2RlKT49OD90OkJ1ZmZlci5mcm9tKHQpO2NvbnN0IHM9cmVxdWlyZSgiemxpYiIpLmRlZmxhdGVTeW5jKGUse2xldmVsOjl9KTtyZXR1cm4gcyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/czpuZXcgVWludDhBcnJheShzKX1jYXRjaCh0KXsoMCxuLndhcm4pKCJOb3QgY29tcHJlc3NpbmcgUE5HIGJlY2F1c2UgemxpYi5kZWZsYXRlU3luYyBpcyB1bmF2YWlsYWJsZTogIit0KX1yZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCl9KHApLEE9dC5sZW5ndGgrMzYrZi5sZW5ndGgrYi5sZW5ndGgsXz1uZXcgVWludDhBcnJheShBKTtsZXQgdj0wO18uc2V0KHQsdik7dis9dC5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUhEUiIsZixfLHYpO3YrPTEyK2YubGVuZ3RoO3dyaXRlUG5nQ2h1bmsoIklEQVRBIixiLF8sdik7dis9MTIrYi5sZW5ndGg7d3JpdGVQbmdDaHVuaygiSUVORCIsbmV3IFVpbnQ4QXJyYXkoMCksXyx2KTtyZXR1cm4gY3JlYXRlT2JqZWN0VVJMKF8sImltYWdlL3BuZyIsaSl9cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRJbWdEYXRhVG9QbmcodCxlLHMpe3JldHVybiBlbmNvZGUodCx2b2lkIDA9PT10LmtpbmQ/bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6dC5raW5kLGUscyl9fSgpO2NsYXNzIFNWR0V4dHJhU3RhdGV7Y29uc3RydWN0b3IoKXt0aGlzLmZvbnRTaXplU2NhbGU9MTt0aGlzLmZvbnRXZWlnaHQ9by5mb250V2VpZ2h0O3RoaXMuZm9udFNpemU9MDt0aGlzLnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVg7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1uLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7dGhpcy50ZXh0TWF0cml4U2NhbGU9MTt0aGlzLng9MDt0aGlzLnk9MDt0aGlzLmxpbmVYPTA7dGhpcy5saW5lWT0wO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wO3RoaXMuZmlsbENvbG9yPW8uZmlsbENvbG9yO3RoaXMuc3Ryb2tlQ29sb3I9IiMwMDAwMDAiO3RoaXMuZmlsbEFscGhhPTE7dGhpcy5zdHJva2VBbHBoYT0xO3RoaXMubGluZVdpZHRoPTE7dGhpcy5saW5lSm9pbj0iIjt0aGlzLmxpbmVDYXA9IiI7dGhpcy5taXRlckxpbWl0PTA7dGhpcy5kYXNoQXJyYXk9W107dGhpcy5kYXNoUGhhc2U9MDt0aGlzLmRlcGVuZGVuY2llcz1bXTt0aGlzLmFjdGl2ZUNsaXBVcmw9bnVsbDt0aGlzLmNsaXBHcm91cD1udWxsO3RoaXMubWFza0lkPSIifWNsb25lKCl7cmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyl9c2V0Q3VycmVudFBvaW50KHQsZSl7dGhpcy54PXQ7dGhpcy55PWV9fWZ1bmN0aW9uIG9wTGlzdFRvVHJlZSh0KXtsZXQgZT1bXTtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpaWYoInNhdmUiIT09aS5mbikicmVzdG9yZSI9PT1pLmZuP2U9cy5wb3AoKTplLnB1c2goaSk7ZWxzZXtlLnB1c2goe2ZuSWQ6OTIsZm46Imdyb3VwIixpdGVtczpbXX0pO3MucHVzaChlKTtlPWUuYXQoLTEpLml0ZW1zfXJldHVybiBlfWZ1bmN0aW9uIHBmKHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHQudG9TdHJpbmcoKTtjb25zdCBlPXQudG9GaXhlZCgxMCk7bGV0IHM9ZS5sZW5ndGgtMTtpZigiMCIhPT1lW3NdKXJldHVybiBlO2Rve3MtLX13aGlsZSgiMCI9PT1lW3NdKTtyZXR1cm4gZS5zdWJzdHJpbmcoMCwiLiI9PT1lW3NdP3M6cysxKX1mdW5jdGlvbiBwbSh0KXtpZigwPT09dFs0XSYmMD09PXRbNV0pe2lmKDA9PT10WzFdJiYwPT09dFsyXSlyZXR1cm4gMT09PXRbMF0mJjE9PT10WzNdPyIiOmBzY2FsZSgke3BmKHRbMF0pfSAke3BmKHRbM10pfSlgO2lmKHRbMF09PT10WzNdJiZ0WzFdPT09LXRbMl0pe3JldHVybmByb3RhdGUoJHtwZigxODAqTWF0aC5hY29zKHRbMF0pL01hdGguUEkpfSlgfX1lbHNlIGlmKDE9PT10WzBdJiYwPT09dFsxXSYmMD09PXRbMl0mJjE9PT10WzNdKXJldHVybmB0cmFuc2xhdGUoJHtwZih0WzRdKX0gJHtwZih0WzVdKX0pYDtyZXR1cm5gbWF0cml4KCR7cGYodFswXSl9ICR7cGYodFsxXSl9ICR7cGYodFsyXSl9ICR7cGYodFszXSl9ICR7cGYodFs0XSl9ICR7cGYodFs1XSl9KWB9bGV0IHA9MCxnPTAsbT0wO2UuU1ZHR3JhcGhpY3M9YT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUscz0hMSl7KDAsaS5kZXByZWNhdGVkKSgiVGhlIFNWRyBiYWNrLWVuZCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgKm1heSogYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiIpO3RoaXMuc3ZnRmFjdG9yeT1uZXcgaS5ET01TVkdGYWN0b3J5O3RoaXMuY3VycmVudD1uZXcgU1ZHRXh0cmFTdGF0ZTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLklERU5USVRZX01BVFJJWDt0aGlzLnRyYW5zZm9ybVN0YWNrPVtdO3RoaXMuZXh0cmFTdGFjaz1bXTt0aGlzLmNvbW1vbk9ianM9dDt0aGlzLm9ianM9ZTt0aGlzLnBlbmRpbmdDbGlwPW51bGw7dGhpcy5wZW5kaW5nRU9GaWxsPSExO3RoaXMuZW1iZWRGb250cz0hMTt0aGlzLmVtYmVkZGVkRm9udHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNzc1N0eWxlPW51bGw7dGhpcy5mb3JjZURhdGFTY2hlbWE9ISFzO3RoaXMuX29wZXJhdG9ySWRNYXBwaW5nPVtdO2Zvcihjb25zdCB0IGluIG4uT1BTKXRoaXMuX29wZXJhdG9ySWRNYXBwaW5nW24uT1BTW3RdXT10fWdldE9iamVjdCh0LGU9bnVsbCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Quc3RhcnRzV2l0aCgiZ18iKT90aGlzLmNvbW1vbk9ianMuZ2V0KHQpOnRoaXMub2Jqcy5nZXQodCk6ZX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMudHJhbnNmb3JtTWF0cml4KTtjb25zdCB0PXRoaXMuY3VycmVudDt0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTt0aGlzLmN1cnJlbnQ9dC5jbG9uZSgpfXJlc3RvcmUoKXt0aGlzLnRyYW5zZm9ybU1hdHJpeD10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpO3RoaXMuY3VycmVudD10aGlzLmV4dHJhU3RhY2sucG9wKCk7dGhpcy5wZW5kaW5nQ2xpcD1udWxsO3RoaXMudGdycD1udWxsfWdyb3VwKHQpe3RoaXMuc2F2ZSgpO3RoaXMuZXhlY3V0ZU9wVHJlZSh0KTt0aGlzLnJlc3RvcmUoKX1sb2FkRGVwZW5kZW5jaWVzKHQpe2NvbnN0IGU9dC5mbkFycmF5LHM9dC5hcmdzQXJyYXk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKWlmKGVbdF09PT1uLk9QUy5kZXBlbmRlbmN5KWZvcihjb25zdCBlIG9mIHNbdF0pe2NvbnN0IHQ9ZS5zdGFydHNXaXRoKCJnXyIpP3RoaXMuY29tbW9uT2Jqczp0aGlzLm9ianMscz1uZXcgUHJvbWlzZSgocz0+e3QuZ2V0KGUscyl9KSk7dGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKHMpfXJldHVybiBQcm9taXNlLmFsbCh0aGlzLmN1cnJlbnQuZGVwZW5kZW5jaWVzKX10cmFuc2Zvcm0odCxlLHMsaSxyLGEpe2NvbnN0IG89W3QsZSxzLGkscixhXTt0aGlzLnRyYW5zZm9ybU1hdHJpeD1uLlV0aWwudHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4LG8pO3RoaXMudGdycD1udWxsfWdldFNWRyh0LGUpe3RoaXMudmlld3BvcnQ9ZTtjb25zdCBzPXRoaXMuX2luaXRpYWxpemUoZSk7cmV0dXJuIHRoaXMubG9hZERlcGVuZGVuY2llcyh0KS50aGVuKCgoKT0+e3RoaXMudHJhbnNmb3JtTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3RoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QodCkpO3JldHVybiBzfSkpfWNvbnZlcnRPcExpc3QodCl7Y29uc3QgZT10aGlzLl9vcGVyYXRvcklkTWFwcGluZyxzPXQuYXJnc0FycmF5LGk9dC5mbkFycmF5LG49W107Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdCByPWlbdF07bi5wdXNoKHtmbklkOnIsZm46ZVtyXSxhcmdzOnNbdF19KX1yZXR1cm4gb3BMaXN0VG9UcmVlKG4pfWV4ZWN1dGVPcFRyZWUodCl7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1lLmZuLHM9ZS5mbklkLGk9ZS5hcmdzO3N3aXRjaCgwfHMpe2Nhc2Ugbi5PUFMuYmVnaW5UZXh0OnRoaXMuYmVnaW5UZXh0KCk7YnJlYWs7Y2FzZSBuLk9QUy5kZXBlbmRlbmN5OmJyZWFrO2Nhc2Ugbi5PUFMuc2V0TGVhZGluZzp0aGlzLnNldExlYWRpbmcoaSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMZWFkaW5nTW92ZVRleHQ6dGhpcy5zZXRMZWFkaW5nTW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldEZvbnQ6dGhpcy5zZXRGb250KGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1RleHQ6Y2FzZSBuLk9QUy5zaG93U3BhY2VkVGV4dDp0aGlzLnNob3dUZXh0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp0aGlzLmVuZFRleHQoKTticmVhaztjYXNlIG4uT1BTLm1vdmVUZXh0OnRoaXMubW92ZVRleHQoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLnNldENoYXJTcGFjaW5nOnRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRXb3JkU3BhY2luZzp0aGlzLnNldFdvcmRTcGFjaW5nKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOnRoaXMuc2V0SFNjYWxlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dE1hdHJpeDp0aGlzLnNldFRleHRNYXRyaXgoaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6dGhpcy5zZXRUZXh0UmlzZShpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOnRoaXMuc2V0VGV4dFJlbmRlcmluZ01vZGUoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lV2lkdGg6dGhpcy5zZXRMaW5lV2lkdGgoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRMaW5lSm9pbjp0aGlzLnNldExpbmVKb2luKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0TGluZUNhcDp0aGlzLnNldExpbmVDYXAoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRNaXRlckxpbWl0OnRoaXMuc2V0TWl0ZXJMaW1pdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxSR0JDb2xvcjp0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLGlbMV0saVsyXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VSR0JDb2xvcjp0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0saVsxXSxpWzJdKTticmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yTjp0aGlzLnNldFN0cm9rZUNvbG9yTihpKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46dGhpcy5zZXRGaWxsQ29sb3JOKGkpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hhZGluZ0ZpbGw6dGhpcy5zaGFkaW5nRmlsbChpWzBdKTticmVhaztjYXNlIG4uT1BTLnNldERhc2g6dGhpcy5zZXREYXNoKGlbMF0saVsxXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQ6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQoaVswXSk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRGbGF0bmVzczp0aGlzLnNldEZsYXRuZXNzKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOnRoaXMuc2V0R1N0YXRlKGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMuZmlsbDp0aGlzLmZpbGwoKTticmVhaztjYXNlIG4uT1BTLmVvRmlsbDp0aGlzLmVvRmlsbCgpO2JyZWFrO2Nhc2Ugbi5PUFMuc3Ryb2tlOnRoaXMuc3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5maWxsU3Ryb2tlOnRoaXMuZmlsbFN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9GaWxsU3Ryb2tlOnRoaXMuZW9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbGlwOnRoaXMuY2xpcCgibm9uemVybyIpO2JyZWFrO2Nhc2Ugbi5PUFMuZW9DbGlwOnRoaXMuY2xpcCgiZXZlbm9kZCIpO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOnRoaXMucGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludEltYWdlWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VYT2JqZWN0KGlbMF0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6dGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDp0aGlzLnBhaW50SW1hZ2VNYXNrWE9iamVjdChpWzBdKTticmVhaztjYXNlIG4uT1BTLnBhaW50Rm9ybVhPYmplY3RCZWdpbjp0aGlzLnBhaW50Rm9ybVhPYmplY3RCZWdpbihpWzBdLGlbMV0pO2JyZWFrO2Nhc2Ugbi5PUFMucGFpbnRGb3JtWE9iamVjdEVuZDp0aGlzLnBhaW50Rm9ybVhPYmplY3RFbmQoKTticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDp0aGlzLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VTdHJva2U6dGhpcy5jbG9zZVN0cm9rZSgpO2JyZWFrO2Nhc2Ugbi5PUFMuY2xvc2VGaWxsU3Ryb2tlOnRoaXMuY2xvc2VGaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5jbG9zZUVPRmlsbFN0cm9rZTp0aGlzLmNsb3NlRU9GaWxsU3Ryb2tlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTp0aGlzLm5leHRMaW5lKCk7YnJlYWs7Y2FzZSBuLk9QUy50cmFuc2Zvcm06dGhpcy50cmFuc2Zvcm0oaVswXSxpWzFdLGlbMl0saVszXSxpWzRdLGlbNV0pO2JyZWFrO2Nhc2Ugbi5PUFMuY29uc3RydWN0UGF0aDp0aGlzLmNvbnN0cnVjdFBhdGgoaVswXSxpWzFdKTticmVhaztjYXNlIG4uT1BTLmVuZFBhdGg6dGhpcy5lbmRQYXRoKCk7YnJlYWs7Y2FzZSA5Mjp0aGlzLmdyb3VwKGUuaXRlbXMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBvcGVyYXRvciAke3R9YCl9fX1zZXRXb3JkU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQud29yZFNwYWNpbmc9dH1zZXRDaGFyU3BhY2luZyh0KXt0aGlzLmN1cnJlbnQuY2hhclNwYWNpbmc9dH1uZXh0TGluZSgpe3RoaXMubW92ZVRleHQoMCx0aGlzLmN1cnJlbnQubGVhZGluZyl9c2V0VGV4dE1hdHJpeCh0LGUscyxpLG4scil7Y29uc3QgYT10aGlzLmN1cnJlbnQ7YS50ZXh0TWF0cml4PWEubGluZU1hdHJpeD1bdCxlLHMsaSxuLHJdO2EudGV4dE1hdHJpeFNjYWxlPU1hdGguaHlwb3QodCxlKTthLng9YS5saW5lWD0wO2EueT1hLmxpbmVZPTA7YS54Y29vcmRzPVtdO2EueWNvb3Jkcz1bXTthLnRzcGFuPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dHNwYW4iKTthLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtZmFtaWx5IixhLmZvbnRGYW1pbHkpO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1zaXplIixgJHtwZihhLmZvbnRTaXplKX1weGApO2EudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWEueSkpO2EudHh0RWxlbWVudD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRleHQiKTthLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pfWJlZ2luVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QueD10LmxpbmVYPTA7dC55PXQubGluZVk9MDt0LnRleHRNYXRyaXg9bi5JREVOVElUWV9NQVRSSVg7dC5saW5lTWF0cml4PW4uSURFTlRJVFlfTUFUUklYO3QudGV4dE1hdHJpeFNjYWxlPTE7dC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dC50eHRFbGVtZW50PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6dGV4dCIpO3QudHh0Z3JwPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3QueGNvb3Jkcz1bXTt0Lnljb29yZHM9W119bW92ZVRleHQodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtzLng9cy5saW5lWCs9dDtzLnk9cy5saW5lWSs9ZTtzLnhjb29yZHM9W107cy55Y29vcmRzPVtdO3MudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO3MudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC1mYW1pbHkiLHMuZm9udEZhbWlseSk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LXNpemUiLGAke3BmKHMuZm9udFNpemUpfXB4YCk7cy50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtcy55KSl9c2hvd1RleHQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz1lLmZvbnQsaT1lLmZvbnRTaXplO2lmKDA9PT1pKXJldHVybjtjb25zdCByPWUuZm9udFNpemVTY2FsZSxhPWUuY2hhclNwYWNpbmcsYz1lLndvcmRTcGFjaW5nLGg9ZS5mb250RGlyZWN0aW9uLGQ9ZS50ZXh0SFNjYWxlKmgsdT1zLnZlcnRpY2FsLHA9dT8xOi0xLGc9cy5kZWZhdWx0Vk1ldHJpY3MsbT1pKmUuZm9udE1hdHJpeFswXTtsZXQgZj0wO2Zvcihjb25zdCBuIG9mIHQpe2lmKG51bGw9PT1uKXtmKz1oKmM7Y29udGludWV9aWYoIm51bWJlciI9PXR5cGVvZiBuKXtmKz1wKm4qaS8xZTM7Y29udGludWV9Y29uc3QgdD0obi5pc1NwYWNlP2M6MCkrYSxvPW4uZm9udENoYXI7bGV0IGwsZCxiLEE9bi53aWR0aDtpZih1KXtsZXQgdDtjb25zdCBlPW4udm1ldHJpY3x8Zzt0PW4udm1ldHJpYz9lWzFdOi41KkE7dD0tdCptO2NvbnN0IHM9ZVsyXSptO0E9ZT8tZVswXTpBO2w9dC9yO2Q9KGYrcykvcn1lbHNle2w9Zi9yO2Q9MH1pZihuLmlzSW5Gb250fHxzLm1pc3NpbmdGaWxlKXtlLnhjb29yZHMucHVzaChlLngrbCk7dSYmZS55Y29vcmRzLnB1c2goLWUueStkKTtlLnRzcGFuLnRleHRDb250ZW50Kz1vfWI9dT9BKm0tdCpoOkEqbSt0Kmg7Zis9Yn1lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGUueGNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk7dT9lLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oIiAiKSk6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixwZigtZS55KSk7dT9lLnktPWY6ZS54Kz1mKmQ7ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KTtlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc2l6ZSIsYCR7cGYoZS5mb250U2l6ZSl9cHhgKTtlLmZvbnRTdHlsZSE9PW8uZm9udFN0eWxlJiZlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsImZvbnQtc3R5bGUiLGUuZm9udFN0eWxlKTtlLmZvbnRXZWlnaHQhPT1vLmZvbnRXZWlnaHQmJmUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCk7Y29uc3QgYj1lLnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztpZihiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMfHxiPT09bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMX1NUUk9LRSl7ZS5maWxsQ29sb3IhPT1vLmZpbGxDb2xvciYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIixlLmZpbGxDb2xvcik7ZS5maWxsQWxwaGE8MSYmZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLGUuZmlsbEFscGhhKX1lbHNlIGUudGV4dFJlbmRlcmluZ01vZGU9PT1uLlRleHRSZW5kZXJpbmdNb2RlLkFERF9UT19QQVRIP2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsInRyYW5zcGFyZW50Iik6ZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO2lmKGI9PT1uLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRXx8Yj09PW4uVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0Upe2NvbnN0IHQ9MS8oZS50ZXh0TWF0cml4U2NhbGV8fDEpO3RoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXMoZS50c3Bhbix0KX1sZXQgQT1lLnRleHRNYXRyaXg7aWYoMCE9PWUudGV4dFJpc2Upe0E9QS5zbGljZSgpO0FbNV0rPWUudGV4dFJpc2V9ZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIsYCR7cG0oQSl9IHNjYWxlKCR7cGYoZCl9LCAtMSlgKTtlLnR4dEVsZW1lbnQuc2V0QXR0cmlidXRlTlMobCwieG1sOnNwYWNlIiwicHJlc2VydmUiKTtlLnR4dEVsZW1lbnQuYXBwZW5kKGUudHNwYW4pO2UudHh0Z3JwLmFwcGVuZChlLnR4dEVsZW1lbnQpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGUudHh0RWxlbWVudCl9c2V0TGVhZGluZ01vdmVUZXh0KHQsZSl7dGhpcy5zZXRMZWFkaW5nKC1lKTt0aGlzLm1vdmVUZXh0KHQsZSl9YWRkRm9udFN0eWxlKHQpe2lmKCF0LmRhdGEpdGhyb3cgbmV3IEVycm9yKCdhZGRGb250U3R5bGU6IE5vIGZvbnQgZGF0YSBhdmFpbGFibGUsIGVuc3VyZSB0aGF0IHRoZSAiZm9udEV4dHJhUHJvcGVydGllcyIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7aWYoIXRoaXMuY3NzU3R5bGUpe3RoaXMuY3NzU3R5bGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdHlsZSIpO3RoaXMuY3NzU3R5bGUuc2V0QXR0cmlidXRlTlMobnVsbCwidHlwZSIsInRleHQvY3NzIik7dGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKX1jb25zdCBlPWNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsdC5taW1ldHlwZSx0aGlzLmZvcmNlRGF0YVNjaGVtYSk7dGhpcy5jc3NTdHlsZS50ZXh0Q29udGVudCs9YEBmb250LWZhY2UgeyBmb250LWZhbWlseTogIiR7dC5sb2FkZWROYW1lfSI7IHNyYzogdXJsKCR7ZX0pOyB9XG5gfXNldEZvbnQodCl7Y29uc3QgZT10aGlzLmN1cnJlbnQscz10aGlzLmNvbW1vbk9ianMuZ2V0KHRbMF0pO2xldCBpPXRbMV07ZS5mb250PXM7aWYodGhpcy5lbWJlZEZvbnRzJiYhcy5taXNzaW5nRmlsZSYmIXRoaXMuZW1iZWRkZWRGb250c1tzLmxvYWRlZE5hbWVdKXt0aGlzLmFkZEZvbnRTdHlsZShzKTt0aGlzLmVtYmVkZGVkRm9udHNbcy5sb2FkZWROYW1lXT1zfWUuZm9udE1hdHJpeD1zLmZvbnRNYXRyaXh8fG4uRk9OVF9JREVOVElUWV9NQVRSSVg7bGV0IHI9Im5vcm1hbCI7cy5ibGFjaz9yPSI5MDAiOnMuYm9sZCYmKHI9ImJvbGQiKTtjb25zdCBhPXMuaXRhbGljPyJpdGFsaWMiOiJub3JtYWwiO2lmKGk8MCl7aT0taTtlLmZvbnREaXJlY3Rpb249LTF9ZWxzZSBlLmZvbnREaXJlY3Rpb249MTtlLmZvbnRTaXplPWk7ZS5mb250RmFtaWx5PXMubG9hZGVkTmFtZTtlLmZvbnRXZWlnaHQ9cjtlLmZvbnRTdHlsZT1hO2UudHNwYW49dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2Zzp0c3BhbiIpO2UudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwieSIscGYoLWUueSkpO2UueGNvb3Jkcz1bXTtlLnljb29yZHM9W119ZW5kVGV4dCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQudGV4dFJlbmRlcmluZ01vZGUmbi5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHJiZ0LnR4dEVsZW1lbnQ/Lmhhc0NoaWxkTm9kZXMoKSl7dC5lbGVtZW50PXQudHh0RWxlbWVudDt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19c2V0TGluZVdpZHRoKHQpe3Q+MCYmKHRoaXMuY3VycmVudC5saW5lV2lkdGg9dCl9c2V0TGluZUNhcCh0KXt0aGlzLmN1cnJlbnQubGluZUNhcD1oW3RdfXNldExpbmVKb2luKHQpe3RoaXMuY3VycmVudC5saW5lSm9pbj1kW3RdfXNldE1pdGVyTGltaXQodCl7dGhpcy5jdXJyZW50Lm1pdGVyTGltaXQ9dH1zZXRTdHJva2VBbHBoYSh0KXt0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGE9dH1zZXRTdHJva2VSR0JDb2xvcih0LGUscyl7dGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpfXNldEZpbGxBbHBoYSh0KXt0aGlzLmN1cnJlbnQuZmlsbEFscGhhPXR9c2V0RmlsbFJHQkNvbG9yKHQsZSxzKXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPW4uVXRpbC5tYWtlSGV4Q29sb3IodCxlLHMpO3RoaXMuY3VycmVudC50c3Bhbj10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnRzcGFuIik7dGhpcy5jdXJyZW50Lnhjb29yZHM9W107dGhpcy5jdXJyZW50Lnljb29yZHM9W119c2V0U3Ryb2tlQ29sb3JOKHQpe3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj10aGlzLl9tYWtlQ29sb3JOX1BhdHRlcm4odCl9c2V0RmlsbENvbG9yTih0KXt0aGlzLmN1cnJlbnQuZmlsbENvbG9yPXRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KX1zaGFkaW5nRmlsbCh0KXtjb25zdCBlPXRoaXMudmlld3BvcnQud2lkdGgscz10aGlzLnZpZXdwb3J0LmhlaWdodCxpPW4uVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxyPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCwwXSxpKSxhPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbMCxzXSxpKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSwwXSxpKSxsPW4uVXRpbC5hcHBseVRyYW5zZm9ybShbZSxzXSxpKSxjPU1hdGgubWluKHJbMF0sYVswXSxvWzBdLGxbMF0pLGg9TWF0aC5taW4oclsxXSxhWzFdLG9bMV0sbFsxXSksZD1NYXRoLm1heChyWzBdLGFbMF0sb1swXSxsWzBdKSx1PU1hdGgubWF4KHJbMV0sYVsxXSxvWzFdLGxbMV0pLHA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IixjKTtwLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGgpO3Auc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLGQtYyk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHUtaCk7cC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIix0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO3RoaXMuY3VycmVudC5maWxsQWxwaGE8MSYmcC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsLW9wYWNpdHkiLHRoaXMuY3VycmVudC5maWxsQWxwaGEpO3RoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKHApfV9tYWtlQ29sb3JOX1BhdHRlcm4odCl7cmV0dXJuIlRpbGluZ1BhdHRlcm4iPT09dFswXT90aGlzLl9tYWtlVGlsaW5nUGF0dGVybih0KTp0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCl9X21ha2VUaWxpbmdQYXR0ZXJuKHQpe2NvbnN0IGU9dFsxXSxzPXRbMl0saT10WzNdfHxuLklERU5USVRZX01BVFJJWCxbcixhLG8sbF09dFs0XSxjPXRbNV0saD10WzZdLGQ9dFs3XSx1PSJzaGFkaW5nIittKyssW3AsZyxmLGJdPW4uVXRpbC5ub3JtYWxpemVSZWN0KFsuLi5uLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3IsYV0saSksLi4ubi5VdGlsLmFwcGx5VHJhbnNmb3JtKFtvLGxdLGkpXSksW0EsX109bi5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLHY9YypBLHk9aCpfLFM9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpwYXR0ZXJuIik7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsdSk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJwYXR0ZXJuVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLHYpO1Muc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0Iix5KTtTLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGAke3B9YCk7Uy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixgJHtnfWApO2NvbnN0IHg9dGhpcy5zdmcsRT10aGlzLnRyYW5zZm9ybU1hdHJpeCxDPXRoaXMuY3VycmVudC5maWxsQ29sb3IsUD10aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IsVD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGYtcCxiLWcpO3RoaXMuc3ZnPVQ7dGhpcy50cmFuc2Zvcm1NYXRyaXg9aTtpZigyPT09ZCl7Y29uc3QgdD1uLlV0aWwubWFrZUhleENvbG9yKC4uLmUpO3RoaXMuY3VycmVudC5maWxsQ29sb3I9dDt0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I9dH10aGlzLmV4ZWN1dGVPcFRyZWUodGhpcy5jb252ZXJ0T3BMaXN0KHMpKTt0aGlzLnN2Zz14O3RoaXMudHJhbnNmb3JtTWF0cml4PUU7dGhpcy5jdXJyZW50LmZpbGxDb2xvcj1DO3RoaXMuY3VycmVudC5zdHJva2VDb2xvcj1QO1MuYXBwZW5kKFQuY2hpbGROb2Rlc1swXSk7dGhpcy5kZWZzLmFwcGVuZChTKTtyZXR1cm5gdXJsKCMke3V9KWB9X21ha2VTaGFkaW5nUGF0dGVybih0KXsic3RyaW5nIj09dHlwZW9mIHQmJih0PXRoaXMub2Jqcy5nZXQodCkpO3N3aXRjaCh0WzBdKXtjYXNlIlJhZGlhbEF4aWFsIjpjb25zdCBlPSJzaGFkaW5nIittKysscz10WzNdO2xldCBpO3N3aXRjaCh0WzFdKXtjYXNlImF4aWFsIjpjb25zdCBzPXRbNF0sbj10WzVdO2k9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpsaW5lYXJHcmFkaWVudCIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaWQiLGUpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiZ3JhZGllbnRVbml0cyIsInVzZXJTcGFjZU9uVXNlIik7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MSIsc1swXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MSIsc1sxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4MiIsblswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5MiIsblsxXSk7YnJlYWs7Y2FzZSJyYWRpYWwiOmNvbnN0IHI9dFs0XSxhPXRbNV0sbz10WzZdLGw9dFs3XTtpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmFkaWFsR3JhZGllbnQiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImlkIixlKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsImdyYWRpZW50VW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3giLGFbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY3kiLGFbMV0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiciIsbCk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeCIsclswXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmeSIsclsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmciIsbyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gUmFkaWFsQXhpYWwgdHlwZTogJHt0WzFdfWApfWZvcihjb25zdCB0IG9mIHMpe2NvbnN0IGU9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpzdG9wIik7ZS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJvZmZzZXQiLHRbMF0pO2Uuc2V0QXR0cmlidXRlTlMobnVsbCwic3RvcC1jb2xvciIsdFsxXSk7aS5hcHBlbmQoZSl9dGhpcy5kZWZzLmFwcGVuZChpKTtyZXR1cm5gdXJsKCMke2V9KWA7Y2FzZSJNZXNoIjooMCxuLndhcm4pKCJVbmltcGxlbWVudGVkIHBhdHRlcm4gTWVzaCIpO3JldHVybiBudWxsO2Nhc2UiRHVtbXkiOnJldHVybiJob3RwaW5rIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBJUiB0eXBlOiAke3RbMF19YCl9fXNldERhc2godCxlKXt0aGlzLmN1cnJlbnQuZGFzaEFycmF5PXQ7dGhpcy5jdXJyZW50LmRhc2hQaGFzZT1lfWNvbnN0cnVjdFBhdGgodCxlKXtjb25zdCBzPXRoaXMuY3VycmVudDtsZXQgaT1zLngscj1zLnksYT1bXSxvPTA7Zm9yKGNvbnN0IHMgb2YgdClzd2l0Y2goMHxzKXtjYXNlIG4uT1BTLnJlY3RhbmdsZTppPWVbbysrXTtyPWVbbysrXTtjb25zdCB0PWkrZVtvKytdLHM9citlW28rK107YS5wdXNoKCJNIixwZihpKSxwZihyKSwiTCIscGYodCkscGYociksIkwiLHBmKHQpLHBmKHMpLCJMIixwZihpKSxwZihzKSwiWiIpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTSIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMubGluZVRvOmk9ZVtvKytdO3I9ZVtvKytdO2EucHVzaCgiTCIscGYoaSkscGYocikpO2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzppPWVbbys0XTtyPWVbbys1XTthLnB1c2goIkMiLHBmKGVbb10pLHBmKGVbbysxXSkscGYoZVtvKzJdKSxwZihlW28rM10pLHBmKGkpLHBmKHIpKTtvKz02O2JyZWFrO2Nhc2Ugbi5PUFMuY3VydmVUbzI6YS5wdXNoKCJDIixwZihpKSxwZihyKSxwZihlW29dKSxwZihlW28rMV0pLHBmKGVbbysyXSkscGYoZVtvKzNdKSk7aT1lW28rMl07cj1lW28rM107bys9NDticmVhaztjYXNlIG4uT1BTLmN1cnZlVG8zOmk9ZVtvKzJdO3I9ZVtvKzNdO2EucHVzaCgiQyIscGYoZVtvXSkscGYoZVtvKzFdKSxwZihpKSxwZihyKSxwZihpKSxwZihyKSk7bys9NDticmVhaztjYXNlIG4uT1BTLmNsb3NlUGF0aDphLnB1c2goIloiKX1hPWEuam9pbigiICIpO2lmKHMucGF0aCYmdC5sZW5ndGg+MCYmdFswXSE9PW4uT1BTLnJlY3RhbmdsZSYmdFswXSE9PW4uT1BTLm1vdmVUbylhPXMucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCJkIikrYTtlbHNle3MucGF0aD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnBhdGgiKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChzLnBhdGgpfXMucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixhKTtzLnBhdGguc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKTtzLmVsZW1lbnQ9cy5wYXRoO3Muc2V0Q3VycmVudFBvaW50KGkscil9ZW5kUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O3QucGF0aD1udWxsO2lmKCF0aGlzLnBlbmRpbmdDbGlwKXJldHVybjtpZighdC5lbGVtZW50KXt0aGlzLnBlbmRpbmdDbGlwPW51bGw7cmV0dXJufWNvbnN0IGU9ImNsaXBwYXRoIitwKysscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmNsaXBQYXRoIik7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIsZSk7cy5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ0cmFuc2Zvcm0iLHBtKHRoaXMudHJhbnNmb3JtTWF0cml4KSk7Y29uc3QgaT10LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTsiZXZlbm9kZCI9PT10aGlzLnBlbmRpbmdDbGlwP2kuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwiZXZlbm9kZCIpOmkuc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1ydWxlIiwibm9uemVybyIpO3RoaXMucGVuZGluZ0NsaXA9bnVsbDtzLmFwcGVuZChpKTt0aGlzLmRlZnMuYXBwZW5kKHMpO2lmKHQuYWN0aXZlQ2xpcFVybCl7dC5jbGlwR3JvdXA9bnVsbDtmb3IoY29uc3QgdCBvZiB0aGlzLmV4dHJhU3RhY2spdC5jbGlwR3JvdXA9bnVsbDtzLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsaXAtcGF0aCIsdC5hY3RpdmVDbGlwVXJsKX10LmFjdGl2ZUNsaXBVcmw9YHVybCgjJHtlfSlgO3RoaXMudGdycD1udWxsfWNsaXAodCl7dGhpcy5wZW5kaW5nQ2xpcD10fWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQucGF0aCl7Y29uc3QgZT1gJHt0LnBhdGguZ2V0QXR0cmlidXRlTlMobnVsbCwiZCIpfVpgO3QucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJkIixlKX19c2V0TGVhZGluZyh0KXt0aGlzLmN1cnJlbnQubGVhZGluZz0tdH1zZXRUZXh0UmlzZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJpc2U9dH1zZXRUZXh0UmVuZGVyaW5nTW9kZSh0KXt0aGlzLmN1cnJlbnQudGV4dFJlbmRlcmluZ01vZGU9dH1zZXRIU2NhbGUodCl7dGhpcy5jdXJyZW50LnRleHRIU2NhbGU9dC8xMDB9c2V0UmVuZGVyaW5nSW50ZW50KHQpe31zZXRGbGF0bmVzcyh0KXt9c2V0R1N0YXRlKHQpe2Zvcihjb25zdFtlLHNdb2YgdClzd2l0Y2goZSl7Y2FzZSJMVyI6dGhpcy5zZXRMaW5lV2lkdGgocyk7YnJlYWs7Y2FzZSJMQyI6dGhpcy5zZXRMaW5lQ2FwKHMpO2JyZWFrO2Nhc2UiTEoiOnRoaXMuc2V0TGluZUpvaW4ocyk7YnJlYWs7Y2FzZSJNTCI6dGhpcy5zZXRNaXRlckxpbWl0KHMpO2JyZWFrO2Nhc2UiRCI6dGhpcy5zZXREYXNoKHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSJSSSI6dGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQocyk7YnJlYWs7Y2FzZSJGTCI6dGhpcy5zZXRGbGF0bmVzcyhzKTticmVhaztjYXNlIkZvbnQiOnRoaXMuc2V0Rm9udChzKTticmVhaztjYXNlIkNBIjp0aGlzLnNldFN0cm9rZUFscGhhKHMpO2JyZWFrO2Nhc2UiY2EiOnRoaXMuc2V0RmlsbEFscGhhKHMpO2JyZWFrO2RlZmF1bHQ6KDAsbi53YXJuKShgVW5pbXBsZW1lbnRlZCBncmFwaGljIHN0YXRlIG9wZXJhdG9yICR7ZX1gKX19ZmlsbCgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLHQuZmlsbENvbG9yKTt0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1vcGFjaXR5Iix0LmZpbGxBbHBoYSk7dGhpcy5lbmRQYXRoKCl9fXN0cm9rZSgpe2NvbnN0IHQ9dGhpcy5jdXJyZW50O2lmKHQuZWxlbWVudCl7dGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LmVsZW1lbnQpO3QuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJmaWxsIiwibm9uZSIpO3RoaXMuZW5kUGF0aCgpfX1fc2V0U3Ryb2tlQXR0cmlidXRlcyh0LGU9MSl7Y29uc3Qgcz10aGlzLmN1cnJlbnQ7bGV0IGk9cy5kYXNoQXJyYXk7MSE9PWUmJmkubGVuZ3RoPjAmJihpPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZSp0fSkpKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIscy5zdHJva2VDb2xvcik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utb3BhY2l0eSIscy5zdHJva2VBbHBoYSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbWl0ZXJsaW1pdCIscGYocy5taXRlckxpbWl0KSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtbGluZWNhcCIscy5saW5lQ2FwKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZS1saW5lam9pbiIscy5saW5lSm9pbik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2Utd2lkdGgiLHBmKGUqcy5saW5lV2lkdGgpKyJweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwic3Ryb2tlLWRhc2hhcnJheSIsaS5tYXAocGYpLmpvaW4oIiAiKSk7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJzdHJva2UtZGFzaG9mZnNldCIscGYoZSpzLmRhc2hQaGFzZSkrInB4Iil9ZW9GaWxsKCl7dGhpcy5jdXJyZW50LmVsZW1lbnQ/LnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwtcnVsZSIsImV2ZW5vZGQiKTt0aGlzLmZpbGwoKX1maWxsU3Ryb2tlKCl7dGhpcy5zdHJva2UoKTt0aGlzLmZpbGwoKX1lb0ZpbGxTdHJva2UoKXt0aGlzLmN1cnJlbnQuZWxlbWVudD8uc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbC1ydWxlIiwiZXZlbm9kZCIpO3RoaXMuZmlsbFN0cm9rZSgpfWNsb3NlU3Ryb2tlKCl7dGhpcy5jbG9zZVBhdGgoKTt0aGlzLnN0cm9rZSgpfWNsb3NlRmlsbFN0cm9rZSgpe3RoaXMuY2xvc2VQYXRoKCk7dGhpcy5maWxsU3Ryb2tlKCl9Y2xvc2VFT0ZpbGxTdHJva2UoKXt0aGlzLmNsb3NlUGF0aCgpO3RoaXMuZW9GaWxsU3Ryb2tlKCl9cGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrKCl7Y29uc3QgdD10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLCIwIik7dC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IiwiMCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLCIxcHgiKTt0LnNldEF0dHJpYnV0ZU5TKG51bGwsImhlaWdodCIsIjFweCIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsdGhpcy5jdXJyZW50LmZpbGxDb2xvcik7dGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQodCl9cGFpbnRJbWFnZVhPYmplY3QodCl7Y29uc3QgZT10aGlzLmdldE9iamVjdCh0KTtlP3RoaXMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3QoZSk6KDAsbi53YXJuKShgRGVwZW5kZW50IGltYWdlIHdpdGggb2JqZWN0IElEICR7dH0gaXMgbm90IHJlYWR5IHlldGApfXBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsZSl7Y29uc3Qgcz10LndpZHRoLGk9dC5oZWlnaHQsbj11KHQsdGhpcy5mb3JjZURhdGFTY2hlbWEsISFlKSxyPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6cmVjdCIpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLCIwIik7ci5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykpO3Iuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihpKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9cjt0aGlzLmNsaXAoIm5vbnplcm8iKTtjb25zdCBhPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6aW1hZ2UiKTthLnNldEF0dHJpYnV0ZU5TKGMsInhsaW5rOmhyZWYiLG4pO2Euc2V0QXR0cmlidXRlTlMobnVsbCwieCIsIjAiKTthLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLHBmKC1pKSk7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYocykrInB4Iik7YS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKGkpKyJweCIpO2Euc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixgc2NhbGUoJHtwZigxL3MpfSAke3BmKC0xL2kpfSlgKTtlP2UuYXBwZW5kKGEpOnRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpfXBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KXtjb25zdCBlPXRoaXMuZ2V0T2JqZWN0KHQuZGF0YSx0KTtpZihlLmJpdG1hcCl7KDAsbi53YXJuKSgicGFpbnRJbWFnZU1hc2tYT2JqZWN0OiBJbWFnZUJpdG1hcCBzdXBwb3J0IGlzIG5vdCBpbXBsZW1lbnRlZCwgZW5zdXJlIHRoYXQgdGhlIGBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZGAgQVBJIHBhcmFtZXRlciBpcyBkaXNhYmxlZC4iKTtyZXR1cm59Y29uc3Qgcz10aGlzLmN1cnJlbnQsaT1lLndpZHRoLHI9ZS5oZWlnaHQsYT1zLmZpbGxDb2xvcjtzLm1hc2tJZD0ibWFzayIrZysrO2NvbnN0IG89dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzptYXNrIik7by5zZXRBdHRyaWJ1dGVOUyhudWxsLCJpZCIscy5tYXNrSWQpO2NvbnN0IGw9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpyZWN0Iik7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ4IiwiMCIpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsIjAiKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixwZihpKSk7bC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJoZWlnaHQiLHBmKHIpKTtsLnNldEF0dHJpYnV0ZU5TKG51bGwsImZpbGwiLGEpO2wuc2V0QXR0cmlidXRlTlMobnVsbCwibWFzayIsYHVybCgjJHtzLm1hc2tJZH0pYCk7dGhpcy5kZWZzLmFwcGVuZChvKTt0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChsKTt0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUsbyl9cGFpbnRGb3JtWE9iamVjdEJlZ2luKHQsZSl7QXJyYXkuaXNBcnJheSh0KSYmNj09PXQubGVuZ3RoJiZ0aGlzLnRyYW5zZm9ybSh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSk7aWYoZSl7Y29uc3QgdD1lWzJdLWVbMF0scz1lWzNdLWVbMV0saT10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOnJlY3QiKTtpLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLGVbMF0pO2kuc2V0QXR0cmlidXRlTlMobnVsbCwieSIsZVsxXSk7aS5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ3aWR0aCIscGYodCkpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixwZihzKSk7dGhpcy5jdXJyZW50LmVsZW1lbnQ9aTt0aGlzLmNsaXAoIm5vbnplcm8iKTt0aGlzLmVuZFBhdGgoKX19cGFpbnRGb3JtWE9iamVjdEVuZCgpe31faW5pdGlhbGl6ZSh0KXtjb25zdCBlPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCx0LmhlaWdodCkscz10aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCgic3ZnOmRlZnMiKTtlLmFwcGVuZChzKTt0aGlzLmRlZnM9cztjb25zdCBpPXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO2kuc2V0QXR0cmlidXRlTlMobnVsbCwidHJhbnNmb3JtIixwbSh0LnRyYW5zZm9ybSkpO2UuYXBwZW5kKGkpO3RoaXMuc3ZnPWk7cmV0dXJuIGV9X2Vuc3VyZUNsaXBHcm91cCgpe2lmKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKXtjb25zdCB0PXRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KCJzdmc6ZyIpO3Quc2V0QXR0cmlidXRlTlMobnVsbCwiY2xpcC1wYXRoIix0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybCk7dGhpcy5zdmcuYXBwZW5kKHQpO3RoaXMuY3VycmVudC5jbGlwR3JvdXA9dH1yZXR1cm4gdGhpcy5jdXJyZW50LmNsaXBHcm91cH1fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKXtpZighdGhpcy50Z3JwKXt0aGlzLnRncnA9dGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoInN2ZzpnIik7dGhpcy50Z3JwLnNldEF0dHJpYnV0ZU5TKG51bGwsInRyYW5zZm9ybSIscG0odGhpcy50cmFuc2Zvcm1NYXRyaXgpKTt0aGlzLmN1cnJlbnQuYWN0aXZlQ2xpcFVybD90aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKTp0aGlzLnN2Zy5hcHBlbmQodGhpcy50Z3JwKX1yZXR1cm4gdGhpcy50Z3JwfX19fSwodCxlLHMpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2UuUERGTm9kZVN0cmVhbT12b2lkIDA7dmFyIGk9cygxKSxuPXMoMzIpO2NvbnN0IHI9cmVxdWlyZSgiZnMiKSxhPXJlcXVpcmUoImh0dHAiKSxvPXJlcXVpcmUoImh0dHBzIiksbD1yZXF1aXJlKCJ1cmwiKSxjPS9eZmlsZTpcL1wvXC9bYS16QS1aXTpcLy87ZS5QREZOb2RlU3RyZWFtPWNsYXNzIFBERk5vZGVTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLnVybD1mdW5jdGlvbiBwYXJzZVVybCh0KXtjb25zdCBlPWwucGFyc2UodCk7aWYoImZpbGU6Ij09PWUucHJvdG9jb2x8fGUuaG9zdClyZXR1cm4gZTtpZigvXlthLXpdOlsvXFxdL2kudGVzdCh0KSlyZXR1cm4gbC5wYXJzZShgZmlsZTovLy8ke3R9YCk7ZS5ob3N0fHwoZS5wcm90b2NvbD0iZmlsZToiKTtyZXR1cm4gZX0odC51cmwpO3RoaXMuaXNIdHRwPSJodHRwOiI9PT10aGlzLnVybC5wcm90b2NvbHx8Imh0dHBzOiI9PT10aGlzLnVybC5wcm90b2NvbDt0aGlzLmlzRnNVcmw9ImZpbGU6Ij09PXRoaXMudXJsLnByb3RvY29sO3RoaXMuaHR0cEhlYWRlcnM9dGhpcy5pc0h0dHAmJnQuaHR0cEhlYWRlcnN8fHt9O3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1nZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTm9kZVN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPXRoaXMuaXNGc1VybD9uZXcgUERGTm9kZVN0cmVhbUZzRnVsbFJlYWRlcih0aGlzKTpuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7cmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKHQsZSl7aWYoZTw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5pc0ZzVXJsP25ldyBQREZOb2RlU3RyZWFtRnNSYW5nZVJlYWRlcih0aGlzLHQsZSk6bmV3IFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlcih0aGlzLHQsZSk7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5wdXNoKHMpO3JldHVybiBzfWNhbmNlbEFsbFJlcXVlc3RzKHQpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPy5jYW5jZWwodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSllLmNhbmNlbCh0KX19O2NsYXNzIEJhc2VGdWxsUmVhZGVye2NvbnN0cnVjdG9yKHQpe3RoaXMuX3VybD10LnVybDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPW51bGw7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3QgZT10LnNvdXJjZTt0aGlzLl9jb250ZW50TGVuZ3RoPWUubGVuZ3RoO3RoaXMuX2xvYWRlZD0wO3RoaXMuX2ZpbGVuYW1lPW51bGw7dGhpcy5fZGlzYWJsZVJhbmdlPWUuZGlzYWJsZVJhbmdlfHwhMTt0aGlzLl9yYW5nZUNodW5rU2l6ZT1lLnJhbmdlQ2h1bmtTaXplO3RoaXMuX3JhbmdlQ2h1bmtTaXplfHx0aGlzLl9kaXNhYmxlUmFuZ2V8fCh0aGlzLl9kaXNhYmxlUmFuZ2U9ITApO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW07dGhpcy5faXNSYW5nZVN1cHBvcnRlZD0hZS5kaXNhYmxlUmFuZ2U7dGhpcy5fcmVhZGFibGVTdHJlYW09bnVsbDt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5PSgwLGkuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHkpKCl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGFibGVTdHJlYW0/dGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KTp0aGlzLl9lcnJvcih0KX1fZXJyb3IodCl7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9X3NldFJlYWRhYmxlU3RyZWFtKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtPXQ7dC5vbigicmVhZGFibGUiLCgoKT0+e3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlbmQiLCgoKT0+e3QuZGVzdHJveSgpO3RoaXMuX2RvbmU9ITA7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfSkpO3Qub24oImVycm9yIiwodD0+e3RoaXMuX2Vycm9yKHQpfSkpOyF0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCYmdGhpcy5faXNSYW5nZVN1cHBvcnRlZCYmdGhpcy5fZXJyb3IobmV3IGkuQWJvcnRFeGNlcHRpb24oInN0cmVhbWluZyBpcyBkaXNhYmxlZCIpKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWNsYXNzIEJhc2VSYW5nZVJlYWRlcntjb25zdHJ1Y3Rvcih0KXt0aGlzLl91cmw9dC51cmw7dGhpcy5fZG9uZT0hMTt0aGlzLl9zdG9yZWRFcnJvcj1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2xvYWRlZD0wO3RoaXMuX3JlYWRhYmxlU3RyZWFtPW51bGw7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtjb25zdCBlPXQuc291cmNlO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFlLmRpc2FibGVTdHJlYW19Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2lmKHRoaXMuX2RvbmUpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfTtpZih0aGlzLl9zdG9yZWRFcnJvcil0aHJvdyB0aGlzLl9zdG9yZWRFcnJvcjtjb25zdCB0PXRoaXMuX3JlYWRhYmxlU3RyZWFtLnJlYWQoKTtpZihudWxsPT09dCl7dGhpcy5fcmVhZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTtyZXR1cm4gdGhpcy5yZWFkKCl9dGhpcy5fbG9hZGVkKz10Lmxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRhYmxlU3RyZWFtP3RoaXMuX3JlYWRhYmxlU3RyZWFtLmRlc3Ryb3kodCk6dGhpcy5fZXJyb3IodCl9X2Vycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPXQ7dGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpfV9zZXRSZWFkYWJsZVN0cmVhbSh0KXt0aGlzLl9yZWFkYWJsZVN0cmVhbT10O3Qub24oInJlYWRhYmxlIiwoKCk9Pnt0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCl9KSk7dC5vbigiZW5kIiwoKCk9Pnt0LmRlc3Ryb3koKTt0aGlzLl9kb25lPSEwO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKX0pKTt0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9lcnJvcih0KX0pKTt0aGlzLl9zdG9yZWRFcnJvciYmdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcil9fWZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsZSl7cmV0dXJue3Byb3RvY29sOnQucHJvdG9jb2wsYXV0aDp0LmF1dGgsaG9zdDp0Lmhvc3RuYW1lLHBvcnQ6dC5wb3J0LHBhdGg6dC5wYXRoLG1ldGhvZDoiR0VUIixoZWFkZXJzOmV9fWNsYXNzIFBERk5vZGVTdHJlYW1GdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7Y29uc3QgaGFuZGxlUmVzcG9uc2U9ZT0+e2lmKDQwND09PWUuc3RhdHVzQ29kZSl7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtyZXR1cm59dGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKGUpO2NvbnN0IGdldFJlc3BvbnNlSGVhZGVyPXQ9PnRoaXMuX3JlYWRhYmxlU3RyZWFtLmhlYWRlcnNbdC50b0xvd2VyQ2FzZSgpXSx7YWxsb3dSYW5nZVJlcXVlc3RzOnMsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dC5pc0h0dHAscmFuZ2VDaHVua1NpemU6dGhpcy5fcmFuZ2VDaHVua1NpemUsZGlzYWJsZVJhbmdlOnRoaXMuX2Rpc2FibGVSYW5nZX0pO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9czt0aGlzLl9jb250ZW50TGVuZ3RoPXJ8fHRoaXMuX2NvbnRlbnRMZW5ndGg7dGhpcy5fZmlsZW5hbWU9KDAsbi5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcil9O3RoaXMuX3JlcXVlc3Q9bnVsbDsiaHR0cDoiPT09dGhpcy5fdXJsLnByb3RvY29sP3RoaXMuX3JlcXVlc3Q9YS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCx0Lmh0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHQuaHR0cEhlYWRlcnMpLGhhbmRsZVJlc3BvbnNlKTt0aGlzLl9yZXF1ZXN0Lm9uKCJlcnJvciIsKHQ9Pnt0aGlzLl9zdG9yZWRFcnJvcj10O3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KX0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3N1cGVyKHQpO3RoaXMuX2h0dHBIZWFkZXJzPXt9O2Zvcihjb25zdCBlIGluIHQuaHR0cEhlYWRlcnMpe2NvbnN0IHM9dC5odHRwSGVhZGVyc1tlXTt2b2lkIDAhPT1zJiYodGhpcy5faHR0cEhlYWRlcnNbZV09cyl9dGhpcy5faHR0cEhlYWRlcnMuUmFuZ2U9YGJ5dGVzPSR7ZX0tJHtzLTF9YDtjb25zdCBoYW5kbGVSZXNwb25zZT10PT57aWYoNDA0IT09dC5zdGF0dXNDb2RlKXRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHQpO2Vsc2V7Y29uc3QgdD1uZXcgaS5NaXNzaW5nUERGRXhjZXB0aW9uKGBNaXNzaW5nIFBERiAiJHt0aGlzLl91cmx9Ii5gKTt0aGlzLl9zdG9yZWRFcnJvcj10fX07dGhpcy5fcmVxdWVzdD1udWxsOyJodHRwOiI9PT10aGlzLl91cmwucHJvdG9jb2w/dGhpcy5fcmVxdWVzdD1hLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk6dGhpcy5fcmVxdWVzdD1vLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLHRoaXMuX2h0dHBIZWFkZXJzKSxoYW5kbGVSZXNwb25zZSk7dGhpcy5fcmVxdWVzdC5vbigiZXJyb3IiLCh0PT57dGhpcy5fc3RvcmVkRXJyb3I9dH0pKTt0aGlzLl9yZXF1ZXN0LmVuZCgpfX1jbGFzcyBQREZOb2RlU3RyZWFtRnNGdWxsUmVhZGVyIGV4dGVuZHMgQmFzZUZ1bGxSZWFkZXJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCk7bGV0IGU9ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMuX3VybC5wYXRoKTtjLnRlc3QodGhpcy5fdXJsLmhyZWYpJiYoZT1lLnJlcGxhY2UoL15cLy8sIiIpKTtyLmxzdGF0KGUsKCh0LHMpPT57aWYodCl7IkVOT0VOVCI9PT10LmNvZGUmJih0PW5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oYE1pc3NpbmcgUERGICIke2V9Ii5gKSk7dGhpcy5fc3RvcmVkRXJyb3I9dDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZWplY3QodCl9ZWxzZXt0aGlzLl9jb250ZW50TGVuZ3RoPXMuc2l6ZTt0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShyLmNyZWF0ZVJlYWRTdHJlYW0oZSkpO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX19KSl9fWNsYXNzIFBERk5vZGVTdHJlYW1Gc1JhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKHQsZSxzKXtzdXBlcih0KTtsZXQgaT1kZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO2MudGVzdCh0aGlzLl91cmwuaHJlZikmJihpPWkucmVwbGFjZSgvXlwvLywiIikpO3RoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLHtzdGFydDplLGVuZDpzLTF9KSl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3I9ZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LGUpe2lmKDQwND09PXR8fDA9PT10JiZlLnN0YXJ0c1dpdGgoImZpbGU6IikpcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGICInK2UrJyIuJyk7cmV0dXJuIG5ldyBpLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihgVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgKCR7dH0pIHdoaWxlIHJldHJpZXZpbmcgUERGICIke2V9Ii5gLHQpfTtlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXI9ZnVuY3Rpb24gZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcih0KXtjb25zdCBlPXQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKTtpZihlKXtsZXQgdD0oMCxuLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcikoZSk7aWYodC5pbmNsdWRlcygiJSIpKXRyeXt0PWRlY29kZVVSSUNvbXBvbmVudCh0KX1jYXRjaCh0KXt9aWYoKDAsci5pc1BkZkZpbGUpKHQpKXJldHVybiB0fXJldHVybiBudWxsfTtlLnZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzPWZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHtnZXRSZXNwb25zZUhlYWRlcjp0LGlzSHR0cDplLHJhbmdlQ2h1bmtTaXplOnMsZGlzYWJsZVJhbmdlOml9KXtjb25zdCBuPXthbGxvd1JhbmdlUmVxdWVzdHM6ITEsc3VnZ2VzdGVkTGVuZ3RoOnZvaWQgMH0scj1wYXJzZUludCh0KCJDb250ZW50LUxlbmd0aCIpLDEwKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlyZXR1cm4gbjtuLnN1Z2dlc3RlZExlbmd0aD1yO2lmKHI8PTIqcylyZXR1cm4gbjtpZihpfHwhZSlyZXR1cm4gbjtpZigiYnl0ZXMiIT09dCgiQWNjZXB0LVJhbmdlcyIpKXJldHVybiBuO2lmKCJpZGVudGl0eSIhPT0odCgiQ29udGVudC1FbmNvZGluZyIpfHwiaWRlbnRpdHkiKSlyZXR1cm4gbjtuLmFsbG93UmFuZ2VSZXF1ZXN0cz0hMDtyZXR1cm4gbn07ZS52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzPWZ1bmN0aW9uIHZhbGlkYXRlUmVzcG9uc2VTdGF0dXModCl7cmV0dXJuIDIwMD09PXR8fDIwNj09PXR9O3ZhciBpPXMoMSksbj1zKDMzKSxyPXMoNil9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5nZXRGaWxlbmFtZUZyb21Db250ZW50RGlzcG9zaXRpb25IZWFkZXI9ZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKHQpe2xldCBlPSEwLHM9dG9QYXJhbVJlZ0V4cCgiZmlsZW5hbWVcXCoiLCJpIikuZXhlYyh0KTtpZihzKXtzPXNbMV07bGV0IHQ9cmZjMjYxNnVucXVvdGUocyk7dD11bmVzY2FwZSh0KTt0PXJmYzU5ODdkZWNvZGUodCk7dD1yZmMyMDQ3ZGVjb2RlKHQpO3JldHVybiBmaXh1cEVuY29kaW5nKHQpfXM9ZnVuY3Rpb24gcmZjMjIzMWdldHBhcmFtKHQpe2NvbnN0IGU9W107bGV0IHM7Y29uc3QgaT10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZVxcKigoPyEwXFxkKVxcZCspKFxcKj8pIiwiaWciKTtmb3IoO251bGwhPT0ocz1pLmV4ZWModCkpOyl7bGV0Wyx0LGksbl09czt0PXBhcnNlSW50KHQsMTApO2lmKHQgaW4gZSl7aWYoMD09PXQpYnJlYWt9ZWxzZSBlW3RdPVtpLG5dfWNvbnN0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aCYmdCBpbiBlOysrdCl7bGV0W3MsaV09ZVt0XTtpPXJmYzI2MTZ1bnF1b3RlKGkpO2lmKHMpe2k9dW5lc2NhcGUoaSk7MD09PXQmJihpPXJmYzU5ODdkZWNvZGUoaSkpfW4ucHVzaChpKX1yZXR1cm4gbi5qb2luKCIiKX0odCk7aWYocyl7cmV0dXJuIGZpeHVwRW5jb2RpbmcocmZjMjA0N2RlY29kZShzKSl9cz10b1BhcmFtUmVnRXhwKCJmaWxlbmFtZSIsImkiKS5leGVjKHQpO2lmKHMpe3M9c1sxXTtsZXQgdD1yZmMyNjE2dW5xdW90ZShzKTt0PXJmYzIwNDdkZWNvZGUodCk7cmV0dXJuIGZpeHVwRW5jb2RpbmcodCl9ZnVuY3Rpb24gdG9QYXJhbVJlZ0V4cCh0LGUpe3JldHVybiBuZXcgUmVnRXhwKCIoPzpefDspXFxzKiIrdCsnXFxzKj1cXHMqKFteIjtcXHNdW147XFxzXSp8Iig/OlteIlxcXFxdfFxcXFwiPykrIj8pJyxlKX1mdW5jdGlvbiB0ZXh0ZGVjb2RlKHQscyl7aWYodCl7aWYoIS9eW1x4MDAtXHhGRl0rJC8udGVzdChzKSlyZXR1cm4gczt0cnl7Y29uc3Qgbj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxyPSgwLGkuc3RyaW5nVG9CeXRlcykocyk7cz1uLmRlY29kZShyKTtlPSExfWNhdGNoKHQpe319cmV0dXJuIHN9ZnVuY3Rpb24gZml4dXBFbmNvZGluZyh0KXtpZihlJiYvW1x4ODAtXHhmZl0vLnRlc3QodCkpe3Q9dGV4dGRlY29kZSgidXRmLTgiLHQpO2UmJih0PXRleHRkZWNvZGUoImlzby04ODU5LTEiLHQpKX1yZXR1cm4gdH1mdW5jdGlvbiByZmMyNjE2dW5xdW90ZSh0KXtpZih0LnN0YXJ0c1dpdGgoJyInKSl7Y29uc3QgZT10LnNsaWNlKDEpLnNwbGl0KCdcXCInKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgcz1lW3RdLmluZGV4T2YoJyInKTtpZigtMSE9PXMpe2VbdF09ZVt0XS5zbGljZSgwLHMpO2UubGVuZ3RoPXQrMX1lW3RdPWVbdF0ucmVwbGFjZSgvXFwoLikvZywiJDEiKX10PWUuam9pbignIicpfXJldHVybiB0fWZ1bmN0aW9uIHJmYzU5ODdkZWNvZGUodCl7Y29uc3QgZT10LmluZGV4T2YoIiciKTtpZigtMT09PWUpcmV0dXJuIHQ7cmV0dXJuIHRleHRkZWNvZGUodC5zbGljZSgwLGUpLHQuc2xpY2UoZSsxKS5yZXBsYWNlKC9eW14nXSonLywiIikpfWZ1bmN0aW9uIHJmYzIwNDdkZWNvZGUodCl7cmV0dXJuIXQuc3RhcnRzV2l0aCgiPT8iKXx8L1tceDAwLVx4MTlceDgwLVx4ZmZdLy50ZXN0KHQpP3Q6dC5yZXBsYWNlKC89XD8oW1x3LV0qKVw/KFtRcUJiXSlcPygoPzpbXj9dfFw/KD8hPSkpKilcPz0vZywoZnVuY3Rpb24odCxlLHMsaSl7aWYoInEiPT09c3x8IlEiPT09cylyZXR1cm4gdGV4dGRlY29kZShlLGk9KGk9aS5yZXBsYWNlKC9fL2csIiAiKSkucmVwbGFjZSgvPShbMC05YS1mQS1GXXsyfSkvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLDE2KSl9KSkpO3RyeXtpPWF0b2IoaSl9Y2F0Y2godCl7fXJldHVybiB0ZXh0ZGVjb2RlKGUsaSl9KSl9cmV0dXJuIiJ9O3ZhciBpPXMoMSl9LCh0LGUscyk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZS5QREZOZXR3b3JrU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7Y2xhc3MgTmV0d29ya01hbmFnZXJ7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLnVybD10O3RoaXMuaXNIdHRwPS9eaHR0cHM/Oi9pLnRlc3QodCk7dGhpcy5odHRwSGVhZGVycz10aGlzLmlzSHR0cCYmZS5odHRwSGVhZGVyc3x8T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLndpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5nZXRYaHI9ZS5nZXRYaHJ8fGZ1bmN0aW9uIE5ldHdvcmtNYW5hZ2VyX2dldFhocigpe3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9O3RoaXMuY3VyclhocklkPTA7dGhpcy5wZW5kaW5nUmVxdWVzdHM9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXF1ZXN0UmFuZ2UodCxlLHMpe2NvbnN0IGk9e2JlZ2luOnQsZW5kOmV9O2Zvcihjb25zdCB0IGluIHMpaVt0XT1zW3RdO3JldHVybiB0aGlzLnJlcXVlc3QoaSl9cmVxdWVzdEZ1bGwodCl7cmV0dXJuIHRoaXMucmVxdWVzdCh0KX1yZXF1ZXN0KHQpe2NvbnN0IGU9dGhpcy5nZXRYaHIoKSxzPXRoaXMuY3VyclhocklkKyssaT10aGlzLnBlbmRpbmdSZXF1ZXN0c1tzXT17eGhyOmV9O2Uub3BlbigiR0VUIix0aGlzLnVybCk7ZS53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHM7Zm9yKGNvbnN0IHQgaW4gdGhpcy5odHRwSGVhZGVycyl7Y29uc3Qgcz10aGlzLmh0dHBIZWFkZXJzW3RdO3ZvaWQgMCE9PXMmJmUuc2V0UmVxdWVzdEhlYWRlcih0LHMpfWlmKHRoaXMuaXNIdHRwJiYiYmVnaW4iaW4gdCYmImVuZCJpbiB0KXtlLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIixgYnl0ZXM9JHt0LmJlZ2lufS0ke3QuZW5kLTF9YCk7aS5leHBlY3RlZFN0YXR1cz0yMDZ9ZWxzZSBpLmV4cGVjdGVkU3RhdHVzPTIwMDtlLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Qub25FcnJvciYmKGUub25lcnJvcj1mdW5jdGlvbihzKXt0Lm9uRXJyb3IoZS5zdGF0dXMpfSk7ZS5vbnJlYWR5c3RhdGVjaGFuZ2U9dGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcyxzKTtlLm9ucHJvZ3Jlc3M9dGhpcy5vblByb2dyZXNzLmJpbmQodGhpcyxzKTtpLm9uSGVhZGVyc1JlY2VpdmVkPXQub25IZWFkZXJzUmVjZWl2ZWQ7aS5vbkRvbmU9dC5vbkRvbmU7aS5vbkVycm9yPXQub25FcnJvcjtpLm9uUHJvZ3Jlc3M9dC5vblByb2dyZXNzO2Uuc2VuZChudWxsKTtyZXR1cm4gc31vblByb2dyZXNzKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtzJiZzLm9uUHJvZ3Jlc3M/LihlKX1vblN0YXRlQ2hhbmdlKHQsZSl7Y29uc3Qgcz10aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtpZighcylyZXR1cm47Y29uc3Qgbj1zLnhocjtpZihuLnJlYWR5U3RhdGU+PTImJnMub25IZWFkZXJzUmVjZWl2ZWQpe3Mub25IZWFkZXJzUmVjZWl2ZWQoKTtkZWxldGUgcy5vbkhlYWRlcnNSZWNlaXZlZH1pZig0IT09bi5yZWFkeVN0YXRlKXJldHVybjtpZighKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKXJldHVybjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07aWYoMD09PW4uc3RhdHVzJiZ0aGlzLmlzSHR0cCl7cy5vbkVycm9yPy4obi5zdGF0dXMpO3JldHVybn1jb25zdCByPW4uc3RhdHVzfHwyMDA7aWYoISgyMDA9PT1yJiYyMDY9PT1zLmV4cGVjdGVkU3RhdHVzKSYmciE9PXMuZXhwZWN0ZWRTdGF0dXMpe3Mub25FcnJvcj8uKG4uc3RhdHVzKTtyZXR1cm59Y29uc3QgYT1mdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KXtjb25zdCBlPXQucmVzcG9uc2U7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP2U6KDAsaS5zdHJpbmdUb0J5dGVzKShlKS5idWZmZXJ9KG4pO2lmKDIwNj09PXIpe2NvbnN0IHQ9bi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1SYW5nZSIpLGU9L2J5dGVzIChcZCspLShcZCspXC8oXGQrKS8uZXhlYyh0KTtzLm9uRG9uZSh7YmVnaW46cGFyc2VJbnQoZVsxXSwxMCksY2h1bms6YX0pfWVsc2UgYT9zLm9uRG9uZSh7YmVnaW46MCxjaHVuazphfSk6cy5vbkVycm9yPy4obi5zdGF0dXMpfWdldFJlcXVlc3RYaHIodCl7cmV0dXJuIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocn1pc1BlbmRpbmdSZXF1ZXN0KHQpe3JldHVybiB0IGluIHRoaXMucGVuZGluZ1JlcXVlc3RzfWFib3J0UmVxdWVzdCh0KXtjb25zdCBlPXRoaXMucGVuZGluZ1JlcXVlc3RzW3RdLnhocjtkZWxldGUgdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07ZS5hYm9ydCgpfX1lLlBERk5ldHdvcmtTdHJlYW09Y2xhc3MgUERGTmV0d29ya1N0cmVhbXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9zb3VyY2U9dDt0aGlzLl9tYW5hZ2VyPW5ldyBOZXR3b3JrTWFuYWdlcih0LnVybCx7aHR0cEhlYWRlcnM6dC5odHRwSGVhZGVycyx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9KTt0aGlzLl9yYW5nZUNodW5rU2l6ZT10LnJhbmdlQ2h1bmtTaXplO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW51bGw7dGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycz1bXX1fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCl7Y29uc3QgZT10aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7ZT49MCYmdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zcGxpY2UoZSwxKX1nZXRGdWxsUmVhZGVyKCl7KDAsaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpO3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0aGlzLl9zb3VyY2UpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2NvbnN0IHM9bmV3IFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlcix0LGUpO3Mub25DbG9zZWQ9dGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGTmV0d29ya1N0cmVhbUZ1bGxSZXF1ZXN0UmVhZGVye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IHM9e29uSGVhZGVyc1JlY2VpdmVkOnRoaXMuX29uSGVhZGVyc1JlY2VpdmVkLmJpbmQodGhpcyksb25Eb25lOnRoaXMuX29uRG9uZS5iaW5kKHRoaXMpLG9uRXJyb3I6dGhpcy5fb25FcnJvci5iaW5kKHRoaXMpLG9uUHJvZ3Jlc3M6dGhpcy5fb25Qcm9ncmVzcy5iaW5kKHRoaXMpfTt0aGlzLl91cmw9ZS51cmw7dGhpcy5fZnVsbFJlcXVlc3RJZD10LnJlcXVlc3RGdWxsKHMpO3RoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHk9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9kaXNhYmxlUmFuZ2U9ZS5kaXNhYmxlUmFuZ2V8fCExO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5sZW5ndGg7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2NhY2hlZENodW5rcz1bXTt0aGlzLl9yZXF1ZXN0cz1bXTt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLl9maWxlbmFtZT1udWxsO3RoaXMub25Qcm9ncmVzcz1udWxsfV9vbkhlYWRlcnNSZWNlaXZlZCgpe2NvbnN0IHQ9dGhpcy5fZnVsbFJlcXVlc3RJZCxlPXRoaXMuX21hbmFnZXIuZ2V0UmVxdWVzdFhocih0KSxnZXRSZXNwb25zZUhlYWRlcj10PT5lLmdldFJlc3BvbnNlSGVhZGVyKHQpLHthbGxvd1JhbmdlUmVxdWVzdHM6cyxzdWdnZXN0ZWRMZW5ndGg6aX09KDAsbi52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe2dldFJlc3BvbnNlSGVhZGVyOmdldFJlc3BvbnNlSGVhZGVyLGlzSHR0cDp0aGlzLl9tYW5hZ2VyLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7cyYmKHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ITApO3RoaXMuX2NvbnRlbnRMZW5ndGg9aXx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKX1fb25Eb25lKHQpe2lmKHQpaWYodGhpcy5fcmVxdWVzdHMubGVuZ3RoPjApe3RoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7dmFsdWU6dC5jaHVuayxkb25lOiExfSl9ZWxzZSB0aGlzLl9jYWNoZWRDaHVua3MucHVzaCh0LmNodW5rKTt0aGlzLl9kb25lPSEwO2lmKCEodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wfX1fb25FcnJvcih0KXt0aGlzLl9zdG9yZWRFcnJvcj0oMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsdGhpcy5fdXJsKTt0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZWplY3QodGhpcy5fc3RvcmVkRXJyb3IpO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX2NhY2hlZENodW5rcy5sZW5ndGg9MH1fb25Qcm9ncmVzcyh0KXt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnQubG9hZGVkLHRvdGFsOnQubGVuZ3RoQ29tcHV0YWJsZT90LnRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgZmlsZW5hbWUoKXtyZXR1cm4gdGhpcy5fZmlsZW5hbWV9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWNlaXZlZENhcGFiaWxpdHkucHJvbWlzZX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYodGhpcy5fY2FjaGVkQ2h1bmtzLmxlbmd0aD4wKXtyZXR1cm57dmFsdWU6dGhpcy5fY2FjaGVkQ2h1bmtzLnNoaWZ0KCksZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7dGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eS5yZWplY3QodCk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSYmdGhpcy5fbWFuYWdlci5hYm9ydFJlcXVlc3QodGhpcy5fZnVsbFJlcXVlc3RJZCk7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbH19Y2xhc3MgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcntjb25zdHJ1Y3Rvcih0LGUscyl7dGhpcy5fbWFuYWdlcj10O2NvbnN0IGk9e29uRG9uZTp0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxvbkVycm9yOnRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxvblByb2dyZXNzOnRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKX07dGhpcy5fdXJsPXQudXJsO3RoaXMuX3JlcXVlc3RJZD10LnJlcXVlc3RSYW5nZShlLHMsaSk7dGhpcy5fcmVxdWVzdHM9W107dGhpcy5fcXVldWVkQ2h1bms9bnVsbDt0aGlzLl9kb25lPSExO3RoaXMuX3N0b3JlZEVycm9yPXZvaWQgMDt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDt0aGlzLm9uQ2xvc2VkPW51bGx9X2Nsb3NlKCl7dGhpcy5vbkNsb3NlZD8uKHRoaXMpfV9vbkRvbmUodCl7Y29uc3QgZT10LmNodW5rO2lmKHRoaXMuX3JlcXVlc3RzLmxlbmd0aD4wKXt0aGlzLl9yZXF1ZXN0cy5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOmUsZG9uZTohMX0pfWVsc2UgdGhpcy5fcXVldWVkQ2h1bms9ZTt0aGlzLl9kb25lPSEwO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVzb2x2ZSh7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9jbG9zZSgpfV9vbkVycm9yKHQpe3RoaXMuX3N0b3JlZEVycm9yPSgwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCx0aGlzLl91cmwpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKXQucmVqZWN0KHRoaXMuX3N0b3JlZEVycm9yKTt0aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MDt0aGlzLl9xdWV1ZWRDaHVuaz1udWxsfV9vblByb2dyZXNzKHQpe3RoaXMuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHRoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dC5sb2FkZWR9KX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7aWYodGhpcy5fc3RvcmVkRXJyb3IpdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7aWYobnVsbCE9PXRoaXMuX3F1ZXVlZENodW5rKXtjb25zdCB0PXRoaXMuX3F1ZXVlZENodW5rO3RoaXMuX3F1ZXVlZENodW5rPW51bGw7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19aWYodGhpcy5fZG9uZSlyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9O2NvbnN0IHQ9KDAsaS5jcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSkoKTt0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO3JldHVybiB0LnByb21pc2V9Y2FuY2VsKHQpe3RoaXMuX2RvbmU9ITA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpdC5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pO3RoaXMuX3JlcXVlc3RzLmxlbmd0aD0wO3RoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpJiZ0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO3RoaXMuX2Nsb3NlKCl9fX0sKHQsZSxzKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtlLlBERkZldGNoU3RyZWFtPXZvaWQgMDt2YXIgaT1zKDEpLG49cygzMik7ZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsZSxzKXtyZXR1cm57bWV0aG9kOiJHRVQiLGhlYWRlcnM6dCxzaWduYWw6cy5zaWduYWwsbW9kZToiY29ycyIsY3JlZGVudGlhbHM6ZT8iaW5jbHVkZSI6InNhbWUtb3JpZ2luIixyZWRpcmVjdDoiZm9sbG93In19ZnVuY3Rpb24gY3JlYXRlSGVhZGVycyh0KXtjb25zdCBlPW5ldyBIZWFkZXJzO2Zvcihjb25zdCBzIGluIHQpe2NvbnN0IGk9dFtzXTt2b2lkIDAhPT1pJiZlLmFwcGVuZChzLGkpfXJldHVybiBlfWUuUERGRmV0Y2hTdHJlYW09Y2xhc3MgUERGRmV0Y2hTdHJlYW17Y29uc3RydWN0b3IodCl7dGhpcy5zb3VyY2U9dDt0aGlzLmlzSHR0cD0vXmh0dHBzPzovaS50ZXN0KHQudXJsKTt0aGlzLmh0dHBIZWFkZXJzPXRoaXMuaXNIdHRwJiZ0Lmh0dHBIZWFkZXJzfHx7fTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsO3RoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/Ll9sb2FkZWQ/PzB9Z2V0RnVsbFJlYWRlcigpeygwLGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERkZldGNoU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bmV3IFBERkZldGNoU3RyZWFtUmVhZGVyKHRoaXMpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcih0LGUpe2lmKGU8PXRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBzPW5ldyBQREZGZXRjaFN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsdCxlKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gocyk7cmV0dXJuIHN9Y2FuY2VsQWxsUmVxdWVzdHModCl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKWUuY2FuY2VsKHQpfX07Y2xhc3MgUERGRmV0Y2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fc3RyZWFtPXQ7dGhpcy5fcmVhZGVyPW51bGw7dGhpcy5fbG9hZGVkPTA7dGhpcy5fZmlsZW5hbWU9bnVsbDtjb25zdCBlPXQuc291cmNlO3RoaXMuX3dpdGhDcmVkZW50aWFscz1lLndpdGhDcmVkZW50aWFsc3x8ITE7dGhpcy5fY29udGVudExlbmd0aD1lLmxlbmd0aDt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2Rpc2FibGVSYW5nZT1lLmRpc2FibGVSYW5nZXx8ITE7dGhpcy5fcmFuZ2VDaHVua1NpemU9ZS5yYW5nZUNodW5rU2l6ZTt0aGlzLl9yYW5nZUNodW5rU2l6ZXx8dGhpcy5fZGlzYWJsZVJhbmdlfHwodGhpcy5fZGlzYWJsZVJhbmdlPSEwKTt0aGlzLl9hYm9ydENvbnRyb2xsZXI9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD0hZS5kaXNhYmxlU3RyZWFtO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9IWUuZGlzYWJsZVJhbmdlO3RoaXMuX2hlYWRlcnM9Y3JlYXRlSGVhZGVycyh0aGlzLl9zdHJlYW0uaHR0cEhlYWRlcnMpO2NvbnN0IHM9ZS51cmw7ZmV0Y2gocyxjcmVhdGVGZXRjaE9wdGlvbnModGhpcy5faGVhZGVycyx0aGlzLl93aXRoQ3JlZGVudGlhbHMsdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbigodD0+e2lmKCEoMCxuLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSl0aHJvdygwLG4uY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMscyk7dGhpcy5fcmVhZGVyPXQuYm9keS5nZXRSZWFkZXIoKTt0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7Y29uc3QgZ2V0UmVzcG9uc2VIZWFkZXI9ZT0+dC5oZWFkZXJzLmdldChlKSx7YWxsb3dSYW5nZVJlcXVlc3RzOmUsc3VnZ2VzdGVkTGVuZ3RoOnJ9PSgwLG4udmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtnZXRSZXNwb25zZUhlYWRlcjpnZXRSZXNwb25zZUhlYWRlcixpc0h0dHA6dGhpcy5fc3RyZWFtLmlzSHR0cCxyYW5nZUNodW5rU2l6ZTp0aGlzLl9yYW5nZUNodW5rU2l6ZSxkaXNhYmxlUmFuZ2U6dGhpcy5fZGlzYWJsZVJhbmdlfSk7dGhpcy5faXNSYW5nZVN1cHBvcnRlZD1lO3RoaXMuX2NvbnRlbnRMZW5ndGg9cnx8dGhpcy5fY29udGVudExlbmd0aDt0aGlzLl9maWxlbmFtZT0oMCxuLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIpKGdldFJlc3BvbnNlSGVhZGVyKTshdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQmJnRoaXMuY2FuY2VsKG5ldyBpLkFib3J0RXhjZXB0aW9uKCJTdHJlYW1pbmcgaXMgZGlzYWJsZWQuIikpfSkpLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlfWdldCBmaWxlbmFtZSgpe3JldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1JhbmdlU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWR9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZCx0b3RhbDp0aGlzLl9jb250ZW50TGVuZ3RofSk7cmV0dXJue3ZhbHVlOm5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwodCl7dGhpcy5fcmVhZGVyPy5jYW5jZWwodCk7dGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCl9fWNsYXNzIFBERkZldGNoU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IodCxlLHMpe3RoaXMuX3N0cmVhbT10O3RoaXMuX3JlYWRlcj1udWxsO3RoaXMuX2xvYWRlZD0wO2NvbnN0IHI9dC5zb3VyY2U7dGhpcy5fd2l0aENyZWRlbnRpYWxzPXIud2l0aENyZWRlbnRpYWxzfHwhMTt0aGlzLl9yZWFkQ2FwYWJpbGl0eT0oMCxpLmNyZWF0ZVByb21pc2VDYXBhYmlsaXR5KSgpO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSFyLmRpc2FibGVTdHJlYW07dGhpcy5fYWJvcnRDb250cm9sbGVyPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5faGVhZGVycz1jcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7dGhpcy5faGVhZGVycy5hcHBlbmQoIlJhbmdlIixgYnl0ZXM9JHtlfS0ke3MtMX1gKTtjb25zdCBhPXIudXJsO2ZldGNoKGEsY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsdGhpcy5fd2l0aENyZWRlbnRpYWxzLHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4oKHQ9PntpZighKDAsbi52YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKSh0LnN0YXR1cykpdGhyb3coMCxuLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQuc3RhdHVzLGEpO3RoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTt0aGlzLl9yZWFkZXI9dC5ib2R5LmdldFJlYWRlcigpfSkpLmNhdGNoKHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlamVjdCk7dGhpcy5vblByb2dyZXNzPW51bGx9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXthd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO2NvbnN0e3ZhbHVlOnQsZG9uZTplfT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO2lmKGUpcmV0dXJue3ZhbHVlOnQsZG9uZTplfTt0aGlzLl9sb2FkZWQrPXQuYnl0ZUxlbmd0aDt0aGlzLm9uUHJvZ3Jlc3M/Lih7bG9hZGVkOnRoaXMuX2xvYWRlZH0pO3JldHVybnt2YWx1ZTpuZXcgVWludDhBcnJheSh0KS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKHQpe3RoaXMuX3JlYWRlcj8uY2FuY2VsKHQpO3RoaXMuX2Fib3J0Q29udHJvbGxlci5hYm9ydCgpfX19XSxfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX189e307ZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KXt2YXIgZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gZS5leHBvcnRzO3ZhciBzPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XT17ZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1t0XShzLHMuZXhwb3J0cyxfX3dfcGRmanNfcmVxdWlyZV9fKTtyZXR1cm4gcy5leHBvcnRzfXZhciBfX3dlYnBhY2tfZXhwb3J0c19fPXt9OygoKT0+e3ZhciB0PV9fd2VicGFja19leHBvcnRzX187T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yTGF5ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkFubm90YXRpb25FZGl0b3JMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uRWRpdG9yVHlwZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbkVkaXRvclR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFubm90YXRpb25MYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuQW5ub3RhdGlvbkxheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJBbm5vdGF0aW9uTW9kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuQW5ub3RhdGlvbk1vZGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkNNYXBDb21wcmVzc2lvblR5cGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkdsb2JhbFdvcmtlck9wdGlvbnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkdsb2JhbFdvcmtlck9wdGlvbnN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkludmFsaWRQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLkludmFsaWRQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk1pc3NpbmdQREZFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLk1pc3NpbmdQREZFeGNlcHRpb259fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIk9QUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuT1BTfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQREZEYXRhUmFuZ2VUcmFuc3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLlBERkRhdGFSYW5nZVRyYW5zcG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGRGF0ZVN0cmluZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUERGRGF0ZVN0cmluZ319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUERGV29ya2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5QREZXb3JrZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlBhc3N3b3JkUmVzcG9uc2VzIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5QYXNzd29yZFJlc3BvbnNlc319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUGVybWlzc2lvbkZsYWciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLlBlcm1pc3Npb25GbGFnfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJQaXhlbHNQZXJJbmNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5QaXhlbHNQZXJJbmNofX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJSZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb24iLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiU1ZHR3JhcGhpY3MiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoLlNWR0dyYXBoaWNzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVTlNVUFBPUlRFRF9GRUFUVVJFUyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVU5TVVBQT1JURURfRkVBVFVSRVN9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJVdGlsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5VdGlsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJWZXJib3NpdHlMZXZlbCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlhmYUxheWVyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5YZmFMYXllcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYnVpbGQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzLmJ1aWxkfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVQcm9taXNlQ2FwYWJpbGl0eSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY3JlYXRlUHJvbWlzZUNhcGFiaWxpdHl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldERvY3VtZW50Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcy5nZXREb2N1bWVudH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0RmlsZW5hbWVGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmx9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldFBkZkZpbGVuYW1lRnJvbVVybCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0UGRmRmlsZW5hbWVGcm9tVXJsfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXRYZmFQYWdlVmlld3BvcnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmdldFhmYVBhZ2VWaWV3cG9ydH19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNQZGZGaWxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5pc1BkZkZpbGV9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImxvYWRTY3JpcHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBpLmxvYWRTY3JpcHR9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlbmRlclRleHRMYXllciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucmVuZGVyVGV4dExheWVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaGFkb3ciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLnNoYWRvd319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmVyc2lvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHMudmVyc2lvbn19KTt2YXIgZT1fX3dfcGRmanNfcmVxdWlyZV9fKDEpLHM9X193X3BkZmpzX3JlcXVpcmVfXygyKSxpPV9fd19wZGZqc19yZXF1aXJlX18oNiksbj1fX3dfcGRmanNfcmVxdWlyZV9fKDIxKSxyPV9fd19wZGZqc19yZXF1aXJlX18oNSksYT1fX3dfcGRmanNfcmVxdWlyZV9fKDI2KSxvPV9fd19wZGZqc19yZXF1aXJlX18oMTQpLGw9X193X3BkZmpzX3JlcXVpcmVfXygxMiksYz1fX3dfcGRmanNfcmVxdWlyZV9fKDI5KSxoPV9fd19wZGZqc19yZXF1aXJlX18oMzApLGQ9X193X3BkZmpzX3JlcXVpcmVfXygyOCk7aWYobC5pc05vZGVKUyl7Y29uc3R7UERGTm9kZVN0cmVhbTp0fT1fX3dfcGRmanNfcmVxdWlyZV9fKDMxKTsoMCxzLnNldFBERk5ldHdvcmtTdHJlYW1GYWN0b3J5KSgoZT0+bmV3IHQoZSkpKX1lbHNle2NvbnN0e1BERk5ldHdvcmtTdHJlYW06dH09X193X3BkZmpzX3JlcXVpcmVfXygzNCkse1BERkZldGNoU3RyZWFtOmV9PV9fd19wZGZqc19yZXF1aXJlX18oMzUpOygwLHMuc2V0UERGTmV0d29ya1N0cmVhbUZhY3RvcnkpKChzPT4oMCxpLmlzVmFsaWRGZXRjaFVybCkocy51cmwpP25ldyBlKHMpOm5ldyB0KHMpKSl9fSkoKTtyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfX30pKCkpKTs=",F2e=`data:text/javascript;base64,${k2e}`,J2e=`data:text/javascript;base64,${z2e}`,D2e=He({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"}},emits:["rendered","error"],setup(n,{emit:e}){let t=null;const i=Ne([]),a=Ne(0);function l(){return AZe(F2e).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=J2e})}function o(){return window.pdfjsLib?Promise.resolve():l()}function r(){if(!n.src){a.value=0;return}window.pdfjsLib.getDocument({url:qS(n.src),cMapUrl:`${n.staticFileUrl.endsWith("/")?n.staticFileUrl:n.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0}).promise.then(b=>{t=b,a.value=t.numPages,f(1)}).catch(b=>{e("error",b)})}function f(v){t.getPage(v).then(b=>{const Z=b.getViewport({scale:window.devicePixelRatio}),p=i.value[v-1];p.width=Z.width,p.height=Z.height,Z.width>document.documentElement.clientWidth?p.style.width="100%":p.style.width=Math.floor(Z.width)+"px";const y=p.getContext("2d");b.render({canvasContext:y,viewport:Z}).promise.then(()=>{a.value>v?f(v+1):e("rendered")}).catch(m=>{e("error",m)})}).catch(b=>{e("error",b)})}return Kt(()=>{n.src&&o().then(r)}),rt(()=>n.src,()=>{o().then(r)}),{rootRef:i,numPages:a}}}),O2e={class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"}},j2e={key:0,class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function U2e(n,e,t,i,a,l){return kl(),rc("div",O2e,[n.numPages?(kl(),rc("div",j2e,[(kl(!0),rc(ln,null,$U(n.numPages,o=>(kl(),rc("canvas",{ref_for:!0,ref:"rootRef",key:o,style:{width:"100%"}}))),128))])):Rb("",!0)],512)}const pm=$u(D2e,[["render",U2e]]);pm.install=function(n){n.component(pm.name,pm)};const E2e={__name:"PdfDemo",setup(n){return(e,t)=>(kl(),Vo(PX,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":"https://501351981.github.io/vue-office/examples/dist/static/test-files/test.pdf"},{default:pa(i=>[D(mi(pm),{src:i.src,style:{flex:"1",height:"0"}},null,8,["src"])]),_:1}))}},K2e={__name:"App",setup(n){const e=Ne("DOCX");return Kt(()=>{}),(t,i)=>{const a=ls("a-tab-pane"),l=ls("a-tabs");return kl(),Vo(l,{activeKey:e.value,"onUpdate:activeKey":i[0]||(i[0]=o=>e.value=o)},{default:pa(()=>[D(a,{key:"DOCX",tab:"docx文件预览"},{default:pa(()=>[D(Gpe)]),_:1}),D(a,{key:"EXCEL",tab:"excel文件预览"},{default:pa(()=>[D(S2e)]),_:1}),D(a,{key:"PDF",tab:"pdf文件预览"},{default:pa(()=>[D(E2e)]),_:1})]),_:1},8,["activeKey"])}}},H2e=$u(K2e,[["__scopeId","data-v-e7b8d128"]]),P2e=IR(H2e);P2e.use(ipe).mount("#app")});export default Q2e(); diff --git a/examples/dist/index.html b/examples/dist/index.html index 84600a8..0cff895 100644 --- a/examples/dist/index.html +++ b/examples/dist/index.html @@ -5,7 +5,7 @@ Vite + Vue - + diff --git a/lerna.json b/lerna.json index 37e0ed8..1a0b1ce 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "0.2.0" + "version": "0.2.1" } diff --git a/packages/docx/package.json b/packages/docx/package.json index d2cf24d..101e524 100644 --- a/packages/docx/package.json +++ b/packages/docx/package.json @@ -1,6 +1,6 @@ { "name": "@vue-office/docx", - "version": "0.2.0", + "version": "0.2.1", "description": "", "main": "lib/index.js", "files": [ diff --git a/packages/excel/package.json b/packages/excel/package.json index cd79c84..4d613dc 100644 --- a/packages/excel/package.json +++ b/packages/excel/package.json @@ -1,6 +1,6 @@ { "name": "@vue-office/excel", - "version": "0.2.0", + "version": "0.2.1", "description": "", "main": "lib/index.js", "files": [ diff --git a/packages/pdf/package.json b/packages/pdf/package.json index e0c50d2..062fd4e 100644 --- a/packages/pdf/package.json +++ b/packages/pdf/package.json @@ -1,6 +1,6 @@ { "name": "@vue-office/pdf", - "version": "0.2.0", + "version": "0.2.1", "description": "", "main": "lib/index.js", "files": [